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

Active Data Guard遠隔同期インスタンスを各リージョンのOCIコンピュート仮想マシンにデプロイして、リージョン間のデータ損失ゼロにします。

  1. 遠隔同期制御ファイルを作成します。

    プライマリ・データベースから遠隔同期インスタンスの制御ファイルを作成します。

    SQL> alter database create far sync instance controlfile as '/home/oracle/controlfs.ctl';

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

    scp -p controlfs.ctl farsync-toronto:/u01/app/oracle/oradata/fstor/controlfs/
    scp -p controlfs.ctl farsync-sydney:/u01/app/oracle/oradata/fssyd/controlfs/
  2. パスワード・ファイルをコピーします。

    遠隔同期インスタンスの名前を使用して、プライマリ・データベースのパスワード・ファイルを遠隔同期インスタンス・ホストにコピーします。この例では、トロント・リージョンの遠隔同期インスタンスの名前は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_TORONTO/PASSWORD/pwddb_toronto.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-toronto:/u01/app/oracle/product/19c/dbhome_1/dbs/orapwFSTOR                    
    scp -p /home/oracle/orapw farsync-sydney:/u01/app/oracle/product/19c/dbhome_1/dbs/orapwFSSYD
  3. パラメータ・ファイルを作成します。

    プライマリ・データベースから遠隔同期インスタンスのパラメータ・ファイルを作成し、遠隔同期インスタンス・ホストにコピーして、遠隔同期インスタンスのパラメータ値とディレクトリ・パスを反映するようにパラメータを調整します。

    または、遠隔同期インスタンス・ホスト(トロント・リージョンなど)の新しいパラメータ・ファイルから開始することもできます。

    #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;

    シドニー地域:

    #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. データベース・リスナーを作成します。

    遠隔同期ホストで、データベース・リスナーを作成して起動します。

    トロント地域:

    vi $ORACLE_HOME/network/admin/listener.ora
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-toronto.hubsubnettoront.hubvcntoronto.oraclevcn.com)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
     
    lsnrctl start
    lsnrctl services

    シドニー地域:

    vi $ORACLE_HOME/network/admin/listener.ora
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-sydney.hubsubnetsydney.hubvcnsydney.oraclevcn.com)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
     
    lsnrctl start
    lsnrctl services
  5. プライマリおよびスタンバイのTNSエントリを遠隔同期ホストに追加します。
    vi $ORACLE_HOME/network/admin/tnsnames.ora
     
    DB_TORONTO=
            (DESCRIPTION=
              (ADDRESS=(PROTOCOL=TCP)(HOST=vmc1ca-4vzoi-scan.ocidbdelegated.ocivnoffsitedb.oraclevcn.com)(PORT=1521))
              (CONNECT_DATA=
                (SERVER=DEDICATED)
                (SERVICE_NAME=db_toronto.ocidbdelegated.ocivnoffsitedb.oraclevcn.com)
                )
              )
     
    DB_SYDNEY=
            (DESCRIPTION=
              (ADDRESS=(PROTOCOL=TCP)(HOST=abvmc1auseh-glcfo-scan.ociabvnet5subn.ociabvirtualne.oraclevcn.com)(PORT=1521))
              (CONNECT_DATA=
                (SERVER=DEDICATED)
                (SERVICE_NAME=db_sydney.ociabvnet5subn.ociabvirtualne.oraclevcn.com)
                )
              )
  6. 遠隔同期TSNエントリをプライマリおよびスタンバイ・データベース・ホストに追加します。

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

    vi $ORACLE_HOME/network/admin/dbtor/tnsnames.ora
    FSTOR =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-toronto)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = FSTOR)
        )
      )
     
    FSSYD =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-sydney)(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, make sure port 1521 is open on the Far Sync instance 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. Active Data GuardブローカRedoRoutesプロパティを編集します。

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

    EDIT DATABASE 'db_toronto' SET PROPERTY RedoRoutes = '( LOCAL : ( fstor FASTSYNC PRIORITY=1, db_sydney ASYNC PRIORITY=2 ))';
    EDIT FAR_SYNC 'fstor' SET PROPERTY RedoRoutes = '( db_toronto : db_sydney ASYNC )';
     
    EDIT DATABASE 'db_sydney' SET PROPERTY RedoRoutes = '( LOCAL : ( fssyd FASTSYNC PRIORITY=1, db_toronto ASYNC PRIORITY=2 ))';
    EDIT FAR_SYNC 'fssyd' SET PROPERTY RedoRoutes = '( db_sydney : db_toronto ASYNC )';
    プライマリ、スタンバイおよび遠隔同期インスタンスのデータベースlog_archive_dest_nパラメータが適切に設定されるようになりました。
  9. Active Data Guard構成保護モードを変更します。

    Active Data Guard構成の保護モードを最大可用性に増やします。

    DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
    
  10. Active Data Guard構成を確認します。

    構成を確認してください。

    DGMGRL> show configuration
     
    Configuration - dbtor_dgconf
     
      Protection Mode: MaxAvailability
      Members:
      db_toronto - Primary database
        fstor      - Far sync instance
          db_sydney  - Physical standby database
     
      Members Not Receiving Redo:
      fssyd      - Far sync instance
     
    Fast-Start Failover:  Disabled
     
    Configuration Status:
    SUCCESS   (status updated 57 seconds ago)

    ノート:

    最初は、リモート遠隔同期インスタンスは、ロール切替え後、またはリモート遠隔同期インスタンスにデータを送信するようにREDOルート構成を一時的に変更して初めてREDOデータを受信するまで、「警告: ORA-16789: スタンバイREDOログが正しく構成されていません」という警告を表示します。

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

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