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

  1. Login ke server Solusi Bare Metal pertama yang menghosting database utama.

  2. Dalam file /etc/oratab, tambahkan entri agar perintah oraenv 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
    
  3. 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

  1. Mulai SQL*Plus, lalu aktifkan force logging sehingga ruang tabel nologging yang ditambahkan ke database dicatat ke dalam log:

    sqlplus / as sysdba
    
    ALTER DATABASE FORCE LOGGING;
    
  2. Pastikan archivelog mode dan flashback database sudah aktif:

    ARCHIVE LOG LIST;
    SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
    

    Jika archivelog mode dan flashback database nonaktif, aktifkan dengan perintah SQL berikut:

    1. Hentikan database yang dikelompokkan agar Anda dapat membuat perubahan yang diperlukan:

       srvctl stop database -d 
      
    2. Jalankan perintah SQL yang diperlukan untuk mengaktifkan archivelog mode dan flashback 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;
      
    3. Mulai kembali database yang dikelompokkan:

       srvctl start database -d DBDG_SITE1
      

Menyiapkan database untuk Data Guard

  1. 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.

  2. 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;
    
  3. 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
    
  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;
    
  5. 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
    
  6. Keluar dari SQL*Plus:

    EXIT;
    

Menyalin parameter database dan file sandi ke server standby

  1. Buat file parameter database dan salin ke server standby:

    1. Buat folder untuk file parameter database standby (pfile):

      mkdir /home/oracle/backup
      
    2. Mulai SQL*Plus, lalu buat database standby pfile:

      sqlplus / as sysdba
      
      CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
      
    3. 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
      
  2. Pastikan sandi login jarak jauh SYS disimpan dengan aman. Jika Anda tidak mengetahui sandinya, reset sandi tersebut.

  3. Salin file sandi ke cluster standby:

    1. 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
      
    2. 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
      
    3. 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.