- Active Data Guard Far Sync를 배포하여 Oracle Database@Azure 리전 전반에서 데이터 보호
- Active Data Guard Far Sync 인스턴스 배치
Active Data Guard Far Sync 인스턴스 배포
각 리전의 OCI 컴퓨트 가상 머신에 Active Data Guard Far Sync 인스턴스를 배포하여 리전 간 데이터 손실이 없도록 보장합니다.
- Far Sync Control File을 생성합니다.
primary database에서 far sync instance에 대한 콘트롤 파일을 생성합니다.
SQL> alter database create far sync instance controlfile as '/home/oracle/controlfs.ctl';
새로 생성된 Control File을 Far Sync 인스턴스 호스트로 복사합니다.
scp -p controlfs.ctl farsync-toronto:/u01/app/oracle/oradata/fstor/controlfs/ scp -p controlfs.ctl farsync-sydney:/u01/app/oracle/oradata/fssyd/controlfs/
- 비밀번호 파일을 복사합니다.
Far Sync 인스턴스의 이름을 사용하여 기본 데이터베이스의 암호 파일을 Far Sync 인스턴스 호스트에 복사합니다. 이 예에서는 토론토 지역의 Far Sync 인스턴스의 이름이
FSTOR
입니다. 따라서 Password file의 이름은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
- 파라미터 파일을 생성합니다.
primary database에서 far sync instance에 대한 파라미터 파일을 생성하고 far sync instance 호스트에 복사한 다음 far sync instance에 대한 파라미터 값과 디렉토리 경로를 반영하도록 파라미터를 조정합니다.
또는 Far Sync 인스턴스 호스트(예: 토론토 지역)에서 새 매개변수 파일로 시작할 수 있습니다.
#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;
- 데이터베이스 리스너를 생성합니다.
Far Sync 호스트에서 데이터베이스 리스너를 생성하고 시작합니다.
토론토 지역:
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
- Far Sync 호스트에 기본 및 대기 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) ) )
- Far Sync TSN 항목을 기본 및 대기 데이터베이스 호스트에 추가합니다.
Exadata VM 클러스터의 모든 호스트에 있는 기본 및 대기 데이터베이스 호스트의
tnsname.ora
파일에 Far Sync 인스턴스의 TNS 접속 문자열을 추가합니다.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
- 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;
- Active Data Guard 브로커의 RedoRoutes 등록 정보를 편집합니다.
Active Data Guard 브로커의 RedoRoutes 등록 정보를 사용하여 리두를 FastSync 모드의 로컬 Far Sync 인스턴스로 전송하고 Far Sync 인스턴스를 사용하여 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 )';
기본, 대기 및 Far Sync 인스턴스에 대한 데이터베이스log_archive_dest_n
매개변수가 이에 따라 설정됩니다. - Active Data Guard 구성 보호 모드를 변경합니다.
Active Data Guard 구성의 보호 모드를 최대 가용성으로 늘립니다.
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
- 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)
주:
처음에는 원격 Far Sync 인스턴스에 "경고: ORA-16789: standby 리두 로그가 잘못 구성됨" 경고가 표시됩니다. 이 경고는 롤 전환 후 또는 일시적으로 리두 경로 구성을 변경하여 원격 Far Sync 인스턴스에 데이터를 전송할 때까지 리두 데이터를 처음으로 수신할 때까지 표시됩니다.스위치오버 후 구성을 확인합니다.
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)