미래의 보조 데이터베이스 설정

Oracle Cloud Infrastructure(OCI)에서 첫 번째 물리적 대기를 설정한 후 다른 지역에 두 번째 물리적 대기를 생성합니다. 이 두번째 데이터베이스는 클라우드 기반 재해 복구 환경의 데이터베이스입니다.

Oracle Data Guard cascade standby 기능. 두번째 standby가 온-프레미스 primary에서 직접 수신하지 않고 첫번째 standby에서 redo를 수신하면 온-프레미스(On-Premise) 호스트 사이트에서 네트워크 트래픽이 감소합니다. 또한 궁극적으로 주요 redo 전파 경로가 될 항목을 설정합니다.

현재는 OCI 툴을 사용하여 향후 재해 복구 데이터베이스를 설정하고 완전히 관리하지 못하도록 하는 제약 조건이 있습니다. Oracle Data Guard 연관 클라우드 서비스는 현재 기존 대기 데이터베이스 관계를 등록할 수 없으며 대기 데이터베이스 구성을 관리할 수 없습니다. 따라서 예를 들어, Oracle Managed Disaster Recovery Cloud Service는 사용할 수 없습니다.

두 대기 데이터베이스 모두 OCI 기반 위치 표시자 데이터베이스로 설정되기 때문에 OCI 제어 평면은 각 데이터베이스에 대한 패치 적용 및 기타 수명 주기 작업을 관리할 수 있습니다.

위치 표시자 데이터베이스 생성

OCI 콘솔을 사용하여 다른 리전(권장) 또는 동일한 리전의 다른 가용성 도메인에 새 위치 표시자 데이터베이스를 생성합니다.

다음 단계를 따르십시오. OCI 또는 dbaascli 등의 툴을 사용하여 위치 표시자 데이터베이스를 삭제하지 마십시오.
  1. Exadata On Oracle Public Cloud를 선택합니다. 데이터베이스를 배포할 Oracle Exadata Database Service on Dedicated Infrastructure 서비스를 선택합니다.

    다음 제약 조건을 따릅니다.

    • 데이터베이스 홈은 소스와 동일한 소프트웨어 버전, 릴리스 및 패치 레벨이어야 합니다.
    • The DB_NAME must be the same as on the primary and the first standby database.
    • DB_UNIQUE_NAME는 비워 두거나 지정할 수 있지만 온-프레미스 기본 및 첫번째 물리적 대기 데이터베이스와 달라야 합니다.
    • 이 데이터베이스를 프로비전할 때는 자동 백업을 구성하지 마십시오.
    • 이 데이터베이스를 프로비전할 때 PDB 이름을 지정하지 마십시오.
  2. 계단식 대기 구성 데이터를 캡처합니다.
    1. 방금 생성한 위치 표시자 데이터베이스를 호스팅하는 데이터베이스 노드 중 하나에서 oracle OS 유저로 로그인합니다.
    2. 이 데이터베이스에 대한 환경을 소싱합니다.
    3. DB_UNIQUE_NAME를 사용하여 다음 명령을 실행합니다.
    $ srvctl config database -db DB_UNIQUE_NAME
    이 구성 데이터를 저장하면 아래 여러 단계에서 사용됩니다.
  3. 위치 표시자 데이터베이스를 종료합니다.
    $ srvctl stop database -db cascade standby placeholder database -stopoption immediate
  4. Grid OS 유저로 로그인합니다. asmcmd 명령을 사용하여 +DATAC1/DB_UNIQUE_NAME 아래의 디렉토리에서 파일을 비웁니다.
    1. DATAFILE
    2. ONLINELOG
    3. 모든 PDB GUID/DATAFILE
    4. +DATAC1/DB_UNIQUE_NAME/CONTROLFILE 아래의 모든 콘트롤 파일
    5. 1단계에서 캡처한 구성 데이터에 지정된 Password file
  5. +RECOC1/DB_UNIQUE_NAME에서 ARCHIVELOG, AUTOBACKUPFLASHBACKLOG 디렉토리의 파일을 제거합니다.
  6. spfile를 제거하지 마십시오.

데이터베이스 복원 준비

데이터베이스 복원을 준비하기 위해 새 Oracle 홈을 구성합니다.

  • 다른 각 데이터베이스를 인식하도록 각 환경에서 tnsnames.ora 파일을 조정합니다. 환경 간 통신을 확인합니다.
  • 첫번째 standby database에서 password file을 복사합니다.
  • 첫번째 대기 데이터베이스에서 TDE(투명한 데이터 암호화) 전자 지갑을 복사합니다.
  • 계단식 대기 데이터베이스에 대한 데이터베이스 매개변수를 조정하십시오.

캐스케이드 대기용 TNS 구성

다른 각 데이터베이스를 인식하도록 각 환경에서 tnsnames.ora 파일을 조정합니다. 환경 간 통신을 확인합니다.

Data Guard 중계자는 연결되어 있는 Instance에 관계없이 구성의 각 데이터베이스와 통신할 수 있어야 합니다. Oracle Zero Downtime Migration은 초기 대기 관계에 대해 이 구성을 수행했습니다. 캐스케이드 대기 데이터베이스를 구성에 추가해야 합니다.
  • 온-프레미스 기본 및 첫번째 대기 데이터베이스의 모든 Oracle RAC(Oracle Real Application Clusters) 인스턴스에 사용되는 tnsnames.ora 파일에 캐스케이드 대기 데이터베이스에 대한 TNS 접속 문자열을 추가합니다.
  • 캐스케이드 대기 데이터베이스의 모든 Oracle RAC 인스턴스에서 사용하는 tnsnames.ora 파일에 온-프레미스 기본 및 첫번째 OCI 대기 데이터베이스에 대한 TNS 접속 문자열을 추가합니다.
이러한 TNS 항목은 각각 SCAN 이름이 아닌 SCAN IP 주소를 사용해야 합니다. 다음은 첫번째 대기 데이터베이스에 대해 Oracle Zero Downtime Migration이 생성한 호환 TNS 항목의 예입니다.
CDBHCM_iad1dx =
          (DESCRIPTION =
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  1>) (PORT = 1521))
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  2>) (PORT = 1521))
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  3>)) (PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = CDBHCM_iad1dx)
              (FAILOVER_MODE =
                  (TYPE = select)
                  (METHOD = basic)
              )
              (UR=A)
             )
          )

각 데이터베이스 서버에 oracle OS 유저로 로그인하여 환경을 소스화한 다음 디렉토리를 $TNS_ADMIN로 변경해야 합니다.

  1. 온-프레미스 기본 대기 데이터베이스와 첫번째 OCI 대기 데이터베이스의 각 Oracle RAC 인스턴스에 대해 tnsnames.ora 파일을 편집하고 캐스케이드 대기 데이터베이스 TNS 접속 문자열을 추가합니다.
  2. OCI 계단식 대기 데이터베이스의 각 Oracle RAC 인스턴스에 대해 tnsnames.ora 파일을 편집하고 온프레미스 기본 및 첫번째 OCI 대기 데이터베이스 모두에 대한 TNS 접속 문자열을 추가합니다.
  3. 추가된 연결 문자열 alias와 함께 tnsping 유틸리티를 사용하여 계단식 standby database에서 첫번째 standby database를 ping할 수 있는지 테스트합니다.
    $ tnsping CDBHCM_iad1dx
    대기 시간(밀리초)이 있는 OK를 반환해야 합니다. OK가 반환되지 않은 경우 그에 따라 오류 및 주소를 확인합니다.
  4. SQL*Plus를 사용하여 계단식 standby database를 호스팅할 각 데이터베이스 서버에서 첫번째 standby database(CDBHCM_iad1dx)로의 연결을 테스트합니다. 기본에 대한 SYS 비밀번호가 필요합니다.
    $ sqlplus sys/<password>@CDBHCM_iad1dx as sysdba
    오류를 수정하고 성공적으로 연결될 때까지 반복합니다.

비밀번호 파일 복사

첫번째 standby database에서 password file을 복사합니다.

  1. oracle OS 유저로 첫번째 standby database(CDBHCM_iad1dx)를 호스팅하는 서버 중 하나에 로그인합니다.
  2. srvctl를 사용하여 이 데이터베이스에 대한 비밀번호 파일이 있는 위치를 확인한 다음 /tmp 디렉토리로 복사합니다.
    전자 지갑 루트 위치를 확인하려면 sysdba로 다음을 실행합니다.
    $ srvctl config database -db first standby db name
  3. "Password file:"이라는 행을 찾아 해당 위치(Oracle ASM(Oracle Automatic Storage Management) 경로)를 기록합니다.
  4. Grid OS 유저로 로그인하고 asmcmd 명령을 사용하여 Password file을 /tmp 디렉토리에 복사합니다.
    $ asmcmd -p
    asmcmd> cd +DATAC1/path from step 3
    asmcmd> cp <password file name> /tmp/password file name
  5. scp를 사용하거나 OCI 내에서 파일을 전송하는 데 사용하는 방법을 사용하여 캐스케이드 대기 데이터베이스 서버 중 하나의 임시 위치로 비밀번호 파일을 전송합니다.
  6. password file이 배치된 캐스케이드 대기 데이터베이스 서버에 Grid OS 유저로 로그인합니다. 위의 계단식 대기 구성 데이터에 지정된 위치를 사용하여 비밀번호 파일을 Oracle ASM으로 복사합니다.
    $ asmcmd -p --privilege sysdba
    asmcmd> pwcopy –dbuniquename cascade standby db unique name /tmp/password-file-name +ASM Diskgroup/path/password-file-name -f
    예를 들어 다음과 같습니다.
    asmcmd> pwcopy –dbuniquename CDBHCM_phx5s   /tmp/password file name +DATAC1/CDBHCM_phx5s/PASSWORD/orapwCDBHCM_phx5s -f 
  7. 각 데이터베이스가 다른 모든 데이터베이스에 연결할 수 있는지 검증하여 모든 TNS 연결 문자열이 올바르게 구성되었는지 확인합니다. 다음 접속 시도에 대한 접속 오류를 수정하지 못했습니다.
    1. 온프레미스(기본) 데이터베이스에서:
      $ sqlplus sys/password@first standby db as sysdba
      $ sqlplus sys/password@cascade standby db as sysdba
    2. 첫번째 물리적 standby site에서 다음을 수행합니다.
      $ sqlplus sys/password@on-prem primary as sysdba
      $ sqlplus sys/password@cascade standby db as sysdba
    3. 계단식 물리적 standby site에서 다음을 수행합니다.
      $ sqlplus sys/password@on-prem primary as sysdba
      $ sqlplus sys/password@first standby db as sysdba
    모든 연결이 성공할 때까지 계속하지 마십시오.

TDE 전자 지갑 복사

첫번째 대기 데이터베이스에서 TDE(투명한 데이터 암호화) 전자 지갑을 복사합니다. Oracle Exadata Database Service on Dedicated Infrastructure에서 클라우드 툴이 TDE 전자 지갑을 저장하는 데 사용하는 위치는 클러스터의 모든 데이터베이스 서버가 공유하는 Oracle ACFS(Oracle Advanced Cluster File System)에 있습니다.
  1. 첫번째 standby database(CDBHCM_iad1dx)를 호스팅하는 서버 중 하나에 oracle OS 유저로 로그인하여 디렉토리를 전자 지갑 루트 위치로 변경합니다.
    전자 지갑 루트 위치를 확인하려면 sysdba로 다음을 실행합니다.
    $ sqlplus / as sysdba
    SQL> show wallet_root
    $ cd wallet root location from “show wallet_root” above
  2. 전자 지갑 루트 위치로 이동하고 tde 디렉토리를 압축합니다.
    tde 디렉토리는 1단계에 제공된 디렉토리(일반적으로 /var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root) 아래에 있습니다.
    $ zip -r CDBHDM_tde_wallet.zip  tde
  3. 이 ZIP 파일을 캐스케이드 데이터베이스(CDBHCM_phx5s)를 호스트할 데이터베이스 서버 중 하나로 임시 위치(예: /tmp)로 전송합니다.
    scp 또는 OCI 내에서 파일을 전송하는 데 사용하는 모든 수단을 사용합니다.
  4. oracle OS 유저로 Cascade 데이터베이스(CDBHCM_phx5s)를 호스팅하고 zip 파일이 있는 데이터베이스 서버에 로그인하여 디렉토리를 전자 지갑 루트 위치로 변경합니다.

    DB_NAME가 동일하므로 위치는 이전 위치와 동일해야 합니다(CDBHCM).

    $ cd /var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root
  5. 기존 TDE 디렉토리를 다른 이름으로 이동합니다.
    $ mv tde tde_date
  6. 2단계에서 생성한 TDE 전자 지갑(CDBHDM_tde_wallet.zip)이 포함된 ZIP 파일을 다음 경로로 이동합니다./var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root
    DB_NAME을 데이터베이스 이름으로 바꿉니다.
  7. CDBHDM_tde_wallet.zip 파일의 압축을 해제합니다.
    $ unzip CDBHDM_tde_wallet.zip

그러면 첫번째 물리적 standby database의 전자 지갑 파일을 사용하여 새 tde 하위 디렉토리가 생성됩니다.

계단식 대기 데이터베이스에 대한 데이터베이스 매개변수 조정

캐스케이드 대기 데이터베이스의 구성을 완료합니다.

  1. 첫번째 standby database(CDBHCM_iad1dx)를 호스팅하는 서버 중 하나에 oracle OS 유저로 로그인하여 환경을 소스화합니다.
    $ . ./CDBHCM.env
  2. 첫번째 standby database에서 계단식 standby database의 파라미터를 조정하기 위한 참조로 사용할 pfile을 생성합니다.
    $ cd $ORACLE_HOME/dbs
    $ sqlplus / as sysdba
    SQL> create pfile=’tmp_CDBHCM_iad1dx_init.ora’ from spfile;
  3. 캐스케이드 대기 데이터베이스(CDBHCM_phx5s)를 호스트하고 환경을 소싱할 데이터베이스 서버 중 하나에 로그인합니다.
    $ . ./CDBHCM.env
  4. 한 인스턴스에서 NOMOUNT를 시작합니다.
    $ sqlplus / as sysdba
    SQL> startup nomount
  5. 위의 2단계의 데이터베이스 파라미터 리스트를 참조하여 계단식 데이터베이스의 데이터베이스 파라미터를 다음과 같이 조정합니다.
    SQL> alter system set control_files=’’ sid=’*’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance 1>’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance 2>’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance N>’ scope=spfile;
    SQL> alter system set sga_target=’<Refer to the parameter list from step 2>’ sid=’*’ scope=spfile;
    SQL> alter system set log_buffer=’<Refer to the parameter list from step 2>’ sid=’*’ scope=spfile;
  6. PeopleSoft과 관련된 매개변수를 조정합니다.
    SQL> alter system set “_gby_hash_aggregation_enabled”=false sid=’*’ scope=spfile;
    SQL> alter system set “_ignore_desc_in_index”=true sid=’*’ scope=spfile;
    SQL> alter system set “_unnest_subquery”=true sid=’*’ scope=spfile;
    SQL> alter system set nls_length_semantics='CHAR' sid=’*’ scope=spfile;

    주:

    다음 파라미터는 변경하지 마십시오.
    • DB_NAME
    • DB_UNIQUE_NAME
    • WALLET_ROOT
  7. 변경 사항을 구현하려면 Instance를 종료하고 NOMOUNT를 재시작합니다.
    $ sqlplus / as sysdba
    SQL> shutdown immediate
    SQL> startup nomount

캐스케이드 대기로 데이터베이스 복원

첫번째 물리적 standby database에서 cascade standby footprint로 데이터베이스를 복원합니다. Oracle Recovery Manager(RMAN) 명령 RESTORE FROM SERVICE를 사용하여 콘트롤 파일 및 데이터 파일을 복원합니다.

  1. 계단식 standby에 대한 instance가 시작되지 않으면 NOMOUNT에서 시작합니다.
    $ sqlplus / as sysdba 
    $ SQL> startup nomount
  2. RMAN을 사용하여 첫번째 standby에서 cascade standby로 콘트롤 파일 및 데이터 파일을 복원합니다.

    주:

    네트워크를 채우지 않도록 "장치 유형 디스크"에 대한 RMAN 채널 수를 조정해야 할 수도 있습니다. 변경이 필요한 경우 "restore database from service" 명령을 실행하기 전에 이 작업을 수행합니다. 이렇게 하려면 다음 명령을 사용하여 N을 적절히 바꿉니다.
    RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM N; 
    $ rman target / nocatalog
    RMAN> restore standby controlfile from service ‘first standby db name’;
    RMAN> alter database mount;
    RMAN> restore database from service ‘first standby db name’ section size 8G;
    RMAN> shutdown immediate;
    RMAN> exit
  3. 모든 instance를 재시작하고 srvctl를 사용하여 cascade standby database를 마운트합니다.
    $ srvctl start database -db cascade standby db unique name -startoption mount
  4. 다음 스크립트를 사용하여 모든 온라인 및 대기 로그 파일을 생성하고 지웁니다.
    $ sqlplus “/ as sysdba”
    SQL> set pagesize 0 feedback off linesize 120 trimspool on
    SQL> spool /tmp/clearlogs.sql
    SQL> select distinct 'alter database clear logfile group '||group#||';' from v$logfile;
    SQL> spool off
  5. 생성된 clearlogs.sql 스크립트를 실행하기 전에 검사합니다. 데이터베이스 Instance가 모든 스레드에 대해 온라인 및 대기 로그 파일을 모두 생성하고 지웁니다. 그런 다음 스크립트를 실행합니다.
    SQL> @/tmp/clearlogs.sql

캐스케이드 대기 데이터베이스에 대한 Data Guard 중계자 구성

Oracle Zero Downtime Migration을 통해 온프레미스 기본 데이터베이스와 첫 번째 OCI 대기 데이터베이스 간에 Data Guard Broker를 이미 구성했습니다. 이제 캐스케이드 대기 데이터베이스를 구성에 추가합니다.

캐스케이드 대기 데이터베이스와 온-프레미스(On-Premise) 데이터베이스는 서로 직접 통신하지 않습니다. 필요한 경우 첫번째 온-프레미스(On-Premise) Standby Database를 통해 redo가 제공됩니다.

  • 온-프레미스 데이터베이스가 기본 데이터베이스인 경우 redo가 온-프레미스 기본 데이터베이스에서 첫번째 대기 데이터베이스로 또는 첫번째 대기 데이터베이스를 통해 캐스케이드 대기 데이터베이스로 전송됩니다.
    • OCI 첫번째 standby로 기본 온프레미스
    • OCI 계단식 대기로 OCI 첫번째 대기
  • 첫번째 standby 롤이 primary 롤인 경우 redo가 해당 데이터베이스에서 온-프레미스(On-Premise) 및 계단식 standby database로 직접 전송됩니다.
    • 온프레미스 대기로 기본 설정되는 OCI
    • OCI 기본 데이터베이스에서 OCI 캐스케이드 대기로
  • 이 구성에서 계단식 대기가 기본으로 설정되면 해당 데이터베이스에서 OCI 첫번째 대기로 또는 OCI 첫번째 대기로 리두가 전송되고 온-프레미스(On-Premise) 데이터베이스로 이동합니다.
    • 온프레미스 대기로 OCI 첫번째 대기
    • OCI 계단식 기본 데이터베이스에서 OCI 첫번째 대기로
  1. 계단식 standby를 호스트하는 데이터베이스 서버에서 Data Guard Broker를 구성합니다. Oracle OS 유저로 Cascade Standby Database를 호스팅하는 데이터베이스 서버 중 하나에 로그인하고 환경을 소스화합니다.
    $ sqlplus / as sysdba
    SQL> alter system set dg_broker_config_file1=’+DTAC1/cascade standby db/DG/dr1 cascade standby db.dat’ sid=’*’ scope=both;
    SQL> alter system set dg_broker_config_file2=’+RECOC1/cascade standby db/DG/dr2 cascade standby db.dat’ sid=’*’ scope=both;
    SQL> alter system set dg_broker_start=TRUE sid=’*’ scope=both;
  2. 기본 또는 첫번째 물리적 대기 데이터베이스에 로그인하여 환경을 소스화합니다. 기존 Data Guard Broker 구성에 새 계단식 standby를 추가합니다.
    $ dgmgrl 
    DGMGRL>  connect sys/password
    DGMGRL> show configuration
    DGMGRL> add database 'cascade standby db’
     as connect identifier is cascade standby db;
  3. redo routes를 추가합니다.
    DGMGRL> edit database on-premises db set property redoroutes='(LOCAL : first standby db ASYNC)';
    DGMGRL> edit database first standby db set property redoroutes='(LOCAL : on-premises db ASYNC, cascade standby db ASYNC)(on-premises db : cascade standby db ASYNC)(cascade standby db : on-premises db ASYNC)';
    DGMGRL> edit database cascade standby db set property redoroutes='(LOCAL : first standby db ASYNC)';
  4. 새 계단식 standby database를 활성화합니다.
    DGMGRL> enable database cascade standby db;
  5. 계단식 데이터베이스가 사용으로 설정되면 첫번째 대기 데이터베이스를 통해 온-프레미스 기본 데이터베이스에 의해 생성된 redo을 수신하기 시작합니다. Data Guard Broker 내에서 다음 구성을 표시합니다.
    DGMGRL> show configuration lag
    Configuration - zdm_psfthcm_dg
      Protection Mode: MaxPerformance
      Members:
      CDBHCM_sca6dp  - Primary database
        CDBHCM_iad1dx - Physical standby database 
                          Transport Lag:      0 seconds (computed 0 seconds ago)
                          Apply Lag:          0 seconds (computed 1 second ago)
          CDBHCM_phx5s - Physical standby database (receiving current redo)
                            Transport Lag:      1 second (computed 1 second ago)
                            Apply Lag:          2 seconds (computed 1 second ago)
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 47 seconds ago)

미래 대기 데이터베이스에 대한 롤 기반 데이터베이스 서비스 정의

OCI 보조 데이터베이스가 PRIMARY 롤을 채울 때 PeopleSoft 애플리케이션에서 사용할 롤 기반 데이터베이스 서비스를 추가합니다.

  1. 프로세스 스케줄러에 대한 롤 기반 데이터베이스 서비스를 추가합니다.
    srvctl add service -db CDBHCM_phx5s -pdb HR92U033 -service HR92U033_BATCH -preferred "CDBHCM1,CDBHCM2" -notification TRUE -role PRIMARY -failovermethod BASIC -failovertype AUTO -failoverretry 10 -failoverdelay 3
  2. 온라인 유저에 대해 롤 기반 데이터베이스 서비스를 추가합니다.
    srvctl add service -db CDBHCM_phx5s -pdb HR92U033 -service HR92U033_ONLINE -preferred "CDBHCM1,CDBHCM2" -notification TRUE -role PRIMARY -failovermethod BASIC -failovertype AUTO -failoverretry 10 -failoverdelay 3