Active Data Guard遠隔同期インスタンスのデプロイ
各リージョンのOCI Compute VMに遠隔同期インスタンスをデプロイして、リージョン間のデータ損失をゼロにします。
- プライマリ・データベースから遠隔同期制御ファイルを作成し、遠隔同期ホストにコピーします。
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/
- プライマリ・データベースのパスワード・ファイルを遠隔同期インスタンス名を使用して遠隔同期ホストにコピーします。この例では、プライマリ・リージョン(リージョン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
- プライマリ・データベースから遠隔同期インスタンスのパラメータ・ファイルを作成し、それを遠隔同期インスタンス・ホストにコピーして、遠隔同期インスタンスのパラメータ値とディレクトリ・パスを反映するようにパラメータを調整します。または、遠隔同期インスタンス・ホストの新しいパラメータ・ファイル(プライマリ・リージョンなど)から開始できます。
- プライマリ・リージョン(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;
- 「スタンバイ」リージョン(
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;
- プライマリ・リージョン(FSTOR):
- 各遠隔同期ホストでデータベース・リスナーを作成して起動します。
- 「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
- 「スタンバイ」リージョンで、次の手順を実行します。
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
- 「Primary(プライマリ)」リージョンで、次のようにします。
- 遠隔同期ホストにプライマリおよびスタンバイの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) ) )
- プライマリ・データベース・ホストとスタンバイ・データベース・ホストに遠隔同期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
- (プライマリ・データベースから)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;
- プライマリ・データベースおよび遠隔同期インスタンスのブローカで
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
パラメータは、それに応じて設定されます。 - 構成保護モードを
Maximum Availability
に変更します。DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
- 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)