물리적 이전을 사용하여 이전

다음 단계에서는 온라인 또는 오프라인 물리적 마이그레이션을 수행하는 방법에 대해 설명합니다. 물리적 마이그레이션을 수행하기 전에 다음 사항에 유의하십시오.

  • x86 서버의 소스 데이터베이스를 암호화할 필요가 없습니다. 다운타임이 없는 마이그레이션은 마이그레이션 중 대상 데이터베이스를 암호화합니다.
  • 소스 데이터베이스가 암호화되지 않은 경우에도 TDE(Transparent Data Encryption) 전자 지갑은 이전 전에 소스 데이터베이스에서 정의되어야 합니다.
  • 소스 및 대상 데이터베이스의 sys 비밀번호, 전자 지갑 비밀번호, 데이터베이스 버전 및 패치 레벨은 동일해야 합니다.
  • 다운타임 없는 마이그레이션은 CDB(컨테이너 데이터베이스)CDB로, 비CDB를 비CDB로 마이그레이션합니다.

다운타임 없는 마이그레이션으로 물리적 마이그레이션을 실행하려면 다음과 같이 하십시오.

  1. 별도의 서버에 Zero Downtime Migration 소프트웨어를 다운로드하여 설치합니다. zdmuser를 사용하여 제로 다운타임 마이그레이션 소프트웨어를 실행합니다.
  2. ZDM 서버에 zdmuser로 로그인합니다.
  3. ssh 키 쌍을 생성합니다.
  4. zdmuser에서 소스 x86 서버(root/privilege-sudoer user) 및 대상 Oracle Exadata Database Service on Cloud@Customer 데이터베이스(opc user)의 모든 VM 클러스터 노드로 암호 없는 ssh를 사용으로 설정합니다.
  5. Oracle ZFS Storage Appliance(NAS)에서 마이그레이션이 진행되는 동안 소스 데이터베이스 RMAN 백업에 대한 위치 표시자로 사용할 NFS(네트워크 파일 시스템) 공유를 만듭니다.
    이 NFS 공유에 저장된 백업에서 대상 데이터베이스가 복원됩니다.
  6. 소스 및 대상 데이터베이스의 모든 노드에서 동일한 마운트 지점에 NFS 공유를 마운트합니다. 모든 유저가 소스와 대상에 대해 읽기, 쓰기 및 실행(rwx) 권한을 가지고 있는지 확인합니다.
  7. Create a Oracle Exadata Database Service on Cloud@Customer target database using the OCI GUI or REST API. 다음과 같이 Target Database를 구성합니다.
    • 대상 데이터베이스와 소스 데이터베이스의 이름은 같아야 하지만 DB_UNIQUE_NAME는 달라야 합니다.
    • 소스 및 대상 데이터베이스의 sys 비밀번호, 전자 지갑 비밀번호, 데이터베이스 버전 및 패치 레벨은 동일해야 합니다.
    • 백업 대상을 선택하거나 자동 백업을 사용으로 설정하지 마십시오. 이러한 설정은 데이터베이스가 소스에서 대상으로 이전된 후에 활성화할 수 있습니다.
  8. 소스 데이터베이스가 Archivelog 모드로 구성되었는지 확인합니다. Archivelog가 사용으로 설정되지 않은 경우 아래의 Enable Archivelog Mode을 참조하십시오.
  9. 소스 데이터베이스가 암호화되지 않은 경우 아래의 TDE(Transparent Data Encryption) Keystore 구성을 참조하십시오. 데이터를 암호화할 필요가 없으며 물리적 이전에는 TDE 키 저장소만 필요합니다. 키 저장소(전자 지갑) 비밀번호가 Oracle Exadata Database Service on Cloud@Customer에서 대상 데이터베이스를 생성하는 데 사용된 sys/전자 지갑 비밀번호와 동일한지 확인하십시오.
  10. 0 다운타임 마이그레이션에 대한 응답 파일을 생성하여 마이그레이션을 실행합니다. 키 매개변수에는 다음이 포함됩니다.
    • TGT_DB_UNIQUE_NAME: 대상 Oracle Exadata Database Service on Cloud@Customer 데이터베이스에 대한 데이터베이스 고유 이름입니다.
    • MIGRATION_METHOD: OFFLINE_PHYSICAL 또는 ONLINE_PHYSICAL.
    • DATA_TRANSFER_MEDIUM: NFS
    • PLATFORM_TYPE: EXACC
    • BACKUP_PATH: 4단계의 소스 및 대상에서 NFS(네트워크 파일 시스템) 공유에 대한 마운트 지점입니다.
    • SHUTDOWN_SRC: TRUE
  11. 다운타임이 없는 마이그레이션 Dry Run 마이그레이션 작업(-eval)을 실행하여 마이그레이션에 대한 모든 필요 조건을 검증할 수 있습니다. 예:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_x86_db_server \
    -srcauth zdmauth \
    -srcarg1 user: root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_Exadata_Database_Cloud@Customer_VM_Cluster_Node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file: path_to_ssh_private_key/ssh_private_key_file_name
    \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_10 \
    -eval
  12. 제로 다운타임 마이그레이션 작업을 실행합니다. 예:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_x86_db_server \
    -srcauth zdmauth \
    -srcarg1 user: root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_Exadata_Database_Cloud@Customer_VM_Cluster_Node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_10
물리적 온라인 마이그레이션 중 다운타임이 없는 마이그레이션은 마이그레이션 중에 데이터베이스가 항상 온라인 상태가 되도록 소스와 대상 간에 Oracle Data Guard를 구성합니다. Oracle Data Guard는 소스 데이터베이스 변경사항을 대상 데이터베이스에 동기화합니다.
이렇게 해서 물리적 마이그레이션이 완료되었습니다.

Archivelog 모드 사용

다운타임이 없는 물리적 이전을 위해 소스 데이터베이스에서 Archivelog 모드를 사용으로 설정해야 합니다. 이 단계에서는 소스 데이터베이스에서 Archivelog 모드를 구성하는 방법에 대해 설명합니다.

  1. 소스 데이터베이스가 Archivelog 모드로 구성되지 않았는지 확인하십시오.
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    NOARCHIVELOG
  2. 소스 데이터베이스 로그 아카이브 대상을 구성합니다. 다음 예는 Linux 파일 시스템에 DB 파일이 있는 소스 데이터베이스의 예입니다. DB 파일이 Oracle ASM 디스크 그룹에 저장된 경우 LOCATION는 서로 다릅니다.
    SQL> alter system set 
    log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/db_name/arc' 
    scope=both;
    System altered.
    SQL> select destination,STATUS from v$archive_dest where status='VALID';
    DESTINATION
    --------------------------------------------------------------------------------
    STATUS
    ---------
    /u01/app/oracle/oradata/db_name/arc
    VALID
  3. 데이터베이스를 종료한 다음 마운트합니다.
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount;
    ORACLE instance started
  4. Archivelog 모드를 활성화합니다.
    alter database archivelog;
  5. 데이터베이스를 엽니다.
    alter database open;
  6. 데이터베이스가 Archivelog 모드인지 확인합니다.
    SQL> select destination,STATUS from v$archive_dest where statuS='VALID';
    DESTINATION
    --------------------------------------------------------------------------------
    STATUS
    ---------
    /u01/app/oracle/oradata/db_name/arc
    VALID
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    ARCHIVELOG

TDE(Transparent Data Encryption) 키 저장소 구성

다운타임 없는 마이그레이션 물리적 마이그레이션에는 auto_login TDE 암호화 키 저장소/전자 지갑이 필요합니다(소스 데이터베이스가 암호화되지 않은 경우에도). 이 키 저장소는 대상 데이터베이스 키 저장소와 동일한 비밀번호를 사용하여 구성해야 합니다. 다음 단계에서는 소스 데이터베이스에서 키 저장소를 구성하는 방법에 대해 설명합니다.

  1. 데이터베이스에 대해 구성된 기본 키 저장소 위치가 있는지 확인합니다.
    SQL> select * from v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet
    NOT_AVAILABLE UNKNOWN SINGLE NONE UNDEFINED
    1
    SQL>
  2. keystore에 대한 디렉토리가 없는 경우 keystore에 대한 디렉토리를 생성합니다.
    mkdir -p /u01/app/oracle/admin/db_name/wallet
  3. sqlnet.ora 파일을 저장할 디렉토리를 생성합니다.
    mkdir -p $ORACLE_HOME/network/admin/
  4. Step 1의 키 저장소 정보를 사용하여 $ORACLE_HOME/network/admin/ 디렉토리에 sqlnet.ora 파일을 만듭니다.
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)
     (METHOD_DATA=(DIRECTORY=/u01/app/oracle/admin/db_name/wallet)))
  5. 암호로 보호되는 keystore를 생성합니다. 대상 Oracle Exadata Database Service on Cloud@Customer 데이터베이스 키 저장소도 이 비밀번호로 구성되어야 합니다.
    SQL>administer key management create keystore 
    '/u01/app/oracle/admin/db_name/wallet' identified by keystore_password;
  6. keystore를 엽니다.
    소스 데이터베이스가 비CDB인 경우 container = ALL를 제거합니다.
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY 
    keystore_password container = ALL;
  7. keystore에 대한 백업을 생성합니다.
    소스 데이터베이스가 비CDB인 경우 container = ALL를 제거합니다.
    SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY keystore_password
    with backup container = ALL;
  8. keystore가 생성되고 백업되었는지 확인합니다.
    SQL> SELECT * FROM v$encryption_keys;
    Snip…
    ACTIVATING_PDBNAME
    --------------------------------------------------------------------------------
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    ATOlrcGaa0/iv/dFeRSkNSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    --------------------------------------------------------------------------------
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    db_name
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    1 86B637B62FDF7A65E053F706E80A27CA
    Snip…
  9. 5단계에서 만든 키 저장소에서 auto_login 키 저장소를 만듭니다.
    SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM 
    KEYSTORE '/u01/app/oracle/admin/db_name/wallet' IDENTIFIED BY 
    keystore_password ;
  10. 5단계에서 keystore를 닫습니다.
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY 
    keystore_password;
  11. auto_login 키 저장소가 아직 열려 있는지 확인합니다.
    SQL> SELECT * FROM v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet
    OPEN AUTOLOGIN SINGLE NONE NO