DR 준비 검증

재해 복구 준비를 위한 Best Practice를 검토하고 계획된 이벤트와 예상치 못한 이벤트에 대한 재해 복구 설정을 확인합니다.

DR 준비 정보

DR(재해 복구) 준비를 위한 모범 사례를 검토합니다.

Active Data Guard를 사용하여 읽기 전용 작업 로드를 대기 데이터베이스로 오프로드하여 대기 데이터베이스가 운용 준비가 되었음을 지속적으로 애플리케이션 레벨 검증할 수 있습니다. 기능은 Oracle Data Guard 적용 프로세스에 의해 수행되는 연속 Oracle 블록 레벨 검증과 함께 보증 레벨을 제공합니다.

스냅샷 대기 데이터베이스를 사용하여 개발 및 테스트를 위해 운영 데이터베이스의 정확한 복제본을 생성합니다. 주기적으로 대기 데이터베이스를 읽기/쓰기 모드(Data Guard 스냅샷 대기 데이터베이스 사용) 로 설정하여 읽기-쓰기 운용 작업 로드를 지원하도록 준비 상태를 검증합니다. DR 시스템 크기는 프로덕션 시스템과 유사하므로 패치 및 업그레이드의 최종 기능 및 성능 테스트에 스냅샷 대기를 사용할 수도 있습니다. 스냅샷 대기 데이터베이스는 나중에 사용하기 위해 아카이브되는 기본 데이터베이스에서 redo를 계속 수신하여 항상 데이터 보호를 제공합니다. 그러나 RTO(복구 시간) 는 테스트가 진행되는 동안 복구가 필요한 경우 스냅샷 대기 데이터베이스를 대기 데이터베이스로 다시 변환하는 데 필요한 시간만큼 연장됩니다. 대기 데이터베이스가 스냅샷 모드인 경우(나중에 사용할 수 있도록 기본 운용 데이터베이스에서 수신된 아카이브된 리두 및 스냅샷 대기 데이터베이스에 의해 생성된 현재 리두 및 플래시백 로그를 보관하기 위해) 빠른 복구 영역에 추가 저장 영역이 필요합니다.

다음은 스냅샷 대기 데이터베이스 사용의 몇 가지 이점입니다:

  • 항상 데이터 보호를 유지하면서 개발 및 테스트를 위해 운영 데이터베이스의 정확한 복제본을 제공합니다. Oracle Real Application Testing 옵션을 사용하여 기본 데이터베이스 작업 로드를 캡처한 다음 스냅샷 대기 데이터베이스에서 테스트 목적으로 재생할 수 있습니다.
  • 물리적 대기 데이터베이스로 변환하고 재동기화하여 현재 운영 데이터를 포함하도록 쉽게 새로 고칠 수 있습니다.

대기 데이터베이스를 스냅샷 대기로 변환

운용 데이터베이스의 정확한 복제본을 원하는 경우 Oracle Data Guard Broker를 사용하여 물리적 대기 데이터베이스를 스냅샷 대기 데이터베이스로 변환하고 복구를 검증할 수 있습니다.

스냅샷 대기는 물리적 대기 데이터베이스에서 생성된 완전히 업데이트 가능한 대기 데이터베이스입니다. 스냅샷 대기 데이터베이스에서 redo 데이터가 수신되지만 스냅샷 대기 데이터베이스가 물리적 대기 데이터베이스로 다시 변환될 때까지 적용되지 않습니다.

DGMGRL(Oracle Data Guard 명령행 인터페이스) 을 사용하면 명령행 인터페이스에서 직접 Oracle Data Guard Broker 구성 및 다양한 멤버를 관리할 수 있습니다.

  1. 대기 데이터베이스 인스턴스의 DGMGRL 세션에 sys 사용자 이름과 비밀번호로 로그인합니다.
    DGMRGL> connect
    Username: sys
    Password:
    다음과 같이 출력됩니다:
    Connected to "ORCLCDB_iad1s3"
    Connected as SYSDBA.
  2. 물리적 대기 데이터베이스를 스냅샷 대기 데이터베이스로 변환합니다.
    DGMGRL> convert database standby_database_unique_name (standbyDB) to snapshot standby;
    변환이 완료되면 출력에는 다음과 유사한 행이 포함됩니다:
    Converting database "standby_database_unique_name" to a Snapshot Standby database, please wait...
    Database "standby_database_unique_name" converted successfully
  3. 구성을 보고 변환을 확인합니다.
    DGMGRL> show configuration;
    다음과 같이 출력됩니다:
    Configuration - onpremdr
      Protection Mode: MaxPerformance
      Members:
      orclcdb_iad1s3 - Primary database
        orclcdb        - Physical standby database 
    Fast-Start Failover:  Disabled
    Configuration Status:
    SUCCESS   (status updated 26 seconds ago)
  4. 스냅샷 대기를 물리적 대기 데이터베이스로 다시 변환합니다.
    DGMGRL> convert database standby_database_unique_name to physical standby;
    다음과 같이 출력됩니다:
    Converting database "orclcdb" to a Physical Standby database, please wait...
    Operation requires a connection to database "orclcdb_iad1s3"
    Connecting ...
    Connected to "ORCLCDB_IAD1S3"
    Connected as SYSDBA.
    Operation requires shut down of instance "ORCLCDB" on database "orclcdb"
    Shutting down instance "ORCLCDB"...
    Connected to "ORCLCDB"
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    Operation requires start up of instance "ORCLCDB" on database "orclcdb"
    Starting instance "ORCLCDB"...
    Connected to an idle instance.
    ORACLE instance started.
    Connected to "ORCLCDB"
    Database mounted.
    Connected to "ORCLCDB"
    Continuing to convert database "orclcdb" ...
    Database "orclcdb" converted successfully
  5. 구성을 보고 변환을 확인합니다.
    DGMGRL> show configuration;
    다음과 같이 출력됩니다:
    Configuration - onpremdr
    
      Protection Mode: MaxPerformance
      Members:
      orclcdb_iad1s3 - Primary database
        orclcdb        - Physical standby database 
          Warning: ORA-16854: apply lag could not be determined
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    WARNING   (status updated 11 seconds ago)

Oracle Data Guard 매개변수 설정

전환을 실행하기 전에 기본 및 대기 데이터베이스 인스턴스에서 Oracle Data Guard 매개변수를 설정하십시오.

  1. 온-프레미스 기본 데이터베이스에서 SCN(시스템 변경 번호) 을 확인합니다.
    select standby_became_primary_scn from v$database;
    다음과 같이 출력됩니다:
    STANDBY_BECAME_PRIMARY_SCN
    --------------------------
                                  0
  2. 기본 데이터베이스에서 플래시백이 사용으로 설정되지 않았는지 확인하십시오.
    select flashback_on from v$database;
    다음과 같이 출력됩니다:
    FLASHBACK_ON
    ------------------
    NO
  3. 온-프레미스 인스턴스에서 Oracle 사용자와 동일한 기본 데이터베이스 이름으로 복구 디렉토리를 생성합니다.
    이 예에서 ORCLCDB은 온-프레미스 데이터베이스의 이름입니다.
    [oracle@bastion dbhome_1]$ cd /opt/oracle/
    [oracle@bastion oracle]$ mkdir recovery
    [oracle@bastion oracle]$ cd recovery/
    [oracle@bastion recovery]$ mkdir ORCLCDB
    [oracle@bastion oracle]$ cd ORCLCDB /
    전체 경로를 확인합니다.
    $ pwd
    /opt/oracle/recovery/ORCLCDB
  4. 데이터베이스 크기에 맞게 DB_RECOVERY_FILE_DEST_SIZE 매개변수의 크기를 설정합니다.
    다음 예에서는 20G를 샘플 데이터 크기로 사용합니다. 데이터베이스를 기준으로 데이터 크기를 설정합니다.
    SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20G;
    System altered
  5. 데이터베이스 복구 파일 대상을 이전에 생성한 디렉토리로 정의합니다.
    SQL> alter system set db_recovery_file_dest = '/opt/oracle/recovery/on_premises_SID';
    System altered
  6. 기본 데이터베이스에서 플래시백을 사용으로 설정하십시오.
    SQL> alter database flashback on;
    Database altered
  7. 데이터베이스 플래시백이 사용으로 설정되었는지 확인합니다(설정).
    SQL> select flashback_on from v$database;
    다음과 같이 출력됩니다:
    FLASHBACK_ON
    ------------------
    YES
  8. 클라우드의 OCI 대기 데이터베이스에서 플래시백이 사용으로 설정되었는지 여부를 확인합니다.
    SQL> select flashback_on from v$database;
    다음과 같이 출력됩니다:
    FLASHBACK_ON
    ------------------
    NO
  9. 클라우드에서 대기 데이터베이스에 대한 열기 모드 상태를 질의합니다.
    SQL> select open_mode from v$database;
    다음과 같이 출력됩니다:
    OPEN_MODE
    -------------------- 
    MOUNTED
  10. 클라우드의 데이터베이스 인스턴스에서 플래시백을 설정합니다.
    SQL> alter database recover managed standby database cancel;
    Database altered
  11. 클라우드에서 대기 데이터베이스에 대한 열기 모드 상태를 질의합니다.
    SQL> select open_mode from v$database;
    다음과 같이 출력됩니다:
    OPEN_MODE
    -------------------- 
    MOUNTED
  12. 대기 데이터베이스에 대해 플래시백을 사용으로 설정합니다.
    SQL> alter database flashback on;
    Database altered
  13. 세션에서 대기 데이터베이스의 접속을 해제합니다.
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
    Database altered
  14. 데이터베이스 플래시백이 사용으로 설정되었는지 확인합니다(설정).
    SQL> select flashback_on from v$database;
    FLASHBACK_ON
    ------------------
    YES
  15. 보존 매개변수를 표시합니다.
    SQL> show parameter_retention;
    다음과 같이 출력됩니다:
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    db_flashback_retention_target	     integer	 1440
    undo_retention			      integer	 900

기본 데이터베이스를 온프레미스에서 OCI로 전환

유지 관리와 같은 계획된 작업이 있는 경우 OCI(Oracle Cloud Infrastructure) 의 데이터베이스를 데이터 손실이 없는 기본 데이터베이스로 만들 수 있습니다. 전환은 온-프레미스 데이터베이스에서 시작되고 클라우드의 데이터베이스 인스턴스에서 완료된 계획된 이벤트입니다.

  1. 온-프레미스 데이터베이스의 DGMGRL 세션에 sys 사용자 이름과 비밀번호로 로그인합니다.
    DGMRGL> connect
  2. 온-프레미스 데이터베이스에서 대기 데이터베이스가 전환 및 복구에 대해 준비되었는지 검증합니다.
    이 예제에서 기본 데이터베이스는 orclcdb이고 대기 데이터베이스는 orclcdb_iadls3 입니다.
    DGMGRL> validate database orclcdb_iad1s3 (StandbyDatabaseOCIInstance)
    다음과 같이 출력됩니다:
    Database Role:     Physical standby database
      Primary Database:  orclcdb
    
      Ready for Switchover:  Yes
      Ready for Failover:    Yes (Primary Running)
    
      Managed by Clusterware:
        orclcdb       :  NO             
        orclcdb_iad1s3:  NO             
        Validating static connect identifier for the primary database orclcdb...
        The static connect identifier allows for a connection to database "orclcdb".
    
      Log Files Cleared:
        orclcdb Standby Redo Log Files:         Cleared
        orclcdb_iad1s3 Online Redo Log Files:   Not Cleared
        orclcdb_iad1s3 Standby Redo Log Files:  Available
    
      Current Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb)               (orclcdb_iad1s3)                     
        1         3                       2                       Insufficient SRLs
    
      Future Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb_iad1s3)        (orclcdb)                            
        1         3                       0                       Insufficient SRLs
        Warning: standby redo logs not configured for thread 1 on orclcdb
  3. 온-프레미스(기본) 데이터베이스에서 대기 데이터베이스로 전환하는 명령을 실행합니다.
    DGMGRL> switchover to orclcdb_iad1s3 (StandbyDatabaseOCIInstance)
    다음과 같이 출력됩니다:
    Performing switchover NOW, please wait...
    New primary database "orclcdb_iad1s3" is opening...
    Operation requires start up of instance "ORCLCDB" on database "orclcdb"
    Starting instance "ORCLCDB"...
    Connected to an idle instance.
    ORACLE instance started.
    Connected to "ORCLCDB"
    Database mounted.
    Database opened.
    Connected to "ORCLCDB"
    Switchover succeeded, new primary is "orclcdb_iad1s3"
  4. 온-프레미스 데이터베이스에서 구성 상태를 표시합니다.
    DGMGRL> show configuration
    다음과 같이 출력됩니다:
    Configuration - onpremdr
    
      Protection Mode: MaxPerformance
      Members:
      orclcdb_iad1s3 - Primary database
      orclcdb        - Physical standby database 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 70 seconds ago)
  5. 클라우드의 데이터베이스에서 열기 모드 상태를 확인합니다.
    SQL> select open_mode from v$database;
    다음과 같이 출력됩니다:
    OPEN_MODE
    -------------------- 
    READ WRITE
  6. 온-프레미스 데이터베이스에서 열기 모드 상태를 확인합니다.
    SQL> select open_mode from v$database;
    다음과 같이 출력됩니다:
    OPEN_MODE
    -------------------- 
    READ ONLY WITH APPLY
이제 클라우드의 대기 데이터베이스가 기본 데이터베이스가 됩니다.

기본 데이터베이스를 OCI에서 온프레미스로 다시 전환

OCI(Oracle Cloud Infrastructure) 의 데이터베이스 인스턴스를 기본 데이터베이스로 만든 후 OCI 데이터베이스 인스턴스의 Oracle Data Guard 명령행 인터페이스(DGMGRL) 를 사용하여 다시 전환하고 온-프레미스 데이터베이스를 기본 데이터베이스로 설정합니다.

  1. 클라우드의 기본 데이터베이스에 대한 데이터베이스 롤을 검증합니다.
    이 예에서 ORCLCDB은 온-프레미스 데이터베이스의 이름이고 orclcdb_iad1s3은 클라우드의 데이터베이스 인스턴스 이름입니다.
    DGMGRL> validate database orclcdb;
    출력은 다음과 유사하게 표시될 수 있습니다:
    Database Role: Physical standby database
      Primary Database: orclcdb_iad1s3
    
      Ready for Switchover:  Yes
      Ready for Failover:    Yes (Primary Running)
    
      Managed by Clusterware:
        orclcdb_iad1s3:  NO             
        orclcdb       :  NO             
        Validating static connect identifier for the primary database orclcdb_iad1s3...
    Unable to connect to database using (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.0.2.1)(PORT=1539)))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB_iad1s3_DGMGRL.sub08120021431.onpremocidrvcn.example.com)(INSTANCE_NAME=ORCLCDB)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))
    ORA-12541: TNS:no listener
    
    Failed.
        Warning: Ensure primary database's StaticConnectIdentifier property
        is configured properly so that the primary database can be restarted
        by DGMGRL after switchover
    
      Log Files Cleared:
        orclcdb_iad1s3 Standby Redo Log Files:  Cleared
        orclcdb Online Redo Log Files:          Not Cleared
        orclcdb Standby Redo Log Files:         Available
    
      Current Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb_iad1s3)        (orclcdb)                            
        1         3                       2                       Insufficient SRLs
    
      Future Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb)               (orclcdb_iad1s3)                     
        1         3                       2                       Insufficient SRLs

    정적 접속 식별자 경고 메시지가 표시되면 구성 매개변수, SID 서비스 이름, 호스트 IP 주소 또는 포트 주소를 검토하십시오.

  2. sys 사용자 이름과 비밀번호를 사용하여 DGMGRL 세션에 로그인합니다.
    DGMRGL> connect
  3. 온-프레미스 데이터베이스에 대한 정적 접속 식별자를 검토합니다.
    DGMGRL> show database orclcdb StaticConnectIdentifier
    출력을 검토하여 StaticConnectIdentifier 매개변수가 정확한지 확인합니다. 예를 들어, 다음과 같습니다.
    DGMGRL> show database orclcdb StaticConnectIdentifier
      StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.0.2.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB)(INSTANCE_NAME=ORCLCDB)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))'
  4. 클라우드의 데이터베이스 인스턴스에 대한 정적 접속 식별자를 검토합니다.
    DGMGRL> show database orclcdb_iad1s3 StaticConnectIdentifier
      StaticConnectIdentifier = 
    '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.30.3)(PORT=1539)
    ))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB_iad1s3_DGMGRL.sub08120021431.onpremocidrvcn.examplevcn.com) 
    INSTANCE_NAME=ORCLCDB)(SERVER=DEDICATED)))'
    출력을 검토하여 포트 번호 및 서비스 이름과 같은 StaticConnectIdentifier 매개변수가 올바른지 확인합니다.
  5. 포트 번호 및 서비스 이름과 같은 StaticConnectIdentifier 매개변수를 수정합니다.
    속성을 편집할 때는 줄 바꿈 없이 Oracle Data Guard 명령행 인터페이스(DGMGRL) 를 사용해야 합니다. 이 예제는 클라우드의 데이터베이스 인스턴스에 대한 포트 번호 및 서비스 이름을 수정합니다(orclcdb_iad1s3).
    DGMGRL> edit database 'orclcdb_iad1s3' set property StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.0.2.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB)(INSTANCE_NAME=ORCLCDB)(SERVER=DEDICATED)))';
    Property "staticconnectidentifier" updated
  6. 클라우드에서 데이터베이스 인스턴스를 검증합니다.
    DGMGRL> validate database orclcdb_iad1s3;
    다음과 같이 출력됩니다:
    Database Role:    Primary database
      Ready for Switchover:  Yes
    
      Managed by Clusterware:
        orclcdb_iad1s3:  NO             
        Validating static connect identifier for the primary database orclcdb_iad1s3...
        The static connect identifier allows for a connection to database "orclcdb_iad1s3".
  7. 온-프레미스 데이터베이스를 검증합니다.
    DGMGRL> validate database orclcdb;
    다음과 같이 출력됩니다:
    Database Role:     Physical standby database
      Primary Database:  orclcdb_iad1s3
      Ready for Switchover:  Yes
      Ready for Failover:    Yes (Primary Running)
    
      Managed by Clusterware:
        orclcdb_iad1s3:  NO             
        orclcdb       :  NO             
        Validating static connect identifier for the primary database orclcdb_iad1s3...
        The static connect identifier allows for a connection to database "orclcdb_iad1s3".
    
      Standby Apply-Related Information:
        Apply State:      Running
        Apply Lag:        2 seconds (computed 7 seconds ago)
        Apply Delay:      0 minutes
    
      Log Files Cleared:
        orclcdb_iad1s3 Standby Redo Log Files:  Cleared
        orclcdb Online Redo Log Files:          Not Cleared
        orclcdb Standby Redo Log Files:         Available
    
      Current Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb_iad1s3)        (orclcdb)                            
        1         3                       2                       Insufficient SRLs
    
      Future Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb)               (orclcdb_iad1s3)                     
        1         3                       2                       Insufficient SRLs
  8. 구성을 표시하고 검토합니다.
    DGMGRL> show configuration;
    다음과 같이 출력됩니다:
    Configuration - onpremdr
    
      Protection Mode: MaxPerformance
      Members:
      orclcdb_iad1s3 - Primary database
        orclcdb        - Physical standby database 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 27 seconds ago)
  9. OCI의 데이터베이스 인스턴스에서 온-프레미스 데이터베이스로 전환합니다.
    DGMGRL> switchover to orclcdb;
    다음과 같이 출력됩니다:
    Performing switchover NOW, please wait...
    Operation requires a connection to database "orclcdb"
    Connecting ...
    Connected to "ORCLCDB"
    Connected as SYSDBA.
    New primary database "orclcdb" is opening...
    Operation requires start up of instance "ORCLCDB" on database "orclcdb_iad1s3"
    Starting instance "ORCLCDB"...
    Connected to an idle instance.
    ORACLE instance started.
    Connected to "ORCLCDB_iad1s3"
    Database mounted.
    Database opened.
    Connected to "ORCLCDB_iad1s3"
    Switchover succeeded, new primary is "orclcdb"
    데이터베이스가 마운트되면 다음 경고가 수신될 수 있습니다:
    ORA-16000: database or pluggable database open for read-only access  
    
    Please complete the following steps to finish switchover:
           start up instance "ORCLCDB" of database "orclcdb" 

    경고를 무시하고 다음 단계로 진행할 수 있습니다.

  10. 대기 데이터베이스에서 이제 기본 데이터베이스로 접속하고 구성을 검토합니다.
    DGMGRL> show configuration;
    다음과 같이 출력됩니다:
    Configuration - onpremdr
    
      Protection Mode: MaxPerformance
      Members:
      orclcdb        - Primary database
        orclcdb_iad1s3 - Physical standby database 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 86 seconds ago)
  11. 기본 데이터베이스 인스턴스인 ORCLCDB에서 모드가 read write 인지 확인합니다.
    SQL> select database_role, open_mode from v$database;
    DATABASE_ROLE	 OPEN_MODE
    ---------------- --------------------
    PRIMARY 	   READ WRITE
  12. (선택 사항) verbose 명령을 사용하여 롤, 상태, 인스턴스, 속성, 경보 로그의 위치 및 Data Guard Broker 로그를 포함한 전체 스택 덤프를 표시할 수 있습니다.
    DGMGRL> show database verbose orclcdb

온-프레미스 데이터베이스와 OCI 데이터베이스 인스턴스 간에 기본 데이터베이스를 전환할 수 있습니다.