Membuat database standby Data Guard

Setelah disiapkan untuk Data Guard, database utama siap diduplikasi ke situs standby. Panduan berikut menggunakan duplikasi aktif untuk membuat salinan database yang konsisten.

Sebagai pengingat, 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 standby

Mengonfigurasi konektivitas database

Login ke setiap server Solusi Bare Metal di lokasi standby dan ubah file $ORACLE_HOME/network/admin/tsnames.ora untuk memperbarui konfigurasi layanan jaringan:

DBDG_SITE2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE2) (UR=A)
   )
 )

DBDG_SITE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE1)
    )
  )

Mengonfigurasi pemroses sementara

Agar pemroses tidak dimulai ulang yang digunakan untuk koneksi database lain, duplikasi database dilakukan menggunakan pemroses sementara. Contoh ini menggunakan port 1523, tetapi Anda dapat menggunakan port apa pun yang terbuka untuk komunikasi antar-cluster. Anda menghapus pemroses sementara ini setelah duplikasi database.

  1. Login ke server Solusi Bare Metal pertama di lokasi standby yang akan digunakan selama proses duplikasi database. Ubah file $ORACLE_HOME/network/admin/listener.ora untuk memperbarui konfigurasi layanan jaringan:

    LISTENER_DBDG_SITE2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523))
        )
      )
    
    SID_LIST_LISTENER_DBDG_SITE2 =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL)
          (ORACLE_HOME = ORACLE_HOME)
          (SID_NAME = DBDG_SITE21)
        )
      )
    ADR_BASE_LISTENER = /apps/oracle/oracle_base
    
  2. Mulai pemroses sementara:

    lsnrctl start LISTENER_DBDG_SITE2
    

Menyiapkan database standby

  1. Setiap instance database memerlukan direktori untuk menyimpan log audit. Buat direktori file audit di setiap server Solusi Bare Metal di lokasi database standby:

    mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
    
  2. Ubah file $ORACLE_HOME/dbs/initDBDG_SITE21.ora yang disalin ke server database standby sebelumnya:

    1. Setel db_unique_name ke nama database standby yang baru.
    2. Ubah parameter khusus instance untuk mencerminkan nama instance untuk database standby. Sebagai contoh:
      • instance_number
      • thread
      • undo_tablespace
    3. Tetapkan parameter audit_file_dest untuk menggunakan direktori yang dibuat pada langkah sebelumnya.
    4. Jika diskgroup ASM di setiap lokasi menggunakan nama yang berbeda, ubah parameter db_file_name_convert dan log_file_name_convert agar cocok dengan lokasi file baru.
    5. Jadikan parameter control_files sebagai komentar.

    Contoh berikut menunjukkan file parameter database yang diperbarui dengan modifikasi menggunakan contoh yang diberikan dalam panduan ini. Perhatikan bahwa file parameter akan berisi parameter tambahan yang spesifik untuk penyiapan database Anda. Hanya parameter yang memerlukan modifikasi untuk standby yang ditampilkan:

    *.db_unique_name='DBDG_SITE2'
    DBDG_SITE21.instance_number=1
    DBDG_SITE22.instance_number=2
    DBDG_SITE21.thread=1
    DBDG_SITE22.thread=2
    DBDG_SITE21.undo_tablespace='UNDOTBS1'
    DBDG_SITE22.undo_tablespace='UNDOTBS2'
    *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump'
    #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'
    
  3. Dalam file /etc/oratab, tambahkan entri agar perintah oraenv dapat menetapkan variabel lingkungan untuk database standby:

    DBDG_SITE21:ORACLE_HOME:N
    

Membuat database standby

  1. Setel variabel lingkungan ORACLE_SID agar Anda dapat terhubung ke database standby:

    source oraenv <<< "DBDG_SITE21"
    

    Anda akan menerima The Oracle base has been set to /apps/oracle/oracle_base respons.

  2. Sebelum menduplikasi database utama, Anda harus memulai instance standby secara manual pada satu node. Login ke server Solusi Bare Metal pertama di lokasi standby, mulai SQL*Plus, lalu mulai database standby di nomount mode menggunakan pfile:

    sqlplus / as sysdba
    
    STARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    

    Jika berhasil, Anda akan menerima respons yang mirip dengan contoh berikut:

    ORACLE instance started.
    Total System Global Area 1.2885E+10 bytes
    Fixed Size 15988824 bytes
    Variable Size 1845493760 bytes
    Database Buffers 1.1006E+10 bytes
    Redo Buffers 17563648 bytes
    
  3. Keluar dari SQL*Plus setelah memulai instance:

    EXIT;
    
  4. Memverifikasi konektivitas ke layanan database standby. Dari setiap server Solusi Bare Metal di lokasi database utama, coba hubungkan ke instance standby menggunakan SQL*Plus. Masukkan sandi login jarak jauh SYS secara manual agar berhasil terhubung ke instance.

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    Jika berhasil, Anda akan menerima perintah SQL*Plus standar, yang dapat digunakan untuk memeriksa parameter instance:

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    Anda akan melihat respons seperti berikut:

                    NAME        TYPE                          VALUE
        ---------------- ----------- ------------------------------
          db_unique_name      string      DBDG_SITE2
    
  5. Keluar dari SQL*Plus setelah memeriksa parameter DB_UNIQUE_NAME:

    EXIT;
    
  6. Hubungkan ke Pengelola Pemulihan, lalu jalankan perintah duplicate untuk menduplikasi mode standby dari database utama yang aktif:

    rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
    
    DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
    

    Jika berhasil, setelah pemrosesan, Anda akan menerima pesan yang mirip dengan contoh berikut:

    Finished Duplicate Db at ...
    
  7. Keluar dari Pengelola Pemulihan:

    EXIT;
    

Menyelesaikan pembuatan database standby

  1. Selama duplikasi database, ASM membuat file kontrol baru untuk database standby. Menghubungkan ke instance standby baru dan mendapatkan nama file kontrol baru. Contoh berikut menunjukkan dua file kontrol yang disimpan dalam diskgroup +DATA dan +RECO:

    sqlplus / as sysdba
    
    SET LINESIZE 140
    COLUMN NAME FORMAT a15
    COLUMN VALUE FORMAT a125
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';
    

    Nama file kontrol ditampilkan di kolom "Value":

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. Catat nama file kontrol dari langkah sebelumnya, dan ganti entri apa pun untuk parameter control_files di $ORACLE_HOME/dbs/initDBDG_SITE21.ora dengan nilai baru. Jika ada beberapa file kontrol, rangkum setiap file dalam tanda kutip tunggal yang dipisahkan dengan koma:

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. Hubungkan database standby dengan SQL*Plus dan buat spfile baru dari pfile yang diubah:

    sqlplus / as sysdba
    
    CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    
  4. Salin file sandi ke diskgroup ASM dengan menggunakan perintah asmcmd:

    asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
    
  5. Matikan instance database standby dan hapus file pfile dan sandi sementara:

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. Hentikan pemroses sementara yang digunakan untuk duplikasi database di server Solusi Bare Metal pertama di lokasi database standby:

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. Hapus entri sementara dalam file $ORACLE_HOME/network/admin/listener.ora di server Solusi Bare Metal pertama di lokasi database standby.

  8. Tambahkan database dan instance standby baru ke registry cluster menggunakan perintah srvctl:

    srvctl add database \
      -db DBDG_SITE2 \
      -oraclehome /apps/oracle/19.0.0/db_home1 \
      -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \
      -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \
      -role PHYSICAL_STANDBY \
      -startoption MOUNT
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE21 \
      -node site2db1
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE22 \
      -node site2db2
    
  9. Mulai database standby menggunakan perintah srvctl:

    srvctl start database -db DBDG_SITE2
    

Langkah berikutnya

Selanjutnya, konfigurasikan dan aktifkan broker Data Guard.