Active Data Guard Far Sync 인스턴스 배치
각 리전의 OCI Compute VM에 Far Sync 인스턴스를 배포하여 리전 간 데이터 손실이 발생하지 않도록 보장합니다.
- Primary 데이터베이스에서 Far Sync 제어 파일을 생성하고 Far Sync 호스트로 복사합니다.
SQL> alter database create far sync instance controlfile as '/home/oracle/controlfs.ctl';
새로 생성된 콘트롤 파일을 Far Sync 인스턴스 호스트로 복사합니다.
scp -p controlfs.ctl farsync-region1:/u01/app/oracle/oradata/fstor/controlfs/ scp -p controlfs.ctl farsync-region2:/u01/app/oracle/oradata/fssyd/controlfs/
- Far Sync 인스턴스 이름을 사용하여 기본 데이터베이스의 암호 파일을 Far Sync 호스트에 복사합니다.이 예에서는 기본 영역(지역 1)에 있는 Far Sync 인스턴스의 이름이
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
- 기본 데이터베이스에서 Far Sync 인스턴스에 대한 매개변수 파일을 생성하고 Far Sync 인스턴스 호스트에 복사한 다음 Far Sync 인스턴스의 매개변수 값 및 디렉토리 경로를 반영하도록 매개변수를 조정합니다. 또는 Far Sync 인스턴스 호스트(예: 기본 영역)에서 새 매개변수 파일로 시작할 수 있습니다.
- 기본 영역(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)에서 다음을 수행합니다.
- 각 Far Sync 호스트에서 데이터베이스 리스너를 생성하고 시작합니다.
- 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
- Standby 영역에서:
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 영역:
- Far Sync 호스트에 기본 및 대기 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) ) )
- 기본 및 대기 데이터베이스 호스트에 Far Sync TNS 항목을 추가하고 연결을 테스트합니다.
Far Sync 인스턴스의 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 브로커 구성에서 Far Sync 인스턴스를 추가하고 사용으로 설정합니다.
기본 데이터베이스에 연결된 상태에서 Active Data Guard 브로커를 사용하여 Far Sync 인스턴스를 기존 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;
- 기본 데이터베이스 및 Far Sync 인스턴스에 대해 브로커에서
RedoRoutes
속성을 구성합니다.Active Data Guard 브로커의
RedoRoutes
속성을 사용하여redo
를FastSync
모드의 로컬 Far Sync 인스턴스로 전송하고 Far Sync 인스턴스를 사용하여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 )';
primary, standby 및 Far Sync 인스턴스에 대한 데이터베이스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)
주:
처음에는 원격 Far Sync 인스턴스에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)