Oracle 데이터베이스를 AWS DMS에서 소스로 사용 - AWS 데이터베이스 마이그레이션 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Oracle 데이터베이스를 AWS DMS에서 소스로 사용

를 사용하여 하나 이상의 Oracle 데이터베이스에서 데이터를 마이그레이션할 수 AWS DMS있습니다. Oracle 데이터베이스를 소스로 사용하여 AWS DMS가 지원하는 대상으로 데이터를 마이그레이션할 수 있습니다.

AWS DMS 다음 Oracle 데이터베이스 에디션을 지원합니다.

  • Oracle Enterprise Edition

  • Oracle Standard Edition

  • Oracle Express Edition

  • Oracle Personal Edition

소스로 AWS DMS 지원하는 Oracle 데이터베이스 버전에 대한 자세한 내용은 을 참조하십시오에 대한 소스 AWS DMS.

Secure Sockets Layer(SSL)를 사용하여 Oracle 엔드포인트와 복제 인스턴스 간의 연결을 암호화할 수 있습니다. Oracle 엔드포인트에서 SSL을 사용하는 방법에 대한 자세한 내용은 Oracle 엔드포인트용 SSL 지원 섹션을 참조하십시오.

AWS DMS Oracle TDE (투명 데이터 암호화) 를 사용하여 원본 데이터베이스에 저장된 데이터를 암호화할 수 있습니다. Oracle 소스 엔드포인트에서 Oracle TDE를 사용하는 방법에 대한 자세한 내용은 Oracle을 소스로 사용하기 위해 지원되는 암호화 방법 AWS DMS 단원을 참조하십시오.

AWS Oracle 엔드포인트 (및 기타 모든 엔드포인트 유형) 에서 TLS 버전 1.2 이상 사용을 지원하며 TLS 버전 1.3 이상을 사용할 것을 권장합니다.

다음 단계에 따라 Oracle 데이터베이스를 원본 엔드포인트로 AWS DMS 구성하십시오.

  1. Oracle 소스 데이터베이스에 액세스할 수 있는 적절한 권한을 가진 Oracle 사용자를 생성하십시오. AWS DMS

  2. 선택한 Oracle 데이터베이스 구성을 준수하는 Oracle 소스 엔드포인트를 생성합니다. full-load-only 작업을 생성하기 위해 추가 구성은 필요하지 않습니다.

  3. 변경 데이터 캡처를 처리하는 작업 (CDC 전용 또는 전체 로드 및 CDC 작업) 을 생성하려면 Oracle LogMiner 또는 AWS DMS Binary Reader를 선택하여 데이터 변경 사항을 캡처하십시오. LogMiner 또는 바이너리 리더를 선택하면 이후의 일부 권한 및 구성 옵션이 결정됩니다. LogMiner 와 바이너리 리더를 비교하려면 다음 섹션을 참조하십시오.

참고

전체 로드 작업, CDC 전용 작업, 전체 로드 및 CDC 작업에 대한 자세한 내용은 작업 생성을 참조하세요.

Oracle 소스 데이터베이스 및 AWS DMS사용에 대한 자세한 내용은 다음 섹션을 참조하십시오.

CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용

에서는 AWS DMS Oracle을 소스로 사용하여 CDC (변경 데이터 캡처) 를 수행할 때 리두 로그를 읽는 방법에는 LogMiner Oracle과 AWS DMS Binary Reader라는 두 가지가 있습니다. LogMiner 온라인 리두 로그와 아카이브된 리두 로그 파일을 읽기 위한 Oracle API입니다. Binary Reader는 원시 리두 로그 파일을 직접 읽고 파싱하는 AWS DMS 방법입니다. 이 메서드의 특징은 다음과 같습니다.

기능 LogMiner Binary Reader
간편한 구성 아니요
소스 시스템 I/O 및 CPU에 미치는 영향 감소 아니요
향상된 CDC 성능 아니요
Oracle 테이블 클러스터 지원 아니요
모든 유형의 Oracle HCC(Hybrid Columnar Compression) 지원

부분적으로

Binary Reader는 CDC 작업에서 QUERY LOW를 지원하지 않습니다. 다른 모든 HCC 유형은 완벽하게 지원됩니다.

Oracle 12c에서만 LOB 열 지원 아니요 (Oracle LogMiner 12c에서는 LOB 지원을 사용할 수 없습니다.)
LOB 열에만 영향을 미치는 UPDATE 문 지원 아니요
Oracle 투명한 데이터 암호화(TDE) 지원

부분적으로

Oracle을 사용하는 경우 LogMiner, Oracle용 Amazon RDS에 대한 열 수준의 TDE 암호화를 AWS DMS 지원하지 않습니다.

부분적으로

Binary Reader는 자체 관리형 Oracle 데이터베이스에서만 TDE를 지원합니다.

모든 Oracle 압축 방법 지원 아니요
XA 트랜잭션 지원 아니요
RAC

성능상의 이유 및 일부 내부 DMS 제한으로 인해 권장되지 않습니다.

적극적으로 권장됨

참고

기본적으로 (CDC) LogMiner 용 오라클을 AWS DMS 사용합니다.

AWS DMS Oracle 원본 데이터베이스로 작업할 때 투명한 데이터 암호화 (TDE) 방법을 지원합니다. 지정한 TDE 자격 증명이 올바르지 않아도 AWS DMS 마이그레이션 작업이 실패하지 않으므로 암호화된 테이블의 지속적인 복제에 영향을 미칠 수 있습니다. TDE 보안 인증에 대한 자세한 내용은 Oracle을 소스로 사용하기 위해 지원되는 암호화 방법 AWS DMS을 참조하세요.

와 LogMiner 함께 사용하면 얻을 수 있는 주요 이점은 다음과 AWS DMS 같습니다.

  • LogMiner 암호화 옵션 및 압축 옵션과 같은 대부분의 Oracle 옵션을 지원합니다. Binary Reader는 모든 Oracle 옵션을 지원하지 않고, 특히 압축과 대부분의 암호화 옵션을 지원합니다.

  • LogMiner 특히 바이너리 리더 직접 액세스 설정이나 Oracle ASM (자동 저장 장치 관리) 을 사용하여 리두 로그를 관리하는 경우와 비교할 때 더 간단한 구성을 제공합니다.

  • LogMiner 에서 사용할 테이블 클러스터를 지원합니다. AWS DMS Binary Reader는 테이블 클러스터를 지원하지 않습니다.

바이너리 리더와 함께 사용할 때의 주요 이점은 다음과 AWS DMS 같습니다.

  • 변경 내용이 많은 마이그레이션의 경우 Oracle 원본 데이터베이스를 호스팅하는 컴퓨터에 I/O 또는 CPU에 어느 정도 영향을 미칠 LogMiner 수 있습니다. Binary Reader는 여러 데이터베이스 쿼리를 수행하는 대신 로그를 직접 마이닝하기 때문에 I/O 또는 CPU에 영향을 미칠 가능성이 적습니다.

  • 변경 내용이 많은 마이그레이션의 경우 일반적으로 Oracle을 사용하는 것보다 Binary Reader를 사용할 때 CDC 성능이 훨씬 더 좋습니다. LogMiner

  • 바이너리 리더는 오라클 버전 12c의 LOB에 대한 CDC를 지원합니다. LogMiner그렇지 않습니다.

일반적으로 다음 상황 중 하나가 아닌 한 Oracle 데이터베이스를 마이그레이션할 때는 Oracle을 사용하십시오. LogMiner

  • 원본 Oracle 데이터베이스에서 여러 마이그레이션 작업을 실행해야 합니다.

  • 소스 Oracle 데이터베이스의 변경 사항 볼륨 또는 다시 실행 로그 볼륨이 크거나 변경 사항이 있고 Oracle ASM도 사용 중입니다.

참고

LogMiner 오라클과 AWS DMS 바이너리 리더 사용 사이를 변경하는 경우 CDC 작업을 다시 시작해야 합니다.

Oracle 소스 데이터베이스에서의 CDC 구성

Oracle 소스 엔드포인트가 변경 데이터 캡처(CDC) 작업을 위해 데이터베이스에 연결하려면 추가 연결 속성을 지정해야 할 수 있습니다. 이는 전체 로드 및 CDC 작업이나 CDC 전용 작업에도 해당될 수 있습니다. 지정하는 추가 연결 속성은 리두 로그에 액세스하는 데 사용하는 방법 (Oracle LogMiner 또는 AWS DMS Binary Reader) 에 따라 다릅니다.

소스 엔드포인트를 생성할 때 추가 연결 속성을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오(예: oneSetting;thenAnother).

AWS DMS LogMiner 기본적으로 를 사용합니다. LogMiner를 사용하기 위해 추가 연결 속성을 지정할 필요는 없습니다.

Binary Reader를 사용하여 다시 실행 로그에 액세스하려면 다음 추가 연결 속성을 추가합니다.

useLogMinerReader=N;useBfile=Y;

다음 형식을 추가 연결 속성에 사용하여 Binary Reader와 함께 ASM을 사용하는 서버에 액세스합니다.

useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;

소스 엔드포인트 Password 요청 파라미터를 다음과 같이 쉼표로 구분된 Oracle 사용자 암호 및 ASM 암호로 설정합니다.

oracle_user_password,asm_user_password

Oracle 소스가 ASM을 사용하는 경우, 대규모 트랜잭션 처리를 위해 Binary Reader의 고성능 옵션을 사용할 수 있습니다. 이러한 옵션에는 병렬 스레드 수(parallelASMReadThreads) 와 미리 읽기 버퍼 수(readAheadBlocks) 를 지정하는 추가 연결 속성이 포함됩니다. 이러한 속성을 함께 설정하면 CDC 작업의 성능을 크게 개선할 수 있습니다. 다음 설정은 대부분의 ASM 구성에서 양호한 결과를 제공합니다.

useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM; parallelASMReadThreads=6;readAheadBlocks=150000;

추가 연결 속성이 지원하는 값에 대한 자세한 내용은 Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS 단원을 참조하십시오.

또한 ASM을 사용하는 Oracle 소스가 있는 CDC 작업의 성능은 선택하는 다른 설정에 따라 달라집니다. 이러한 설정에는 AWS DMS 추가 연결 속성 및 Oracle 소스를 구성하기 위한 SQL 설정이 포함됩니다. ASM을 사용하는 Oracle 소스의 추가 연결 속성에 대한 자세한 내용은 Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS을 참조하세요.

또한 적절한 CDC 시작점을 선택해야 합니다. 일반적으로 이 경우, CDC를 시작할 가장 이른 열린 트랜잭션을 캡처하는 트랜잭션 처리 지점을 식별해야 합니다. 그렇지 않으면 CDC 작업에서 이전의 열린 트랜잭션이 누락될 수 있습니다. Oracle 소스 데이터베이스의 경우, Oracle SCN(시스템 변경 번호)을 기준으로 CDC 네이티브 시작점을 선택하면 가장 이른 열린 트랜잭션을 식별할 수 있습니다. 자세한 정보는 CDC 시작 지점에서 복제를 시작을 참조하세요.

소스로 사용되는 자체 관리형 Oracle 데이터베이스에서 CDC를 구성하는 방법에 대한 자세한 내용은 LogMiner Oracle을 사용하여 리두 로그에 액세스할 때 필요한 계정 권한, AWS DMS 바이너리 리더를 사용하여 리두 로그에 액세스할 때 필요한 계정 권한, Oracle ASM과 함께 Binary Reader를 사용할 때 필요한 추가 계정 권한 섹션을 참조하세요.

CDC를 AWS관리형 Oracle 데이터베이스를 원본으로 구성하는 방법에 대한 자세한 내용은 및 을 참조하십시오 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS. AWS DMS에서 CDC용 Binary Reader와 함께 Amazon RDS Oracle Standby(읽기 전용 복제본)를 소스로 사용

자체 관리형 또는 AWS관리형 Oracle 원본 데이터베이스를 구성하기 위한 워크플로 AWS DMS

Oracle 소스 데이터베이스 구성

자체 관리형 소스 데이터베이스 인스턴스를 구성하려면 CDC 수행 방식에 따라 다음 워크플로 단계를 사용하세요.

이 워크플로 단계의 경우 를 사용하여 LogMiner CDC를 수행하는 경우 다음과 같이 하십시오. Binary Reader를 사용하여 CDC를 수행하는 경우 다음을 수행
Oracle 계정 권한을 부여합니다. 자체 관리형 Oracle 소스에 필요한 사용자 계정 권한은 다음과 같습니다. AWS DMS을(를) 참조하세요. 자체 관리형 Oracle 소스에 필요한 사용자 계정 권한은 다음과 같습니다. AWS DMS을(를) 참조하세요.
CDC를 사용하여 복제할 소스 데이터베이스를 준비합니다. 를 사용하여 CDC를 위한 Oracle 자체 관리형 원본 데이터베이스 준비 AWS DMS을(를) 참조하세요. 를 사용하여 CDC를 위한 Oracle 자체 관리형 원본 데이터베이스 준비 AWS DMS을(를) 참조하세요.
CDC에 필요한 추가 Oracle 사용자 권한을 부여합니다. LogMiner Oracle을 사용하여 리두 로그에 액세스할 때 필요한 계정 권한을(를) 참조하세요. AWS DMS 바이너리 리더를 사용하여 리두 로그에 액세스할 때 필요한 계정 권한을(를) 참조하세요.
ASM을 사용하는 Oracle 인스턴스의 경우, CDC를 위해 ASM에 액세스하는 데 필요한 추가 사용자 계정 권한을 부여합니다. 추가 조치는 없습니다. AWS DMS 추가 계정 권한 없이 Oracle ASM을 지원합니다. Oracle ASM과 함께 Binary Reader를 사용할 때 필요한 추가 계정 권한 섹션을 참조하십시오.
아직 설정하지 않았다면 CDC용 바이너리 LogMiner 리더를 사용하도록 작업을 구성하십시오. CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용을(를) 참조하세요. CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용을(를) 참조하세요.
Oracle Standby를 CDC의 소스로 구성합니다. AWS DMS Oracle Standby를 소스로 지원하지 않습니다. AWS DMS에서 CDC용 Binary Reader와 함께 자체 관리형 Oracle Standby를 소스로 사용 섹션을 참조하십시오.

다음 워크플로우 단계를 사용하여 AWS-managed Oracle 소스 데이터베이스 인스턴스를 구성하십시오.

이 워크플로 단계의 경우 를 사용하여 LogMiner CDC를 수행하는 경우 다음과 같이 하십시오. Binary Reader를 사용하여 CDC를 수행하는 경우 다음을 수행
Oracle 계정 권한을 부여합니다. 자세한 정보는 AWS-Managed Oracle 소스에 필요한 사용자 계정 권한은 다음과 같습니다. AWS DMS을 참조하세요. 자세한 정보는 AWS-Managed Oracle 소스에 필요한 사용자 계정 권한은 다음과 같습니다. AWS DMS을 참조하세요.
CDC를 사용하여 복제할 소스 데이터베이스를 준비합니다. 자세한 정보는 AWS관리형 Oracle 소스 구성 대상 AWS DMS을 참조하세요. 자세한 정보는 AWS관리형 Oracle 소스 구성 대상 AWS DMS을 참조하세요.
CDC에 필요한 추가 Oracle 사용자 권한을 부여합니다. 추가 계정 권한은 필요하지 않습니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.
아직 설정하지 않았다면, 사용할 작업을 LogMiner 구성하거나 CDC용 바이너리 리더를 구성하십시오. 자세한 정보는 CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용을 참조하세요. 자세한 정보는 CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용을 참조하세요.
Oracle Standby를 CDC의 소스로 구성합니다. AWS DMS Oracle Standby를 소스로 지원하지 않습니다. 자세한 정보는 AWS DMS에서 CDC용 Binary Reader와 함께 Amazon RDS Oracle Standby(읽기 전용 복제본)를 소스로 사용을 참조하세요.

자체 관리형 Oracle 데이터베이스를 원본으로 사용 AWS DMS

자체 관리형 데이터베이스는 사용자가 구성 및 제어하는 데이터베이스로, 로컬 온프레미스 데이터베이스 인스턴스이거나 Amazon EC2의 데이터베이스입니다. 다음에서 자체 관리형 Oracle 데이터베이스를 사용할 때 필요한 권한 및 구성에 대해 확인할 수 있습니다. AWS DMS

자체 관리형 Oracle 소스에 필요한 사용자 계정 권한은 다음과 같습니다. AWS DMS

Oracle 데이터베이스를 원본으로 사용하려면 Oracle 엔드포인트 연결 설정에 지정된 Oracle 사용자에게 다음 권한을 부여하십시오. AWS DMS

참고

권한을 부여할 때는 각 객체의 동의어가 아닌 객체의 실제 이름을 사용하십시오. 예를 들어 밑줄이 없는 V$OBJECT가 아니라 밑줄을 포함하여 V_$OBJECT를 사용하십시오.

GRANT CREATE SESSION TO db_user; GRANT SELECT ANY TRANSACTION TO db_user; GRANT SELECT ON V_$ARCHIVED_LOG TO db_user; GRANT SELECT ON V_$LOG TO db_user; GRANT SELECT ON V_$LOGFILE TO db_user; GRANT SELECT ON V_$LOGMNR_LOGS TO db_user; GRANT SELECT ON V_$LOGMNR_CONTENTS TO db_user; GRANT SELECT ON V_$DATABASE TO db_user; GRANT SELECT ON V_$THREAD TO db_user; GRANT SELECT ON V_$PARAMETER TO db_user; GRANT SELECT ON V_$NLS_PARAMETERS TO db_user; GRANT SELECT ON V_$TIMEZONE_NAMES TO db_user; GRANT SELECT ON V_$TRANSACTION TO db_user; GRANT SELECT ON V_$CONTAINERS TO db_user; GRANT SELECT ON ALL_INDEXES TO db_user; GRANT SELECT ON ALL_OBJECTS TO db_user; GRANT SELECT ON ALL_TABLES TO db_user; GRANT SELECT ON ALL_USERS TO db_user; GRANT SELECT ON ALL_CATALOG TO db_user; GRANT SELECT ON ALL_CONSTRAINTS TO db_user; GRANT SELECT ON ALL_CONS_COLUMNS TO db_user; GRANT SELECT ON ALL_TAB_COLS TO db_user; GRANT SELECT ON ALL_IND_COLUMNS TO db_user; GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO db_user; GRANT SELECT ON ALL_LOG_GROUPS TO db_user; GRANT SELECT ON ALL_TAB_PARTITIONS TO db_user; GRANT SELECT ON SYS.DBA_REGISTRY TO db_user; GRANT SELECT ON SYS.OBJ$ TO db_user; GRANT SELECT ON DBA_TABLESPACES TO db_user; GRANT SELECT ON DBA_OBJECTS TO db_user; -– Required if the Oracle version is earlier than 11.2.0.3. GRANT SELECT ON SYS.ENC$ TO db_user; -– Required if transparent data encryption (TDE) is enabled. For more information on using Oracle TDE with AWS DMS, see Oracle을 소스로 사용하기 위해 지원되는 암호화 방법 AWS DMS. GRANT SELECT ON GV_$TRANSACTION TO db_user; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher. GRANT SELECT ON V_$DATAGUARD_STATS TO db_user; -- Required if the source database is Oracle Data Guard and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher. GRANT SELECT ON V$DATABASE_INCARNATION TO db_user;

특정 테이블 목록을 사용하는 경우, 복제된 각 테이블에 대해 다음 추가 권한을 부여합니다.

GRANT SELECT on any-replicated-table to db_user;

검증 기능으로 LOB 열을 검증하려면 다음 추가 권한을 부여합니다.

GRANT EXECUTE ON SYS.DBMS_CRYPTO TO db_user;

대신 바이너리 리더를 사용하는 경우 다음 권한을 추가로 부여하십시오. LogMiner

GRANT SELECT ON SYS.DBA_DIRECTORIES TO db_user;

뷰를 노출할 수 있는 다음 추가 권한을 부여합니다.

GRANT SELECT on ALL_VIEWS to dms_user;

뷰를 노출하려면 소스 엔드포인트에 exposeViews=true 추가 연결 속성도 추가해야 합니다.

서버리스 복제를 사용할 경우, 다음 추가 권한을 부여합니다.

GRANT SELECT on dba_segments to db_user;

서버리스 복제에 대해서는 AWS DMS 서버리스로 작업하기을 참조하세요.

Oracle 관련 마이그레이션 전 평가를 사용할 경우, 다음 추가 권한을 부여합니다.

GRANT SELECT on gv_$parameter to dms_user; GRANT SELECT on v_$instance to dms_user; GRANT SELECT on v_$version to dms_user; GRANT SELECT on gv_$ASM_DISKGROUP to dms_user; GRANT SELECT on gv_$database to dms_user; GRANT SELECT on dba_db_links to dms_user; GRANT SELECT on gv_$log_History to dms_user; GRANT SELECT on gv_$log to dms_user; GRANT SELECT ON DBA_TYPES TO db_user; GRANT SELECT ON DBA_USERS to dms_user; GRANT SELECT ON DBA_DIRECTORIES to dms_user;

Oracle 관련 마이그레이션 전 평가에 대해서는 오라클 평가를 참조하세요.

Oracle Standby 열린 트랜잭션 처리를 위한 사전 요구 사항

AWS DMS 버전 3.4.6 이상을 사용하는 경우 다음 단계를 수행하여 Oracle Standby의 미결 트랜잭션을 처리하십시오.

  1. 기본 데이터베이스에 AWSDMS_DBLINK라는 데이터베이스 링크를 생성합니다. DMS_USER는 이 데이터베이스 링크를 사용하여 기본 데이터베이스에 연결합니다. 이 데이터베이스 링크는 대기 인스턴스에서 실행되어 기본 데이터베이스에서 실행 중인 열린 트랜잭션을 쿼리합니다. 다음 예를 참조하세요.

    CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD USING '(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT)) (CONNECT_DATA=(SERVICE_NAME=SID)) )';
  2. 다음 예제와 같이 DMS_USER를 사용하여 데이터베이스 링크에 연결되었는지 확인합니다.

    select 1 from dual@AWSDMS_DBLINK

를 사용하여 CDC를 위한 Oracle 자체 관리형 원본 데이터베이스 준비 AWS DMS

다음을 수행하여 자체 관리형 Oracle 데이터베이스를 CDC 작업을 실행할 소스로 준비합니다.

원본 데이터베이스 버전을 AWS DMS 지원하는지 확인

다음과 같은 쿼리를 실행하여 AWS DMS가 현재 버전의 Oracle 데이터베이스를 지원하는지 확인합니다.

SELECT name, value, description FROM v$parameter WHERE name = 'compatible';

여기서 name, valuedescriptionname의 값을 기준으로 쿼리되는 데이터베이스의 어딘가에 있는 열입니다. 이 쿼리가 오류 없이 실행되면 데이터베이스의 현재 버전을 AWS DMS 지원하는 것이므로 마이그레이션을 계속할 수 있습니다. 쿼리에서 오류가 발생하면 데이터베이스의 현재 버전을 AWS DMS 지원하지 않는 것입니다. 마이그레이션을 진행하려면 먼저 Oracle 데이터베이스를 에서 지원하는 버전으로 AWS DMS변환하십시오.

ARCHIVELOG 모드가 켜져 있는지 확인

Oracle은 ARCHIVELOG 모드와 NOARCHIVELOG 모드 두 가지 모드로 실행할 수 있습니다. CDC 작업을 실행하려면 데이터베이스를 ARCHIVELOG 모드에서 실행합니다. 데이터베이스가 ARCHIVELOG 모드 상태인지 확인하려면 다음 쿼리를 실행합니다.

SQL> SELECT log_mode FROM v$database;

NOARCHIVELOG 모드가 반환되면 Oracle 지침에 따라 데이터베이스를 ARCHIVELOG로 설정합니다.

보충 로깅 설정

진행 중인 변경 사항을 AWS DMS 캡처하려면 Oracle 소스 데이터베이스에서 최소한의 보충 로깅을 활성화해야 합니다. 또한 데이터베이스의 복제된 각 테이블에서 보충 로깅을 활성화해야 합니다.

기본적으로 모든 복제된 AWS DMS 테이블에 PRIMARY KEY 보충 로깅을 추가합니다. PRIMARY KEY보충 AWS DMS 로깅을 추가할 수 있게 하려면 복제된 각 테이블에 다음 권한을 부여하십시오.

ALTER on any-replicated-table;

추가 연결 속성을 AWS DMS 사용하여 추가된 기본 PRIMARY KEY 보충 로깅을 비활성화할 수 있습니다. addSupplementalLogging 자세한 정보는 Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS을 참조하세요.

복제 작업에서 WHERE 절을 사용하여 프라이머리 키 열을 참조하지 않는 테이블을 업데이트하는 경우, 보충 로깅을 켜야 합니다.

수동으로 보충 로깅을 설정하려면
  1. 다음 쿼리를 실행하여 데이터베이스에 보충 로깅이 이미 활성화되어 있는지 확인합니다.

    SELECT supplemental_log_data_min FROM v$database;

    반환된 결과가 YES 또는 IMPLICIT인 경우, 데이터베이스에 보충 로깅이 활성화되어 있습니다.

    활성화되어 있지 않다면 다음 명령을 실행하여 데이터베이스에 보충 로깅을 활성화합니다.

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
  2. 복제된 각 테이블에 필요한 보충 로깅이 추가되었는지 확인합니다.

    다음을 고려하세요.

    • 테이블에 ALL COLUMNS 보충 로깅이 추가되면 로깅을 더 추가할 필요가 없습니다.

    • 프라이머리 키가 있는 경우 프라이머리 키에 대한 보충 로깅을 추가합니다. 형식을 사용하여 프라이머리 키 자체에 보충 로깅을 추가하거나 데이터베이스에서 프라이머리 키 열에 보충 로깅을 추가하여 이 작업을 수행할 수 있습니다.

      ALTER TABLE Tablename ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
    • 프라이머리 키가 없고 테이블에 고유 인덱스가 하나만 있는 경우, 고유 인덱스의 모든 열을 보충 로그에 추가합니다.

      ALTER TABLE TableName ADD SUPPLEMENTAL LOG GROUP LogGroupName (UniqueIndexColumn1[, UniqueIndexColumn2] ...) ALWAYS;

      SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS를 사용해도 고유 인덱스 열이 로그에 추가되지 않습니다.

    • 기본 키가 없고 테이블에 여러 개의 고유 인덱스가 있는 경우 알파벳순 오름차순 목록에서 첫 번째 고유 인덱스를 AWS DMS 선택합니다. 이전 항목에서처럼 선택한 인덱스의 열에 보충 로깅을 추가해야 합니다.

      SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS를 사용해도 고유 인덱스 열이 로그에 추가되지 않습니다.

    • 프라이머리 키가 없고 고유 인덱스가 없는 경우 모든 열에 보충 로깅을 추가합니다.

      ALTER TABLE TableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

      일부의 경우, 대상 테이블 프라이머리 키 또는 고유 색인이 원본 테이블 프라이머리 키 또는 고유 색인과 다릅니다. 이러한 경우, 대상 테이블 프라이머리 키 또는 고유 인덱스를 구성하는 소스 테이블 열에 보충 로깅을 수동으로 추가합니다.

      또한 대상 테이블 프라이머리 키를 변경하는 경우, 원래 프라이머리 키 또는 고유 인덱스 대신 대상 고유 인덱스에 보충 로깅을 추가해야 합니다.

테이블에 대해 필터 또는 변환이 정의된 경우 추가 로깅을 활성화해야 할 수 있습니다.

다음을 고려하세요.

  • 테이블에 ALL COLUMNS 보충 로깅이 추가되면 로깅을 더 추가할 필요가 없습니다.

  • 테이블에 고유 인덱스 또는 프라이머리 키가 있다면 필터 또는 변환에 포함된 각 열에 보충 로깅을 추가합니다. 하지만 해당 열이 프라이머리 키 또는 고유 인덱스 열과 다른 경우에만 그렇게 하세요.

  • 변환에 하나의 열만 포함되는 경우, 이 열을 보충 로깅 그룹에 추가하지 마세요. 예를 들어 A+B 변환의 경우 열 AB 모두에 보충 로깅을 추가합니다. 그러나 substring(A,10) 변환의 경우 열 A에 보충 로깅을 추가하지 마십시오.

  • 프라이머리 키 또는 고유 인덱스 열과 필터링되거나 변환되는 그 밖의 열에 보충 로깅을 설정하려면 USER_LOG_GROUP 보충 로깅을 설정하면 됩니다. 프라이머리 키 또는 고유 인덱스 열과 필터링되거나 변환되는 그 밖의 특정 열 모두에 이 보충 로깅을 추가합니다.

    예를 들어, 프라이머리 키 ID와 열 NAME 기준 필터를 사용하여 TEST.LOGGING이라는 테이블을 복제하려면 다음과 비슷한 명령을 실행하여 로그 그룹 보충 로깅을 만들 수 있습니다.

    ALTER TABLE TEST.LOGGING ADD SUPPLEMENTAL LOG GROUP TEST_LOG_GROUP (ID, NAME) ALWAYS;

LogMiner Oracle을 사용하여 리두 로그에 액세스할 때 필요한 계정 권한

Oracle을 사용하여 리두 로그에 액세스하려면 Oracle LogMiner 엔드포인트 연결 설정에 지정된 Oracle 사용자에게 다음 권한을 부여하십시오.

GRANT EXECUTE on DBMS_LOGMNR to db_user; GRANT SELECT on V_$LOGMNR_LOGS to db_user; GRANT SELECT on V_$LOGMNR_CONTENTS to db_user; GRANT LOGMINING to db_user; -– Required only if the Oracle version is 12c or higher.

AWS DMS 바이너리 리더를 사용하여 리두 로그에 액세스할 때 필요한 계정 권한

AWS DMS 바이너리 리더를 사용하여 리두 로그에 액세스하려면 Oracle 엔드포인트 연결 설정에 지정된 Oracle 사용자에게 다음 권한을 부여하십시오.

GRANT SELECT on v_$transportable_platform to db_user; -– Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM. GRANT CREATE ANY DIRECTORY to db_user; -– Grant this privilege to allow AWS DMS to use Oracle BFILE read file access in certain cases. This access is required when the replication instance doesn't have file-level access to the redo logs and the redo logs are on non-ASM storage. GRANT EXECUTE on DBMS_FILE_TRANSFER to db_user; -– Grant this privilege to copy the redo log files to a temporary folder using the CopyToTempFolder method. GRANT EXECUTE on DBMS_FILE_GROUP to db_user;

Binary Reader는 Oracle 디렉터리를 포함하는 Oracle 파일 기능과 함께 작동합니다. 각 Oracle 디렉터리 객체에는 처리할 다시 실행 로그 파일이 들어 있는 폴더의 이름이 포함됩니다. 이러한 Oracle 디렉터리는 파일 시스템 수준에서 표시되지 않습니다. 대신, Oracle 데이터베이스 수준에서 생성되는 논리적 디렉터리입니다. Oracle ALL_DIRECTORIES 뷰에서 볼 수 있습니다.

이러한 Oracle 디렉토리를 AWS DMS 생성하려면 앞에 지정된 CREATE ANY DIRECTORY 권한을 부여하십시오. AWS DMS 접두사를 사용하여 디렉토리 이름을 생성합니다. DMS_ CREATE ANY DIRECTORY 권한을 부여하지 않는 경우 수동으로 해당 디렉터리를 생성해야 합니다. 수동으로 Oracle 디렉터리를 만들 때 Oracle 소스 엔드포인트에 지정된 Oracle 사용자가 이러한 디렉터리를 만든 사용자가 아닌 경우도 있습니다. 이런 경우에도 READ on DIRECTORY 권한을 부여하십시오.

Oracle 소스 엔드포인트가 ADG (Active Dataguard Standby) 상태인 경우 데이터베이스 블로그의 ADG와 함께 바이너리 리더를 사용하는 방법 게시물을 참조하십시오. AWS

참고

AWS DMS CDC는 자동 리두 전송 서비스를 사용하도록 구성되지 않은 액티브 Dataguard 스탠바이를 지원하지 않습니다.

경우에 따라 Oracle Managed Files(OMF)를 사용하여 로그를 저장할 수 있습니다. 또는 소스 엔드포인트가 ADG에 있고 따라서 CREATE ANY DIRECTORY 권한을 부여할 수 없습니다. 이러한 경우에는 복제 작업을 시작하기 전에 가능한 모든 로그 위치가 포함된 디렉토리를 수동으로 생성하십시오. AWS DMS AWS DMS 가 미리 만들어진 디렉터리를 찾지 못하면 작업이 중지됩니다. 또한 AWS DMS 는 ALL_DIRECTORIES 뷰에서 생성한 항목을 삭제하지 않으므로 수동으로 삭제하십시오.

Oracle ASM과 함께 Binary Reader를 사용할 때 필요한 추가 계정 권한

Binary Reader를 사용하여 ASM(Automatic Storage Management)의 다시 실행 로그에 액세스하려면 Oracle 엔드포인트 연결 설정에 지정된 Oracle 사용자에게 다음 권한을 부여합니다.

SELECT ON v_$transportable_platform SYSASM -– To access the ASM account with Oracle 11g Release 2 (version 11.2.0.2) and higher, grant the Oracle endpoint user the SYSASM privilege. For older supported Oracle versions, it's typically sufficient to grant the Oracle endpoint user the SYSDBA privilege.

명령 프롬프트를 열고 앞서 지정한 Oracle 버전에 따라 다음 명령문 중 하나를 간접적으로 호출하여 ASM 계정 액세스를 검증할 수 있습니다.

SYSDBA 권한이 필요한 경우 다음을 사용하십시오.

sqlplus asmuser/asmpassword@+asmserver as sysdba

SYSASM 권한이 필요한 경우 다음을 사용하십시오.

sqlplus asmuser/asmpassword@+asmserver as sysasm

AWS DMS에서 CDC용 Binary Reader와 함께 자체 관리형 Oracle Standby를 소스로 사용

CDC용 Binary Reader를 사용할 때 Oracle Standby 인스턴스를 소스로 구성하려면 다음 사전 요구 사항부터 시작합니다.

  • AWS DMS 현재는 오라클 액티브 데이터 가드 스탠바이만 지원합니다.

  • Oracle Data Guard 구성에서 다음을 사용하는지 확인하세요.

    • 다시 실행 데이터의 자동 전송을 위한 다시 실행 전송 서비스.

    • 대기 데이터베이스에 다시 실행을 자동으로 적용하는 서비스 적용.

이러한 요구 사항이 충족되는지 확인하려면 다음 쿼리를 실행합니다.

SQL> select open_mode, database_role from v$database;

해당 쿼리의 출력에서 대기 데이터베이스가 읽기 전용 모드로 열리고 다시 실행이 자동으로 적용되는지 확인합니다. 예:

OPEN_MODE DATABASE_ROLE -------------------- ---------------- READ ONLY WITH APPLY PHYSICAL STANDBY
CDC용 Binary Reader를 사용할 때 Oracle Standby 인스턴스를 소스로 구성하려면
  1. 대기 로그 파일에 액세스하는 데 필요한 추가 권한을 부여합니다.

    GRANT SELECT ON v_$standby_log TO db_user;
  2. AWS Management Console 또는 AWS CLI를 사용하여 Oracle Standby의 소스 엔드포인트를 생성합니다. 엔드포인트를 생성할 때 다음과 같은 추가 연결 속성을 지정합니다.

    useLogminerReader=N;useBfile=Y;
    참고

    AWS DMS에서는 추가 연결 속성을 사용하여 리두 로그 대신 아카이브 로그에서 마이그레이션할지 여부를 지정할 수 있습니다. 자세한 정보는 Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS을 참조하세요.

  3. 아카이브된 로그 대상을 구성합니다.

    ASM이 없는 Oracle 소스용 DMS Binary Reader는 Oracle 디렉토리를 사용하여 아카이빙된 다시 실행 로그에 액세스합니다. 데이터베이스가 FRA(Fast Recovery Area)를 아카이브 로그 대상으로 사용하도록 구성된 경우, 아카이브 다시 실행 파일의 위치는 일정하지 않습니다. 아카이빙된 다시 실행 로그가 생성되는 날마다 FRA에 디렉터리 이름 형식 YYYY_MM_DD를 사용하여 새 디렉터리가 생성됩니다. 예:

    DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD

    DMS가 새로 생성된 FRA 디렉터리의 아카이빙된 다시 실행 파일에 액세스해야 하고 기본 읽기-쓰기 데이터베이스를 소스로 사용하는 경우, DMS는 다음과 같이 새 Oracle 디렉터리를 생성하거나 기존 Oracle 디렉터리를 대체합니다.

    CREATE OR REPLACE DIRECTORY dmsrep_taskid AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD’;

    대기 데이터베이스를 소스로 사용하는 경우, 데이터베이스가 읽기 전용 모드이기 때문에 DMS는 Oracle 디렉터리를 생성하거나 바꿀 수 없습니다. 하지만 다음 추가 단계 중 하나를 수행할 수 있습니다.

    1. Oracle이 일일 하위 디렉터리를 생성하지 않는 구성에서는 FRA 대신 실제 경로를 사용하도록 log_archive_dest_id_1을 수정합니다.

      ALTER SYSTEM SET log_archive_dest_1=’LOCATION=full directory path

      그런 다음 DMS가 사용할 Oracle 디렉터리 객체를 생성합니다.

      CREATE OR REPLACE DIRECTORY dms_archived_logs AS ‘full directory path’;
    2. 추가 아카이브 로그 대상과 해당 대상을 가리키는 Oracle 디렉터리 객체를 생성합니다. 예:

      ALTER SYSTEM SET log_archive_dest_3=’LOCATION=full directory path’; CREATE DIRECTORY dms_archived_log AS ‘full directory path’;

      그런 다음 작업 소스 엔드포인트에 추가 연결 속성을 추가합니다.

      archivedLogDestId=3
    3. DMS가 사용할 Oracle 디렉터리 객체를 수동으로 사전 생성합니다.

      CREATE DIRECTORY dms_archived_log_20210301 AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/2021_03_01’; CREATE DIRECTORY dms_archived_log_20210302 AS ‘DB_RECOVERY_FILE_DEST>/SID>/archivelog/2021_03_02’; ...
    4. 매일 실행되고 필요한 디렉터리를 생성하는 Oracle 스케줄러 작업을 생성합니다.

AWS DMS에서 OCI(Oracle Cloud Infrastructure)의 사용자 관리형 데이터베이스를 CDC의 소스로 사용

사용자 관리형 데이터베이스는 가상 머신(VM), 베어 메탈 또는 Exadata 서버에서 만든 Oracle 데이터베이스와 같이 사용자가 구성하고 제어하는 데이터베이스입니다. 또는 OCI(Oracle Cloud Infrastructure)와 같은 전용 인프라에서 실행되고 사용자가 구성하고 제어하는 데이터베이스인 경우도 있습니다. 다음 정보는 AWS DMS에서 OCI의 Oracle 사용자 관리형 데이터베이스를 변경 데이터 캡처(CDC) 소스로 사용할 때 필요한 권한과 구성을 설명합니다.

OCI에서 호스팅하는 사용자 관리형 Oracle 데이터베이스를 변경 데이터 캡처의 소스로 구성하려면
  1. OCI의 사용자 관리형 Oracle 소스 데이터베이스에 필요한 사용자 계정 권한을 부여합니다. 자세한 내용은 자체 관리형 Oracle 소스 엔드포인트에 대한 계정 권한을 참조하세요.

  2. Binary Reader를 사용하여 다시 실행 로그에 액세스할 때 필요한 계정 권한을 부여합니다. 자세한 내용은 Binary Reader를 사용할 때 필요한 계정 권한을 참조하세요.

  3. Oracle ASM(Automatic Storage Management)에서 Binary Reader를 사용할 때 필요한 계정 권한을 추가합니다. 자세한 내용은 Binary Reader를 Oracle ASM과 함께 사용할 때 필요한 추가 계정 권한을 참조하세요.

  4. 보충 로깅을 설정합니다. 자세한 내용은 보충 로깅 설정을 참조하세요.

  5. TDE 암호화를 설정합니다. 자세한 내용은 Oracle 데이터베이스를 소스 엔드포인트로 사용할 때 암호화 방법을 참조하세요.

OCI(Oracle Cloud Infrastructure)의 Oracle 소스 데이터베이스에서 데이터를 복제할 때는 다음과 같은 제한 사항이 적용됩니다.

제한 사항
  • DMS는 Oracle을 사용하여 리두 LogMiner 로그에 액세스하는 것을 지원하지 않습니다.

  • DMS는 자율 DB를 지원하지 않습니다.

AWS-Managed Oracle 데이터베이스를 원본으로 사용하여 AWS DMS

AWS관리형 데이터베이스는 Amazon RDS, Amazon Aurora 또는 Amazon S3와 같은 아마존 서비스에 있는 데이터베이스입니다. 다음에서 AWS관리형 Oracle 데이터베이스를 사용할 때 설정해야 하는 권한 및 구성을 확인할 수 있습니다. AWS DMS

AWS-Managed Oracle 소스에 필요한 사용자 계정 권한은 다음과 같습니다. AWS DMS

Oracle 소스 엔드포인트 정의에 지정된 Oracle 사용자 계정에 다음 권한을 부여합니다.

중요

db_userany-replicated-table 같은 모든 파라미터 값에서 대소문자를 구분하는 식별자로 값을 지정하지 않는 한 Oracle은 값이 모두 대문자인 것으로 가정합니다. 예를 들어 CREATE USER myuser 또는 CREATE USER MYUSER에서처럼 따옴표를 사용하지 않고 db_user 값을 생성한다고 가정해 보겠습니다. 이 경우 Oracle은 값을 모두 대문자(MYUSER)로 식별하고 저장합니다. CREATE USER "MyUser" 또는 CREATE USER 'MyUser'에서처럼 따옴표를 사용하면 Oracle은 사용자가 지정한 대소문자를 구별하는 값(MyUser)을 식별하고 저장합니다.

GRANT CREATE SESSION to db_user; GRANT SELECT ANY TRANSACTION to db_user; GRANT SELECT on DBA_TABLESPACES to db_user; GRANT SELECT ON any-replicated-table to db_user; GRANT EXECUTE on rdsadmin.rdsadmin_util to db_user; -- For Oracle 12c or higher: GRANT LOGMINING to db_user; – Required only if the Oracle version is 12c or higher.

또한 아래 나온 것처럼 Amazon RDS 절차 rdsadmin.rdsadmin_util.grant_sys_object를 사용하여 SYS 객체에 대한 SELECTEXECUTE 권한을 부여합니다. 자세한 내용은 SYS 객체에 SELECT 또는 EXECUTE 권한 부여를 참조하십시오.

exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','db_user','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'db_user', 'EXECUTE'); -- (as of Oracle versions 12.1 and higher) exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'db_user', 'SELECT'); -- (for Amazon RDS Active Dataguard Standby (ADG)) exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG', 'db_user', 'SELECT'); -- (for transparent data encryption (TDE)) exec rdsadmin.rdsadmin_util.grant_sys_object('ENC$', 'db_user', 'SELECT'); -- (for validation with LOB columns) exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'db_user', 'EXECUTE'); -- (for binary reader) exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DIRECTORIES','db_user','SELECT'); -- Required when the source database is Oracle Data guard, and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher. exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_STATS', 'db_user', 'SELECT');

AWS DMS 에서 Amazon RDS Active Dataguard Standby(ADG)를 사용하는 방법에 대한 자세한 내용은 AWS DMS에서 CDC용 Binary Reader와 함께 Amazon RDS Oracle Standby(읽기 전용 복제본)를 소스로 사용 섹션을 참조하세요.

Oracle TDE와 함께 AWS DMS사용하는 방법에 대한 자세한 내용은 을 참조하십시오. Oracle을 소스로 사용하기 위해 지원되는 암호화 방법 AWS DMS

Oracle Standby 열린 트랜잭션 처리를 위한 사전 요구 사항

AWS DMS 버전 3.4.6 이상을 사용하는 경우 다음 단계를 수행하여 Oracle Standby의 미결 트랜잭션을 처리하십시오.

  1. 기본 데이터베이스에 AWSDMS_DBLINK라는 데이터베이스 링크를 생성합니다. DMS_USER는 이 데이터베이스 링크를 사용하여 기본 데이터베이스에 연결합니다. 이 데이터베이스 링크는 대기 인스턴스에서 실행되어 기본 데이터베이스에서 실행 중인 열린 트랜잭션을 쿼리합니다. 다음 예를 참조하세요.

    CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD USING '(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT)) (CONNECT_DATA=(SERVICE_NAME=SID)) )';
  2. 다음 예제와 같이 DMS_USER를 사용하여 데이터베이스 링크에 연결되었는지 확인합니다.

    select 1 from dual@AWSDMS_DBLINK

AWS관리형 Oracle 소스 구성 대상 AWS DMS

AWS-managed Oracle 데이터베이스를 원본으로 사용하기 전에 Oracle 데이터베이스에 대해 AWS DMS다음 작업을 수행하십시오.

  • 자동 백업을 활성화합니다. 자동 백업 활성화에 대한 자세한 내용은 Amazon RDS 사용 설명서자동 백업 활성화 섹션을 참조하세요.

  • 보충 로깅을 설정합니다.

  • 보관을 설정합니다. Oracle DB 인스턴스용 Amazon RDS의 리두 로그를 보관하면 Oracle 또는 바이너리 AWS DMS 리더를 사용하여 로그 정보를 검색할 수 있습니다. LogMiner

보관을 설정하려면
  1. rdsadmin.rdsadmin_util.set_configuration 명령을 실행하여 보관을 설정합니다.

    예를 들어 보관된 다시 실행 로그를 24시간 동안 유지하려면 다음 명령을 실행합니다.

    exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24); commit;
    참고

    변경 사항을 적용하려면 커밋해야 합니다.

  2. 지정된 보존 기간 동안 보관된 다시 실행 로그를 위한 스토리지 공간이 충분한지 확인해야 합니다. 예를 들어 보존 기간이 24시간인 경우, 일반적인 트랜잭션 처리 시간 동안 보관된 다시 실행 로그의 누적된 총 크기를 계산하고 그 합계에 24를 곱합니다. 계산된 이 24시간 합계를 사용 가능한 스토리지 공간과 비교하여 전체 24시간 트랜잭션 처리를 처리할 수 있는 충분한 스토리지 공간이 있는지 결정합니다.

보충 로깅을 설정하려면
  1. 데이터베이스 수준에서 보충 로깅을 활성화하려면 다음 명령을 실행합니다.

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
  2. 다음 명령을 실행하여 프라이머리 키 보충 로깅을 활성화합니다.

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
  3. (선택 사항) 테이블 수준에서 키 수준 보충 로깅을 활성화합니다.

    키 수준 보충 로깅을 활성화하면 소스 데이터베이스에 약간의 오버헤드가 발생합니다. 따라서 테이블 하위 집합만을 마이그레이션할 경우, 테이블 수준에서 키 수준 보충 로깅을 활성화하는 것이 좋습니다. 테이블 수준에서 키 수준 보충 로깅을 활성화하려면 다음 명령을 실행합니다.

    alter table table_name add supplemental log data (PRIMARY KEY) columns;

Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS

CDC용 바이너리 리더를 사용하여 원본 Amazon RDS for Oracle용 인스턴스 다시 실행 로그에 AWS DMS 액세스하도록 구성할 수 있습니다.

참고

LogMinerOracle을 사용하려면 필요한 최소 사용자 계정 권한이면 충분합니다. 자세한 정보는 AWS-Managed Oracle 소스에 필요한 사용자 계정 권한은 다음과 같습니다. AWS DMS을 참조하세요.

AWS DMS Binary Reader를 사용하려면 AWS DMS 버전에 따라 Oracle 소스 엔드포인트에 대한 추가 설정 및 추가 연결 속성을 지정하십시오.

Binary Reader는 다음 버전의 Amazon RDS for Oracle에서 지원됩니다.

  • Oracle 11.2 – 버전 11.2.0.4V11 이상

  • Oracle 12.1 – 버전 12.1.0.2.V7 이상

  • Oracle 12.2 – 모든 버전

  • Oracle 18.0 – 모든 버전

  • Oracle 19.0 – 모든 버전

Binary Reader를 사용하여 CDC를 구성하려면
  1. Amazon RDS for Oracle 소스 데이터베이스에 마스터 사용자로 로그인하고 다음 저장 프로시저를 실행하여 서버 수준 디렉터리를 생성합니다.

    exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
  2. Oracle 소스 엔드포인트에 액세스하는 데 사용되는 Oracle 사용자 계정에 다음 권한을 부여합니다.

    GRANT READ ON DIRECTORY ONLINELOG_DIR TO db_user; GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO db_user;
  3. Amazon RDS Oracle 소스 엔드포인트에서 다음 추가 연결 속성을 설정합니다.

    • RDS Oracle 버전 11.2 및 12.1의 경우, 다음을 설정합니다.

      useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true; oraclePathPrefix=/rdsdbdata/db/{$DATABASE_NAME}_A/;usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;
    • RDS Oracle 버전 12.2, 18.0, 19.0의 경우, 다음을 설정합니다.

      useLogminerReader=N;useBfile=Y;
참고

여러 속성 설정의 경우, 세미콜론 구분자(;) 뒤에 공백이 오면 안 됩니다(예: oneSetting;thenAnother).

CDC 작업 구성에 대한 자세한 내용은 Oracle 소스 데이터베이스에서의 CDC 구성 섹션을 참조하세요.

AWS DMS에서 CDC용 Binary Reader와 함께 Amazon RDS Oracle Standby(읽기 전용 복제본)를 소스로 사용

AWS DMS에서 CDC용 Binary Reader를 사용할 때 Amazon RDS for Oracle Standby를 소스로 사용하려면 다음 사전 요구 사항을 확인하세요.

  • Oracle 마스터 사용자를 사용하여 Binary Reader를 설정합니다.

  • AWS DMS 현재 Oracle 액티브 데이터 가드 스탠바이만 사용할 수 있는지 확인하십시오.

그런 다음 CDC용 Binary Reader를 사용할 때 다음 절차를 사용하여 RDS for Oracle Standby를 소스로 사용합니다.

CDC용 Binary Reader를 사용할 때 RDS for Oracle Standby를 소스로 구성하려면
  1. RDS for Oracle 기본 인스턴스에 마스터 사용자로 로그인합니다.

  2. Amazon RDS 사용 설명서에 설명된 대로 다음 저장 프로시저를 실행하여 서버 수준 디렉터리를 생성합니다.

    exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
  3. 2단계에서 생성한 디렉터리를 식별합니다.

    SELECT directory_name, directory_path FROM all_directories WHERE directory_name LIKE ( 'ARCHIVELOG_DIR_%' ) OR directory_name LIKE ( 'ONLINELOG_DIR_%' )

    예를 들어 위 코드는 다음과 같은 디렉터리 목록을 표시합니다.

    Table showing directory names and their corresponding paths for archive and online logs.
  4. Oracle Standby에 액세스하는 데 사용되는 Oracle 사용자 계정에 이전 디렉터리에 대한 Read 권한을 부여합니다.

    GRANT READ ON DIRECTORY ARCHIVELOG_DIR_A TO db_user; GRANT READ ON DIRECTORY ARCHIVELOG_DIR_B TO db_user; GRANT READ ON DIRECTORY ONLINELOG_DIR_A TO db_user; GRANT READ ON DIRECTORY ONLINELOG_DIR_B TO db_user;
  5. 기본 인스턴스에서 아카이브 로그 스위치를 수행합니다. 이렇게 하면 ALL_DIRECTORIES에 대한 변경 사항이 Oracle Standby에도 포팅되도록 할 수 있습니다.

  6. Oracle Standby에서 ALL_DIRECTORIES 쿼리를 실행하여 변경 사항이 적용되었는지 확인합니다.

  7. AWS DMS 관리 콘솔 또는 AWS Command Line Interface (AWS CLI) 를 사용하여 Oracle Standby의 소스 엔드포인트를 생성합니다. 엔드포인트를 생성할 때 다음과 같은 추가 연결 속성을 지정합니다.

    useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
  8. 엔드포인트를 생성한 후 콘솔의 엔드포인트 생성 페이지에서 엔드포인트 연결 테스트 또는 AWS CLI test-connection 명령을 사용하여 연결이 설정되었는지 확인합니다.

Oracle을 원본으로 사용할 때의 제한 사항 AWS DMS

AWS DMS용 소스로 Oracle 데이터베이스 사용 시 다음 제한 사항이 적용됩니다.

  • AWS DMS AWS DMS 버전 3.5.0 이상에서 Oracle 확장 데이터 유형을 지원합니다.

  • AWS DMS 긴 객체 이름 (30바이트 초과) 은 지원하지 않습니다.

  • AWS DMS 함수 기반 인덱스는 지원하지 않습니다.

  • 보충 로깅을 관리하고 임의의 열에서 변환을 수행하는 경우, 모든 필드 및 열에 대해 보충 로깅이 활성화되어 있어야 합니다. 보충 로깅 설정에 대한 자세한 내용은 다음 주제를 참조하세요.

  • AWS DMS 멀티테넌트 컨테이너 루트 데이터베이스 (CDB$ROOT) 를 지원하지 않습니다. DMS는 Binary Reader를 사용하여 PDB를 지원합니다.

  • AWS DMS 지연된 제약 조건을 지원하지 않습니다.

  • AWS DMS 버전 3.5.1 이상에서는 LOB 조회를 수행해야만 보안 LOB가 지원됩니다.

  • AWS DMS 지원되는 모든 Oracle 버전 rename table table-name to new-table-name 11 이상에 대한 구문을 지원합니다. 이 구문은 Oracle 버전 10 소스 데이터베이스에서는 지원되지 않습니다.

  • AWS DMS DDL 문의 결과를 복제하지 않습니다. ALTER TABLE ADD column data_type DEFAULT default_value default_value를 대상에 복제하는 대신 새 열을 NULL로 설정합니다.

  • AWS DMS 버전 3.4.7 이상을 사용하는 경우 파티션 또는 하위 파티션 작업으로 인한 변경 내용을 복제하려면 DMS 작업을 시작하기 전에 다음을 수행하십시오.

    • 파티셔닝된 테이블 구조(DDL)를 수동으로 생성합니다.

    • Oracle 소스와 Oracle 대상 모두에서 DDL이 동일해야 합니다.

    • 추가 연결 속성 enableHomogenousPartitionOps=true를 설정합니다.

    enableHomogenousPartitionOps에 대한 자세한 정보는 Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS 섹션을 참조하십시오. 또한 FULL+CDC 작업에서 DMS는 캐시된 변경 사항의 일부로 캡처된 데이터 변경 사항을 복제하지 않는다는 점에 유의하세요. 이 사용 사례에서는 Oracle 대상에서 테이블 구조를 다시 만들고 해당 테이블을 다시 로드하세요.

    버전 3.4.7 이전: AWS DMS

    DMS는 파티션 또는 하위 파티션 작업(ADD, DROP, EXCHANGE, TRUNCATE)으로 인해 발생하는 데이터 변경 사항을 복제하지 않습니다. 이러한 업데이트로 인해 복제 중에 다음과 같은 오류가 발생할 수 있습니다.

    • ADD 작업의 경우 추가된 데이터에 대한 업데이트 및 삭제로 인해 “적용된 행 없음” 경고가 발생할 수 있습니다.

    • DROPTRUNCATE 작업의 경우 새 삽입은 “중복” 오류를 발생시킬 수 있습니다.

    • EXCHANGE 작업을 수행하면 “적용된 행 없음” 경고와 “중복” 오류가 발생할 수 있습니다.

    파티션 또는 하위 파티션 작업으로 인해 발생하는 변경 사항을 복제하려면 해당 테이블을 다시 로드합니다. 빈 파티션을 새로 추가한 후 새로 추가된 파티션에 대한 작업이 정상적으로 대상에 복제됩니다.

  • AWS DMS 3.4 이전 버전은 소스에서 CREATE TABLE AS 명령문을 실행하여 발생한 타겟의 데이터 변경을 지원하지 않습니다. 하지만, 새 테이블이 대상에서 생성됩니다.

  • AWS DMS Oracle DBMS_REDEFINITION 패키지에서 변경한 내용 (예: 테이블 메타데이터 및 OBJECT_ID 필드) 은 캡처하지 않습니다.

  • AWS DMS 빈 BLOB 및 CLOB 열을 NULL 대상에 매핑합니다.

  • Oracle LogMiner 11에서 변경 사항을 캡처하는 경우 문자열 길이가 1982보다 큰 CLOB 열에 대한 업데이트가 손실되고 대상이 업데이트되지 않습니다.

  • 변경 데이터 캡처 (CDC) 중에는 기본 키로 정의된 숫자 열에 대한 일괄 업데이트가 지원되지 AWS DMS 않습니다.

  • AWS DMS 특정 UPDATE 명령을 지원하지 않습니다. 다음은 지원되지 않는 UPDATE 명령의 예입니다.

    UPDATE TEST_TABLE SET KEY=KEY+1;

    여기서, TEST_TABLE은 테이블 이름이고 KEY는 프라이머리 키로 정의 된 숫자 열입이다.

  • AWS DMS LONG RAW 열 및 LONG RAW 열을 로드하기 위한 전체 LOB 모드를 지원하지 않습니다. 대신 제한된 LOB 모드를 사용하여 이러한 데이터 형식을 Oracle 대상으로 마이그레이션할 수 있습니다. 제한된 LOB 모드에서는 64KB보다 긴 긴 RAW 열 또는 긴 RAW 열로 설정한 모든 데이터를 64KB로 AWS DMS 잘라냅니다.

  • AWS DMS XMLTYPE 열을 로드하기 위한 전체 LOB 모드를 지원하지 않습니다. 대신 제한된 LOB 모드를 사용하여 XMLTYPE 열을 Oracle 대상으로 마이그레이션할 수 있습니다. 제한된 LOB 모드에서 DMS는 사용자가 정의한 '최대 LOB 크기' 변수보다 큰 데이터를 모두 잘라냅니다. '최대 LOB 크기'의 최대 권장 값은 100MB입니다.

  • AWS DMS 이름에 아포스트로피가 포함된 테이블을 복제하지 않습니다.

  • AWS DMS 구체화된 뷰에서 CDC를 지원합니다. 하지만 DMS는 그 밖의 뷰에서는 CDC를 지원하지 않습니다.

  • AWS DMS 오버플로우 세그먼트가 있는 인덱스로 구성된 테이블에 대해서는 CDC를 지원하지 않습니다.

  • AWS DMS ~로 설정된 참조로 파티셔닝된 테이블에 대한 Drop Partition 작업은 지원하지 않습니다. enableHomogenousPartitionOps true

  • LogMiner Oracle을 사용하여 리두 로그에 액세스할 때는 다음과 같은 AWS DMS 제한이 있습니다.

    • Oracle 12의 경우에만 LOB 열에 대한 변경 사항을 복제하지 AWS DMS 않습니다.

    • 모든 Oracle 버전에서는 XMLTYPE 및 LOB 열에 대한 UPDATE 작업 결과를 복제하지 AWS DMS 않습니다.

    • AWS DMS Oracle을 사용하는 동안에는 복제에서 XA 트랜잭션을 지원하지 않습니다. LogMiner

    • LogMiner Oracle은 플러그형 데이터베이스 (PDB) 에 대한 연결을 지원하지 않습니다. PDB에 연결하려면 Binary Reader를 사용하여 다시 실행 로그에 액세스합니다.

    • SHRINK SPACE 작업은 지원되지 않습니다.

  • 바이너리 리더를 사용하는 경우 다음과 같은 제한이 AWS DMS 있습니다.

    • 테이블 클러스터를 지원하지 않습니다.

    • 테이블 수준 SHRINK SPACE 작업만 지원합니다. 이 수준에는 전체 테이블, 파티션, 하위 파티션이 포함됩니다.

    • 키 압축을 사용하는 인덱스 구성 테이블에 대한 변경 사항은 지원하지 않습니다.

    • 원시 디바이스에서 온라인 다시 실행 로그 구현은 지원하지 않습니다.

    • RDS for Oracle이 TDE 암호화 키를 위한 지갑 암호 검색을 지원하지 않으므로 Binary Reader는 자체 관리형 Oracle 데이터베이스에서만 TDE를 지원합니다.

  • AWS DMS Oracle 자동 스토리지 관리 (ASM) 프록시를 사용하는 Amazon RDS Oracle 소스에 연결할 수 없습니다.

  • AWS DMS 가상 컬럼은 지원하지 않습니다.

  • AWS DMS ROWID 열을 기반으로 하는 ROWID 데이터 유형이나 구체화된 뷰는 지원하지 않습니다.

    AWS DMS Oracle 구체화된 뷰를 부분적으로 지원합니다. 전체 로드의 경우, DMS는 Oracle 구체화된 뷰의 전체 로드 복사를 수행할 수 있습니다. DMS는 구체화된 뷰를 대상 시스템에 기본 테이블로 복사하고 구체화된 뷰의 모든 ROWID 열을 무시합니다. 지속적 복제(CDC) 의 경우 DMS는 구체화된 뷰 데이터에 대한 변경 사항을 복제하려고 시도하지만 결과는 이상적이지 않을 수 있습니다. 특히, 구체화된 뷰가 완전히 새로 고쳐지면 DMS는 모든 행에 개별 삭제를 복제한 후 모든 행에 개별 삽입을 복제합니다. 이는 리소스를 매우 많이 사용하는 작업이며, 행 수가 많은 구체화된 뷰에서는 성능이 떨어질 수 있습니다. 구체화된 뷰가 빠른 새로 고침을 수행하는 지속적인 복제의 경우, DMS는 빠른 새로 고침 데이터 변경을 처리하고 복제하려고 합니다. 어느 경우든 DMS는 구체화된 뷰의 ROWID 열을 모두 건너뜁니다.

  • AWS DMS 글로벌 임시 테이블을 로드하거나 캡처하지 않습니다.

  • 복제를 사용하는 S3 대상의 경우, 소스 행 업데이트가 모든 열 값을 캡처할 수 있도록 모든 열에서 보충 로깅을 활성화하세요. 예제는 다음과 같습니다. alter table yourtablename add supplemental log data (all) columns;.

  • null을 포함하는 복합 고유 키가 있는 행에 대한 업데이트는 대상에서 복제될 수 없습니다.

  • AWS DMS 동일한 소스 엔드포인트에서 여러 Oracle TDE 암호화 키를 사용할 수 없습니다. 각 엔드포인트는 TDE 암호화 키 이름 “securityDbEncryptionName“에 대한 속성 하나와 이 키에 대한 하나의 TDE 암호만 가질 수 있습니다.

  • Amazon RDS for Oracle에서 복제하는 경우 TDE는 암호화된 테이블스페이스와 Oracle을 사용하는 경우에만 지원됩니다. LogMiner

  • AWS DMS 여러 테이블 이름 바꾸기 작업을 빠르게 연속해서 수행할 수 없습니다.

  • Oracle 19.0을 소스로 사용하는 경우 다음 기능을 AWS DMS 지원하지 않습니다.

    • 데이터가드 DML 리디렉션

    • 파티셔닝된 하이브리드 테이블

    • 스키마 전용 Oracle 계정

  • AWS DMS 또는 유형의 BIN$ 테이블 또는 뷰 마이그레이션을 지원하지 않습니다. DR$

  • Oracle 18.x부터는 오라클 익스프레스 에디션 (오라클 데이터베이스 XE) 의 변경 데이터 캡처 (CDC) 를 AWS DMS 지원하지 않습니다.

  • CHAR 열에서 데이터를 마이그레이션할 때 DMS는 모든 후행 공백을 잘라냅니다.

  • AWS DMS 애플리케이션 컨테이너에서의 복제를 지원하지 않습니다.

  • AWS DMS Oracle 플래시백 데이터베이스 및 복원 지점 수행은 지원되지 않습니다. 이러한 작업은 Oracle Redo 로그 파일의 일관성에 영향을 미치기 때문입니다.

  • 다음과 같은 경우에는 병렬 실행 옵션을 사용하는 직접 로드 INSERT 프로시저가 지원되지 않습니다.

    • 열이 255개를 넘는 압축되지 않은 테이블

    • 행 크기가 8K를 초과

    • Exadata HCC 테이블

    • 빅 엔디안 플랫폼에서 실행되는 데이터베이스

  • 프라이머리 키도 고유 키도 없는 소스 테이블에는 ALL COLUMN 보충 로깅을 활성화해야 합니다. 이로 인해 더 많은 다시 실행 로그 활동이 생성되고 DMS CDC 대기 시간이 늘어날 수 있습니다.

  • AWS DMS 소스 데이터베이스의 보이지 않는 열에서 데이터를 마이그레이션하지 않습니다. 이러한 열을 마이그레이션 범위에 포함하려면 ALTER TABLE 문을 사용하여 이러한 열을 표시하세요.

Oracle 엔드포인트용 SSL 지원

AWS DMS 오라클 엔드포인트는 noneverify-ca SSL 모드에 대해 SSL V3을 지원합니다. Oracle 엔드포인트에서 SSL을 사용하려면, .pem 인증서 파일이 아닌 엔드포인트용 Oracle Wallet을 업로드합니다.

Oracle SSL용 기존 인증서 사용

기존 Oracle 클라이언트 설치를 사용하여 CA 인증서 파일에서 Oracle wallet 파일을 생성하려면, 다음 단계를 진행합니다.

AWS DMS에서 Oracle SSL에 대해 기존 Oracle 클라이언트 설치를 사용하려면
  1. 다음 명령을 실행하여 ORACLE_HOME 시스템 변수를 dbhome_1 디렉터리 위치로 설정합니다.

    prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1
  2. LD_LIBRARY_PATH 시스템 변수에 $ORACLE_HOME/lib을 추가합니다.

    prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
  3. $ORACLE_HOME/ssl_wallet에 Oracle Wallet을 위한 디렉터리를 만듭니다.

    prompt>mkdir $ORACLE_HOME/ssl_wallet
  4. CA 인증서 .pem 파일을 ssl_wallet 디렉터리에 배치합니다. Amazon RDS를 사용하는 경우, Amazon RDS에서 호스팅되는 rds-ca-2015-root.pem 루트 CA 인증서 파일을 다운로드할 수 있습니다. 이 파일 다운로드에 자세한 내용은 Amazon RDS 사용 설명서에서 SSL/TLS를 사용하여 DB 인스턴스에 대한 연결 암호화를 참조하세요.

  5. 다음 명령을 실행하여 Oracle Wallet을 만듭니다.

    prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert $ORACLE_HOME/ssl_wallet/ca-cert.pem -auto_login_only

이전 단계를 완료했으면, certificate-wallet 매개변수를 지정하여 ImportCertificate API 호출을 사용하여 wallet 파일을 가져올 수 있습니다. 그런 다음 Oracle 엔드포인트를 생성하거나 수정할 때 SSL 모드로서 verify-ca를 선택하면 가져온 wallet 인증서를 사용할 수 있습니다.

참고

오라클 지갑은 바이너리 파일입니다. AWS DMS는 이러한 파일을 있는 그대로 받아들입니다.

Oracle SSL용 자체 서명 인증서 사용

Oracle SSL용 자체 서명 인증서를 사용하려면 Oracle wallet 암호가 oracle123이라고 가정하고 다음 단계를 수행하세요.

다음과 같이 Oracle SSL용 자체 서명된 인증서를 사용하려면 AWS DMS
  1. 자체 서명 인증서를 사용할 디렉터리를 생성합니다.

    mkdir -p /u01/app/oracle/self_signed_cert
  2. 이전 단계에서 생성한 디렉터리로 변경합니다.

    cd /u01/app/oracle/self_signed_cert
  3. 루트 키를 생성합니다.

    openssl genrsa -out self-rootCA.key 2048
  4. 이전 단계에서 생성한 루트 키를 루트 인증서를 자체 서명합니다.

    openssl req -x509 -new -nodes -key self-rootCA.key -sha256 -days 3650 -out self-rootCA.pem

    다음과 같은 입력 파라미터를 사용하세요.

    • Country Name (2 letter code) [XX], 예: AU

    • State or Province Name (full name) [], 예: NSW

    • Locality Name (e.g., city) [Default City], 예: Sydney

    • Organization Name (e.g., company) [Default Company Ltd], 예: AmazonWebService

    • Organizational Unit Name (e.g., section) [], 예: DBeng

    • Common Name (e.g., your name or your server's hostname) [], 예: aws

    • Email Address [], 예: abcd.efgh@amazonwebservice.com

  5. Oracle 데이터베이스용 Oracle wallet 디렉터리를 만듭니다.

    mkdir -p /u01/app/oracle/wallet
  6. 새 Oracle wallet을 만듭니다.

    orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd oracle123 -auto_login_local
  7. 루트 인증서를 Oracle wallet에 추가합니다.

    orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -trusted_cert -cert /u01/app/oracle/self_signed_cert/self-rootCA.pem
  8. Oracle wallet의 콘텐츠를 나열합니다. 이 목록에는 루트 인증서가 포함되어야 합니다.

    orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123

    예를 들어 다음과 비슷하게 표시될 수 있습니다.

    Requested Certificates: User Certificates: Trusted Certificates: Subject: CN=aws,OU=DBeng,O= AmazonWebService,L=Sydney,ST=NSW,C=AU
  9. ORAPKI 유틸리티를 사용한 인증서 서명 요청(CSR)을 생성합니다.

    orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -dn "CN=aws" -keysize 2048 -sign_alg sha256
  10. 다음 명령을 실행합니다.

    openssl pkcs12 -in /u01/app/oracle/wallet/ewallet.p12 -nodes -out /u01/app/oracle/wallet/nonoracle_wallet.pem

    이 명령의 출력은 다음과 같습니다.

    Enter Import Password: MAC verified OK Warning unsupported bag type: secretBag
  11. 'dms'를 일반 이름으로 둡니다.

    openssl req -new -key /u01/app/oracle/wallet/nonoracle_wallet.pem -out certdms.csr

    다음과 같은 입력 파라미터를 사용하세요.

    • Country Name (2 letter code) [XX], 예: AU

    • State or Province Name (full name) [], 예: NSW

    • Locality Name (e.g., city) [Default City], 예: Sydney

    • Organization Name (e.g., company) [Default Company Ltd], 예: AmazonWebService

    • Organizational Unit Name (e.g., section) [], 예: aws

    • Common Name (e.g., your name or your server's hostname) [], 예: aws

    • Email Address [], 예: abcd.efgh@amazonwebservice.com

    이 단계는 4단계와 달라야 합니다. 예를 들어 다음과 같이 조직 단위 이름을 다른 이름으로 변경하면 됩니다.

    인증서 요청과 함께 전송될 다음 추가 속성을 입력합니다.

    • A challenge password [], 예: oracle123

    • An optional company name [], 예: aws

  12. 인증서 서명을 가져옵니다.

    openssl req -noout -text -in certdms.csr | grep -i signature

    이 게시물의 서명 키는 sha256WithRSAEncryption입니다.

  13. 다음 명령을 실행하여 인증서(.crt) 파일을 생성합니다.

    openssl x509 -req -in certdms.csr -CA self-rootCA.pem -CAkey self-rootCA.key -CAcreateserial -out certdms.crt -days 365 -sha256

    그러면 다음과 같은 출력이 표시됩니다.

    Signature ok subject=/C=AU/ST=NSW/L=Sydney/O=awsweb/OU=DBeng/CN=aws Getting CA Private Key
  14. 인증서를 wallet에 추가합니다.

    orapki wallet add -wallet /u01/app/oracle/wallet -pwd oracle123 -user_cert -cert certdms.crt
  15. wallet을 봅니다. 두 항목이 있어야 합니다. 다음 코드를 확인합니다.

    orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
  16. sqlnet.ora 파일($ORACLE_HOME/network/admin/sqlnet.ora)을 구성합니다.

    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /u01/app/oracle/wallet/) ) ) SQLNET.AUTHENTICATION_SERVICES = (NONE) SSL_VERSION = 1.0 SSL_CLIENT_AUTHENTICATION = FALSE SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
  17. Oracle 리스너를 중지합니다.

    lsnrctl stop
  18. listener.ora 파일($ORACLE_HOME/network/admin/listener.ora)에 SSL에 대한 항목을 추가합니다.

    SSL_CLIENT_AUTHENTICATION = FALSE WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /u01/app/oracle/wallet/) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = SID) (ORACLE_HOME = ORACLE_HOME) (SID_NAME = SID) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
  19. tnsnames.ora 파일($ORACLE_HOME/network/admin/tnsnames.ora)을 구성합니다.

    <SID>= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) ) <SID>_ssl= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) )
  20. Oracle 리스너를 다시 시작합니다.

    lsnrctl start
  21. Oracle 리스너 상태를 표시합니다.

    lsnrctl status
  22. sqlplus 및 SSL tnsnames 항목을 사용하여 로컬 호스트에서 데이터베이스와의 SSL 연결을 테스트합니다.

    sqlplus -L ORACLE_USER@SID_ssl
  23. SSL을 사용하여 잘 연결되었는지 확인합니다.

    SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') -------------------------------------------------------------------------------- tcps
  24. 자체 서명 인증서를 사용하여 디렉터리를 이 디렉터리로 변경합니다.

    cd /u01/app/oracle/self_signed_cert
  25. 사용할 새 클라이언트 Oracle AWS DMS 지갑을 생성하십시오.

    orapki wallet create -wallet ./ -auto_login_only
  26. Oracle wallet에 자체 서명 루트 인증서를 추가합니다.

    orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
  27. 사용할 Oracle 지갑의 내용을 나열하십시오. AWS DMS 이 목록에는 자체 서명 루트 인증서가 포함되어야 합니다.

    orapki wallet display -wallet ./

    이 명령의 출력은 다음과 같습니다.

    Trusted Certificates: Subject: CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
  28. 방금 생성한 Oracle 지갑을 AWS DMS업로드하십시오.

Oracle을 소스로 사용하기 위해 지원되는 암호화 방법 AWS DMS

다음 표에는 Oracle 원본 데이터베이스를 사용할 때 AWS DMS 지원되는 투명한 데이터 암호화 (TDE) 방법이 나와 있습니다.

다시 실행 로그 액세스 방법 TDE 테이블스페이스 TDE 열
오라클 LogMiner
Binary Reader

AWS DMS 열 레벨과 테이블스페이스 레벨 모두에서 바이너리 리더를 사용할 때 Oracle TDE를 지원합니다. TDE 암호화를 함께 AWS DMS사용하려면 먼저 TDE 암호화 키와 TDE 비밀번호가 저장되어 있는 Oracle 지갑 위치를 식별하십시오. 그런 다음 Oracle 소스 엔드포인트의 올바른 TDE 암호화 키와 암호를 식별합니다.

TDE 암호화를 위한 암호화 키와 암호를 식별하고 지정하려면
  1. 다음 쿼리를 실행하여 Oracle 데이터베이스 호스트에서 Oracle 암호화 wallet을 찾습니다.

    SQL> SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET; WRL_PARAMETER -------------------------------------------------------------------------------- /u01/oracle/product/12.2.0/dbhome_1/data/wallet/

    여기서는 /u01/oracle/product/12.2.0/dbhome_1/data/wallet/이 wallet 위치입니다.

  2. 이 값을 반환하는 옵션에 따라 다음 암호화 옵션 중 하나를 사용하여 마스터 키 ID를 가져옵니다.

    1. 테이블 또는 열 수준 암호화의 경우 다음 쿼리를 실행합니다.

      SQL> SELECT OBJECT_ID FROM ALL_OBJECTS WHERE OWNER='DMS_USER' AND OBJECT_NAME='TEST_TDE_COLUMN' AND OBJECT_TYPE='TABLE'; OBJECT_ID --------------- 81046 SQL> SELECT MKEYID FROM SYS.ENC$ WHERE OBJ#=81046; MKEYID ------------ AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

      여기서는 AWGDC9glSk8Xv+3bVveiVSg가 마스터 키 ID(MKEYID)입니다. MKEYID의 값을 얻으면 3단계로 진행할 수 있습니다. 그렇지 않은 경우 2.2단계로 진행합니다.

      참고

      후행 문자열 'A' 문자(AAA...)는 값의 일부가 아닙니다.

    2. 테이블스페이스 수준 암호화의 경우, 다음 쿼리를 실행합니다.

      SQL> SELECT TABLESPACE_NAME, ENCRYPTED FROM dba_tablespaces; TABLESPACE_NAME ENC ------------------------------ --- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO TEST_ENCRYT YES SQL> SELECT name,utl_raw.cast_to_varchar2( utl_encode.base64_encode('01'||substr(mkeyid,1,4))) || utl_raw.cast_to_varchar2( utl_encode.base64_encode(substr(mkeyid,5,length(mkeyid)))) masterkeyid_base64 FROM (SELECT t.name, RAWTOHEX(x.mkid) mkeyid FROM v$tablespace t, x$kcbtek x WHERE t.ts#=x.ts#) WHERE name = 'TEST_ENCRYT'; NAME MASTERKEYID_BASE64 ------------------------------ ---------------------------------- TEST_ENCRYT AWGDC9glSk8Xv+3bVveiVSg=

      여기서는 AWGDC9glSk8Xv+3bVveiVSg가 마스터 키 ID(TEST_ENCRYT)입니다. 2.1단계와 2.2단계 모두 값을 반환하는 경우, 항상 동일합니다.

      후행 '=' 문자는 값의 일부가 아닙니다.

  3. 명령줄을 사용하여 소스 Oracle 데이터베이스 호스트에서 암호화 wallet 항목을 나열합니다.

    $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -list Oracle Secret Store entries: ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ORACLE.SECURITY.DB.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY ORACLE.SECURITY.ID.ENCRYPTION. ORACLE.SECURITY.KB.ENCRYPTION. ORACLE.SECURITY.KM.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA

    2단계에서 찾은 마스터 키 ID(AWGDC9glSk8Xv+3bVveiVSg)가 포함된 항목을 찾습니다. 이 항목이 TDE 암호화 키 이름입니다.

  4. 이전 단계에서 찾은 항목의 세부 정보를 확인합니다.

    $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Oracle Secret Store Tool : Version 12.2.0.1.0 Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. Enter wallet password: ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==

    결과를 보려면 wallet 암호를 입력합니다.

    여기서는 '='의 오른쪽에 있는 값이 TDE 암호입니다.

  5. securityDbEncryptionName 추가 연결 속성을 설정하여 Oracle 소스 엔드포인트의 TDE 암호화 키 이름을 지정합니다.

    securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  6. 콘솔에서 이 키에 연결된 TDE 암호를 Oracle 소스 암호 값의 일부로 제공합니다. TDE 암호 값으로 끝나는 쉼표로 구분된 암호 값의 형식을 지정하려면 다음 순서를 사용합니다.

    Oracle_db_password,ASM_Password,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==

    Oracle 데이터베이스 구성에 관계없이 이 순서로 암호 값을 지정합니다. 예를 들어 TDE를 사용하고 있지만 Oracle 데이터베이스가 ASM을 사용하지 않는 경우, 암호 값을 다음과 같은 쉼표로 구분된 순서로 지정합니다.

    Oracle_db_password,,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==

지정한 TDE 자격 증명이 올바르지 않아도 AWS DMS 마이그레이션 작업은 실패하지 않습니다. 하지만 이 작업은 진행 중인 대상 데이터베이스에 대한 복제 변경 사항을 읽거나 적용하지도 않습니다. 작업을 시작한 후에 콘솔 마이그레이션 작업 페이지에서 테이블 통계를 모니터링하여 변경 사항이 복제되었는지 확인하세요.

작업이 실행되는 동안 DBA가 Oracle 데이터베이스의 TDE 보안 인증 정보 값을 변경하면 작업이 실패합니다. 오류 메시지에는 새 TDE 암호화 키 이름이 포함됩니다. 새 값을 지정하고 작업을 다시 시작하려면 이전 절차를 사용하세요.

중요

cp, mv, orapki, mkstore 같은 OS 수준 명령으로 인해 ASM 위치에 저장된 wallet 파일이 손상되므로 Oracle ASM(Automatic Storage Management) 위치에 생성된 TDE wallet을 조작할 수 없습니다. 이 제한은 ASM 위치에 저장된 TDE wallet 파일에만 적용되며, 로컬 OS 디렉터리에 저장된 TDE wallet 파일에는 적용되지 않습니다.

OS 수준 명령으로 ASM에 저장된 TDE wallet을 조작하려면 다음과 같이 로컬 키스토어를 생성하고 ASM 키스토어를 로컬 키스토어에 병합하세요.

  1. 로컬 키스토어를 생성합니다.

    ADMINISTER KEY MANAGEMENT create keystore file system wallet location identified by wallet password;
  2. ASM 키스토어를 로컬 키스토어에 병합합니다.

    ADMINISTER KEY MANAGEMENT merge keystore ASM wallet location identified by wallet password into existing keystore file system wallet location identified by wallet password with backup;

그런 다음 암호화 wallet 항목과 TDE 암호를 나열하려면 로컬 키스토어에 대해 3단계와 4단계를 실행합니다.

Oracle을 원본으로 사용하기 위해 지원되는 압축 방법 AWS DMS

다음 표에는 Oracle 원본 데이터베이스에서 작업할 때 AWS DMS 지원되는 압축 방법이 나와 있습니다. 표에서 볼 수 있듯이 압축 지원은 Oracle 데이터베이스 버전과 DMS가 Oracle을 사용하여 리두 로그에 LogMiner 액세스하도록 구성되었는지 여부에 따라 달라집니다.

버전 기본 OLTP

HCC(Oracle 11g R2 이상부터)

기타
Oracle 10 아니요 N/A N/A 아니요
오라클 11 이상 — 오라클 LogMiner 예 — LogMiner Oracle에서 지원하는 모든 압축 방법.
Oracle 11 이상 – Binary Reader 예 - 자세한 내용은 다음 참고 사항을 참조하세요.
참고

Oracle 소스 엔드포인트가 Binary Reader를 사용하도록 구성된 경우 HCC 압축 방법의 Query Low 수준은 전체 로드 작업에 대해서만 지원됩니다.

Oracle을 원본으로 사용하여 중첩된 테이블을 복제하기 AWS DMS

AWS DMS 중첩된 테이블 또는 정의된 유형인 열을 포함하는 Oracle 테이블의 복제를 지원합니다. 이 기능을 활성화하려면 Oracle 소스 엔드포인트에 다음 추가 연결 속성 설정을 추가합니다.

allowSelectNestedTables=true;

AWS DMS Oracle 중첩 테이블에서 대상 테이블을 고유한 제약 조건 없이 대상의 일반 상위 및 하위 테이블로 생성합니다. 대상에서 올바른 데이터에 액세스하려면 상위 및 하위 테이블을 조인합니다. 이렇게 하려면 먼저 대상 하위 테이블의 NESTED_TABLE_ID 열에 고유하지 않은 인덱스를 수동으로 만듭니다. 그런 다음 조인 ON 절의 NESTED_TABLE_ID 열을 자식 테이블 이름에 해당하는 상위 열과 함께 사용할 수 있습니다. 또한 이러한 인덱스를 생성하면 에서 대상 하위 테이블 데이터를 업데이트하거나 삭제할 때 성능이 향상됩니다. AWS DMS예시는 대상의 상위 및 하위 테이블에 대한 조인 예단원을 참조하세요.

전체 로드가 완료되면 작업을 중지하도록 구성하는 것이 좋습니다. 그런 다음 대상의 복제된 모든 하위 테이블에 대해 고유하지 않은 인덱스를 만들고 작업을 재개합니다.

캡처된 중첩 테이블이 기존 상위 테이블에 추가되는 경우 (캡처되거나 캡처되지 않음) 는 해당 테이블을 올바르게 AWS DMS 처리합니다. 그러나 해당 대상 테이블에 대한 고유하지 않은 인덱스는 생성되지 않습니다. 이 경우 대상 하위 테이블이 매우 커지면 성능이 영향을 받을 수 있습니다. 이런 경우에는 작업을 중지하고 인덱스를 만든 다음 작업을 재개하는 것이 좋습니다.

중첩 테이블이 대상에 복제된 후 DBA가 상위 및 해당 하위 테이블에 대한 조인을 실행하여 데이터를 병합하도록 합니다.

Oracle 중첩 테이블을 소스로 복제하기 위한 사전 요구 사항

복제된 모든 중첩 테이블의 상위 테이블을 복제해야 합니다. 상위 테이블 (중첩된 테이블 열을 포함하는 테이블) 과 하위 (즉, 중첩된) 테이블을 모두 테이블 매핑에 포함하십시오 AWS DMS .

소스로 지원되는 Oracle 중첩 테이블 유형

AWS DMS 다음과 같은 Oracle 중첩 테이블 유형을 원본으로 지원합니다.

  • 데이터 유형

  • 사용자 정의 객체

AWS DMS 가 Oracle 중첩 테이블을 소스로 지원하는 경우 제한 사항

AWS DMS Oracle 중첩 테이블을 원본으로 지원하는 데에는 다음과 같은 제한이 있습니다.

  • AWS DMS 한 수준의 테이블 중첩만 지원합니다.

  • AWS DMS 테이블 매핑은 부모 테이블과 하위 테이블 또는 테이블이 모두 복제 대상으로 선택되었는지 확인하지 않습니다. 즉, 하위 테이블이 없는 상위 테이블 또는 상위 테이블이 없는 하위 테이블을 선택할 수 있습니다.

AWS DMS 가 Oracle 중첩 테이블을 소스로 복제하는 방법

AWS DMS 다음과 같이 상위 테이블과 중첩 테이블을 대상에 복제합니다.

  • AWS DMS 원본과 동일한 부모 테이블을 생성합니다. 그런 다음 상위 테이블의 중첩 열을 RAW(16)로 정의하고 상위 테이블의 중첩 테이블에 대한 참조를 해당 NESTED_TABLE_ID 열에 포함합니다.

  • AWS DMS 는 중첩된 원본과 동일하지만 이름이 NESTED_TABLE_ID 추가된 추가 열을 포함하는 하위 테이블을 만듭니다. 이 열은 해당 상위 중첩 열과 동일한 유형 및 값을 가지며 동일한 의미를 갖습니다.

대상의 상위 및 하위 테이블에 대한 조인 예

상위 테이블을 병합하려면 다음 예제와 같이 상위 테이블과 하위 테이블 간에 조인을 실행합니다.

  1. Type 테이블을 만듭니다.

    CREATE OR REPLACE TYPE NESTED_TEST_T AS TABLE OF VARCHAR(50);
  2. 앞서 정의한 유형 NESTED_TEST_T의 열을 사용하여 상위 테이블을 만듭니다.

    CREATE TABLE NESTED_PARENT_TEST (ID NUMBER(10,0) PRIMARY KEY, NAME NESTED_TEST_T) NESTED TABLE NAME STORE AS NAME_KEY;
  3. CHILD.NESTED_TABLE_IDPARENT.NAME과 일치하는 NAME_KEY 하위 테이블과의 조인을 사용하여 테이블 NESTED_PARENT_TEST를 병합합니다.

    SELECT … FROM NESTED_PARENT_TEST PARENT, NAME_KEY CHILD WHERE CHILD.NESTED_ TABLE_ID = PARENT.NAME;

Oracle을 소스로 사용하는 경우 Oracle ASM에 REDO를 저장합니다. AWS DMS

REDO가 많이 생성되는 Oracle 소스의 경우, Oracle ASM에 REDO를 저장하면 특히 RAC 구성에서 성능이 향상될 수 있습니다. ASM REDO 읽기를 모든 ASM 노드에 분산하도록 DMS를 구성할 수 있기 때문입니다.

이 구성을 활용하려면 asmServer 연결 속성을 사용하세요. 예를 들어 다음 연결 문자열은 DMS REDO 읽기를 ASM 노드 3개에 분산합니다.

asmServer=(DESCRIPTION=(CONNECT_TIMEOUT=8)(ENABLE=BROKEN)(LOAD_BALANCE=ON)(FAILOVER=ON) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node1_ip_address)(PORT=asm_node1_port_number)) (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node2_ip_address)(PORT=asm_node2_port_number)) (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node3_ip_address)(PORT=asm_node3_port_number))) (CONNECT_DATA=(SERVICE_NAME=+ASM)))

NFS를 사용하여 Oracle REDO를 저장하는 경우, 해당 DNFS(Direct NFS) 클라이언트 패치, 특히 Oracle 버그 25224242를 해결하는 모든 패치를 적용해야 합니다. 자세한 내용은 Direct NFS 클라이언트 관련 패치에 관한 다음 Oracle 간행물, Recommended Patches for Direct NFS Client를 참조하세요.

또한 NFS 읽기 성능을 향상시키려면 다음 예와 같이 NFS 볼륨의 fstab에서 rsizewsize의 값을 늘리는 것이 좋습니다.

NAS_name_here:/ora_DATA1_archive /u09/oradata/DATA1 nfs rw,bg,hard,nointr,tcp,nfsvers=3,_netdev, timeo=600,rsize=262144,wsize=262144

또한 다음과 같이 tcp-max-xfer-size 값을 조정합니다.

vserver nfs modify -vserver vserver -tcp-max-xfer-size 262144

Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS

추가 연결 속성을 사용하는 것과 비슷하게 엔드포인트 설정을 사용하여 Oracle 소스 데이터베이스를 구성할 수 있습니다. AWS DMS 콘솔을 사용하거나 의 create-endpoint 명령을 --oracle-settings '{"EndpointSetting": "value", ...}' JSON 구문으로 사용하여 소스 엔드포인트를 생성할 때 설정을 지정합니다. AWS CLI

Oracle을 소스로 하여 사용할 수 있는 엔드포인트 설정이 다음 테이블에 나와 있습니다.

명칭 설명
AccessAlternateDirectly

Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 false로 설정합니다. 그러면 DMS 인스턴스가 직접 파일 액세스를 사용하여 지정된 경로 접두사 교체를 통해 다시 실행 로그에 액세스하지 않습니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.

기본값: true

유효값: true/false

예제: --oracle-settings '{"AccessAlternateDirectly": false}'

AdditionalArchivedLogDestId

프라이머리-스탠바이 설정에서 ArchivedLogDestId로 이 속성을 설정합니다. 이 설정은 Oracle Data Guard 데이터베이스가 소스로 사용될 때 전환에 유용합니다. 이 경우 AWS DMS 변경 내용을 읽으려면 아카이브 리두 로그를 가져올 대상을 알아야 합니다. 이것은 전환 후에 이전 프라이머리가 이제는 대기 인스턴스이기 때문입니다.

Oracle RESETLOGS 옵션을 사용하여 데이터베이스를 열 수 있지만 AWS DMS 필요한 RESETLOGS 경우가 아니면 사용하지 마십시오. RESETLOGS에 대한 자세한 내용을 알아보려면 Oracle® Database Backup and Recovery User's GuideRMAN Data Repair Concepts를 참조하세요.

유효한 값: 아카이브 대상 ID

예제: --oracle-settings '{"AdditionalArchivedLogDestId": 2}'

AddSupplementalLogging

이 속성을 설정하면 Oracle 데이터베이스의 테이블 수준 보충 로깅을 설정할 수 있습니다. 이 속성은 테이블 메타데이터에 따라 마이그레이션 작업을 위해 선택한 모든 테이블에서 다음 중 하나를 활성화합니다.

  • PRIMARY KEY COLUMNS 보충 로깅

  • UNIQUE KEY COLUMNS 보충 로깅

  • ALL COLUMNS 보충 로깅

기본값: false

유효값: true/false

예제: --oracle-settings '{"AddSupplementalLogging": false}'

참고

이 옵션을 사용할 경우, 앞에서 설명한 대로 데이터베이스 수준 보충 로깅을 계속 활성화해야 합니다.

AllowSelectNestedTables

이 속성을 true로 설정하면 중첩 테이블 또는 정의된 유형인 열을 포함하는 Oracle 테이블의 복제를 활성화합니다. 자세한 정보는 Oracle을 원본으로 사용하여 중첩된 테이블을 복제하기 AWS DMS을 참조하세요.

기본값: false

유효값: true/false

예제: --oracle-settings '{"AllowSelectNestedTables": true}'

ArchivedLogDestId

보관된 다시 실행 로그의 대상 ID를 지정합니다. 이 값은 v$archived_log 보기의 dest_id 열의 숫자와 같아야 합니다. 추가 다시 실행 로그 대상으로 작업하는 경우, AdditionalArchivedLogDestId 속성을 사용하여 추가 대상 ID를 지정하는 것이 좋습니다. 그러면 시작 단계부터 올바른 로그에 액세스하도록 보장하여 성능이 개선됩니다.

기본값: 1

유효한 값: 숫자

예제: --oracle-settings '{"ArchivedLogDestId": 1}'

ArchivedLogsOnly

이 필드를 Y로 설정하면 아카이브된 리두 AWS DMS 로그에만 액세스합니다. 보관된 리두 로그를 Oracle ASM에만 저장하는 경우 AWS DMS 사용자 계정에 ASM 권한을 부여해야 합니다.

기본값: N

유효한 값: Y/N

예제: --oracle-settings '{"ArchivedLogsOnly": Y}'

asmUsePLSQLArray(ECA만 해당)

를 사용하여 소스 변경 내용을 캡처할 때는 이 추가 연결 속성 (ECA) 을 사용하십시오. BinaryReader 이 설정을 통해 DMS는 parallelASMReadThread 속성을 사용하여 스레드 수를 제어하면서 단일 읽기 스레드당 ASM 수준에서 50개의 읽기를 버퍼링할 수 있습니다. 이 속성을 설정하면 AWS DMS 바이너리 리더는 익명 PL/SQL 블록을 사용하여 리두 데이터를 캡처하고 이를 대용량 버퍼로 복제 인스턴스에 다시 보냅니다. 이렇게 하면 소스로의 왕복 횟수가 줄어듭니다. 이렇게 하면 소스 캡처 성능이 크게 향상될 수 있지만 ASM 인스턴스의 PGA 메모리 사용량이 증가합니다. 메모리 대상이 충분하지 않을 경우, 안정성 문제가 발생할 수 있습니다. 다음 수식을 사용하여 단일 DMS 작업의 총 ASM 인스턴스 PGA 메모리 사용량을 추정할 수 있습니다. number_of_redo_threads * parallelASMReadThreads * 7 MB

기본값: false

유효값: true/false

ECA 예제: asmUsePLSQLArray=true;

ConvertTimestampWithZoneToUTC

'TIMESTAMP WITH TIME ZONE' 및 'TIMESTAMP WITH LOCAL TIME ZONE' 열의 타임스탬프 값을 UTC로 변환하려면 이 속성을 true로 설정합니다. 기본적으로 이 속성의 값은 'false'이며, 데이터는 소스 데이터베이스 시간대를 사용하여 복제됩니다.

기본값: false

유효값: true/false

예제: --oracle-settings '{"ConvertTimestampWithZoneToUTC": true}'

EnableHomogenousPartitionOps

Oracle 동종 마이그레이션을 위한 Oracle 파티션 및 하위 파티션 DDL 작업의 복제를 활성화하려면 이 속성을 true로 설정합니다.

참고로 이 기능 및 개선 사항은 버전 3.4.7에 도입되었습니다. AWS DMS

기본값: false

유효값: true/false

예제: --oracle-settings '{"EnableHomogenousPartitionOps": true}'

EnableHomogenousTablespace

동종 테이블스페이스 복제를 활성화하고 대상의 동일한 테이블스페이스 아래에 기존 테이블이나 인덱스를 생성하려면 이 속성을 설정합니다.

기본값: false

유효값: true/false

예제: --oracle-settings '{"EnableHomogenousTablespace": true}'

EscapeCharacter

이 속성을 이스케이프 문자로 설정합니다. 이 이스케이프 문자를 사용하면 단일 와일드카드 문자가 테이블 매핑 표현식에서 일반 문자처럼 동작하게 할 수 있습니다. 자세한 정보는 테이블 매핑의 와일드카드을 참조하세요.

기본값: Null

유효한 값: 와일드카드 문자를 제외한 모든 문자

예제: --oracle-settings '{"EscapeCharacter": "#"}'

참고

escapeCharacter는 테이블 이름에만 사용할 수 있습니다. 스키마 이름이나 열 이름에서 문자를 이스케이프 처리하지 않습니다.

ExposeViews

이 속성은 뷰에서 데이터를 한 번 끌어오는 데 사용하세요. 지속적 복제에는 사용할 수 없습니다. 뷰에서 데이터를 추출하면 뷰가 대상 스키마에서 테이블로 표시됩니다.

기본값: false

유효값: true/false

예제: --oracle-settings '{"ExposeViews": true}'

ExtraArchivedLogDestIds

하나 이상의 아카이브된 다시 실행 로그에 대한 하나 이상의 대상 ID를 지정합니다. 이 ID는 v$archived_log 뷰에서 dest_id 열의 값입니다. primary-to-single 설치 또는 설치 ArchivedLogDestId 시 추가 연결 속성과 함께 이 설정을 사용하십시오. primary-to-multiple-standby

이 설정은 Oracle Data Guard 데이터베이스를 소스로 사용할 때 전환에 유용합니다. 이 경우 변경 내용을 읽기 위해 아카이브 리두 로그를 가져올 대상에 대한 정보가 AWS DMS 필요합니다. AWS DMS 전환 후에는 이전 기본 인스턴스가 대기 인스턴스가 되기 때문에 이 정보가 필요합니다.

유효한 값: 아카이브 대상 ID

예제: --oracle-settings '{"ExtraArchivedLogDestIds": 1}'

FailTasksOnLobTruncation

true로 설정할 경우 LOB 열의 실제 크기가 지정된 LobMaxSize보다 큰 경우 작업이 실패합니다.

작업이 제한된 LOB 모드로 설정되어 있고 이 옵션이 true로 설정된 경우, LOB 데이터가 잘리지 않는 대신에 작업이 실패합니다.

기본값: false

유효 값: 불

예제: --oracle-settings '{"FailTasksOnLobTruncation": true}'

filterTransactionsOfUser(ECA만 해당)

을 사용할 때 Oracle에서 데이터를 복제할 때 DMS가 지정된 사용자의 트랜잭션을 무시하도록 하려면 이 추가 연결 속성 (ECA) 을 사용하십시오. LogMiner 쉼표로 구분된 사용자 이름 값을 전달할 수 있지만 값은 모두 대문자여야 합니다.

ECA 예제: filterTransactionsOfUser=USERNAME;

NumberDataTypeScale

숫자 크기를 지정합니다. 스케일을 최대 38로 선택하거나 FLOAT의 경우 -1, VARCHAR의 경우 -2를 선택할 수 있습니다. 기본적으로 NUMBER 데이터 형식은 정밀도 38, 크기 10으로 변환됩니다.

기본값: 10

유효한 값: -2~38(VARCHAR의 경우 -2, FLOAT의 경우 -1)

예제: --oracle-settings '{"NumberDataTypeScale": 12}'

참고

정밀도-스케일 조합, -1(FLOAT) 또는 -2(VARCHAR)를 선택합니다. DMS는 Oracle에서 지원하는 모든 정밀도-스케일 조합을 지원합니다. 정밀도가 39 이상인 경우, -2(VARCHAR)를 선택합니다. Oracle 데이터베이스의 NumberDataTypeScale 설정은 NUMBER 데이터 유형에만 사용됩니다 (명시적 정밀도 및 배율 정의 제외).

OpenTransactionWindow

CDC 전용 작업을 위해 진행 중인 트랜잭션이 있는지 확인할 수 있는 분 단위 기간을 제공합니다.

참고

1 이상으로 설정하면 OpenTransactionWindow DMS는 SCN 값을 타임스탬프 값으로 SCN_TO_TIMESTAMP 변환하는 데 사용합니다. Oracle 데이터베이스의 제한 때문에 너무 오래된 SCN을 CDC 시작점으로 지정하면 SCN_TO_TIMESTAMP가 오류와 함께 실패하고 CDC 전용 작업을 시작할 수 없습니다. ORA-08181

기본값: 0

유효한 값: 0~240 사이의 정수

예제: openTransactionWindow=15;

OraclePathPrefix Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하려면 이 문자열 속성을 필수 값으로 설정하세요. 이 값은 다시 실행 로그에 액세스하는 데 사용되는 기본 Oracle 루트를 지정합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.

기본값: none

유효한 값: /rdsdbdata/db/ORCL_A/

예제: --oracle-settings '{"OraclePathPrefix": "/rdsdbdata/db/ORCL_A/"}'

ParallelASMReadThreads

Oracle ASM(Automatic Storage Management)을 사용하여 변경 데이터 캡처(CDC)를 수행하기 위해 DMS가 구성하는 스레드 수를 변경하려면 이 속성을 설정합니다. 2(기본값) ~ 8(최대값) 사이의 정수 값을 지정할 수 있습니다. 이 속성을 ReadAheadBlocks 속성과 함께 사용합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.

기본값: 2

유효한 값: 2~8 사이의 정수

예제: --oracle-settings '{"ParallelASMReadThreads": 6;}'

ReadAheadBlocks

Oracle ASM(Automatic Storage Management) 및 ASM이 아닌 NAS 스토리지를 사용하여 CDC를 수행하기 위해 DMS가 구성하는 미리 읽기 블록 수를 변경하려면 이 속성을 설정합니다. 1000(기본값) ~ 200,000(최대값) 사이의 정수 값을 지정할 수 있습니다. 이 속성을 ParallelASMReadThreads 속성과 함께 사용합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.

기본값: 1000

유효한 값: 1000~200,000 사이의 정수

예제: --oracle-settings '{"ReadAheadBlocks": 150000}'

ReadTableSpaceName

true로 설정할 경우, 이 속성에서 테이블스페이스 복제를 지원합니다.

기본값: false

유효 값: 불

예제: --oracle-settings '{"ReadTableSpaceName": true}'

ReplacePathPrefix Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 true로 설정합니다. 이렇게 설정하면 DMS 인스턴스가 다시 실행 로그에 액세스하기 위해 지정된 UsePathPrefix 설정을 기본 Oracle 루트로 대체합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.

기본값: false

유효값: true/false

예제: --oracle-settings '{"ReplacePathPrefix": true}'

RetryInterval

시스템이 쿼리를 다시 전송하기까지 대기하는 시간(초)을 지정합니다.

기본값: 5

유효한 값: 1부터 시작하는 숫자

예제: --oracle-settings '{"RetryInterval": 6}'

SecurityDbEncryptionName

Oracle 원본 데이터베이스의 열 및 테이블스페이스의 TDE(Transparent Data Encryption)에 사용되는 키의 이름을 지정합니다. Oracle 소스 엔드포인트에서 이 속성 및 연결된 암호를 설정하는 방법에 대한 자세한 내용은 Oracle을 소스로 사용하기 위해 지원되는 암호화 방법 AWS DMS 단원을 참조하십시오.

기본값: ""

유효값: 문자열

예제: --oracle-settings '{"SecurityDbEncryptionName": "ORACLE.SECURITY.DB.ENCRYPTION.Adg8m2dhkU/0v/m5QUaaNJEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}'

SpatialSdo2GeoJsonFunctionName

PostgreSQL 대상으로 마이그레이션하는 Oracle 버전 12.1 이전 소스의 경우 이 속성을 사용하여 SDO_GEOMETRY를 GEOJSON 형식으로 변환합니다.

기본적으로 사용자 정의 함수를 AWS DMS 호출합니다. SDO2GEOJSON 사용자 정의 함수는 존재하고 사용자가 액세스할 수 있어야 합니다. AWS DMS 또는 SDOGEOJSON의 작업을 모방하는 자체 사용자 정의 함수를 생성하여 SpatialSdo2GeoJsonFunctionName이 대신 호출하도록 설정할 수 있습니다.

기본값: SDO2GEOJSON

유효값: 문자열

예제: --oracle-settings '{"SpatialSdo2GeoJsonFunctionName": "myCustomSDO2GEOJSONFunction"}'

StandbyDelayTime

사용 이 속성을 사용하여 스탠바이 동기화에 대한 시간(분)을 지정합니다. 소스가 Active Data Guard 대기 데이터베이스인 경우, 이 속성을 사용하여 프라이머리 데이터베이스와 대기 데이터베이스 간의 시간 지연을 지정합니다.

AWS DMS에서는 Active Data Guard 대기 인스턴스를 소스로 사용하여 진행 중인 변경 사항을 복제하는 Oracle CDC 작업을 생성할 수 있습니다. 이렇게 하면 프로덕션 단계에 있을 수 있는 활성 데이터베이스에 연결할 필요가 없습니다.

기본값: 0

유효한 값: 숫자

예제: --oracle-settings '{"StandbyDelayTime": 1}'

참고: DMS 3.4.6, 3.4.7 및 그 이상을 사용하는 경우 이 연결 설정의 사용은 선택 사항입니다. DMS 3.4.6 최신 버전과 버전 3.4.7에서 dms_userV_$DATAGUARD_STATSselect 권한이 있어야 DMS가 대기 지연 시간을 계산할 수 있습니다.

UseAlternateFolderForOnline Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 true로 설정합니다. 그러면 DMS 인스턴스가 지정된 접두사 교체를 사용해 모든 온라인 다시 실행 로그에 액세스합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.

기본값: false

유효값: true/false

예제: --oracle-settings '{"UseAlternateFolderForOnline": true}'

UseBfile

Binary Reader 유틸리티를 사용하여 변경 데이터를 캡처하려면 이 속성을 Y로 설정합니다. 이 속성을 Y로 설정하려면 UseLogminerReader를 N으로 설정합니다. Amazon RDS for Oracle을 소스로 하여 Binary Reader를 사용하려면 추가 속성을 설정합니다. 이 설정 및 Oracle Automatic Storage Management(ASM) 사용에 대한 자세한 내용은 CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용 단원을 참조하십시오.

참고: 이 값을 추가 연결 속성(ECA)으로 설정할 때 유효한 값은 'Y'와 'N'입니다. 이 값을 엔드포인트 설정으로 설정할 때 유효한 값은 truefalse입니다.

기본값: N

유효한 값: Y/N(이 값을 ECA로 설정하는 경우), true/false(이 값을 엔드포인트 설정으로 설정하는 경우).

예제: --oracle-settings '{"UseBfile": Y}'

UseLogminerReader

LogMiner 유틸리티를 사용하여 변경 데이터를 캡처하려면 이 속성을 Y로 설정합니다 (기본값). AWS DMS 가 이진 파일에서 다시 실행 로그에 액세스하도록 하려면 이 옵션을 N으로 설정합니다. 이 옵션을 N으로 설정하는 경우, useBfile=Y 설정도 추가하세요. 이 설정 및 Oracle ASM(Automatic Storage Management) 사용에 대한 자세한 내용은 CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용 섹션을 참조하세요.

참고: 이 값을 추가 연결 속성(ECA)으로 설정할 때 유효한 값은 'Y'와 'N'입니다. 이 값을 엔드포인트 설정으로 설정할 때 유효한 값은 truefalse입니다.

기본 값: Y

유효한 값: Y/N(이 값을 ECA로 설정하는 경우), true/false(이 값을 엔드포인트 설정으로 설정하는 경우).

예제: --oracle-settings '{"UseLogminerReader": Y}'

UsePathPrefix Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하려면 이 문자열 속성을 필수 값으로 설정하세요. 이 값은 다시 실행 로그에 액세스하기 위해 기본 Oracle 루트를 대체하는 데 사용되는 경로 접두사를 지정합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.

기본값: none

유효한 값: /rdsdbdata/log/

예제: --oracle-settings '{"UsePathPrefix": "/rdsdbdata/log/"}'

Oracle용 소스 데이터 형식

의 Oracle 엔드포인트는 대부분의 Oracle 데이터 유형을 AWS DMS 지원합니다. 다음 표에는 사용 AWS DMS 시 지원되는 Oracle 소스 데이터 유형과 데이터 유형에 대한 기본 매핑이 나와 있습니다. AWS DMS

참고

LONG 및 LONG RAW 데이터 형식을 제외하고 Oracle 소스에서 Oracle 대상으로 복제(동종 복제)하는 경우, 모든 소스 및 대상 데이터 형식이 동일합니다. 하지만 LONG 데이터 형식은 CLOB에 매핑되고 LONG RAW 데이터 형식은 BLOB에 매핑됩니다.

대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참조하십시오.

AWS DMS 데이터 유형에 대한 자세한 내용은 을 참조하십시오AWS Database Migration Service에서 사용되는 데이터 형식.

Oracle 데이터 형식

AWS DMS 데이터 유형

BINARY_FLOAT

REAL4

BINARY_DOUBLE

REAL8

BINARY

BYTES

FLOAT (P)

정밀도가 24 이하인 경우, REAL4를 사용합니다.

정밀도가 24보다 큰 경우, REAL8을 사용합니다.

NUMBER (P,S)

스케일이 0보다 크면 NUMERIC을 사용합니다.

크기가 0인 경우:

  • 그리고 정밀도가 2 이하인 경우, INT1을 사용합니다.

  • 그리고 정밀도가 2보다 크고 4 이하인 경우, INT2를 사용합니다.

  • 그리고 정밀도가 4보다 크고 9 이하인 경우, INT4를 사용합니다.

  • 그리고 정밀도가 9보다 큰 경우, NUMERIC을 사용합니다.

  • 그리고 정밀도가 크기 이상인 경우, NUMERIC을 사용합니다.

스케일이 0 미만인 경우, REAL8을 사용합니다.

날짜

DATETIME

INTERVAL_YEAR TO MONTH

STRING(간격 year_to_month 표시 포함)

INTERVAL_DAY TO SECOND

STRING(간격 day_to_second 표시 포함)

TIMESTAMP

DATETIME

TIMESTAMP(시간대 사용)

STRING(timestamp_with_timezone 표시 포함)

TIMESTAMP WITH LOCAL TIME ZONE

STRING(timestamp_with_local_ timezone 표시 포함)

CHAR

STRING

VARCHAR2

  • 길이가 4,000바이트를 초과하는 경우의 CLOB

  • 길이가 4,000바이트 이하인 경우의 문자열

NCHAR

WSTRING

NVARCHAR2

  • 길이가 4,000바이트를 초과하는 경우 NCLOB

  • 길이가 4,000바이트 이하인 경우의 문자열

RAW

BYTES

REAL

REAL8

BLOB

BLOB

에서 이 데이터 유형을 사용하려면 특정 AWS DMS작업에 BLOB 데이터 형식을 사용할 수 있도록 설정해야 합니다. AWS DMS 기본 키가 포함된 테이블에서만 BLOB 데이터 유형을 지원합니다.

CLOB

CLOB

에서 이 데이터 유형을 사용하려면 특정 AWS DMS작업에 CLOB 데이터 유형을 사용할 수 있도록 설정해야 합니다. CDC 중에는 기본 키가 포함된 테이블에서만 CLOB 데이터 유형을 AWS DMS 지원합니다.

NCLOB

NCLOB

에서 이 데이터 유형을 사용하려면 특정 AWS DMS작업에 NCLOB 데이터 유형을 사용할 수 있도록 설정해야 합니다. CDC 중에는 기본 키가 포함된 테이블에서만 NCLOB 데이터 유형을 AWS DMS 지원합니다.

LONG

CLOB

LONG 데이터 유형은 일괄 최적화 적용 모드 (CDC 모드) 에서는 지원되지 않습니다. TurboStream

이 데이터 유형을 함께 AWS DMS사용하려면 특정 작업에 LOB를 사용할 수 있도록 설정하세요.

CDC 또는 전체 로드 중에는 기본 키가 있는 테이블에서만 LOB 데이터 유형을 AWS DMS 지원합니다.

또한 LONG 열을 로드하기 위한 전체 LOB 모드를 AWS DMS 지원하지 않습니다. 대신 제한된 LOB 모드를 사용하여 LONG 열을 Oracle 대상으로 마이그레이션할 수 있습니다. 제한된 LOB 모드에서는 64KB보다 긴 LONG 열로 설정한 모든 데이터를 64KB로 AWS DMS 잘라냅니다. 의 LOB 지원에 대한 자세한 내용은 을 참조하십시오. AWS DMSAWS DMS 작업의 소스 데이터베이스 LOB 지원 설정

LONG RAW

BLOB

LONG RAW 데이터 유형은 일괄 최적화 적용 모드 (TurboStream CDC 모드) 에서 지원되지 않습니다.

이 데이터 유형을 함께 AWS DMS사용하려면 특정 작업에 LOB를 사용할 수 있도록 설정하세요.

CDC 또는 전체 로드 중에는 기본 키가 있는 테이블에서만 LOB 데이터 유형을 AWS DMS 지원합니다.

또한 LONG RAW 열을 로드하기 위한 전체 LOB 모드를 AWS DMS 지원하지 않습니다. 대신 제한된 LOB 모드를 사용하여 LONG RAW열을 Oracle 대상으로 마이그레이션할 수 있습니다. 제한된 LOB 모드에서는 64KB보다 긴 LONG RAW 열로 설정한 모든 데이터를 64KB로 AWS DMS 잘라냅니다. 의 LOB 지원에 대한 자세한 내용은 을 참조하십시오. AWS DMSAWS DMS 작업의 소스 데이터베이스 LOB 지원 설정

XMLTYPE

CLOB

SDO_GEOMETRY

BLOB(Oracle에서 Oracle로 마이그레이션하는 경우)

CLOB(Oracle에서 PostgreSQL로 마이그레이션하는 경우)

다음 데이터 형식의 열과 함께 소스로 사용되는 Oracle 테이블은 지원되지 않으며 복제될 수도 없습니다. 이 데이터 형식을 사용하는 열을 복제하면 null 열이 됩니다.

  • BFILE

  • ROWID

  • REF

  • UROWID

  • 사용자 정의 데이터 형식

  • ANYDATA

  • VARRAY

참고

가상 열은 지원되지 않습니다.

Oracle 공간 데이터 형식 마이그레이션

공간 데이터는 공간에서 객체 또는 위치의 지오메트리 정보를 식별합니다. Oracle 데이터베이스에서 공간 객체의 기하학적 설명은 SDO_GEOMETRY 형식 객체에 저장됩니다. 이 객체 내에서 기하학적 설명은 사용자 정의 테이블의 단일 열에 있는 단일 행에 저장됩니다.

AWS DMS Oracle 유형 SDO_GEOMETRY를 오라클 소스에서 오라클 또는 PostgreSQL 타겟으로 마이그레이션하는 것을 지원합니다.

를 사용하여 AWS DMS Oracle 공간 데이터 유형을 마이그레이션할 때는 다음 고려 사항에 유의하십시오.

  • Oracle 대상으로 마이그레이션하는 경우 형식 정보를 포함하는 USER_SDO_GEOM_METADATA 항목을 수동으로 전송해야 합니다.

  • Oracle 소스 엔드포인트에서 PostgreSQL 대상 엔드포인트로 마이그레이션할 때 대상 열을 생성합니다. AWS DMS 이러한 열에는 2D 차원과 SRID(공간 참조 식별자)가 0인 기본 geometry 및 geography 형식 정보가 있습니다. 예를 들면, GEOMETRY, 2, 0입니다.

  • PostgreSQL 대상으로 마이그레이션하는 Oracle 버전 12.1 이전 소스의 경우 SDO2GEOJSON 함수 또는 spatialSdo2GeoJsonFunctionName 추가 연결 속성을 사용하여 SDO_GEOMETRY 객체를 GEOJSON 형식으로 변환합니다. 자세한 정보는 Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS을 참조하세요.

  • AWS DMS 전체 LOB 모드에 대해서만 Oracle 공간 열 마이그레이션을 지원합니다. AWS DMS 제한된 LOB 또는 인라인 LOB 모드를 지원하지 않습니다. LOB 모드에 대한 자세한 내용은 AWS DMS 작업의 소스 데이터베이스 LOB 지원 설정 섹션을 참조하세요.

  • Oracle Spatial Columns 마이그레이션을 위한 전체 LOB AWS DMS 모드만 지원하므로 열 테이블에는 기본 키와 고유 키가 필요합니다. 테이블에 프라이머리 키와 고유 키가 없는 경우 마이그레이션에서 테이블을 건너뜁니다.