Active Data Guard遠隔同期インスタンスのデプロイ

各リージョンのOCI Compute VMに遠隔同期インスタンスをデプロイして、リージョン間のデータ損失をゼロにします。

  1. プライマリ・データベースから遠隔同期制御ファイルを作成し、遠隔同期ホストにコピーします。
    SQL> alter database create far sync instance controlfile as '/home/oracle/controlfs.ctl';

    新しく作成した制御ファイルを遠隔同期インスタンス・ホストにコピーします。

    scp -p controlfs.ctl farsync-region1:/u01/app/oracle/oradata/fstor/controlfs/
    scp -p controlfs.ctl farsync-region2:/u01/app/oracle/oradata/fssyd/controlfs/
  2. プライマリ・データベースのパスワード・ファイルを遠隔同期インスタンス名を使用して遠隔同期ホストにコピーします。
    この例では、プライマリ・リージョン(リージョン1)の遠隔同期インスタンスの名前はFSTORになります。したがって、パスワード・ファイルの名前はorapwFSTORになります。
    # check the location of the password file
    SQL> select file_name from v$passwordfile_info;
                        
    # as grid user, copy the file from ASM to the local filesystem
    asmcmd -p
    cp +DATAC2/DB_REGION1/PASSWORD/pwddb_region1.421.1185102507 /home/grid/orapw
                       
    # as root user, change the owner of the password file to oracle user
    cp /home/grid/orapw /home/oracle/
    chown oracle:oinstall /home/oracle/orapw
                        
    # copy the files to the Far Sync instance hosts using the new names "orapwFSTOR" and "orapwFSSYD"
    scp -p /home/oracle/orapw farsync-region1:/u01/app/oracle/product/19c/dbhome_1/dbs/orapwFSTOR
    scp -p /home/oracle/orapw farsync-region2:/u01/app/oracle/product/19c/dbhome_1/dbs/orapwFSSYD
  3. プライマリ・データベースから遠隔同期インスタンスのパラメータ・ファイルを作成し、それを遠隔同期インスタンス・ホストにコピーして、遠隔同期インスタンスのパラメータ値とディレクトリ・パスを反映するようにパラメータを調整します。または、遠隔同期インスタンス・ホストの新しいパラメータ・ファイル(プライマリ・リージョンなど)から開始できます。
    1. プライマリ・リージョン(FSTOR):
      # create a parameter file
      vi /u01/app/oracle/product/19c/dbhome_1/dbs/init_FSTOR.ora
      *.db_name='DBTOR'
      *.db_unique_name='FSTOR'
      *.compatible='19.0.0'
      *.control_files='/u01/app/oracle/oradata/fstor/controlfs/controlfs.ctl'
      *.diagnostic_dest='/u01/app/oracle/oradata/fstor/diag/'
      *.core_dump_dest='/u01/app/oracle/oradata/fstor/coredump/'
      *.audit_file_dest='/u01/app/oracle/oradata/fstor/audit/'
      *.audit_trail='DB'
      *.db_recovery_file_dest='/u01/app/oracle/oradata/fstor/fra/'
      *.db_recovery_file_dest_size=250g
      *.dg_broker_config_file1='/u01/app/oracle/oradata/fstor/dg_broker/fstor_01.dat'
      *.dg_broker_config_file2='/u01/app/oracle/oradata/fstor/dg_broker/fstor_02.dat'
      *.dg_broker_start=TRUE*.dispatchers='(PROTOCOL=TCP) (SERVICE=FSTORXDB)'
      *.standby_file_management='AUTO'
                                  
      # start the instance with the parameter file
      export ORACLE_SID=FSTOR
      sqlplus / as sysdba
      startup pfile='/u01/app/oracle/product/19c/dbhome_1/dbs/init_FSTOR.ora' nomount;
                                  
      # create an spfile
      create spfile='/u01/app/oracle/product/19c/dbhome_1/dbs/spfileFSTOR.ora' from pfile='/u01/app/oracle/product/19c/dbhome_1/dbs/init_FSTOR.ora';
                                  
      # restart the instance with the spfile
      shutdown immediate;
      startup mount;
      select name, db_unique_name, database_role, open_mode from v$database;
    2. 「スタンバイ」リージョン(FSSYD):
      # create a parameter file
      vi /u01/app/oracle/product/19c/dbhome_1/dbs/init_FSSYD.ora
      *.db_name='DBTOR'
      *.db_unique_name='FSSYD'
      *.compatible='19.0.0'
      *.control_files='/u01/app/oracle/oradata/fssyd/controlfs/controlfs.ctl'
      *.diagnostic_dest='/u01/app/oracle/oradata/fssyd/diag/'
      *.core_dump_dest='/u01/app/oracle/oradata/fssyd/coredump/'
      *.audit_file_dest='/u01/app/oracle/oradata/fssyd/audit/'
      *.audit_trail='DB'
      *.db_recovery_file_dest='/u01/app/oracle/oradata/fssyd/fra/'
      *.db_recovery_file_dest_size=250g
      *.dg_broker_config_file1='/u01/app/oracle/oradata/fssyd/dg_broker/fssyd_01.dat'
      *.dg_broker_config_file2='/u01/app/oracle/oradata/fssyd/dg_broker/fssyd_02.dat'
      *.dg_broker_start=TRUE
      *.dispatchers='(PROTOCOL=TCP) (SERVICE=FSSYDXDB)'
      *.standby_file_management='AUTO'
                                  
      # start the instance with the parameter file
      export ORACLE_SID=FSSYD
      sqlplus / as sysdba
      startup pfile='/u01/app/oracle/product/19c/dbhome_1/dbs/init_FSSYD.ora' nomount;
                                  
      # create an spfile
      create spfile='/u01/app/oracle/product/19c/dbhome_1/dbs/spfileFSSYD.ora' from pfile='/u01/app/oracle/product/19c/dbhome_1/dbs/init_FSSYD.ora';
                                  
      # restart the instance with the spfile
      shutdown immediate;
      startup mount;
      select name, db_unique_name, database_role, open_mode from v$database;
  4. 各遠隔同期ホストでデータベース・リスナーを作成して起動します。
    1. 「Primary(プライマリ)」リージョンで、次のようにします。
      vi $ORACLE_HOME/network/admin/listener.ora
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-region1.hubsubnetregion1.hubvcnregion1.oraclevcn.com)(PORT = 1521))
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
        )
                                  
      lsnrctl start
      lsnrctl services
    2. 「スタンバイ」リージョンで、次の手順を実行します。
      vi $ORACLE_HOME/network/admin/listener.ora
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-region2.hubsubnetregion2.hubvcnregion2.oraclevcn.com)(PORT = 1521))
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
        )
                                  
      lsnrctl start
      lsnrctl services
  5. 遠隔同期ホストにプライマリおよびスタンバイのTNSエントリを追加します。
    vi $ORACLE_HOME/network/admin/tnsnames.ora
                        
    DB_REGION1 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = vmc1ca-4vzoi-scan.ocidbdelegated.ocivnoffsitedb.oraclevcn.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = db_region1.ocidbdelegated.ocivnoffsitedb.oraclevcn.com)
        )
      )
    
    DB_REGION2 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = abvmc1auseh-glcfo-scan.ociabvnet5subn.ociabvirtualne.oraclevcn.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = db_region2.ociabvnet5subn.ociabvirtualne.oraclevcn.com)
        )
      )
  6. プライマリ・データベース・ホストとスタンバイ・データベース・ホストに遠隔同期TNSエントリを追加し、接続をテストします。

    遠隔同期インスタンスのTNS接続文字列を、プライマリ・データベース・ホストおよびスタンバイ・データベース・ホスト(Exadata VMクラスタのすべてのホスト)のtnsname.oraファイルに追加します。

    vi $ORACLE_HOME/network/admin/dbtor/tnsnames.ora
    FSTOR =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-region1)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = FSTOR)
        )
      )
    
    FSSYD =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-region2)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = FSSYD)
        )
      )
    # Test the connectivity
    sqlplus SYS@FSTOR as sysdba
    show parameter instance_name
    
    sqlplus SYS@FSSYD as sysdba
    show parameter instance_name
    
    # If the connection fails, ensure port 1521 is open on Far Sync hosts
    sudo firewall-cmd --permanent --add-port=1521/tcp
    sudo firewall-cmd --reload
  7. (プライマリ・データベースから)Active Data Guardブローカ構成で遠隔同期インスタンスを追加して有効にします。

    Active Data Guardブローカを使用して、プライマリ・データベースへの接続中に遠隔同期インスタンスを既存のActive Data Guard構成に追加します。

    dgmgrl SYS as sysdba
    
    DGMGRL> ADD FAR_SYNC FSTOR AS CONNECT IDENTIFIER IS FSTOR;
    DGMGRL> ENABLE FAR_SYNC FSTOR;
    
    DGMGRL> ADD FAR_SYNC FSSYD AS CONNECT IDENTIFIER IS FSSYD;
    DGMGRL> ENABLE FAR_SYNC FSSYD;
  8. プライマリ・データベースおよび遠隔同期インスタンスのブローカでRedoRoutesプロパティを構成します。

    Active Data GuardブローカのRedoRoutesプロパティを使用して、redoをローカル遠隔同期インスタンスにFastSyncモードで転送するようにプライマリ・データベースを構成し、遠隔同期インスタンスを使用してredoをリモート・スタンバイ・データベースにASYNCモードで転送します。

    DGMGRL> EDIT DATABASE 'db_region1' SET PROPERTY RedoRoutes = '( LOCAL : ( FSTOR FASTSYNC PRIORITY=1, db_region2 ASYNC PRIORITY=2 ))';
    DGMGRL> EDIT FAR_SYNC 'FSTOR' SET PROPERTY RedoRoutes = '( db_region1 : db_region2 ASYNC )';
    
    DGMGRL> EDIT DATABASE 'db_region2' SET PROPERTY RedoRoutes = '( LOCAL : ( FSSYD FASTSYNC PRIORITY=1, db_region1 ASYNC PRIORITY=2 ))';
    DGMGRL> EDIT FAR_SYNC 'FSSYD' SET PROPERTY RedoRoutes = '( db_region2 : db_region1 ASYNC )';
    プライマリ、スタンバイおよび遠隔同期インスタンスのデータベースlog_archive_dest_nパラメータは、それに応じて設定されます。
  9. 構成保護モードをMaximum Availabilityに変更します。
    DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
  10. Active Data Guard構成を確認します。
    DGMGRL> SHOW CONFIGURATION
    
    Configuration - dbtor_dgconf
    
    Protection Mode: MaxAvailability
    Members:
      db_region1 - Primary database
      fstor      - Far sync instance
      db_region2  - Physical standby database
    
    Members Not Receiving Redo:
      fssyd      - Far sync instance
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
      SUCCESS   (status updated 57 seconds ago)

    ノート:

    最初は、リモート遠隔同期インスタンスが初めてredoデータを受信するまで、Warning: ORA-16789: standby redo logs configured incorrectlyが表示されることがあります。たとえば、ロール・スイッチの後、またはredoルートを一時的に更新します。

    スイッチオーバー後に構成を確認します。

    DGMGRL> SHOW CONFIGURATION
    
    Configuration - dbtor_dgconf
    
    Protection Mode: MaxAvailability
    Members:
      db_region2  - Primary database
      fssyd      - Far sync instance
      db_region1 - Physical standby database
    
    Members Not Receiving Redo:
      fstor      - Far sync instance
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
      SUCCESS   (status updated 54 seconds ago)