AWS Database Migration Service에서 Oracle 데이터베이스를 대상으로 사용 - AWS 데이터베이스 마이그레이션 서비스

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

AWS Database Migration Service에서 Oracle 데이터베이스를 대상으로 사용

다른 Oracle 데이터베이스 또는 지원되는 다른 데이터베이스 중 하나를 사용하여 AWS DMS Oracle 데이터베이스 대상으로 데이터를 마이그레이션할 수 있습니다. Secure Sockets Layer(SSL)을 사용하여 Oracle 엔드포인트와 복제 인스턴스 연결을 암호화할 수 있습니다. Oracle 엔드포인트에서 SSL을 사용하는 방법에 대한 자세한 내용은 을 참조하십시오SSL 사용: AWS Database Migration Service. AWS DMS 또한 Oracle TDE는 데이터베이스에 쓸 때 암호화 키나 암호를 요구하지 않기 때문에 Oracle TDE (투명 데이터 암호화) 를 사용하여 대상 데이터베이스에 저장된 데이터를 암호화할 수 있습니다.

대상으로 AWS DMS 지원하는 Oracle 버전에 대한 자세한 내용은 을 참조하십시오. 대상 AWS DMS

Oracle을 대상으로 사용할 때는 데이터를 대상 연결에 사용되는 스키마 또는 사용자로 마이그레이션해야 한다고 가정합니다. 데이터를 다른 스키마로 마이그레이션하려면 스키마 변환을 사용해야 합니다. 예를 들어, 대상 엔드포인트가 사용자 RDSMASTER에 연결되고 사용자 PERFDATA1에서 PERFDATA2로 마이그레이션하려 한다고 가정합니다. 이 경우, 다음과 같이 변환을 생성합니다.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "PERFDATA1" }, "value": "PERFDATA2" }

Oracle을 대상으로 사용하는 경우 모든 테이블과 인덱스를 대상의 기본 테이블 및 인덱스 테이블스페이스로 AWS DMS 마이그레이션합니다. 테이블과 인덱스를 다른 테이블 및 인덱스 테이블스페이스로 마이그레이션하려면 테이블스페이스 변환을 사용해야 합니다. 예를 들어, Oracle 소스의 일부 테이블스페이스에 할당된 INVENTORY 스키마에 테이블 집합이 있다고 가정해 보겠습니다. 마이그레이션을 위해 이러한 모든 테이블을 대상의 단일 INVENTORYSPACE 테이블스페이스에 할당하려고 합니다. 이 경우, 다음과 같이 변환을 생성합니다.

{ "rule-type": "transformation", "rule-id": "3", "rule-name": "3", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "INVENTORY", "table-name": "%", "table-tablespace-name": "%" }, "value": "INVENTORYSPACE" }

변환에 관한 자세한 내용은 JSON을 사용하여 테이블 선택 및 변환 지정 섹션을 참조하십시오.

Oracle이 소스와 대상인 경우, Oracle 소스 추가 접속 속성인 enableHomogenousTablespace=true를 설정하여 기존 테이블 또는 인덱스 테이블스페이스 할당을 유지할 수 있습니다. 자세한 내용은 Oracle을 소스로 사용할 때의 엔드포인트 설정 AWS DMS단원을 참조하세요.

Oracle 데이터베이스를 대상으로 사용하는 방법에 대한 자세한 내용은 다음 섹션을 참조하십시오. AWS DMS

Oracle이 대상으로 삼을 수 있는 제한 사항 AWS Database Migration Service

데이터 마이그레이션에서 Oracle 데이터베이스를 대상으로 사용할 때 적용되는 제한 사항에는 다음이 있습니다.

  • AWS DMS 대상 Oracle 데이터베이스에 스키마를 생성하지 않습니다. 대상 Oracle 데이터베이스에서 필요한 스키마를 생성해야 합니다. Oracle 대상에서 스키마 이름이 이미 있어야 합니다. 소스 스키마의 테이블을 사용자 또는 스키마로 가져와서 대상 인스턴스에 연결하는 데 AWS DMS 사용합니다. 여러 스키마를 마이그레이션하려는 경우, 다중 복제 작업을 생성하면 됩니다. 데이터를 대상의 다른 스키마로 마이그레이션할 수도 있습니다. 이렇게 하려면 AWS DMS 테이블 매핑에서 스키마 변환 규칙을 사용해야 합니다.

  • AWS DMS INDEXTYPE 컨텍스트가 있는 테이블에는 Use direct path full load 옵션을 지원하지 않습니다. 차선책으로서 어레이 로드를 사용할 수 있습니다.

  • 배치 작업에 최적화된 적용 옵션을 사용하면 넷 변경 테이블에 로드할 때 XML 유형을 지원하지 않는 직접 경로가 사용됩니다. 차선책으로서 트랜잭션 적용 모드를 사용할 수 있습니다.

  • 소스 데이터베이스에서 마이그레이션된 빈 문자열은 Oracle 대상에서 다르게 처리될 수 있습니다(예: 하나의 공백 문자열로 변환). 이로 인해 AWS DMS 유효성 검사에서 불일치가 보고될 수 있습니다.

  • 다음 공식을 사용하여 Batch 최적화 적용 모드에서 지원되는 테이블당 총 열 수를 표현할 수 있습니다.

    2 * columns_in_original_table + columns_in_primary_key <= 999

    예를 들어 원본 테이블에 25개의 열이 있고 기본 키가 5개의 열로 구성된 경우, 총 열 수는 55개입니다. 테이블이 지원되는 열 수를 초과하는 경우 모든 변경 사항이 one-by-one 모드에 적용됩니다.

  • AWS DMS 오라클 클라우드 인프라 (OCI) 의 자율 DB를 지원하지 않습니다.

Oracle을 대상으로 사용할 때 필요한 사용자 계정 권한

AWS Database Migration Service 작업에서 Oracle 대상을 사용하려면 Oracle 데이터베이스에서 다음 권한을 부여하십시오. 이러한 권한은 AWS DMS의 Oracle 데이터베이스 정의에서 지정된 사용자 계정에 부여합니다.

  • SELECT ANY TRANSACTION

  • SELECT on V$NLS_PARAMETERS

  • SELECT on V$TIMEZONE_NAMES

  • SELECT on ALL_INDEXES

  • SELECT on ALL_OBJECTS

  • SELECT on DBA_OBJECTS

  • SELECT on ALL_TABLES

  • SELECT on ALL_USERS

  • SELECT on ALL_CATALOG

  • SELECT on ALL_CONSTRAINTS

  • SELECT on ALL_CONS_COLUMNS

  • SELECT on ALL_TAB_COLS

  • SELECT on ALL_IND_COLUMNS

  • DROP ANY TABLE

  • SELECT ANY TABLE

  • INSERT ANY TABLE

  • UPDATE ANY TABLE

  • CREATE ANY VIEW

  • DROP ANY VIEW

  • CREATE ANY PROCEDURE

  • ALTER ANY PROCEDURE

  • DROP ANY PROCEDURE

  • CREATE ANY SEQUENCE

  • ALTER ANY SEQUENCE

  • DROP ANY SEQUENCE

  • DELETE ANY TABLE

다음과 같은 요구 사항에서 이러한 추가 권한을 부여합니다.

  • 특정 테이블 목록을 사용하려면 SELECT를 복제된 테이블에 부여하고 ALTER도 복제된 테이블에 부여합니다.

  • 사용자가 기본 테이블스페이스에서 테이블을 생성하도록 허용하려면 권한 GRANT UNLIMITED TABLESPACE를 부여합니다.

  • 로그온의 경우, 권한 CREATE SESSION을 부여합니다.

  • 직접 경로(전체 로드의 기본값)를 사용하는 경우 GRANT LOCK ANY TABLE to dms_user;을 실행합니다.

  • “DROP and CREATE” 테이블 준비 모드를 사용할 때 스키마가 다른 경우, GRANT CREATE ANY INDEX to dms_user;를 실행합니다.

  • 일부 전체 로드 시나리오의 경우, 대상 테이블 스키마가 DMS 사용자의 스키마와 다른 “테이블 DROP 및 CREATE” 또는 “로딩 전 TRUNCATE” 옵션을 선택할 수 있습니다. 이 경우, DROP ANY TABLE을 부여합니다.

  • 대상 테이블 스키마가 DMS 사용자의 테이블 스키마와 다를 때 변경 테이블이나 감사 테이블에 변경 사항을 저장하려면 CREATE ANY TABLE 및 CREATE ANY INDEX를 부여합니다.

대상 데이터베이스에 필요한 읽기 권한 AWS Database Migration Service

AWS DMS 사용자 계정에 다음 DBA 테이블에 대한 읽기 권한을 부여해야 합니다.

  • SELECT on DBA_USERS

  • SELECT on DBA_TAB_PRIVS

  • SELECT on DBA_OBJECTS

  • SELECT on DBA_SYNONYMS

  • SELECT on DBA_SEQUENCES

  • SELECT on DBA_TYPES

  • SELECT on DBA_INDEXES

  • SELECT on DBA_TABLES

  • SELECT on DBA_TRIGGERS

  • SELECT on SYS.DBA_REGISTRY

필요한 권한을 V$xxx에 부여할 수 없는 경우, V_$xxx에 부여합니다.

프리미어레이션 평가

Oracle을 오라클 평가 Target으로 사용하여 나열된 프리미어그레이션 평가를 사용하려면 대상 dms_user 데이터베이스의 데이터베이스 사용자에게 다음 권한을 추가해야 합니다.

GRANT SELECT ON V_$INSTANCE TO dms_user;

오라클 데이터베이스를 대상으로 구성 AWS Database Migration Service

Oracle 데이터베이스를 데이터 마이그레이션 대상으로 사용하려면 먼저 Oracle 사용자 계정을 제공해야 합니다 AWS DMS. 사용자 계정에는 Oracle을 대상으로 사용할 때 필요한 사용자 계정 권한에 지정된 바와 같이 Oracle 데이터베이스에서 읽기/쓰기 권한이 있어야 합니다.

Oracle을 대상으로 사용할 때의 엔드포인트 설정 AWS DMS

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

Oracle을 대상으로 사용할 수 있는 엔드포인트 설정이 다음 테이블에 나와 있습니다.

명칭 설명

EscapeCharacter

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

기본값: Null

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

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

UseDirectPathFullLoad

Y 설정하면 직접 경로 전체 로드를 AWS DMS 사용합니다. Oracle 호출 인터페이스(OCI)에서 직접 경로 프로토콜을 활성화하려면 이 값을 지정합니다. 이 OCI 프로토콜을 사용하면 전체 로드 중에 Oracle 대상 테이블을 대량 로드할 수 있습니다.

기본 값: true

유효값: true/false

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

DirectPathParallelLoad

true로 설정하면 UseDirectPathFullLoadY로 설정된 경우 이 속성이 병렬 로드를 지정합니다. 이 속성은 AWS DMS 병렬 로드 기능을 사용하는 경우에만 적용됩니다. 자세한 내용은 테이블 및 컬렉션 설정 규칙과 작업parallel-load 작업에 관한 설명을 참조하십시오.

이 병렬 로드 설정을 지정할 때 제한 사항은 대상 테이블에 제약 조건이나 인덱스를 가질 수 없다는 것입니다. 이 제한 사항에 관한 자세한 내용은 병렬 직접 경로 로드 후 제약 조건 활성화를 참조하십시오. 제약 조건 또는 인덱스가 활성화된 경우, 이 속성을 true로 설정해도 아무 효과가 없습니다.

기본 값: false

유효값: true/false

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

DirectPathNoLog

이 속성을 true로 설정하면 테이블에 직접 쓰고 데이터베이스 로그에 추적을 쓰지 않고 Oracle 대상 데이터베이스의 커밋 비율을 높일 수 있습니다. 자세한 내용은 Direct-Load INSERT를 참조하십시오. 이 속성은 UseDirectPathFullLoadY로 설정한 경우에만 적용됩니다.

기본 값: false

유효값: true/false

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

CharLengthSemantics

문자 열의 길이가 바이트 단위인지 또는 문자 단위인지 지정합니다. 문자 열 길이가 문자 단위임을 나타내려면 이 속성을 CHAR로 설정합니다. 그렇지 않으면 문자 열 길이는 바이트 단위입니다.

기본값: CHAR로 설정되지 않음

유효값: CHAR

예제: --oracle-settings '{"CharLengthSemantics": "CHAR"}'

AlwaysReplaceEmptyString

AWS DMS Oracle 대상으로 마이그레이션할 때 빈 문자열을 복제하기 위한 추가 공간을 추가합니다. 일반적으로 Oracle에는 빈 문자열에 대한 표기법이 없습니다. varchar2에 빈 문자열을 삽입하면 빈 문자열이 NULL로 로드됩니다. Oracle에서 데이터를 NULL로 삽입하려면 이 속성을 FALSE로 설정하십시오.

기본 값: true

유효값: true/false

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

Oracle용 대상 데이터 형식

에서 사용되는 대상 Oracle 데이터베이스는 대부분의 Oracle 데이터 유형을 AWS DMS 지원합니다. 다음 표에는 사용 AWS DMS 시 지원되는 Oracle 대상 데이터 유형과 데이터 유형에서의 AWS DMS 기본 매핑이 나와 있습니다. 소스에서 매핑된 데이터 형식을 확인하는 방법에 관한 자세한 내용은 사용 중인 소스에 대한 섹션을 참조하십시오.

AWS DMS 데이터 유형

Oracle 데이터 형식

BOOLEAN

NUMBER (1)

BYTES

RAW(길이)

날짜

DATETIME

TIME

TIMESTAMP (0)

DATETIME

TIMESTAMP(크기)

INT1

NUMBER (3)

INT2

NUMBER (5)

INT4

NUMBER (10)

INT8

NUMBER (19)

NUMERIC

NUMBER (p,s)

REAL4

FLOAT

REAL8

FLOAT

STRING

날짜 표시: DATE 포함

시간 표시: TIMESTAMP 포함

타임스탬프 표시: TIMESTAMP 포함

timestamp_with_timezone 표시: TIMESTAMP WITH TIMEZONE 포함

timestamp_with_local_timezone 표시: TIMESTAMP WITH LOCAL TIMEZONE 포함 interval_year_to_month 표시: INTERVAL YEAR TO MONTH 포함

interval_day_to_second 표시: INTERVAL DAY TO SECOND 포함

길이 > 4000인 경우: CLOB

다른 모든 경우: VARCHAR2(길이)

UINT1

NUMBER (3)

UINT2

NUMBER (5)

UINT4

NUMBER (10)

UINT8

NUMBER (19)

WSTRING

길이가 > 2000: NCLOB인 경우

다른 모든 경우: NVARCHAR2(길이)

BLOB

BLOB

에서 이 데이터 유형을 사용하려면 특정 작업에 BLOB 사용을 활성화해야 합니다. AWS DMS BLOB 데이터 형식은 기본 키를 포함하는 테이블에서만 지원됩니다.

CLOB

CLOB

에서 이 데이터 유형을 사용하려면 특정 작업에 CLOB 사용을 활성화해야 합니다. AWS DMS변경 데이터 캡처(CDC) 중에 기본 키를 포함하는 테이블에서만 CLOB 데이터 형식이 지원됩니다.

STRING

선언된 크기가 4000바이트보다 큰 소스의 Oracle VARCHAR2 데이터 유형은 AWS DMS CLOB를 통해 Oracle 대상의 문자열에 매핑됩니다.

NCLOB

NCLOB

에서 이 데이터 유형을 사용하려면 특정 AWS DMS작업에 NClob 사용을 활성화해야 합니다. CDC 중에 NCLOB 데이터 형식은 기본 키를 포함하는 테이블에서만 지원됩니다.

WSTRING

선언된 크기가 4000바이트보다 큰 소스의 Oracle VARCHAR2 데이터 형식은 AWS DMS NCLOB를 통해 Oracle 대상의 WSTRING에 매핑됩니다.

XMLTYPE

XMLTYPE 대상 데이터 형식은 Oracle 간 복제 작업에서만 관련이 있습니다.

소스 데이터베이스가 Oracle이면 소스 데이터 형식은 Oracle 대상에 '그대로' 복제됩니다. 예를 들어, 원본의 XMLTYPE 데이터 형식은 대상에서 XMLTYPE 데이터 형식으로 생성됩니다.