기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 구성하십시오.
-
Oracle 소스 데이터베이스에 액세스할 수 있는 적절한 권한을 가진 Oracle 사용자를 생성하십시오. AWS DMS
-
선택한 Oracle 데이터베이스 구성을 준수하는 Oracle 소스 엔드포인트를 생성합니다. full-load-only 작업을 생성하기 위해 추가 구성은 필요하지 않습니다.
-
변경 데이터 캡처를 처리하는 작업 (CDC 전용 또는 전체 로드 및 CDC 작업) 을 생성하려면 Oracle LogMiner 또는 AWS DMS Binary Reader를 선택하여 데이터 변경 사항을 캡처하십시오. LogMiner 또는 바이너리 리더를 선택하면 이후의 일부 권한 및 구성 옵션이 결정됩니다. LogMiner 와 바이너리 리더를 비교하려면 다음 섹션을 참조하십시오.
참고
전체 로드 작업, CDC 전용 작업, 전체 로드 및 CDC 작업에 대한 자세한 내용은 작업 생성을 참조하세요.
Oracle 소스 데이터베이스 및 AWS DMS사용에 대한 자세한 내용은 다음 섹션을 참조하십시오.
주제
- CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용
- 자체 관리형 또는 AWS관리형 Oracle 원본 데이터베이스를 구성하기 위한 워크플로 AWS DMSOracle 소스 데이터베이스 구성
- 자체 관리형 Oracle 데이터베이스를 원본으로 사용 AWS DMS
- AWS-Managed Oracle 데이터베이스를 원본으로 사용하여 AWS DMS
- Oracle을 원본으로 사용할 때의 제한 사항 AWS DMS
- Oracle 엔드포인트용 SSL 지원
- Oracle을 소스로 사용하기 위해 지원되는 암호화 방법 AWS DMS
- Oracle을 원본으로 사용하기 위해 지원되는 압축 방법 AWS DMS
- Oracle을 원본으로 사용하여 중첩된 테이블을 복제하기 AWS DMS
- Oracle을 소스로 사용하는 경우 Oracle ASM에 REDO를 저장합니다. AWS DMS
- Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS
- Oracle용 소스 데이터 형식
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 TOdb_user
; GRANT SELECT ON V_$ARCHIVED_LOG TOdb_user
; GRANT SELECT ON V_$LOG TOdb_user
; GRANT SELECT ON V_$LOGFILE TOdb_user
; GRANT SELECT ON V_$LOGMNR_LOGS TOdb_user
; GRANT SELECT ON V_$LOGMNR_CONTENTS TOdb_user
; GRANT SELECT ON V_$DATABASE TOdb_user
; GRANT SELECT ON V_$THREAD TOdb_user
; GRANT SELECT ON V_$PARAMETER TOdb_user
; GRANT SELECT ON V_$NLS_PARAMETERS TOdb_user
; GRANT SELECT ON V_$TIMEZONE_NAMES TOdb_user
; GRANT SELECT ON V_$TRANSACTION TOdb_user
; GRANT SELECT ON V_$CONTAINERS TOdb_user
; GRANT SELECT ON ALL_INDEXES TOdb_user
; GRANT SELECT ON ALL_OBJECTS TOdb_user
; GRANT SELECT ON ALL_TABLES TOdb_user
; GRANT SELECT ON ALL_USERS TOdb_user
; GRANT SELECT ON ALL_CATALOG TOdb_user
; GRANT SELECT ON ALL_CONSTRAINTS TOdb_user
; GRANT SELECT ON ALL_CONS_COLUMNS TOdb_user
; GRANT SELECT ON ALL_TAB_COLS TOdb_user
; GRANT SELECT ON ALL_IND_COLUMNS TOdb_user
; GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TOdb_user
; GRANT SELECT ON ALL_LOG_GROUPS TOdb_user
; GRANT SELECT ON ALL_TAB_PARTITIONS TOdb_user
; GRANT SELECT ON SYS.DBA_REGISTRY TOdb_user
; GRANT SELECT ON SYS.OBJ$ TOdb_user
; GRANT SELECT ON DBA_TABLESPACES TOdb_user
; GRANT SELECT ON DBA_OBJECTS TOdb_user
; -– Required if the Oracle version is earlier than 11.2.0.3. GRANT SELECT ON SYS.ENC$ TOdb_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 TOdb_user
; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher. GRANT SELECT ON V_$DATAGUARD_STATS TOdb_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 TOdb_user
;
특정 테이블 목록을 사용하는 경우, 복제된 각 테이블에 대해 다음 추가 권한을 부여합니다.
GRANT SELECT on
any-replicated-table
todb_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 todms_user
; GRANT SELECT on v_$version todms_user
; GRANT SELECT on gv_$ASM_DISKGROUP todms_user
; GRANT SELECT on gv_$database todms_user
; GRANT SELECT on dba_db_links todms_user
; GRANT SELECT on gv_$log_History todms_user
; GRANT SELECT on gv_$log todms_user
; GRANT SELECT ON DBA_TYPES TOdb_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의 미결 트랜잭션을 처리하십시오.
-
기본 데이터베이스에
AWSDMS_DBLINK
라는 데이터베이스 링크를 생성합니다.
는 이 데이터베이스 링크를 사용하여 기본 데이터베이스에 연결합니다. 이 데이터베이스 링크는 대기 인스턴스에서 실행되어 기본 데이터베이스에서 실행 중인 열린 트랜잭션을 쿼리합니다. 다음 예를 참조하세요.DMS_USER
CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK CONNECT TO
DMS_USER
IDENTIFIED BYDMS_USER_PASSWORD
USING '(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP
)(PORT=PORT
)) (CONNECT_DATA=(SERVICE_NAME=SID
)) )'; -
다음 예제와 같이
를 사용하여 데이터베이스 링크에 연결되었는지 확인합니다.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
, value
및 description
는 name
의 값을 기준으로 쿼리되는 데이터베이스의 어딘가에 있는 열입니다. 이 쿼리가 오류 없이 실행되면 데이터베이스의 현재 버전을 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
절을 사용하여 프라이머리 키 열을 참조하지 않는 테이블을 업데이트하는 경우, 보충 로깅을 켜야 합니다.
수동으로 보충 로깅을 설정하려면
-
다음 쿼리를 실행하여 데이터베이스에 보충 로깅이 이미 활성화되어 있는지 확인합니다.
SELECT supplemental_log_data_min FROM v$database;
반환된 결과가
YES
또는IMPLICIT
인 경우, 데이터베이스에 보충 로깅이 활성화되어 있습니다.활성화되어 있지 않다면 다음 명령을 실행하여 데이터베이스에 보충 로깅을 활성화합니다.
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-
복제된 각 테이블에 필요한 보충 로깅이 추가되었는지 확인합니다.
다음을 고려하세요.
-
테이블에
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 GROUPLogGroupName
(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
변환의 경우 열A
및B
모두에 보충 로깅을 추가합니다. 그러나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 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 인스턴스를 소스로 구성하려면
-
대기 로그 파일에 액세스하는 데 필요한 추가 권한을 부여합니다.
GRANT SELECT ON v_$standby_log TO
db_user
; -
AWS Management Console 또는 AWS CLI를 사용하여 Oracle Standby의 소스 엔드포인트를 생성합니다. 엔드포인트를 생성할 때 다음과 같은 추가 연결 속성을 지정합니다.
useLogminerReader=N;useBfile=Y;
참고
AWS DMS에서는 추가 연결 속성을 사용하여 리두 로그 대신 아카이브 로그에서 마이그레이션할지 여부를 지정할 수 있습니다. 자세한 정보는 Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS을 참조하세요.
-
아카이브된 로그 대상을 구성합니다.
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 디렉터리를 생성하거나 바꿀 수 없습니다. 하지만 다음 추가 단계 중 하나를 수행할 수 있습니다.
-
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
’; -
추가 아카이브 로그 대상과 해당 대상을 가리키는 Oracle 디렉터리 객체를 생성합니다. 예:
ALTER SYSTEM SET log_archive_dest_3=’LOCATION=
full directory path
’; CREATE DIRECTORY dms_archived_log AS ‘full directory path
’;그런 다음 작업 소스 엔드포인트에 추가 연결 속성을 추가합니다.
archivedLogDestId=3
-
DMS가 사용할 Oracle 디렉터리 객체를 수동으로 사전 생성합니다.
CREATE DIRECTORY
dms_archived_log_20210301
AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/2021_03_01
’; CREATE DIRECTORYdms_archived_log_20210302
AS ‘DB_RECOVERY_FILE_DEST>/SID>/archivelog/2021_03_02
’; ... -
매일 실행되고 필요한 디렉터리를 생성하는 Oracle 스케줄러 작업을 생성합니다.
-
AWS DMS에서 OCI(Oracle Cloud Infrastructure)의 사용자 관리형 데이터베이스를 CDC의 소스로 사용
사용자 관리형 데이터베이스는 가상 머신(VM), 베어 메탈 또는 Exadata 서버에서 만든 Oracle 데이터베이스와 같이 사용자가 구성하고 제어하는 데이터베이스입니다. 또는 OCI(Oracle Cloud Infrastructure)와 같은 전용 인프라에서 실행되고 사용자가 구성하고 제어하는 데이터베이스인 경우도 있습니다. 다음 정보는 AWS DMS에서 OCI의 Oracle 사용자 관리형 데이터베이스를 변경 데이터 캡처(CDC) 소스로 사용할 때 필요한 권한과 구성을 설명합니다.
OCI에서 호스팅하는 사용자 관리형 Oracle 데이터베이스를 변경 데이터 캡처의 소스로 구성하려면
-
OCI의 사용자 관리형 Oracle 소스 데이터베이스에 필요한 사용자 계정 권한을 부여합니다. 자세한 내용은 자체 관리형 Oracle 소스 엔드포인트에 대한 계정 권한을 참조하세요.
-
Binary Reader를 사용하여 다시 실행 로그에 액세스할 때 필요한 계정 권한을 부여합니다. 자세한 내용은 Binary Reader를 사용할 때 필요한 계정 권한을 참조하세요.
-
Oracle ASM(Automatic Storage Management)에서 Binary Reader를 사용할 때 필요한 계정 권한을 추가합니다. 자세한 내용은 Binary Reader를 Oracle ASM과 함께 사용할 때 필요한 추가 계정 권한을 참조하세요.
-
보충 로깅을 설정합니다. 자세한 내용은 보충 로깅 설정을 참조하세요.
-
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_user
같은 모든 파라미터 값에서 대소문자를 구분하는 식별자로 값을 지정하지 않는 한 Oracle은 값이 모두 대문자인 것으로 가정합니다. 예를 들어 any-replicated-table
CREATE USER
또는 myuser
CREATE USER
MYUSER
에서처럼 따옴표를 사용하지 않고
값을 생성한다고 가정해 보겠습니다. 이 경우 Oracle은 값을 모두 대문자(db_user
MYUSER
)로 식별하고 저장합니다. CREATE USER "MyUser"
또는 CREATE USER 'MyUser'
에서처럼 따옴표를 사용하면 Oracle은 사용자가 지정한 대소문자를 구별하는 값(MyUser
)을 식별하고 저장합니다.
GRANT CREATE SESSION to
db_user
; GRANT SELECT ANY TRANSACTION todb_user
; GRANT SELECT on DBA_TABLESPACES todb_user
; GRANT SELECT ONany-replicated-table
todb_user
; GRANT EXECUTE on rdsadmin.rdsadmin_util todb_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
객체에 대한 SELECT
및 EXECUTE
권한을 부여합니다. 자세한 내용은 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의 미결 트랜잭션을 처리하십시오.
-
기본 데이터베이스에
AWSDMS_DBLINK
라는 데이터베이스 링크를 생성합니다.
는 이 데이터베이스 링크를 사용하여 기본 데이터베이스에 연결합니다. 이 데이터베이스 링크는 대기 인스턴스에서 실행되어 기본 데이터베이스에서 실행 중인 열린 트랜잭션을 쿼리합니다. 다음 예를 참조하세요.DMS_USER
CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK CONNECT TO
DMS_USER
IDENTIFIED BYDMS_USER_PASSWORD
USING '(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP
)(PORT=PORT
)) (CONNECT_DATA=(SERVICE_NAME=SID
)) )'; -
다음 예제와 같이
를 사용하여 데이터베이스 링크에 연결되었는지 확인합니다.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
보관을 설정하려면
-
rdsadmin.rdsadmin_util.set_configuration
명령을 실행하여 보관을 설정합니다.예를 들어 보관된 다시 실행 로그를 24시간 동안 유지하려면 다음 명령을 실행합니다.
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24); commit;
참고
변경 사항을 적용하려면 커밋해야 합니다.
-
지정된 보존 기간 동안 보관된 다시 실행 로그를 위한 스토리지 공간이 충분한지 확인해야 합니다. 예를 들어 보존 기간이 24시간인 경우, 일반적인 트랜잭션 처리 시간 동안 보관된 다시 실행 로그의 누적된 총 크기를 계산하고 그 합계에 24를 곱합니다. 계산된 이 24시간 합계를 사용 가능한 스토리지 공간과 비교하여 전체 24시간 트랜잭션 처리를 처리할 수 있는 충분한 스토리지 공간이 있는지 결정합니다.
보충 로깅을 설정하려면
-
데이터베이스 수준에서 보충 로깅을 활성화하려면 다음 명령을 실행합니다.
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
-
다음 명령을 실행하여 프라이머리 키 보충 로깅을 활성화합니다.
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
-
(선택 사항) 테이블 수준에서 키 수준 보충 로깅을 활성화합니다.
키 수준 보충 로깅을 활성화하면 소스 데이터베이스에 약간의 오버헤드가 발생합니다. 따라서 테이블 하위 집합만을 마이그레이션할 경우, 테이블 수준에서 키 수준 보충 로깅을 활성화하는 것이 좋습니다. 테이블 수준에서 키 수준 보충 로깅을 활성화하려면 다음 명령을 실행합니다.
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를 구성하려면
-
Amazon RDS for Oracle 소스 데이터베이스에 마스터 사용자로 로그인하고 다음 저장 프로시저를 실행하여 서버 수준 디렉터리를 생성합니다.
exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
-
Oracle 소스 엔드포인트에 액세스하는 데 사용되는 Oracle 사용자 계정에 다음 권한을 부여합니다.
GRANT READ ON DIRECTORY ONLINELOG_DIR TO
db_user
; GRANT READ ON DIRECTORY ARCHIVELOG_DIR TOdb_user
; -
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를 소스로 구성하려면
-
RDS for Oracle 기본 인스턴스에 마스터 사용자로 로그인합니다.
-
Amazon RDS 사용 설명서에 설명된 대로 다음 저장 프로시저를 실행하여 서버 수준 디렉터리를 생성합니다.
exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
-
2단계에서 생성한 디렉터리를 식별합니다.
SELECT directory_name, directory_path FROM all_directories WHERE directory_name LIKE ( 'ARCHIVELOG_DIR_%' ) OR directory_name LIKE ( 'ONLINELOG_DIR_%' )
예를 들어 위 코드는 다음과 같은 디렉터리 목록을 표시합니다.
-
Oracle Standby에 액세스하는 데 사용되는 Oracle 사용자 계정에 이전 디렉터리에 대한
Read
권한을 부여합니다.GRANT READ ON DIRECTORY ARCHIVELOG_DIR_A TO
db_user
; GRANT READ ON DIRECTORY ARCHIVELOG_DIR_B TOdb_user
; GRANT READ ON DIRECTORY ONLINELOG_DIR_A TOdb_user
; GRANT READ ON DIRECTORY ONLINELOG_DIR_B TOdb_user
; -
기본 인스턴스에서 아카이브 로그 스위치를 수행합니다. 이렇게 하면
ALL_DIRECTORIES
에 대한 변경 사항이 Oracle Standby에도 포팅되도록 할 수 있습니다. -
Oracle Standby에서
ALL_DIRECTORIES
쿼리를 실행하여 변경 사항이 적용되었는지 확인합니다. -
AWS DMS 관리 콘솔 또는 AWS Command Line Interface (AWS CLI) 를 사용하여 Oracle Standby의 소스 엔드포인트를 생성합니다. 엔드포인트를 생성할 때 다음과 같은 추가 연결 속성을 지정합니다.
useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
-
엔드포인트를 생성한 후 콘솔의 엔드포인트 생성 페이지에서 엔드포인트 연결 테스트 또는 AWS CLI
test-connection
명령을 사용하여 연결이 설정되었는지 확인합니다.
Oracle을 원본으로 사용할 때의 제한 사항 AWS DMS
AWS DMS용 소스로 Oracle 데이터베이스 사용 시 다음 제한 사항이 적용됩니다.
-
AWS DMS AWS DMS 버전 3.5.0 이상에서 Oracle 확장 데이터 유형을 지원합니다.
-
AWS DMS 긴 객체 이름 (30바이트 초과) 은 지원하지 않습니다.
-
AWS DMS 함수 기반 인덱스는 지원하지 않습니다.
-
보충 로깅을 관리하고 임의의 열에서 변환을 수행하는 경우, 모든 필드 및 열에 대해 보충 로깅이 활성화되어 있어야 합니다. 보충 로깅 설정에 대한 자세한 내용은 다음 주제를 참조하세요.
-
자체 관리형 Oracle 소스 데이터베이스는 보충 로깅 설정 섹션을 참조하세요.
-
AWS관리형 Oracle 소스 데이터베이스의 경우 을 참조하십시오. AWS관리형 Oracle 소스 구성 대상 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
DEFAULTdefault_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
작업의 경우 추가된 데이터에 대한 업데이트 및 삭제로 인해 “적용된 행 없음” 경고가 발생할 수 있습니다. -
DROP
및TRUNCATE
작업의 경우 새 삽입은 “중복” 오류를 발생시킬 수 있습니다. -
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 오라클 엔드포인트는 none
및 verify-ca
SSL 모드에 대해 SSL V3을 지원합니다. Oracle 엔드포인트에서 SSL을 사용하려면, .pem 인증서 파일이 아닌 엔드포인트용 Oracle Wallet을 업로드합니다.
Oracle SSL용 기존 인증서 사용
기존 Oracle 클라이언트 설치를 사용하여 CA 인증서 파일에서 Oracle wallet 파일을 생성하려면, 다음 단계를 진행합니다.
AWS DMS에서 Oracle SSL에 대해 기존 Oracle 클라이언트 설치를 사용하려면
-
다음 명령을 실행하여
ORACLE_HOME
시스템 변수를dbhome_1
디렉터리 위치로 설정합니다.prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1
-
LD_LIBRARY_PATH
시스템 변수에$ORACLE_HOME/lib
을 추가합니다.prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
-
$ORACLE_HOME/ssl_wallet
에 Oracle Wallet을 위한 디렉터리를 만듭니다.prompt>mkdir $ORACLE_HOME/ssl_wallet
-
CA 인증서
.pem
파일을ssl_wallet
디렉터리에 배치합니다. Amazon RDS를 사용하는 경우, Amazon RDS에서 호스팅되는rds-ca-2015-root.pem
루트 CA 인증서 파일을 다운로드할 수 있습니다. 이 파일 다운로드에 자세한 내용은 Amazon RDS 사용 설명서에서 SSL/TLS를 사용하여 DB 인스턴스에 대한 연결 암호화를 참조하세요. -
다음 명령을 실행하여 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
-
자체 서명 인증서를 사용할 디렉터리를 생성합니다.
mkdir -p /u01/app/oracle/self_signed_cert
-
이전 단계에서 생성한 디렉터리로 변경합니다.
cd /u01/app/oracle/self_signed_cert
-
루트 키를 생성합니다.
openssl genrsa -out self-rootCA.key 2048
-
이전 단계에서 생성한 루트 키를 루트 인증서를 자체 서명합니다.
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
-
-
Oracle 데이터베이스용 Oracle wallet 디렉터리를 만듭니다.
mkdir -p /u01/app/oracle/wallet
-
새 Oracle wallet을 만듭니다.
orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd oracle123 -auto_login_local
-
루트 인증서를 Oracle wallet에 추가합니다.
orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -trusted_cert -cert /u01/app/oracle/self_signed_cert/self-rootCA.pem
-
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
-
ORAPKI 유틸리티를 사용한 인증서 서명 요청(CSR)을 생성합니다.
orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -dn "CN=aws" -keysize 2048 -sign_alg sha256
-
다음 명령을 실행합니다.
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
-
'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
-
-
인증서 서명을 가져옵니다.
openssl req -noout -text -in certdms.csr | grep -i signature
이 게시물의 서명 키는
sha256WithRSAEncryption
입니다. -
다음 명령을 실행하여 인증서(
.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
-
인증서를 wallet에 추가합니다.
orapki wallet add -wallet /u01/app/oracle/wallet -pwd oracle123 -user_cert -cert certdms.crt
-
wallet을 봅니다. 두 항목이 있어야 합니다. 다음 코드를 확인합니다.
orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
-
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)
-
Oracle 리스너를 중지합니다.
lsnrctl stop
-
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)) ) ) -
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>) ) )
-
Oracle 리스너를 다시 시작합니다.
lsnrctl start
-
Oracle 리스너 상태를 표시합니다.
lsnrctl status
-
sqlplus 및 SSL tnsnames 항목을 사용하여 로컬 호스트에서 데이터베이스와의 SSL 연결을 테스트합니다.
sqlplus -L
ORACLE_USER
@SID
_ssl -
SSL을 사용하여 잘 연결되었는지 확인합니다.
SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') -------------------------------------------------------------------------------- tcps
-
자체 서명 인증서를 사용하여 디렉터리를 이 디렉터리로 변경합니다.
cd /u01/app/oracle/self_signed_cert
-
사용할 새 클라이언트 Oracle AWS DMS 지갑을 생성하십시오.
orapki wallet create -wallet ./ -auto_login_only
-
Oracle wallet에 자체 서명 루트 인증서를 추가합니다.
orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
-
사용할 Oracle 지갑의 내용을 나열하십시오. AWS DMS 이 목록에는 자체 서명 루트 인증서가 포함되어야 합니다.
orapki wallet display -wallet ./
이 명령의 출력은 다음과 같습니다.
Trusted Certificates: Subject: CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
-
방금 생성한 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 암호화를 위한 암호화 키와 암호를 식별하고 지정하려면
-
다음 쿼리를 실행하여 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 위치입니다. -
이 값을 반환하는 옵션에 따라 다음 암호화 옵션 중 하나를 사용하여 마스터 키 ID를 가져옵니다.
-
테이블 또는 열 수준 암호화의 경우 다음 쿼리를 실행합니다.
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...
)는 값의 일부가 아닙니다. -
테이블스페이스 수준 암호화의 경우, 다음 쿼리를 실행합니다.
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단계 모두 값을 반환하는 경우, 항상 동일합니다.후행
'='
문자는 값의 일부가 아닙니다.
-
-
명령줄을 사용하여 소스 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 암호화 키 이름입니다. -
이전 단계에서 찾은 항목의 세부 정보를 확인합니다.
$ 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 암호입니다. -
securityDbEncryptionName
추가 연결 속성을 설정하여 Oracle 소스 엔드포인트의 TDE 암호화 키 이름을 지정합니다.securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-
콘솔에서 이 키에 연결된 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 키스토어를 로컬 키스토어에 병합하세요.
-
로컬 키스토어를 생성합니다.
ADMINISTER KEY MANAGEMENT create keystore
file system wallet location
identified bywallet password
; -
ASM 키스토어를 로컬 키스토어에 병합합니다.
ADMINISTER KEY MANAGEMENT merge keystore
ASM wallet location
identified bywallet password
into existing keystorefile system wallet location
identified bywallet 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
추가된 추가 열을 포함하는 하위 테이블을 만듭니다. 이 열은 해당 상위 중첩 열과 동일한 유형 및 값을 가지며 동일한 의미를 갖습니다.
대상의 상위 및 하위 테이블에 대한 조인 예
상위 테이블을 병합하려면 다음 예제와 같이 상위 테이블과 하위 테이블 간에 조인을 실행합니다.
-
Type
테이블을 만듭니다.CREATE OR REPLACE TYPE NESTED_TEST_T AS TABLE OF VARCHAR(50);
-
앞서 정의한 유형
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;
-
CHILD.NESTED_TABLE_ID
가PARENT.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
에서 rsize
및 wsize
의 값을 늘리는 것이 좋습니다.
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 '{"
JSON 구문으로 사용하여 소스 엔드포인트를 생성할 때 설정을 지정합니다. AWS CLI EndpointSetting"
:
"value"
, ...
}'
Oracle을 소스로 하여 사용할 수 있는 엔드포인트 설정이 다음 테이블에 나와 있습니다.
명칭 | 설명 |
---|---|
AccessAlternateDirectly |
Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 false로 설정합니다. 그러면 DMS 인스턴스가 직접 파일 액세스를 사용하여 지정된 경로 접두사 교체를 통해 다시 실행 로그에 액세스하지 않습니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요. 기본값: true 유효값: true/false 예제: |
|
프라이머리-스탠바이 설정에서 Oracle 유효한 값: 아카이브 대상 ID 예제: |
|
이 속성을 설정하면 Oracle 데이터베이스의 테이블 수준 보충 로깅을 설정할 수 있습니다. 이 속성은 테이블 메타데이터에 따라 마이그레이션 작업을 위해 선택한 모든 테이블에서 다음 중 하나를 활성화합니다.
기본값: false 유효값: true/false 예제: 참고이 옵션을 사용할 경우, 앞에서 설명한 대로 데이터베이스 수준 보충 로깅을 계속 활성화해야 합니다. |
|
이 속성을 true로 설정하면 중첩 테이블 또는 정의된 유형인 열을 포함하는 Oracle 테이블의 복제를 활성화합니다. 자세한 정보는 Oracle을 원본으로 사용하여 중첩된 테이블을 복제하기 AWS DMS을 참조하세요. 기본값: false 유효값: true/false 예제: |
|
보관된 다시 실행 로그의 대상 ID를 지정합니다. 이 값은 v$archived_log 보기의 dest_id 열의 숫자와 같아야 합니다. 추가 다시 실행 로그 대상으로 작업하는 경우, 기본값: 1 유효한 값: 숫자 예제: |
|
이 필드를 Y로 설정하면 아카이브된 리두 AWS DMS 로그에만 액세스합니다. 보관된 리두 로그를 Oracle ASM에만 저장하는 경우 AWS DMS 사용자 계정에 ASM 권한을 부여해야 합니다. 기본값: N 유효한 값: Y/N 예제: |
|
를 사용하여 소스 변경 내용을 캡처할 때는 이 추가 연결 속성 (ECA) 을 사용하십시오. BinaryReader 이 설정을 통해 DMS는 기본값: false 유효값: true/false ECA 예제: |
|
'TIMESTAMP WITH TIME ZONE' 및 'TIMESTAMP WITH LOCAL TIME ZONE' 열의 타임스탬프 값을 UTC로 변환하려면 이 속성을 기본값: false 유효값: true/false 예제: |
|
Oracle 동종 마이그레이션을 위한 Oracle 파티션 및 하위 파티션 DDL 작업의 복제를 활성화하려면 이 속성을 참고로 이 기능 및 개선 사항은 버전 3.4.7에 도입되었습니다. AWS DMS 기본값: false 유효값: true/false 예제: |
|
동종 테이블스페이스 복제를 활성화하고 대상의 동일한 테이블스페이스 아래에 기존 테이블이나 인덱스를 생성하려면 이 속성을 설정합니다. 기본값: false 유효값: true/false 예제: |
|
이 속성을 이스케이프 문자로 설정합니다. 이 이스케이프 문자를 사용하면 단일 와일드카드 문자가 테이블 매핑 표현식에서 일반 문자처럼 동작하게 할 수 있습니다. 자세한 정보는 테이블 매핑의 와일드카드을 참조하세요. 기본값: Null 유효한 값: 와일드카드 문자를 제외한 모든 문자 예제: 참고
|
|
이 속성은 뷰에서 데이터를 한 번 끌어오는 데 사용하세요. 지속적 복제에는 사용할 수 없습니다. 뷰에서 데이터를 추출하면 뷰가 대상 스키마에서 테이블로 표시됩니다. 기본값: false 유효값: true/false 예제: |
|
하나 이상의 아카이브된 다시 실행 로그에 대한 하나 이상의 대상 ID를 지정합니다. 이 ID는 v$archived_log 뷰에서 dest_id 열의 값입니다. primary-to-single 설치 또는 설치 ArchivedLogDestId 시 추가 연결 속성과 함께 이 설정을 사용하십시오. primary-to-multiple-standby 이 설정은 Oracle Data Guard 데이터베이스를 소스로 사용할 때 전환에 유용합니다. 이 경우 변경 내용을 읽기 위해 아카이브 리두 로그를 가져올 대상에 대한 정보가 AWS DMS 필요합니다. AWS DMS 전환 후에는 이전 기본 인스턴스가 대기 인스턴스가 되기 때문에 이 정보가 필요합니다. 유효한 값: 아카이브 대상 ID 예제: |
|
작업이 제한된 LOB 모드로 설정되어 있고 이 옵션이 기본값: false 유효 값: 불 예제: |
|
을 사용할 때 Oracle에서 데이터를 복제할 때 DMS가 지정된 사용자의 트랜잭션을 무시하도록 하려면 이 추가 연결 속성 (ECA) 을 사용하십시오. LogMiner 쉼표로 구분된 사용자 이름 값을 전달할 수 있지만 값은 모두 대문자여야 합니다. ECA 예제: |
|
숫자 크기를 지정합니다. 스케일을 최대 38로 선택하거나 FLOAT의 경우 -1, VARCHAR의 경우 -2를 선택할 수 있습니다. 기본적으로 NUMBER 데이터 형식은 정밀도 38, 크기 10으로 변환됩니다. 기본값: 10 유효한 값: -2~38(VARCHAR의 경우 -2, FLOAT의 경우 -1) 예제: 참고정밀도-스케일 조합, -1(FLOAT) 또는 -2(VARCHAR)를 선택합니다. DMS는 Oracle에서 지원하는 모든 정밀도-스케일 조합을 지원합니다. 정밀도가 39 이상인 경우, -2(VARCHAR)를 선택합니다. Oracle 데이터베이스의 NumberDataTypeScale 설정은 NUMBER 데이터 유형에만 사용됩니다 (명시적 정밀도 및 배율 정의 제외). |
|
CDC 전용 작업을 위해 진행 중인 트랜잭션이 있는지 확인할 수 있는 분 단위 기간을 제공합니다. 참고1 이상으로 설정하면 기본값: 0 유효한 값: 0~240 사이의 정수 예제: |
OraclePathPrefix |
Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하려면 이 문자열 속성을 필수 값으로 설정하세요. 이 값은 다시 실행 로그에 액세스하는 데 사용되는 기본 Oracle 루트를 지정합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요. 기본값: none 유효한 값: /rdsdbdata/db/ORCL_A/ 예제: |
ParallelASMReadThreads |
Oracle ASM(Automatic Storage Management)을 사용하여 변경 데이터 캡처(CDC)를 수행하기 위해 DMS가 구성하는 스레드 수를 변경하려면 이 속성을 설정합니다. 2(기본값) ~ 8(최대값) 사이의 정수 값을 지정할 수 있습니다. 이 속성을 기본값: 2 유효한 값: 2~8 사이의 정수 예제: |
ReadAheadBlocks |
Oracle ASM(Automatic Storage Management) 및 ASM이 아닌 NAS 스토리지를 사용하여 CDC를 수행하기 위해 DMS가 구성하는 미리 읽기 블록 수를 변경하려면 이 속성을 설정합니다. 1000(기본값) ~ 200,000(최대값) 사이의 정수 값을 지정할 수 있습니다. 이 속성을 기본값: 1000 유효한 값: 1000~200,000 사이의 정수 예제: |
|
기본값: false 유효 값: 불 예제: |
ReplacePathPrefix |
Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 true로 설정합니다. 이렇게 설정하면 DMS 인스턴스가 다시 실행 로그에 액세스하기 위해 지정된 UsePathPrefix 설정을 기본 Oracle 루트로 대체합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요.기본값: false 유효값: true/false 예제: |
|
시스템이 쿼리를 다시 전송하기까지 대기하는 시간(초)을 지정합니다. 기본값: 5 유효한 값: 1부터 시작하는 숫자 예제: |
|
Oracle 원본 데이터베이스의 열 및 테이블스페이스의 TDE(Transparent Data Encryption)에 사용되는 키의 이름을 지정합니다. Oracle 소스 엔드포인트에서 이 속성 및 연결된 암호를 설정하는 방법에 대한 자세한 내용은 Oracle을 소스로 사용하기 위해 지원되는 암호화 방법 AWS DMS 단원을 참조하십시오. 기본값: "" 유효값: 문자열 예제: |
|
PostgreSQL 대상으로 마이그레이션하는 Oracle 버전 12.1 이전 소스의 경우 이 속성을 사용하여 SDO_GEOMETRY를 GEOJSON 형식으로 변환합니다. 기본적으로 사용자 정의 함수를 AWS DMS 호출합니다. 기본값: SDO2GEOJSON 유효값: 문자열 예제: |
|
사용 이 속성을 사용하여 스탠바이 동기화에 대한 시간(분)을 지정합니다. 소스가 Active Data Guard 대기 데이터베이스인 경우, 이 속성을 사용하여 프라이머리 데이터베이스와 대기 데이터베이스 간의 시간 지연을 지정합니다. AWS DMS에서는 Active Data Guard 대기 인스턴스를 소스로 사용하여 진행 중인 변경 사항을 복제하는 Oracle CDC 작업을 생성할 수 있습니다. 이렇게 하면 프로덕션 단계에 있을 수 있는 활성 데이터베이스에 연결할 필요가 없습니다. 기본값: 0 유효한 값: 숫자 예제: 참고: DMS 3.4.6, 3.4.7 및 그 이상을 사용하는 경우 이 연결 설정의 사용은 선택 사항입니다. DMS 3.4.6 최신 버전과 버전 3.4.7에서 |
UseAlternateFolderForOnline |
Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 true로 설정합니다. 그러면 DMS 인스턴스가 지정된 접두사 교체를 사용해 모든 온라인 다시 실행 로그에 액세스합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요. 기본값: false 유효값: true/false 예제: |
UseBfile |
Binary Reader 유틸리티를 사용하여 변경 데이터를 캡처하려면 이 속성을 Y로 설정합니다. 이 속성을 Y로 설정하려면 참고: 이 값을 추가 연결 속성(ECA)으로 설정할 때 유효한 값은 'Y'와 'N'입니다. 이 값을 엔드포인트 설정으로 설정할 때 유효한 값은 기본값: N 유효한 값: Y/N(이 값을 ECA로 설정하는 경우), true/false(이 값을 엔드포인트 설정으로 설정하는 경우). 예제: |
|
LogMiner 유틸리티를 사용하여 변경 데이터를 캡처하려면 이 속성을 Y로 설정합니다 (기본값). AWS DMS 가 이진 파일에서 다시 실행 로그에 액세스하도록 하려면 이 옵션을 N으로 설정합니다. 이 옵션을 N으로 설정하는 경우, useBfile=Y 설정도 추가하세요. 이 설정 및 Oracle ASM(Automatic Storage Management) 사용에 대한 자세한 내용은 CDC용 오라클 LogMiner 또는 AWS DMS 바이너리 리더 사용 섹션을 참조하세요. 참고: 이 값을 추가 연결 속성(ECA)으로 설정할 때 유효한 값은 'Y'와 'N'입니다. 이 값을 엔드포인트 설정으로 설정할 때 유효한 값은 기본 값: Y 유효한 값: Y/N(이 값을 ECA로 설정하는 경우), true/false(이 값을 엔드포인트 설정으로 설정하는 경우). 예제: |
UsePathPrefix |
Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하려면 이 문자열 속성을 필수 값으로 설정하세요. 이 값은 다시 실행 로그에 액세스하기 위해 기본 Oracle 루트를 대체하는 데 사용되는 경로 접두사를 지정합니다. 자세한 정보는 Oracle용 RDS와 함께 바이너리 리더를 사용하도록 CDC 작업을 구성하는 방법: AWS DMS을 참조하세요. 기본값: none 유효한 값: /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인 경우:
스케일이 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 |
|
NCHAR |
WSTRING |
NVARCHAR2 |
|
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 모드만 지원하므로 열 테이블에는 기본 키와 고유 키가 필요합니다. 테이블에 프라이머리 키와 고유 키가 없는 경우 마이그레이션에서 테이블을 건너뜁니다.