Oracle RAC 이전

Oracle RAC 데이터베이스를 Oracle Cloud Infrastructure Classic 서버에서 Oracle Cloud Infrastructure Database 시스템으로 이전하려면 Oracle Data Guard 를 사용할 수 있습니다. 가상 시스템 시스템에서 Oracle Cloud Infrastructure 데이터베이스의 대기 데이터베이스(대상 데이터베이스) 로 이전하는 기본 데이터베이스(소스 데이터베이스) 로 Oracle Cloud Infrastructure Classic 데이터베이스를 구성해야 합니다.

기본(소스) 데이터베이스 구성

기본 데이터베이스 (소스 데이터베이스) 를 구성하려면 Oracle Data Guard를 구성하고 대기 데이터베이스 (대상 데이터베이스) 에 대한 listener.oratnsnames.ora 파일을 수정합니다.

대기 데이터베이스에 대한 기본 데이터베이스 구성

이 구성에서는 Oracle Data Guard 사용을 위해 기본(소스) 데이터베이스를 구성합니다.

  1. SSH를 사용하여 기본 데이터베이스(소스 데이터베이스) 서버에 사인인합니다.
  2. 대기 데이터베이스(대상 데이터베이스) 에서 데이터베이스 소프트웨어 소유자 oracle로 접속합니다.
    sudo su - oracle
  3. $ ORACLE_HOME 환경 변수를 설정하는 oraenv 스크립트를 실행합니다.
    . oraenv
  4. 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다. 예를 들어, 다음과 같습니다.
    sqlplus / as sysoper
  5. 데이터베이스가 ARCHIVELOG 모드인지 확인하십시오.
    ARCHIVE LOG LIST
  6. Database log mode 출력이 No Archive Mode 상태이고 Automatic archival 출력이 Disabled 인 경우 다음을 수행합니다.
    1. SQL*Plus를 종료합니다
      SQL> exit
    2. 데이터베이스를 종료합니다.
      srvctl stop database -db db_unique_name
    3. 마운트 모드로 데이터베이스 재시작
      srvctl start database -db db_unique_name -o mount
    4. 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다. 예를 들어, 다음과 같습니다.
      sqlplus / as sysoper
    5. 아카이브 로그 모드를 사용으로 설정합니다.
      ALTER DATABASE ARCHIVELOG;
    6. 데이터베이스가 지금 아카이브 로그 모드인지 확인하십시오.
      ARCHIVE LOG LIST
      데이터베이스 로그 모드의 출력 출력은 Archive Mode 이어야 하며 Automatic archival 출력이 사용으로 설정됩니다.
    7. 데이터베이스를 엽니다.
      ALTER DATABASE OPEN;
  7. SYSDBA 관리자 권한으로 접속합니다.
    CONNECT / AS SYSDBA
  8. 다중 테넌트 환경의 경우 다음을 수행하십시오.
    1. PDBS의 상태를 확인합니다.
      SHOW PDBS
    2. PDBS가 열려 있지 않으면 엽니다.
      ALTER PLUGGABLE DATABASE ALL OPEN;
  9. 데이터베이스가 강제 로깅 모드인지 확인하십시오. 예를 들어, 다음과 같습니다.
    SELECT NAME, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
  10. 필요한 경우 force logging 를 활성화합니다.
    ALTER DATABASE FORCE LOGGING;
  11. 구성을 확인하십시오.
    SELECT NAME, CDB, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
    FORCE_LOGGING 열은 YES 이어야 합니다.
  12. SHOW PARAMETER 명령을 사용하여 다음 데이터베이스 매개변수를 확인합니다.
    1. DB_NAMEDB_UNIQUE_NAME: 이러한 이름이 대상 데이터베이스에 사용되는 이름과 다른지 확인합니다.
    2. REMOTE_LOGIN_PASSWORDFILE: 이 매개변수는 EXCLUSIVE 로 설정해야 합니다.

기본 데이터베이스 listener.ora 파일에 정적 서비스 추가

이 섹션에서 새 정적 리스너를 listener.a 에 추가하고 리스너를 재시작해야 합니다.

  1. SSH를 사용하여 기본(소스) 데이터베이스의 첫번째 노드에 사인인합니다.
  2. 명령행에서 grid user 로 접속합니다.
    sudo su - grid
  3. /u01/app/12. 2 . 0. 1/grid/network/admin/listener.ora 파일을 수정하여 정적 리스너를 포함시킵니다. 다음 예는 하나의 정적 리스너에 사용할 형식을 보여줍니다.
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SDU=65535)
          (GLOBAL_DBNAME = source_db_unique_name.source_db_domain)
          (ORACLE_HOME = source_oracle_home)
          (ENVS="TNS_ADMIN= source_oracle_home/network/admin")
          (SID_NAME = source_db_name)
        )
      )
  4. 리스너를 정지합니다.

    주:

    정적 리스너를 정지하고 시작할 경우 몇 초 동안 데이터베이스에 대한 새 접속에 영향을 줄 수 있습니다.
    srvctl stop listener -l LISTENER
  5. 리스너를 재시작합니다.
    srvctl start listener -l LISTENER
  6. 리스너 상태를 확인하십시오.
    lsnrctl status
  7. UNKNOWN 상태의 출력에 항목이 있는지 검증합니다.
  8. 기본 데이터베이스(소스 데이터베이스) 의 두번째 노드에 대해 이전 단계를 반복합니다.

기본 데이터베이스 매개변수 구성

기본(소스) 데이터베이스를 구성하고 정적 서비스를 기본 데이터베이스 listener.ora 파일에 추가한 후기본 데이터베이스에서 Oracle Data Guard 매개변수를 구성할 수 있습니다.

  1. SSH를 사용하여 기본 데이터베이스(소스 데이터베이스) 의 첫번째 RAC 노드에 사인인합니다.
  2. SYSDBA 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다.
    sqlplus / as sysdba
    Enter password: password
  3. 자동 대기 파일 관리를 사용으로 설정합니다.
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
  4. 아카이브 지연 대상을 설정합니다.
    ALTER SYSTEM SET ARCHIVE_LAG_TARGET=1800 SID='*' SCOPE=BOTH;
  5. Oracle Broker 구성 파일 이름 및 위치를 지정하십시오. 다음 명령문은 데이터베이스 저장 영역의 유형에 따라 다릅니다.
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='/u02/app/oracle/oradata/<db_unique_name>/dr1<db_unique_name>.dat' SID='*' SCOPE=BOTH; SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='/u03/app/oracle/fast_recovery_area/<db_unique_name>/dr2<db_unique_name>.dat' SID='*' SCOPE=BOTH;
  6. 데이터베이스에 대해 Oracle Broker DMON 프로세스를 사용으로 설정합니다.
    ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
  7. (선택 사항) DB_BLOCK_CHECKINGDB_BLOCK_CHECKSUM 매개변수를 설정합니다.
    ALTER SYSTEM SET DB_BLOCK_CHECKING=FULL SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DB_BLOCK_CHECKSUM=FULL SID='*' SCOPE=BOTH;
  8. (선택사항) 로그 버퍼를 256 mb로 설정합니다.
    ALTER SYSTEM SET LOG_BUFFER=268435456 SID='*' SCOPE=BOTH;
  9. DB_LOST_WRITE_PROTECT 매개변수를 TYPICAL 로 설정합니다.
    ALTER SYSTEM SET DB_LOST_WRITE_PROTECT=TYPICAL SID='*' SCOPE=BOTH;
  10. 데이터베이스 플래시백 기능을 사용으로 설정합니다. DB_FLASHBACK_RETENTION_TARGET 최소값은 120 분입니다.
    ALTER DATABASE FLASHBACK ON;
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120; 
    ALTER SYSTEM ARCHIVE LOG CURRENT;
  11. 온라인 리두 로그를 기반으로 대기 리두 로그를 추가하십시오. 아래 질의를 사용하여 Orl의 수와 크기(바이트) 를 결정할 수 있습니다. 대기 리두 로그의 크기는 온라인 리두 로그와 동일해야 하지만 온라인 리두 로그보다 하나 이상의 대기 리두 로그를 추가해야 합니다. 다음 예제에서 네 개의 온라인 리두 로그가 존재하기 때문에 적어도 다섯 개의 대기 리두 로그를 추가해야 합니다. 즉, 각 스레드에 대해 현재 리두 로그와 하나 이상의 로그를 지정한 다음 원래 리두 로그와 동일한 크기를 사용해야 합니다.
    1. Oracle 리두 로그의 수와 크기(바이트) 를 확인하려면 다음 질의를 실행하십시오.
      SELECT GROUP#, BYTES FROM V$LOG;
      출력은 다음과 유사해야 합니다.
      GROUP# BYTES
      ------ ----------
      1      1073741824
      2      1073741824
      3      1073741824
      4      1073741824
    2. 첫번째 스레드의 경우 현재 리두 로그와 하나 이상의 리두 로그를 지정하고 현재 리두 로그와 동일한 크기를 사용하십시오. 예를 들어, 다음과 같습니다.
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
      GROUP 5 SIZE 1073741824,
      GROUP 6 SIZE 1073741824, 
      GROUP 7 SIZE 1073741824,
      GROUP 8 SIZE 1073741824,
      GROUP 9 SIZE 1073741824;
    3. 두번째 스레드의 경우 현재 리두 로그와 하나 이상의 리두 로그를 지정하고 현재 리두 로그와 동일한 크기를 사용하십시오. 예를 들어, 다음과 같습니다.
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 2
      GROUP 10 SIZE 1073741824,
      GROUP 11 SIZE 1073741824, 
      GROUP 12 SIZE 1073741824,
      GROUP 13 SIZE 1073741824,
      GROUP 14 SIZE 1073741824;
    4. 올바른 수의 대기 리두 로그를 생성했는지 확인하십시오.
      SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
      다음과 유사한 출력이 표시되어야 합니다.
          GROUP#      BYTES
      ---------- ----------
               5 1073741824
               6 1073741824
               7 1073741824
               8 1073741824
               9 1073741824
              10 1073741824
              11 1073741824
              12 1073741824
              13 1073741824
              14 1073741824
      10 rows selected.

대기(대상) 데이터베이스 구성

대기(대상) 데이터베이스를 구성하려면 대기 데이터베이스를 삭제한 다음 oratab, listener.ora tnsnames.ora 파일을 수정해야 합니다.

데이터베이스 인스턴스에 대한 항목 추가

Oracle RAC 노드에서 /etc/oratab 파일을 업데이트하고 다음과 같이 데이터베이스 인스턴스에 대한 항목을 추가합니다.

  1. SSH를 사용하여 이전할 소스 데이터베이스(기본 데이터베이스) 의 첫번째 노드에 사인인합니다.
  2. 다음을 수행하여 데이터베이스 항목에 데이터베이스 인스턴스 ID를 추가하도록 /etc/oratab 업데이트
    1. /etc/oratab 편집:
      sudo vi /etc/oratab
    2. 데이터베이스에 대한 항목을 다음 형식으로 추가합니다.
      $ORACLE_SID:$ORACLE_HOME:N
      1 노드의 예:
      orcl1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
      2 노드의 예:
      orcl2:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
  3. oraenv 스크립트를 실행하여 $ ORACLE_HOME 같은 데이터베이스의 환경 변수를 설정합니다.
    . oraenv
  4. 두 번째 Oracle RAC 노드에 대해 이전 단계를 반복합니다.

대기(대상) 데이터베이스 삭제

  1. SSH를 사용하여 대기(대상) 서버에 로그인합니다.
  2. 데이터베이스 소유자인 oracle 사용자로 전환합니다.
  3. SYSDBA 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다.
    sqlplus / as sysdba
    Enter password: password
  4. 다음과 같이 데이터베이스를 클러스터화합니다.
    alter system set cluster_database=false sid='*' scope=spfile;
    System altered.
  5. SQL*Plus 종료:
     exit
  6. srvctl 사용 시 데이터베이스 중지:
    srvctl stop database -db database_unqiue_name
  7. SYSDBA 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다.
    sqlplus / as sysdba
    Enter password: password
  8. 제한된 모드로 데이터베이스 시작 및 마운트:
     startup mount restrict
    ORACLE instance started.
    Total System Global Area 7516192768 bytes
    Fixed Size                  2941872 bytes
    Variable Size            1409289296 bytes
    Database Buffers         6073352192 bytes
    Redo Buffers               30609408 bytes
    Database mounted.
  9. 대기 데이터베이스 삭제:
     drop database;
    Database dropped.

정적 서비스를 대기 데이터베이스 listener.ora 파일에 추가

대기 데이터베이스(소스 데이터베이스) listener.ora 파일에 정적 서비스를 추가한 후 리스너를 재시작해야 합니다.

  1. SSH를 사용하여 대기 데이터베이스(소스 데이터베이스) 서버의 첫번째 Oracle RAC 노드에 사인인합니다.
  2. 명령행에서 grid 사용자로 접속합니다.
    sudo su - grid
  3. static listener 가 포함되도록 $ ORACLE_HOME/network/admin/listener.ora 파일을 수정합니다. 다음 예에서는 static listener 하나에 사용할 형식을 보여 줍니다.
    SID_LIST_LISTENER=
     (SID_LIST=
      (SID_DESC=
      (SDU=65535)
      (GLOBAL_DBNAME = standby_db_unique_name.standby_db_domain)
      (SID_NAME = standby_db_sid)
      (ORACLE_HOME= standby_oracle_home)
      (ENVS="TNS_ADMIN= standby_oracle_home/network/admin")
      )
    )
  4. Srvctl 유틸리티를 사용하여 리스너를 정지하십시오.
    srvctl stop listener -l LISTENER
  5. listener 재시작
    srvctl start listener -l LISTENER
  6. listener 상태를 확인하십시오.
    lsnrctl status

    주:

    출력은 UNKNOWN 상태의 새 리스너임
  7. 두 번째 Oracle RAC 노드에 대해 이 단계를 반복합니다.

기본 데이터베이스에서 대기 데이터베이스로 TDE 전자 지갑 복사

SCP(Secure Copy Protocol) 를 사용하여 기본 데이터베이스(소스 데이터베이스) 시스템에서 대기 데이터베이스(대상 데이터베이스) 시스템으로 TDE 전자 지갑 파일을 수동으로 복사할 수 있습니다.

TDE 전자 지갑 압축

기본 데이터베이스(소스 데이터베이스) 에서 이 작업을 수행해야 합니다.

  1. SSH를 사용하여 기본 데이터베이스(소스 데이터베이스) 서버에 사인인합니다.
  2. 명령행에서 데이터베이스 소프트웨어 소유자 oracle 로 접속합니다.
    sudo su - oracle
  3. $ ORACLE_HOME 환경 변수를 설정하는 oraenv 스크립트를 실행합니다.
    . oraenv
  4. 전자 지갑 위치를 찾으려면 SYSDBA 관리자 권한으로 기본 데이터베이스(소스 데이터베이스) 인스턴스에 사인인합니다.
    sqlplus / as sysdba
  5. V$ENCRYPTION_WALLET 동적 뷰의 WRL_PARAMETER 열에서 전자 지갑이 있는 디렉토리를 찾으십시오.
    SELECT * FROM V$ENCRYPTION_WALLET;
  6. SQL*Plus를 종료합니다.
    exit
  7. 전자 지갑 파일이 있는 디렉토리로 이동합니다. 예를 들어, 다음과 같습니다.
    cd /u02/app/oracle/admin/source_db_unique_name
  8. Tar 명령을 사용하여 TDE 전자 지갑을 압축할 수 있습니다. 예를 들어, 다음과 같습니다.
    tar cvf tde_wallet.tar ./tde_wallet
    다음과 유사한 출력이 나타납니다.
    ./tde_wallet/
    ./tde_wallet/ewallet.p12
    ./tde_wallet/cwallet.sso
    ./tde_wallet/ewallet_2018021607225910.p12
TDE 전자 지갑 복사 및 전자 지갑 디렉토리에 대한 권한 설정

TDE 전자 지갑 파일을 백업한 후에는 전자 지갑에 대한 디렉토리를 생성하고 이 디렉토리에 대한 권한을 설정해야 합니다.

  1. 전자 지갑 tar 파일을 tmp 디렉토리에 복사합니다. 예를 들어, 다음과 같습니다.
    cp tde_wallet.tar /tmp/
  2. OPC 사용자가 되려면 종료합니다.
    $ exit
  3. 로컬 호스트에서 기본 데이터베이스로 전용 키를 복사합니다.
    기본적으로 전용 키는 Db에 저장되지 않습니다.
    scp -i /home/opc/.ssh/privateKey opc@<Primary DB IP>:/home/opc/.ssh/
  4. SCP - 기본 데이터베이스(소스 데이터베이스) 에서 /opt/oracle/dcs/commonstore/wallets/tde/ $ ORACLE_UNQNAME 디렉토리의 대기 데이터베이스(대상 데이터베이스) 로 전자 지갑 파일을 복사합니다. 예를 들어, 다음과 같습니다.
    scp -i /home/opc/.ssh/privateKey /tmp/tde_wallet.tar opc@<Standby DB IP>:/tmp/
    다음과 유사한 출력이 나타납니다.
    tde_wallet.tar
    100% 20KB 20.0KB/s 00:00
  5. SSH를 사용하여 대상 데이터베이스 서버에 사인인합니다.
  6. 데이터베이스 소프트웨어 소유자 oracle 로 사인인합니다.
    sudo su - oracle
  7. $ ORACLE_HOME 환경 변수를 설정하는 oraenv 스크립트를 실행합니다.
    . oraenv
  8. 전자 지갑 위치를 찾으려면 sqlnet.ora 콘텐츠를 표시합니다.
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. ENCRYPTION_WALLET_LOCATION 매개변수는 전자 지갑의 위치를 표시합니다. 예를 들어, 다음과 같습니다.
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  10. 대상 전자 지갑 디렉토리로 이동합니다. 예를 들어, 다음과 같습니다.
    cd /opt/oracle/dcs/commonstore/wallets/tde
  11. 이 디렉토리에 올바른 전자 지갑이 있는지 확인하십시오.
    ls target_db_unique_name
  12. 전자 지갑 파일을 백업합니다. 예를 들어, 다음과 같습니다.
    mv target_db_unique_name target_db_unique_name.old
  13. 전자 지갑을 저장할 디렉토리를 생성합니다. 예를 들어, 다음과 같습니다.
    mkdir target_db_unique_name
  14. 전자 지갑 디렉토리에 대한 권한을 확인하십시오.
    ls -ld target_db_unique_name
  15. 필요한 경우 데이터베이스 소프트웨어 소유자에게 Oracle 읽기, 쓰기 및 실행 권한을 부여합니다.
    chmod 700 target_db_unique_name
  16. 권한을 다시 확인하십시오.
    ls -ld target_db_unique_name
  17. 전자 지갑 tar 파일을 현재 디렉토리에 복사합니다.
    cp /tmp/tde_wallet.tar .
  18. 권한을 확인하십시오.
    ls -rlt
    다음과 유사한 출력이 나타납니다.
    total 124
    drwx------ 2 oracle oinstall 20480 Feb 16 09:25 target_db_unique_name.old
    drwx------ 2 oracle oinstall 20480 Feb 16 10:16 target_db_unique_name
    -rw-r--r-- 1 oracle oinstall 20480 Feb 16 10:17 tde_wallet.tar
TDE 전자 지갑 프로세스 완료

TDE 전자 지갑 파일 tart를 추출한 다음 해당 콘텐츠를 대기 데이터베이스(대상 데이터베이스) 의 전자 지갑 디렉토리로 이동해야 합니다.

  1. 대기 데이터베이스(대상 데이터베이스) 에서 정확한 전자 지갑 디렉토리에 있는지 확인합니다. 예를 들어, 다음과 같습니다.
    pwd
     
    # Output similar to the following should appear:
    /opt/oracle/dcs/commonstore/wallets/tde
  2. Tar 파일을 추출합니다.
    tar xvf tde_wallet.tar
    다음과 유사한 출력이 표시되어야 합니다.
    ./tde_wallet/ewallet.p12
    ./tde_wallet/ewallet_2018050819024979.p12
    ./tde_wallet/cwallet.sso
  3. 대기 데이터베이스(대상 데이터베이스) 의 전자 지갑 디렉토리로 tde_wallet 콘텐츠를 이동합니다.
    mv ./tde_wallet/* ./target_db_unique_name
  4. 대기 데이터베이스(대상 데이터베이스) 에서 tde_wallet 콘텐츠를 제거합니다.
    rm -rf ./tde_wallet

대기 초기화 매개변수 파일 구성 및 NOMOUNT 모드로 인스턴스 시작

대기 초기화 파일을 구성한 후 NOMOUNT 모드에서 데이터베이스를 재시작할 수 있습니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 사인인합니다.
  2. 데이터베이스 소프트웨어 소유자 oracle 로 사인인합니다.
    sudo su - oracle
  3. $ORACLE_HOME 환경 변수를 설정하는 oraenv 스크립트를 실행합니다.
    . oraenv
  4. dbs 디렉토리로 이동합니다.
    cd $ORACLE_HOME/dbs
  5. 다음과 같이 init_ < SID > . ora라는 임시 초기화 매개변수 파일을 생성합니다. 여기서 < SID > 는 대상 데이터베이스 SID입니다.
    echo "*.db_name='db_name'" > $ORACLE_HOME/dbs/init<sid>.ora
    echo "*.db_unique_name='target_db_unique_name'" >> $ORACLE_HOME/dbs/init<sid>.ora
  6. 기존 비밀번호 파일(존재하는 경우) 을 백업합니다. 예를 들어, 다음과 같습니다.
    mv $ORACLE_HOME/dbs/orapw<sid> $ORACLE_HOME/dbs/orapw<sid>.old
  7. 새 비밀번호 파일을 생성합니다. 예를 들어, 다음과 같습니다.
    orapwd file=$ORACLE_HOME/dbs/orapwtarget password=admin_password_for_primary entries=5
  8. 클러스터의 비밀번호 파일을 non-ASM 비밀번호 파일로 변경합니다.
    $ srvctl modify database -d <oci_db_unique_name> -pwfile $ORACLE_HOME/dbs/orapw<oci_oracle_sid>
    $ srvctl config database -d <oci_db_unique_name>
  9. sysdba 관리자 권한을 가진 사용자로 대기 데이터베이스(대상 데이터베이스) 인스턴스에 접속합니다. 예를 들어, 다음과 같습니다.
    sqlplus / as sysdba 
  10. 데이터베이스를 종료합니다. 예를 들어, 다음과 같습니다.
    shutdown immediate
  11. init<sid>.ora 초기화 매개변수 파일을 사용하여 NOMOUNT 모드로 데이터베이스를 재시작합니다.
    startup force nomount PFILE=?/dbs/init<sid>.ora

활성 데이터베이스에서 대기용 대상 데이터베이스 복제

스크립트를 실행하여 대기 데이터베이스(대상 데이터베이스) 를 복제할 수 있습니다. 기본 데이터베이스(소스 데이터베이스) 가 크면 추가 채널을 할당하여 성능을 향상시킬 수 있습니다. 새로 설치된 데이터베이스의 경우, 하나의 채널은 일반적으로 몇 분 후에 데이터베이스 중복을 실행합니다. Oracle Recovery Manager(Oracle RMAN) 복제 작업을 실행한 후 오류가 발생하지 않는지 확인합니다. 오류가 발생하면 초기화 매개변수 파일(spfile 아님) 을 사용하여 데이터베이스를 재시작합니다. 이 경우 Oracle RMAN 복제 프로세스의 일부로 $ORACLE_HOME/dbs 디렉토리에 생성됩니다.

  1. 데이터베이스 소프트웨어 소유자 oracle 형식으로 대기 데이터베이스(대상 데이터베이스) 에 접속합니다.
    su - oracle
  2. $ ORACLE_HOME 환경 변수를 설정하는 oraenv 스크립트를 실행합니다.
    . oraenv
  3. dup.rcv 생성
    vi dup.rcv
    필요한 변수를 업데이트하는 동안 스크립트의 콘텐츠를 붙여넣습니다.
  4. NOMOUNT 모드에서 대기 데이터베이스(대상 데이터베이스) 를 사용하여 Oracle RMAN 에 접속합니다.
    rman
    RMAN> connect target sys@<primary_db_tnsnames_name>
    target database Password: password
    RMAN> connect auxiliary sys@<standby_db_tnsnames_name>
    auxiliary database Password: password
  5. 다음 스크립트를 실행하여 활성 데이터베이스에서 대기 데이터베이스에 대한 대상 데이터베이스를 복제합니다. 다음 예에서는 사용자가 생성해야 하는 dup.rcv 스크립트를 보여 주며 My Oracle Support 노트 2369137 를 기반으로 합니다 . RMAN Active Duplicate - RMAN-06217 -- PUSH & PULL 메소드 설명(문서 ID 2369137.1) 에 실행합니다. 이 예에서는 파일 시스템에서 Oracle Automatic Storage Management(Oracle ASM) 로 중복(이미지 복사본) 을 반영하도록 dup.rcv 스크립트가 사용자 정의되었습니다. 다른 옵션(예: 파일 시스템에서 Oracle Automatic Storage Management Cluster File System 또는 Oracle ASM - Oracle ASM) 의 경우 파일 대상 매개변수와 파일 이름 변환 매개변수를 변경해야 합니다.
    @dup.rcv
    Output similar to the following appears:
    
    RMAN> run {
    2> allocate channel prmy1 type disk;
    3> allocate channel prmy2 type disk;
    4> allocate channel prmy3 type disk;
    5> allocate channel prmy4 type disk;
    6> allocate auxiliary channel stby1 type disk;
    7> allocate auxiliary channel stby2 type disk;
    8> allocate auxiliary channel stby type disk;
    9> duplicate target database for standby from active database dorecover
    10> spfile
    11> parameter_value_convert '/u02/app/oracle/oradata/source_db_name','+DATA'
    12> Set CLUSTER_DATABASE='FALSE'
    13> set db_unique_name='<target_db_unique_name>'
    14> set db_create_file_dest='+DATA'
    15> set db_create_online_log_dest_1='+RECO'
    16> set db_recovery_file_dest='+RECO'
    17> set audit_file_dest='/u01/app/oracle/admin/db_name/adump'
    18> set control_files='+DATA','+RECO'
    19> set dg_broker_config_file1='+DATA/<target_db_unique_name>/dr1<target_db_unique_name>.dat'
    20> set dg_broker_config_file2='+RECO/<target_db_unique_name>/dr2<target_db_unique_name>.dat'
    21> set dispatchers='(PROTOCOL=TCP) (SERVICE=<target_db_name>XDB)'
    22> set instance_name='<target_db_name>'
    23> set db_domain='<target_db_domain>'
    24> set db_recovery_file_dest='+RECO'
    25> ;
    26> }

Oracle Recovery Manager 복제 단계 게시

Oracle Recovery Manager(Oracle RMAN) 복제 작업을 완료한 후 대기 데이터베이스(대상 데이터베이스) 에서 이러한 정리 작업을 수행해야 합니다.

비밀번호 파일 업데이트

다음과 같이 비밀번호 파일을 업데이트합니다.

  1. 비밀번호 파일을 다시 ASM으로 이동:
    [oracle@oci_node1 ~]$ cp $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid> /tmp/orapw<oci_node1_oracle_sid>
  2. opc 사용자를 종료합니다.
    [oracle@oci_node1 ~]$ exit
  3. grid 사용자로 전환:
    [opc@oci_node1 ~]$ sudo su - grid
  4. ASMCMD 프롬프트로 전환:
    [grid@oci_node1 ~]$ asmcmd
  5. ASMCMD 비밀번호 복사:
    ASMCMD> pwcopy --dbuniquename <oci_db_unique_name> '/tmp/orapw<oci_node1_oracle_sid>' '+DATA'

    주:

    ASM 버전이 데이터베이스와 다르므로 명령에 오류가 표시될 수 있습니다. 이 절차에서는 나중에 등록 이슈가 수정되므로 오류를 무시할 수 있습니다.

  6. + DATA/< OCI_DB_UNIQUE_NAME >/PASSWORD/디렉토리로 이동하여 9단계에서 사용할 system_generated_id 를 찾습니다.
    ASMCMD> cd +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/ 
    ASMCMD> ls -lt
  7. ASMCMDgrid 사용자 종료:
    ASMCMD> exit
    [grid@oci_node1 ~]$ exit
  8. Oracle 사용자로 전환:
    [opc@oci_node1 ~]$ sudo su - oracle
  9. $ ORACLE_HOME 환경 변수를 설정하는 oraenv 스크립트를 실행합니다.
    . oraenv
  10. 클러스터의 비밀번호 파일을 ASM:
    [oracle@oci_node1 ~]$ srvctl modify database -d <oci_db_unique_name> -pwfile +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/pwd<oci_db_unique_name><system_generated_id>
    [oracle@oci_node1 ~]$ rm $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid>
Oracle Flashback 사용

Oracle Flashback 을 사용으로 설정해야 합니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 사인인합니다.
  2. 데이터베이스 소프트웨어 소유자 oracle 로 사인인합니다.
    sudo su - oracle
  3. SYSOPER 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다. 예를 들어, 다음과 같습니다.
    sqlplus / as sysoper
    Enter password: password
  4. Oracle Flashback 사용
    ALTER DATABASE FLASHBACK ON;
  5. SYSDBA 관리자 권한을 가진 사용자로 접속합니다.
    CONNECT / AS SYSDBA
  6. 플래시백 보존 대상을 설정합니다.
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120;
Spfile 파일을 Oracle Automatic Storage Management 로 이동합니다.

spfile 파일을 Oracle Automatic Storage Management 파일로 이동해야 합니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 접속합니다.
  2. SYSOPER 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다.
  3. spfile 파일을 생성하여 Oracle Automatic Storage Management 로 이동합니다.
    1. Pfile을 생성하십시오.
      create pfile='/tmp/init<sid>.ora' from spfile;
    2. SQL*Plus 종료:
      SQL> exit
    3. Pfile 편집:
      vi /tmp/init<sid>.ora
    4. 파일에서 다음 행을 삭제합니다.
      *.instance_name=<sid_for_node1>
    5. 각 노드에 대해 다음 행을 추가합니다.
      <sid_for_node1>.instance_name='<sid_for_node1>'
      <sid_for_node2>.instance_name='<sid_for_node2>'
    6. SQL*Plus 에 관리자 사용자로 사인인합니다. 예를 들어, 다음과 같습니다.
      sqlplus sys / as sysdba
      Password: password
    7. 데이터베이스 종료
      shutdown immediate
    8. 방금 생성한 initdb_name.ora 파일을 사용하여 MOUNT 모드로 데이터베이스를 재시작합니다.
      startup mount pfile='/tmp/init<sid>.ora';
    9. spfile 파일을 생성합니다.
      create spfile='+DATA' from pfile='/tmp/init<sid>.ora';
  4. SQL*Plus를 종료합니다.
  5. grid 사용자는 asmcmd 명령을 사용하여 Oracle Automatic Storage Management 에서 spfile 파일을 찾습니다.
    asmcmd
    ASMCMD> cd +DATA/target_db_unique_name/PARAMETERFILE/
    ASMCMD> ls -lt
    다음과 유사한 출력이 나타납니다.
    Type           Redund  Striped  Time             Sys  Name
    PARAMETERFILE  UNPROT  COARSE   APR 09 16:00:00  Y    spfile.262.973010033
    다음 작업에 필요한 ASM 이름(spfile. 262.973010033) 을 기록해 둡니다.
inittarget_db_name . ora 파일을 참조하여 spfile 파일로 변경하십시오.

init<sid>.ora 파일을 수정하여 spfile 파일을 참조할 수 있습니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 접속합니다.
  2. 데이터베이스 소프트웨어 소유자 oracle 로 사인인합니다.
    su - oracle
  3. oraenv 스크립트를 실행하여 $ORACLE_HOME 환경 변수를 설정합니다.
    . oraenv
  4. $ORACLE_HOME/dbs 디렉토리로 이동합니다.
    cd $ORACLE_HOME/dbs
  5. init<sid>.ora 파일이 이 디렉토리에 있는지 확인하십시오.
    ls *.ora
  6. inittarget_db_name.ora 파일을 참조하여 spfile 파일을 변경하십시오. 예를 들어, 다음과 같습니다.
    mv spfiletarget_db_name.ora spfiletarget_db_name.ora.stby
    mv init<sid>.ora init<sid>.ora.stby
    echo ''SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'' > init<sid>.ora
    cat init<sid>inittarget_db_name.ora--To check the file
    이 출력에서 spfile.262.973010033 spfile 파일을 이전 작업에서 Oracle Automatic Storage Management 로 이동할 때 생성한 파일의 이름입니다.
    다음과 유사한 출력이 나타납니다.
    SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'
MOUNT 모드로 대기 데이터베이스 수정 및 시작

srvctl 을 사용하여 대기 데이터베이스(대상 데이터베이스) 를 수정하고 시작할 수 있습니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 사인인합니다.
  2. 데이터베이스 소프트웨어 소유자 oracle 로 사인인합니다.
    su - oracle
  3. $ ORACLE_HOME 환경 변수를 설정하는 oraenv 스크립트를 실행합니다.
    . oraenv
  4. Srvctl을 사용하여 MOUNT 모드에서 대기 데이터베이스(대상 데이터베이스) 를 수정하고 시작하십시오. 예를 들어, 다음과 같습니다.
    srvctl modify database -db target_db_unique_name -role /
    PHYSICAL_STANDBY -s "READ ONLY"  -spfile /
    +DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033
    
    srvctl config database -db target_db_unique_name
  5. SYSOPER 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다.
    sqlplus / as sysoper
  6. 데이터베이스 종료,
    SQL*Plus
    SHUTDOWN IMMEDIATE
  7. 마운트 상태로 데이터베이스 시작
    STARTUP MOUNT
  8. cluster_database 매개변수 변경
    
    alter  system set cluster_database=True  sid='*' scope=spfile;
  9. 데이터베이스 종료
    SHUTDOWN IMMEDIATE
  10. SQL*Plus를 종료합니다.
    EXIT
  11. srvctl 를 사용하여 MOUNT 모드로 데이터베이스를 시작합니다.
    srvctl start database -db target_db_unique_name -o mount
  12. SYSDBA 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다.
    sqlplus / as sysdba
  13. V$DATABASE 동적 뷰를 질의하여 데이터베이스가 MOUNT 모드인지 확인하십시오.
    SELECT NAME, OPEN_MODE FROM V$DATABASE;
    다음과 유사한 #Output 이 나타납니다.
    NAME              OPEN_MODE
    --------------    ---------
    source_db_name    MOUNTED
기본 데이터베이스에서 데이터베이스 및 로그 파일 이름 변환 매개변수를 설정합니다.

데이터베이스에 대한 변환 매개변수와 기본 데이터베이스(소스 데이터베이스) 의 로그 파일 이름을 설정해야 합니다.

  1. SSH를 사용하여 기본 데이터베이스(소스 데이터베이스) 서버에 사인인합니다.
  2. Oracle 사용자로 전환:
    sudo su - oracle
  3. SYSDBA 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다. 예를 들어, 다음과 같습니다.
    sqlplus / as sysdba
    Enter password: password
  4. CONVERT 매개변수를 확인하십시오.
    SHOW PARAMETER CONVERT
    다음과 유사한 출력이 나타납니다.
    NAME                         TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    VALUE 열은 비어 있어야 합니다(널). 값이 있는 경우 이전이 완료된 후에 이 값을 기록해 둡니다. 이전이 완료된 후 이러한 값은 널로 설정됩니다.
  5. 이 출력의 정보를 사용하여 DB_FILE_NAME_CONVERT 매개변수를 설정합니다.

    주:

    이 단계에서는 SOURCE_DB_NAME 대문자여야 합니다.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA','/u02/app/oracle/oradata/SOURCE_DB_NAME/'' SID='*' SCOPE=SPFILE;
  6. LOG_FILE_NAME_CONVERT 매개변수를 설정합니다. 예를 들어, 다음과 같습니다.
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+RECO','/u04/app/oracle/redo/' SID='*' SCOPE=SPFILE;
  7. 데이터베이스를 재시작합니다.
    srvctl stop database -db source_db_name
    srvctl start database -db source_db_name
대기 데이터베이스에서 데이터베이스 및 로그 파일 이름 변환 매개변수를 설정합니다.

대기 데이터베이스(대상 데이터베이스) 에서 데이터베이스 및 로그 파일 이름에 대한 변환 매개변수를 설정해야 합니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 사인인합니다.
  2. Oracle 사용자로 전환:
    sudo su - oracle
  3. SYSDBA 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 사인인합니다. 예를 들어, 다음과 같습니다.
    sqlplus / as sysdba
    Enter password: password
  4. CONVERT 매개변수를 확인하십시오.
    SHOW PARAMETER CONVERT
    다음과 유사한 출력이 나타납니다.
     NAME                        TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    VALUE 열은 비어 있어야 합니다(널). 값이 있는 경우 이전이 완료된 후에 이 값을 기록해 둡니다. 이전이 완료된 후 이러한 값은 널로 설정됩니다.
  5. 이 출력의 정보를 사용하여 DB_FILE_NAME_CONVERT 매개변수를 설정합니다. 예를 들어, 다음과 같습니다.

    주:

    이 단계에서는 SOURCE_DB_NAME 대문자여야 합니다.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/u02/app/oracle/oradata/SOURCE_DB_NAME/','+DATA' SID='*' SCOPE=SPFILE;
  6. LOG_FILE_NAME_CONVERT 매개변수를 설정합니다. 예를 들어, 다음과 같습니다.
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u04/app/oracle/redo/','+RECO'
    SID='*' SCOPE=SPFILE;
  7. 데이터베이스를 재시작합니다.
    srvctl stop database -db target_db_unique_name
    srvctl start database -db target_db_unique_name -o mount

Oracle Data Guard Broker로 데이터베이스 구성

dbmgrl 유틸리티를 사용하여 기본 데이터베이스(소스 데이터베이스) 또는 대기 데이터베이스(대상 데이터베이스) 를 Oracle Data Guard Broker로 구성할 수 있습니다.

  1. SSH를 사용하여 기본 데이터베이스(소스 데이터베이스) 또는 대기 데이터베이스(대상 데이터베이스) 서버에 사인인합니다.
  2. dgmgrl 명령행 유틸리티를 시작합니다.
    dgmgrl
  3. 기본 또는 대기 데이터베이스 시스템에서 사용자 SYS 로 접속합니다. 예를 들어, TNS 이름이 OCIC-ORCL 인 기본 데이터베이스에 로그인하려면 다음과 같이 하십시오.
    connect sys@ocic-orcl
    Enter password: password
  4. dbmgrl 유틸리티를 사용하여 기본 및 대기 데이터베이스의 Oracle Data Guard 구성 및 id를 생성합니다. 예를 들어, 다음과 같습니다.
    create configuration configuration_name as primary database is source_db_unique_name connect identifier is OCIC-ORCL; -- Uses the source TNS name
     
    add database target_db_unique_name as connect identifier is OCI-ORCL; --Uses the target TNS name
  5. 구성을 사용으로 설정합니다.
    enable configuration
  6. 대기 데이터베이스에 Oracle Data Guard 구성을 표시합니다.
    show configuration
    다음과 유사한 출력이 나타납니다.
    Configuration - configuration_name
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
    
    Fast-Start Failover: DISABLED
    
    Configuration Status:
    SUCCESS   (status updated 12 seconds ago)

기본 데이터베이스 및 대기 데이터베이스에서 Oracle Data Guard Broker 검증

SQL*Plus 를 사용하여 기본 데이터베이스(소스 데이터베이스) 및 대기 데이터베이스(대상 데이터베이스) 에서 Oracle Data Guard Broker를 검증할 수 있습니다.

기본 데이터베이스에서 Oracle Data Guard Broker 검증

SQL*Plus 를 사용하여 기본 데이터베이스(소스 데이터베이스) 에서 Oracle Data Guard Broker를 검증할 수 있습니다.

  1. SSH를 사용하여 기본 데이터베이스(소스 데이터베이스) 서버에 사인인합니다.
  2. SYSDBA 관리자 권한을 가진 사용자로 접속합니다. 예를 들어, TNS 이름이 OCIC-ORCL 인 기본 데이터베이스의 경우 다음과 같습니다.
    connect sys@ocic-orcl as sysdba
    Enter password: password
  3. V$DATABASE 동적 뷰를 질의합니다.
    SELECT FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, DATAGUARD_BROKER, PROTECTION_MODE FROM V$DATABASE;
    
  4. 다음과 유사한 출력이 나타납니다.
    
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                READ WRITE
    PRIMARY          TO STANDBY           ENABLED  MAXIMUM PERFORMANCE
    출력에서 DATABASE_ROLEPRIMARYOPEN_MODEREAD WRITE 여야 합니다.

대기 데이터베이스에서 Oracle Data Guard Broker 검증

SQL*Plus 를 사용하여 대기 데이터베이스(대상 데이터베이스) 에서 Oracle Data Guard Broker를 검증할 수 있습니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 사인인합니다.
  2. SYSDBA 관리자 권한을 가진 사용자로 접속합니다.
  3. V$DATABASE 동적 뷰를 질의합니다.
    SELECT FORCE_LOGGING, FLASHBACK_ON,
    OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS,
    DATAGUARD_BROKER, PROTECTION_MODE
    FROM V$DATABASE;
    다음과 유사한 출력이 나타납니다.
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                MOUNTED
    PHYSICAL STANDBY NOT ALLOWED          ENABLED  MAXIMUM PERFORMANCE
    출력은 DATABASE_ROLE PHYSICAL STANDBYOPEN_MODE(MOUNTED) 로 표시해야 합니다.
  4. 대기 데이터베이스에서 Oracle Data Guard 프로세스가 시작되었는지 확인하십시오.
    SELECT PROCESS,PID,DELAY_MINS FROM V$MANAGED_STANDBY;
    다음과 유사한 출력이 나타납니다.
    PROCESS   PID                      DELAY_MINS
    --------- ------------------------ ----------
    ARCH      9207                              0
    ARCH      9212                              0
    ARCH      9216                              0
    ARCH      9220                              0
    RFS       1065                              0
    RFS       1148                              0
    RFS       1092                              0
    MRP0      972                               0
    RFS       1208                              0
    The output should indicate that the processes are running with little or no delay. If the DELAY_MINS for MRP0, the databases are synchronized.
  5. LOG_ARCHIVE_DEST 매개변수를 확인하십시오.
    SHOW PARAMETER LOG_ARCHIVE_DEST_
    다음과 유사한 출력이 나타납니다.
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------
    log_archive_dest_1           string       
                                           location=USE_DB_RECOVERY_FILE_
                                           DEST, valid_for=(ALL_LOGFILES,
                                           ALL_ROLES)
    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
    ...
    log_archive_dest_2           string    service="oci-orcl", ASYNC
                                           NOAF FIRM delay=0 optional
                                           compression=disable
                                           max_failure=0 max_connections
                                           =1 reopen=300 db_unique_name=
                                           "source_db_unique_name"
                                           net_timeout=30, valid_for=
                                           (online_logfile,all_roles)
    ...
    
    출력은 log_archive_dest_2 출력과 비슷하며 이 예제에서 대기 데이터베이스(대상 데이터베이스) 를 가리키는 서비스(oci-orcl) 와 비슷합니다.
  6. LOG_ARCHIVE_CONFIG 매개변수를 확인하십시오.
    SHOW PARAMETER LOG_ARCHIVE_CONFIG#
    다음과 유사한 출력이 나타납니다.
    
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------------------------------------
    log_archive_config           string    dg_config=(source_db_unique_name,target_db_unique_name)
    
  7. FAL_SERVER 매개변수를 확인하십시오.
    SHOW PARAMETER FAL_SERVER
    다음과 유사한 출력이 나타납니다.
    
    NAME                        TYPE      VALUE
    --------------------------- --------- ----------
    fal_server                  string    <tns_entry_of_primary>  
  8. LOG_ARCHIVE_FORMAT 매개변수를 확인하십시오.
    SHOW PARAMETER LOG_ARCHIVE_FORMAT
    다음과 유사한 출력이 나타납니다.
    
    NAME                        TYPE      VALUE
    --------------------------- --------- --------------
    log_archive_format          string    %t_%s_%r.dbf

기본 데이터베이스에서 검증 완료

dgmrgl 를 사용하여 기본 데이터베이스(소스 데이터베이스) 에서 Oracle Data Guard Broker 검증을 완료할 수 있습니다.

  1. SSH를 사용하여 기본 데이터베이스(소스 데이터베이스) 서버에 사인인합니다.
  2. 기본 데이터베이스 (소스 데이터베이스) 의 대기 데이터베이스에서 Oracle Data Guard Broker 검증 항목의 단계 5-8을 반복합니다.
  3. dgmgrl 명령행 유틸리티를 시작합니다.
    dgmgrl
  4. 기본 또는 대기 데이터베이스 시스템에서 사용자 SYS 로 접속합니다. 예를 들어, TNS 이름이 OCIC-ORCL 인 기본 데이터베이스에 로그인하려면 다음과 같이 하십시오.
    connect sys@primary_db_tnsnames_name
    Enter password: password
  5. Oracle Data Guard 구성을 확인하십시오.
    show configuration verbose
    다음과 유사한 출력이 나타납니다.
    Configuration - configuration_name
     
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
     
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '30'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
     
    Fast-Start Failover: DISABLED
  6. 대기 데이터베이스(대상 데이터베이스) 에서 상태를 확인하십시오. 예를 들어, 다음과 같습니다.
    show database verbose target_db_unique_name
    이러한 단계를 완료한 후에는 양방향으로 전환 작업을 수행하여 Oracle Data Guard 구성이 예상대로 작동하는지 테스트해야 합니다.

마이그레이션 수행

이전을 완료하려면 기본 데이터베이스(소스 데이터베이스) 에서 대기 데이터베이스(대상 데이터베이스) 로의 전환 작업을 수행해야 합니다.

  1. SSH를 사용하여 기본 데이터베이스(소스 데이터베이스) 서버에 사인인합니다.
  2. Dgmgrl 명령행 유틸리티를 시작합니다.
    dgmgrl 
  3. 기본 또는 대기 데이터베이스 시스템에서 사용자 SYS로 접속합니다. 예를 들어, TNS 이름이 OCIC-ORCL인 기본 데이터베이스에 로그인하려면 다음과 같이 하십시오.
    connect sys@ocic-orcl
    Enter password: password
  4. 구성을 확인하십시오.
    show configuration verbose
  5. 구성 상세 정보 출력에서 데이터베이스 상태 설정이 SUCCESS 인지 확인하십시오.
  6. 기본 데이터베이스(소스 데이터베이스) 에 대한 구성을 확인하십시오.
    show database verbose source_db_unique_name
    데이터베이스 상세 정보 출력에는 역할이 기본이고 StaticConnectIdentifier 설정이 DGConnectIdentifier. 설정과 동일함을 나타내야 합니다.
  7. 대기 데이터베이스(대상 데이터베이스) 에 대한 전환 작업을 수행합니다.
    switchover to target_db_unique_name
    출력은 두 데이터베이스 간에 전환 작업이 발생하고 있음을 나타내야 합니다.
  8. 구성 표시 를 실행하여 오류 또는 경고가 없는지 확인합니다.
    show configuration;

이전 후 단계

Oracle Cloud Infrastructure Compute Classic 서버에서 가상 머신 데이터베이스 시스템을 사용하는 Oracle Cloud Infrastructure 서버로 Oracle 데이터베이스의 이전을 완료한 후 이전을 검증하고 기본 데이터베이스 (소스 데이터베이스) 에서 구성을 제거해야 합니다.

대기 데이터베이스의 Oracle Data Guard 구성을 테스트합니다.

이 단계에서 대상 데이터베이스는 이제 기본 데이터베이스입니다. 소스 데이터베이스가 이제 대기 데이터베이스입니다.

소스 데이터베이스와 전환 작업을 수행하여 대상 데이터베이스에서 Oracle Data Guard 접속을 테스트할 수 있습니다. 이 전환 작업은 대상 데이터베이스를 대기 롤로 다시 사용합니다. 이 테스트의 목적은 대상 데이터베이스가 작동하지 않는 경우 원래 구성으로 돌아갈 수 있음을 입증하는 것입니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 사인인합니다.
  2. dgmgrl 유틸리티를 시작합니다. 예를 들어, 다음과 같습니다.
    dgmgrl sys@target_db
    Enter password: password
  3. 소스 데이터베이스에 대한 전환 작업을 수행하면 대상 데이터베이스가 대기 롤을 갖게 됩니다.
    switchover to source_db_unique_name;
    출력은 두 데이터베이스 간에 전환 작업이 발생하고 있음을 나타내야 합니다.
  4. (선택사항) 새 기본 데이터베이스가 완전히 작동하도록 결정될 때까지 새 대기 데이터베이스에 대한 변경사항을 방지하려면 Redo Apply 기능을 일시적으로 사용 안함으로 설정합니다.
    edit database source_db_unique_name set state = 'APPLY-OFF';
    다른 전환 작업을 수행하여 대상 데이터베이스가 이제 대기 데이터베이스인지 확인한 경우 소스 데이터베이스가 업데이트되지 않도록 APPLY-OFF 작업을 수행할 수 있습니다. 그러면 대상 데이터베이스가 서비스에 배치되고, 새 구성에서 논리적 오류가 발생할 경우 소스 데이터베이스가 적시 백업으로 유지됩니다.
  5. (선택사항) 적용 기능을 재시작하려면 다음과 같이 하십시오.
    edit database source_db_unique_name set state = 'APPLY-ON';
  6. dgmgrl 종료.
    exit
  7. 소스 데이터베이스를 대기 롤로 만드는 대상 데이터베이스에 대한 전환 작업을 수행합니다.
    switchover to target_db_unique_name;
    출력은 두 데이터베이스 간에 전환 작업이 발생하고 있음을 나타내야 합니다.
  8. 새 기본 데이터베이스에 대한 접속을 테스트합니다. 예를 들어, 대상 고유 이름을 익스포트한 후 사용자 SYS로 접속하고 암호화된 테이블 공간에서 선택합니다. 이 예에서는 HR.EMPLOYEES 테이블이 암호화됩니다.
    exit
  9. 새 기본 데이터베이스에 대한 접속을 테스트합니다. 예를 들어, 대상 고유 이름을 익스포트한 후 사용자 SYS 으로 접속하고 암호화된 테이블 공간에서 선택합니다. 이 예에서는 HR.EMPLOYEES 테이블이 암호화됩니다.
    export ORACLE_UNQNAME=target_db_unique_name
     
    sqlplus sys@target_TNS_name
    Password: password
     
    SQL> ALTER SESSION SET CONTAINER = PDB1;
    SQL> SELECT * FROM HR.EMPLOYEES;
     
    SQL> EXIT

대기 데이터베이스 정리

이전을 완료하고 테스트한 후 대기 데이터베이스(대상 데이터베이스) 에서 Oracle Data Guard 구성을 제거할 수 있습니다. 원본 소스 데이터베이스를 제거할 필요가 없습니다. 이 단계에서 대기 데이터베이스는 새 소스 데이터베이스입니다.

  1. SSH를 사용하여 대기 데이터베이스(대상 데이터베이스) 서버에 사인인하고 Oracle Data Guard dgmgrl utility 에 사인인합니다.
  2. 구성을 확인하십시오.
    show configuration
  3. 구성에 Protection Mode: MaxPerformance 이 표시되지 않으면 Oracle Data Guard 을 설정하여 MaxPerformance 보호 모드를 사용합니다.
    edit configuration set protection mode as maxperformance
  4. 사용 안함으로 설정한 다음 구성을 제거합니다.
    edit database source_db_unique_name set state = 'APPLY-OFF';
     
    disable configuration;
     
    remove configuration;
     
    exit
  5. SYSDBA 관리자 권한을 가진 사용자로 데이터베이스 인스턴스에 접속합니다. 예를 들면 다음과 같습니다.
    sqlplus / as sysdba
  6. DG_BROKER_CONFIG_FILE 매개변수를 확인하십시오.
    SHOW PARAMETER DB_BROKER_CONFIG_FILE
    출력에는 이 구성에 대해 연관된 데이터 및 복구 파일(일반적으로 dg_broker_config_file1dg_broker_config_file2) 이 나열되어야 합니다.
  7. 다른 터미널 창을 시작하고 그리드 사용자로 asmcmd 에 사인인합니다.
  8. DG_BROKER_CONFIG_FILE 매개변수를 확인할 때 나열된 Oracle Data Guard 구성 파일을 제거합니다.
  9. SQL*Plus 실행 중인 창으로 돌아갑니다.
  10. 다음 ALTER SYSTEM 문을 실행합니다.
    ALTER SYSTEM SET DG_BROKER_START=FALSE SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM RESET LOG_ARCHIVE_CONFIG SID='*' SCOPE=SPFILE;
  11. 다음 매개변수를 확인하십시오.
    SHOW PARAMETER DB_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_ARCHIVE_DEST
    SHOW PARAMETER LOG_ARCHIVE_DEST_STATE
    SHOW PARAMETER STANDBY_ARCHIVE_DEST
    SHOW PARAMETER FAL
  12. 이전 매개변수가 설정된 경우 빈 값을 사용하도록 매개변수를 재설정합니다. 예: STANDBY_ARCHIVE_DEST:
    ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='' SID='*' SCOPE=SPFILE;
  13. 데이터베이스를 재시작합니다.
    SHUTDOWN IMMEDIATE
    STARTUP
  14. 기본 데이터베이스(소스 데이터베이스) 에서 대기 로그를 삭제하십시오.
    1. 새 기본 데이터베이스(이전의 대상 데이터베이스) 에 있는 대기 데이터베이스 리두 로그의 그룹 번호를 찾습니다.
      SELECT GROUP# FROM V$STANDBY_LOG;Output similar to the following appears:    GROUP#
      ----------
               5
               6
               7
               8
               9
    2. 대기 로그를 제거하십시오. 예를 들어, 다음과 같습니다.
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 5;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 6;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 7;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 8;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 9;
  15. (선택 사항) DB_BLOCK_CHECKSUMDB_BLOCK_CHECKING 매개변수를 변경합니다.
    기본값은 DB_BLOCK_CHECKSUM=TYPICALDB_BLOCK_CHECKING=FALSE 입니다.
  16. SQL*Plus를 종료합니다.
    EXIT