Menyiapkan database utama Data Guard
Data Guard memerlukan database utama dan setidaknya satu database standby agar dapat berfungsi. Sebelum menyiapkan Data Guard di Solusi Bare Metal, buat database utama.
Contoh berikut digunakan di seluruh panduan ini:
Nama unik database | Nama host server | Nama instance RAC | Peran |
---|---|---|---|
DBDG_SITE1 | site1db1, site1db2 | DBDG_SITE11, DBDG_SITE12 | Utama |
DBDG_SITE2 | site2db1, site2db2 | DBDG_SITE21, DBDG_SITE22 | Siaga |
Server Solusi Bare Metal yang menjalankan Oracle dalam panduan ini dikonfigurasi dengan variabel lingkungan berikut:
Nama variabel lingkungan | Nilai |
---|---|
ORACLE_BASE | /apps/oracle/oracle_base |
ORACLE_HOME | /apps/oracle/19.0.0/db_home1 |
Anda mungkin perlu mengubah jalur variabel lingkungan, bergantung pada penyiapan Anda.
Menyiapkan database utama
Login ke server Solusi Bare Metal pertama yang menghosting database utama.
Di file
/etc/oratab
, tambahkan entri agar perintahoraenv
dapat menetapkan variabel lingkungan untuk database utama. Ubah nama instance agar cocok dengan instance yang berjalan di setiap node, dan tentukan jalur lengkap ke direktori utama database Oracle:DBDG_SITE11:ORACLE_HOME:N
Tetapkan variabel lingkungan
ORACLE_SID
agar Anda dapat terhubung ke database utama:source oraenv <<< "DBDG_SITE11"
Anda akan menerima respons
The Oracle base has been set to /apps/oracle/oracle_base
.
Mengonfigurasi logging database dan mengaktifkan database flashback
Mulai SQL*Plus, lalu aktifkan
force logging
sehingga ruang tabelnologging
yang ditambahkan ke database dicatat ke dalam log:sqlplus / as sysdba
ALTER DATABASE FORCE LOGGING;
Pastikan
archivelog mode
danflashback database
aktif:ARCHIVE LOG LIST; SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
Jika
archivelog mode
danflashback database
nonaktif, aktifkan dengan perintah SQL berikut:Hentikan database cluster agar Anda dapat membuat perubahan yang diperlukan:
srvctl stop database -d
Jalankan perintah SQL yang diperlukan untuk mengaktifkan
archivelog mode
danflashback database
:STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON; ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SID='*' SCOPE=BOTH; ALTER DATABASE OPEN; SHUTDOWN IMMEDIATE; EXIT;
Mulai ulang database cluster:
srvctl start database -d DBDG_SITE1
Menyiapkan database untuk Data Guard
Login ke server Solusi Bare Metal pertama yang menghosting database utama dan tetapkan variabel lingkungan
ORACLE_SID
agar Anda dapat terhubung ke database utama:source oraenv <<< "DBDG_SITE11"
Anda akan menerima respons
The Oracle base has been set to /apps/oracle/oracle_base
.Mulai SQL*Plus, lalu ubah parameter inisialisasi database yang diperlukan untuk konfigurasi dan layanan Data Guard:
sqlplus / as sysdba
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SID='*' SCOPE=SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SID='*' SCOPE=BOTH; ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SID='*' SCOPE=SPFILE; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
Periksa keberadaan log redo standby di database. Setiap thread harus memiliki satu grup log redo standby lebih banyak daripada jumlah grup log redo online.
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
Contoh berikut memiliki empat log redo online per thread, dan tidak membuat grup log redo standby. Karena ada empat grup log redo online, lima grup log redo standby harus dibuat untuk setiap thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4
Jika ada cukup grup log redo standby, lewati langkah ini. Grup log redo standby harus berukuran sama dengan setiap grup log redo online. Buat jumlah grup log redo standby yang diperlukan dengan kode PL/SQL berikut:
SET FEEDBACK OFF SET SERVEROUTPUT ON DECLARE CURSOR cur_thread IS SELECT THREAD# THREAD, COUNT(*) COUNT FROM V$LOG GROUP BY THREAD#; standbylog_count NUMBER := 0; standbylog_group NUMBER := 0; standbylog_size NUMBER := 0; last_group_number NUMBER; sqlstmt VARCHAR2(200); BEGIN SELECT MAX(GROUP#), MAX(BYTES) INTO last_group_number, standbylog_size FROM V$LOG; standbylog_group := last_group_number + 1; FOR rec_thread IN cur_thread LOOP standbylog_count := rec_thread.count + 1; FOR i IN 1..standbylog_count LOOP sqlstmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rec_thread.thread || ' GROUP ' || TO_CHAR(standbylog_group) || ' SIZE ' || standbylog_size || ';'; DBMS_OUTPUT.PUT_LINE( sqlstmt); standbylog_group := standbylog_group + 1; END LOOP; END LOOP; END; / SET FEEDBACK ON
Contoh output berikut akan meminta Anda membuat lima grup log redo standby untuk setiap dua thread:
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 9 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 SIZE 2147483648;
Pastikan log redo standby disiapkan dengan benar untuk konfigurasi Anda:
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
Output berikut memiliki empat grup log redo online per thread dan lima grup log redo standby per thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4 Standby logfile groups in thread 1: 5 Standby logfile groups in thread 2: 5
Keluar dari SQL*Plus:
EXIT;
Menyalin file sandi dan parameter database ke server standby
Buat file parameter database dan salin ke server standby:
Buat folder untuk file parameter database standby (
pfile
):mkdir /home/oracle/backup
Mulai SQL*Plus, lalu buat database standby
pfile
:sqlplus / as sysdba
CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
Keluar dari SQL*Plus, lalu salin
pfile
ke server Solusi Bare Metal pertama di lokasi standby:EXIT;
scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
Pastikan sandi login jarak jauh SYS disimpan dengan aman. Jika Anda tidak mengetahui sandinya, reset sandi.
Salin file sandi ke cluster standby:
Dapatkan lokasi file sandi menggunakan perintah
srvctl
:srvctl config database -db DBDG_SITE1 | grep -i password
Output berikut menunjukkan lokasi penyimpanan file sandi di ASM:
Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
Buat salinan sementara file sandi di sistem file lokal dengan menggunakan perintah
asmcmd
:asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
Salin file sandi ke server Solusi Bare Metal pertama di lokasi siaga, lalu hapus salinan sementara dari server Solusi Bare Metal di lokasi utama:
scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21 rm /tmp/orapwDBDG_SITE21
Mengonfigurasi konektivitas database
Edit file $ORACLE_HOME/network/admin/tsnames.ora
di setiap server Solusi Bare Metal
di lokasi database utama untuk memperbarui konfigurasi layanan jaringan.
Ada tiga entri dalam file; satu untuk setiap database, dan entri sementara
yang digunakan selama duplikasi database yang akan Anda hapus nanti:
DBDG_SITE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE1) (UR=A)
)
)
DBDG_SITE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE2) (UR=A)
)
)
DBDG_SITE2_FOR_DUPLICATION =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = site2db1)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = DBDG_SITE21) (UR=A)
)
)
Database utama kini siap digunakan dalam konfigurasi Data Guard.
Langkah berikutnya
Selanjutnya, buat database standby Data Guard.