구성 완료
Oracle Data Guard를 구성하고 대기 데이터베이스를 등록하며 온-프레미스 및 대기 데이터베이스 비밀번호를 동기화합니다.
Oracle Data Guard Broker 구성
기본 및 대기 데이터베이스에서 dg_broker_config_file
매개변수를 사용으로 설정하여 Oracle Data Guard를 구성합니다. Oracle ASM(Oracle Automatic Storage Management) 의 경우 중개자 구성 파일을 별도의 디스크 그룹에 배치합니다. Oracle RAC(Oracle Real Application Clusters) 의 경우 중개자 구성 파일이 공유 저장 영역에 있어야 합니다.
- 온-프레미스 데이터베이스 호스트에 대한
dg_broker_start
값을 확인합니다.false
로 설정해야 합니다.SQL> show parameter dg_broker_start;
출력은 다음과 비슷합니다:NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start boolean FALSE
- 대기 Oracle Database Exadata Cloud Service에서 Oracle Data Guard 구성 파일을 확인합니다.
다음은 출력 예입니다:SQL> show parameter dg_broker_config_file1;
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file1 string /u02/app/oracle/product/19.0.0.0/dbhome_5/dbs/dr1DB1_phx3g7.dat
다음은 출력 예입니다:SQL> show parameter dg_broker_config_file2;
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file2 string /u02/app/oracle/product/19.0.0.0/dbhome_5/dbs/dr2DB1_phx3g7.dat
- 데이터 파일을 표시한 다음 파일을 저장할 위치를 변경합니다. 예를 들어, Oracle ASM, Oracle RAC 또는 장치가 있습니다.
SQL> select name from v$datafile;
NAME -------------------------------------------------------------------------------- +DATAC1/DB1_PHX3G7/DATAFILE/system.348.1063638053 +DATAC1/DB1_PHX3G7/DATAFILE/sysaux.349.1063638055 +DATAC1/DB1_PHX3G7/DATAFILE/undotbs1.350.1063638057 +DATAC1/DB1_PHX3G7/DATAFILE/undotbs2.351.1063638057 +DATAC1/DB1_PHX3G7/DATAFILE/users.352.1063638059
SQL> alter system set dg_broker_config_file1='+DATAC1/DB1_PHX3G7/dr1DB1_phx3g7.dat';
SQL> alter system set dg_broker_config_file2='+RECOC1/DB1_PHX3G7/dr2DB1_phx3g7.dat';
- 기본 온-프레미스 Oracle Exadata Database Machine에서 Oracle Data Guard 구성 파일을 확인합니다.
다음은 출력 예입니다:SQL> show parameter dg_broker_config_file1;
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file1 string /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1db1.dat.dat
다음은 출력 예입니다:SQL> show parameter dg_broker_config_file2;
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file2 string /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2db1.dat
- 데이터 파일을 표시한 다음 파일을 저장할 위치를 변경합니다.
다음은 출력 예입니다:SQL> select name from v$datafile;
다음 명령을 실행하여 구성 파일 위치를 변경합니다:NAME -------------------------------------------------------------------------------- +DATAC1/DB1/DATAFILE/system.277.1063487795 +DATAC1/DB1/DATAFILE/sysaux.270.1063487827 +DATAC1/DB1/DATAFILE/undotbs1.259.1063487843 +DATAC1/DB1/DATAFILE/undotbs2.275.1063487867 +DATAC1/DB1/DATAFILE/users.269.1063487879
SQL> alter system set dg_broker_config_file1='+DATAC1/DB1/dr1db1.dat';
SQL> alter system set dg_broker_config_file2='+RECOC1/DB1/dr2db1.dat';
SQL> alter system set dg_broker_start=false; SQL> alter system set dg_broker_config_file1='+DATAC1/DB1/dr1db1.dat'; SQL> alter system set dg_broker_config_file2='+RECOC1/DB1/dr2db1.dat';
- 기본 온-프레미스 Oracle Exadata Database Machine에서 Oracle Data Guard Broker 프로세스를 시작합니다.
SQL> alter system set dg_broker_start=true; SQL> show parameter dg_broker_start
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start boolean TRUE
SQL> select pname from v$process where pname like 'DMON%';
PNAME ----- DMON
- 대기 데이터베이스에서 Oracle Data Guard Broker 프로세스를 시작합니다.
SQL> alter system set dg_broker_start=true; SQL> show parameter dg_broker_start
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start boolean TRUE
SQL> select pname from v$process where pname like 'DMON%';
PNAME ----- DMON
대기 데이터베이스 등록
Oracle Data Guard 명령행 인터페이스(DGMGRL) 를 사용하여 기본 온-프레미스 호스트의 중개자 구성에 대기 데이터베이스 프로파일을 등록하거나 추가합니다.
- 기본 호스트에
sys
로 로그인합니다.$ dgmgrl sys/sys password@net service name for primary database
- 기본 데이터베이스 이름을 사용하는 구성을 생성합니다.
예를 들면 다음과 같습니다:DGMGRL> CREATE CONFIGURATION configuration_name AS PRIMARY DATABASE IS primary database name CONNECT IDENTIFIER IS primary database name;
CREATE CONFIGURATION OnPremExaDR AS PRIMARY DATABASE IS DB1 CONNECT IDENTIFIER IS DB1;
- standby database를 추가합니다.식별자가 대문자 및 소문자를 포함하여 서비스 이름과 동일한지 확인합니다.
예를 들면 다음과 같습니다:DGMGRL> ADD DATABASE standby unique database name AS CONNECT IDENTIFIER IS standby unique database name MAINTAINED AS PHYSICAL;
ADD DATABASE DB1_PHX3G7 AS CONNECT IDENTIFIER IS DB1_phx3g7 MAINTAINED AS PHYSICAL;
ORA-16698 오류 메시지가 표시되면 식별자가 서비스 이름과 동일한지 확인하십시오.오류: ORA-16698: 멤버에 SERVICE 속성이 설정된 LOG_ARCHIVE_DEST_n 매개변수가 있습니다.
- 로그 아카이브 대상 상태를 변경합니다.
SQL> alter system set log_archive_dest_state_10='DEFER';
SQL> alter system set log_archive_dest_10='';
- 로그 아카이브 대상을 확인하십시오.
SQL> show parameter log_archive_dest;
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DB1_PHX3G7 log_archive_dest_10 string log_archive_dest_11 string log_archive_dest_12 string log_archive_dest_13 string log_archive_dest_14 string log_archive_dest_15 string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_16 string log_archive_dest_17 string log_archive_dest_18 string log_archive_dest_19 string log_archive_dest_2 string SERVICE=DB1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB1 log_archive_dest_20 string log_archive_dest_21 string log_archive_dest_22 string log_archive_dest_23 string
- 구성을 사용으로 설정합니다.
DGMGRL> enable configuration;
- 구성을 표시합니다.
DGMGRL> show configuration;
출력은 다음과 같이 표시됩니다:Configuration - onpremexadr Protection Mode: MaxPerformance Members: db1 - Primary database Warning: ORA-16809: multiple warnings detected for the member db1_phx3g7 - Physical standby database Error: ORA-16532: Oracle Data Guard broker configuration does not exist Fast-Start Failover: Disabled Configuration Status: ERROR (status updated 21 seconds ago)
- 대기 Oracle Database Exadata Cloud Service에서 로그인하여 구성을 확인합니다.
[oracle@exacs82-vm3sv1 ~]$ dgmgrl DGMGRL> connect
Username: sys Password: Connected to "DB1_phx3g7" Connected as SYSDBA.
출력은 다음과 비슷합니다.DGMGRL> show configuration;
Configuration - onpremexadr Protection Mode: MaxPerformance Members: db1 - Primary database Warning: ORA-16809: multiple warnings detected for the member db1_phx3g7 - Physical standby database Warning: ORA-16809: multiple warnings detected for the member Fast-Start Failover: Disabled Configuration Status: WARNING (status updated 43 seconds ago
온프레미스에서 OCI로 리두 로그 파일 복사
redo
로그 파일 및 기타 데이터베이스 파일을 온-프레미스 데이터베이스에서 OCI(Oracle Cloud Infrastructure) 인스턴스로 복사합니다.
- 온-프레미스 데이터베이스 파일을 봅니다.
select name from v$datafile;
출력은 다음과 같이 표시됩니다:NAME -------------------------------------------------------------------------------- +DATAC1/DB1/DATAFILE/system.277.1063487795 +DATAC1/DB1/DATAFILE/sysaux.270.1063487827 +DATAC1/DB1/DATAFILE/undotbs1.259.1063487843 +DATAC1/DB1/DATAFILE/undotbs2.275.1063487867 +DATAC1/DB1/DATAFILE/users.269.1063487879
- 온-프레미스 데이터 파일에 대한 각 그룹의 크기를 봅니다.
select bytes, group# from v$log;
출력은 다음과 같이 표시됩니다:BYTES GROUP# ---------- ---------- 209715200 1 209715200 2 209715200 3 209715200 4
- 온-프레미스 데이터 파일에 대한
redo
로그를 봅니다.select member from v$logfile;
출력은 다음과 같이 표시됩니다:MEMBER -------------------------------------------------------------------------------- +DATAC1/DB1/ONLINELOG/group_2.272.1063449917 +RECOC1/DB1/ONLINELOG/group_2.281.1063449917 +DATAC1/DB1/ONLINELOG/group_1.273.1063449917 +RECOC1/DB1/ONLINELOG/group_1.282.1063449919 +DATAC1/DB1/ONLINELOG/group_3.268.1063450555 +RECOC1/DB1/ONLINELOG/group_3.283.1063450557 +DATAC1/DB1/ONLINELOG/group_4.261.1063450557 +RECOC1/DB1/ONLINELOG/group_4.284.1063450557
- 각
redo
로그에 대한 대기 로그 파일 그룹을 추가합니다.예를 들어, 세 개의redo
로그 파일이 있는 경우 세 개의 대기 로그 파일 그룹을 추가합니다.SQL> alter database add standby logfile group 5 ('+DATAC1','+RECOC1'); alter database add standby logfile group 6 ('+DATAC1','+RECOC1'); alter database add standby logfile group 7 ('+DATAC1','+RECOC1');
- 로그 파일의 멤버를 봅니다.
SQL> select member from v$logfile;
출력은 다음과 비슷합니다:MEMBER -------------------------------------------------------------------------------- +DATAC1/DB1/ONLINELOG/group_2.272.1063449917 +RECOC1/DB1/ONLINELOG/group_2.281.1063449917 +DATAC1/DB1/ONLINELOG/group_1.273.1063449917 +RECOC1/DB1/ONLINELOG/group_1.282.1063449919 +DATAC1/DB1/ONLINELOG/group_5.264.1063812687 +DATAC1/DB1/ONLINELOG/group_3.268.1063450555 +RECOC1/DB1/ONLINELOG/group_3.283.1063450557 +DATAC1/DB1/ONLINELOG/group_4.261.1063450557 +RECOC1/DB1/ONLINELOG/group_4.284.1063450557 +RECOC1/DB1/ONLINELOG/group_5.422.1063812687 +DATAC1/DB1/ONLINELOG/group_6.262.1063812785 +RECOC1/DB1/ONLINELOG/group_6.445.1063812785 +DATAC1/DB1/ONLINELOG/group_7.263.1063812807 +RECOC1/DB1/ONLINELOG/group_7.446.1063812807
- 로그 파일의 그룹 번호 및 멤버를 확인합니다.
SQL> select group#,member from v$logfile;
출력은 다음과 비슷합니다:GROUP# MEMBER ------------ -------------------------------------------------- 2 +DATAC1/DB1/ONLINELOG/group_2.272.1063449917 2 +RECOC1/DB1/ONLINELOG/group_2.281.1063449917 1 +DATAC1/DB1/ONLINELOG/group_1.273.1063449917 1 +RECOC1/DB1/ONLINELOG/group_1.282.1063449919 5 +DATAC1/DB1/ONLINELOG/group_5.264.1063812687 3 +DATAC1/DB1/ONLINELOG/group_3.268.1063450555 3 +RECOC1/DB1/ONLINELOG/group_3.283.1063450557 4 +DATAC1/DB1/ONLINELOG/group_4.261.1063450557 4 +RECOC1/DB1/ONLINELOG/group_4.284.1063450557 5 +RECOC1/DB1/ONLINELOG/group_5.422.1063812687 6 +DATAC1/DB1/ONLINELOG/group_6.262.1063812785 6 +RECOC1/DB1/ONLINELOG/group_6.445.1063812785 7 +DATAC1/DB1/ONLINELOG/group_7.263.1063812807 7 +RECOC1/DB1/ONLINELOG/group_7.446.1063812807
- Oracle Data Guard에서 구성을 확인합니다.
DGMGRL> show configuration
출력은 다음과 비슷합니다:Configuration - onpremexadr Protection Mode: MaxPerformance Members: db1 - Primary database db1_phx3g7 - Physical standby database Warning: ORA-16809: multiple warnings detected for the member Fast-Start Failover: Disabled Configuration Status: WARNING (status updated 8 seconds ago)
- standby Oracle Database Exadata Cloud Service에서 리두 로그를 확인합니다.
select member from v$logfile;
출력은 다음과 비슷합니다:MEMBER --------------------------------------------------- /opt/oracle/oradata/ORCLCDB/redo03.log /opt/oracle/oradata/ORCLCDB/redo02.log /opt/oracle/oradata/ORCLCDB/redo01.log
sys
사용자 이름과 비밀번호를 사용하여 대기 Oracle Database Exadata Cloud Service 데이터베이스 인스턴스의 Oracle Data Guard 명령행 인터페이스(DGMGRL) 세션에 로그인합니다.[oracle@droci admin]$ dgmgrl DGMGRL> connect
- OCI의 standby database에서 구성을 확인합니다.
DGMGRL> show configuration;
출력은 다음과 비슷합니다:Configuration - OnPremDr Protection Mode: MaxPerformance Members: db1 - Primary database db1_phx3g7 - Physical standby database Warning: ORA-16809: multiple warnings detected for the member Fast-Start Failover: Disabled Configuration Status: WARNING (status updated 38 seconds ago)
- OCI에서 대기 데이터베이스 인스턴스를 편집하고 상태를
apply-off
로 설정합니다. 명령이 성공하면 명령줄 인터페이스를 종료합니다.DGMGRL> edit database DB1_phx3g7 set state=apply-off;
DGMGRL> exit
- OCI의 대기 데이터베이스 인스턴스에
sysdba
로 로그인합니다.[oracle@exacs82-vm3sv1 ~]$ sqlplus / as sysdba
- 로그 파일의 그룹 번호 및 멤버를 확인합니다.
SQL> select group#,member from v$logfile;
출력은 다음과 비슷합니다:GROUP# ---------- MEMBER -------------------------------------------------------------------------------- 2 +DATAC1/DB1_PHX3G7/ONLINELOG/group_2.354.1063638089 3 +DATAC1/DB1_PHX3G7/ONLINELOG/group_3.355.1063638089 1 +DATAC1/DB1_PHX3G7/ONLINELOG/group_1.353.1063638089 4 +DATAC1/DB1_PHX3G7/ONLINELOG/group_4.356.1063638089
- 각 그룹의 크기를 봅니다.
select bytes, group# from v$log;
출력은 다음과 비슷합니다:BYTES GROUP# ---------- ---------- 209715200 1 209715200 2 209715200 3 209715200 4
- OCI의 데이터베이스에 대기 로그 파일 그룹을 추가합니다.
[oracle@exacs82-vm3sv1 ~]$ sqlplus / as sysdba
alter database add standby logfile group 5 ('+DATAC1','+RECOC1'); alter database add standby logfile group 6 ('+DATAC1','+RECOC1'); alter database add standby logfile group 7 ('+DATAC1','+RECOC1');
- 로그 파일의 그룹 번호 및 멤버를 확인합니다.
SQL> select group#,member from v$logfile;
출력은 다음과 비슷합니다:GROUP# ---------- MEMBER -------------------------------------------------------------------------------- 2 +DATAC1/DB1_PHX3G7/ONLINELOG/group_2.354.1063638089 3 +DATAC1/DB1_PHX3G7/ONLINELOG/group_3.355.1063638089 1 +DATAC1/DB1_PHX3G7/ONLINELOG/group_1.353.1063638089 4 +DATAC1/DB1_PHX3G7/ONLINELOG/group_4.356.1063638089 5 +DATAC1/DB1_PHX3G7/ONLINELOG/group_5.358.1063813749 5 +RECOC1/DB1_PHX3G7/ONLINELOG/group_5.256.1063813749 6 +DATAC1/DB1_PHX3G7/ONLINELOG/group_6.359.1063813761 6 +RECOC1/DB1_PHX3G7/ONLINELOG/group_6.262.1063813761 7 +DATAC1/DB1_PHX3G7/ONLINELOG/group_7.360.1063813773 7 +RECOC1/DB1_PHX3G7/ONLINELOG/group_7.300.1063813773
- 대기 OCI 데이터베이스 인스턴스에서
sys
사용자 이름과 비밀번호를 사용하여 Oracle Data Guard 명령행 인터페이스(DGMGRL) 세션에 로그인합니다.[oracle@exacs82-vm3sv1 ~]$ dgmgrl DGMGRL> connect Username: sys Password:
Connected to "DB1_phx3g7" Connected as SYSDBA.
- OCI에서 대기 데이터베이스 인스턴스를 편집하고 상태를
apply-on
로 설정합니다.DGMGRL> edit database db1_phx3g7 set state=apply-on;
- OCI에서 대기 데이터베이스 인스턴스를 편집하고 전송 상태를
transport-on
로 설정한 다음 명령행 인터페이스를 종료합니다. 명령이 성공하면 DGMGRL을 종료합니다.DGMGRL> edit database DB1 set state=transport-on;
DGMGRL> exit
- OCI의 standby database에서 standby log file을 확인하여 standby database를 확인합니다.
SQL> select * from v$logfile where type='STANDBY';
- OCI의 standby database에서 리두 로그 파일을 확인합니다.
SQL> select member from v$logfile where type != 'STANDBY';
출력은 다음과 비슷합니다:MEMBER -------------------------------------------------------------------------------- +DATAC1/DB1_PHX3G7/ONLINELOG/group_2.354.1063638089 +DATAC1/DB1_PHX3G7/ONLINELOG/group_3.355.1063638089 +DATAC1/DB1_PHX3G7/ONLINELOG/group_1.353.1063638089 +DATAC1/DB1_PHX3G7/ONLINELOG/group_4.356.1063638089
- 관리되는 대기 데이터베이스를 복구합니다.
SQL> recover managed standby database cancel;
출력은 다음과 비슷합니다:Media recovery complete
convert
매개변수를 사용하여 파일을 봅니다.SQL> show parameter convert;
출력은 다음과 비슷합니다:NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string DB1, DB1_phx3g7 log_file_name_convert string DB1, DB1_phx3g7 pdb_file_name_convert string
- 데이터베이스 파일을 봅니다.
select name from v$datafile;
출력은 다음과 비슷합니다:NAME -------------------------------------------------------------------------------- +DATAC1/DB1_PHX3G7/DATAFILE/system.348.1063638053 +DATAC1/DB1_PHX3G7/DATAFILE/sysaux.349.1063638055 +DATAC1/DB1_PHX3G7/DATAFILE/undotbs1.350.1063638057 +DATAC1/DB1_PHX3G7/DATAFILE/undotbs2.351.1063638057 +DATAC1/DB1_PHX3G7/DATAFILE/users.352.1063638059
- Oracle Data Guard 아카이브 세부 정보를 확인합니다.
SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;
출력은 다음과 비슷합니다:ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ RFS ping 1 0 IDLE RFS ping 2 62 IDLE RFS async 2 62 RECEIVING broker instance worker 0 0 IDLE broker worker 0 0 IDLE archive redo 0 0 IDLE archive redo 0 0 IDLE archive redo 0 0 IDLE archive local 0 0 IDLE redo transport timer 0 0 IDLE gap manager 0 0 IDLE ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ broker monitor 0 0 IDLE broker net worker 0 0 IDLE redo transport monitor 0 0 IDLE log writer 0 0 IDLE RFS async 0 187 RECEIVING 16 rows selected.
- 로그 파일을 사용하여 관리되는 대기 데이터베이스의 복구를 사용 안함으로 설정합니다.
SQL> recover managed standby database using current logfile disconnect;
Media recovery complete.
- 대상 파라미터가 있는 파일을 표시하고 확인합니다.
SQL>show parameter dest;