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 | Kasus penggunaan |
DBDG_SITE2 | site2db1, site2db2 | DBDG_SITE21, DBDG_SITE22 | Standby |
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.
Dalam file
/etc/oratab
, tambahkan entri agar perintahoraenv
dapat menetapkan variabel lingkungan untuk database utama. Ubah nama instance agar sesuai dengan instance yang berjalan di setiap node, dan tentukan jalur lengkap ke beranda 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
The Oracle base has been set to /apps/oracle/oracle_base
respons.
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
sudah 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 yang dikelompokkan 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 kembali database yang dikelompokkan:
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
The Oracle base has been set to /apps/oracle/oracle_base
respons.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 ulangi mode standby dalam database. Setiap thread harus memiliki satu lebih banyak grup log replay standby daripada jumlah grup log pengulangan 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 ulangi online per thread, dan tidak memiliki grup log pengulangan standby yang dibuat. Karena ada empat grup log pengulangan online, lima grup log pengulangan standby harus dibuat untuk setiap thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4
Jika ada cukup grup log pengulangan standby, lewati langkah ini. Grup log ulangi aktivitas standby harus berukuran sama dengan setiap grup log ulangi online. Buat grup log ulangi standby dalam jumlah 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 meminta Anda membuat lima grup log pengulangan mode standby untuk masing-masing dari 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 ulangi 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 pengulangan online per thread dan lima grup log pengulangan 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 parameter database dan file sandi 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 tersebut.
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 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 standby, 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 ini; 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.