

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

# Oracle 데이터베이스를의 대상으로 사용 AWS Database Migration Service
<a name="CHAP_Target.Oracle"></a>

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

가 대상으로 AWS DMS 지원하는 Oracle 버전에 대한 자세한 내용은 섹션을 참조하세요[의 대상 AWS DMS](CHAP_Introduction.Targets.md).

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을 사용하여 테이블 선택 및 변환 지정](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md) 섹션을 참조하세요.

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

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

**Topics**
+ [의 대상으로서 Oracle에 대한 제한 사항 AWS Database Migration Service](#CHAP_Target.Oracle.Limitations)
+ [Oracle을 대상으로 사용할 때 필요한 사용자 계정 권한](#CHAP_Target.Oracle.Privileges)
+ [Oracle 데이터베이스를의 대상으로 구성 AWS Database Migration Service](#CHAP_Target.Oracle.Configuration)
+ [Oracle을의 대상으로 사용할 때 엔드포인트 설정 AWS DMS](#CHAP_Target.Oracle.ConnectionAttrib)
+ [Oracle용 대상 데이터 형식](#CHAP_Target.Oracle.DataTypes)

## 의 대상으로서 Oracle에 대한 제한 사항 AWS Database Migration Service
<a name="CHAP_Target.Oracle.Limitations"></a>

데이터 마이그레이션에서 Oracle 데이터베이스를 대상으로 사용할 때 적용되는 제한 사항에는 다음이 있습니다.
+ AWS DMS 는 대상 Oracle 데이터베이스에 스키마를 생성하지 않습니다. 대상 Oracle 데이터베이스에서 필요한 스키마를 생성해야 합니다. Oracle 대상에서 스키마 이름이 이미 있어야 합니다. 소스 스키마의 테이블은를 AWS DMS 사용하여 대상 인스턴스에 연결하는 사용자 또는 스키마로 가져옵니다. 여러 스키마를 마이그레이션하려는 경우, 다중 복제 작업을 생성하면 됩니다. 데이터를 대상의 다른 스키마로 마이그레이션할 수도 있습니다. 이렇게 하려면 AWS DMS 테이블 매핑에 스키마 변환 규칙을 사용해야 합니다.
+ AWS DMS 는 INDEXTYPE CONTEXT가 있는 테이블에 대한 `Use direct path full load` 옵션을 지원하지 않습니다. 차선책으로서 어레이 로드를 사용할 수 있습니다.
+ 배치 작업에 최적화된 적용 옵션을 사용하면 넷 변경 테이블에 로드할 때 XML 유형을 지원하지 않는 직접 경로가 사용됩니다. 차선책으로서 트랜잭션 적용 모드를 사용할 수 있습니다.
+ 소스 데이터베이스에서 마이그레이션된 빈 문자열은 Oracle 대상에서 다르게 처리될 수 있습니다(예: 하나의 공백 문자열로 변환). 이로 인해 AWS DMS 검증에서 불일치가 보고될 수 있습니다.
+ 다음 공식을 사용하여 Batch 최적화 적용 모드에서 지원되는 테이블당 총 열 수를 표현할 수 있습니다.

  ```
  2 * columns_in_original_table + columns_in_primary_key <= 999
  ```

  예를 들어 원본 테이블에 25개의 열이 있고 프라이머리 키가 5개의 열로 구성된 경우, 총 열 수는 55개입니다. 테이블이 지원되는 열 수를 초과하는 경우, 모든 변경 내용은 1대1 모드로 적용됩니다.
+ AWS DMS 는 Oracle 클라우드 인프라(OCI)의 자율 DB를 지원하지 않습니다.
+ 트랜잭션 적용 모드에서 Oracle 대상은 최대 32KB 크기의 DML 문을 처리할 수 있습니다. 이 제한은 많은 사용 사례에 충분하지만 32KB를 초과하는 DML 문은 "ORA-01460: 구현되지 않았거나 불합리한 변환이 요청됨"이라는 오류와 함께 실패합니다. 이 문제를 해결하려면 `BatchApplyEnabled` 작업 설정을 `true`로 설정하여 배치 적용 기능을 활성화해야 합니다. 배치 적용은 전체 문 크기를 줄여 32KB 제한을 우회할 수 있습니다. 자세한 내용은 [대상 메타데이터 작업 설정](CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.md) 단원을 참조하십시오.
+ AWS DMS LOB 테이블에 대한 직접 경로 전체 로드는 LOB 데이터에 대한 특수 처리 요구 사항으로 인해 ORA-39777 오류와 함께 실패할 수 있습니다. 이 오류는 직접 경로 로드 프로세스 중에 발생하며 LOB 열과 관련된 마이그레이션 작업을 방해할 수 있습니다. 해결하려면 대상 엔드포인트에서 `useDirectPathFullLoad` 설정을 비활성화하고 로드 작업을 다시 시도합니다.

## Oracle을 대상으로 사용할 때 필요한 사용자 계정 권한
<a name="CHAP_Target.Oracle.Privileges"></a>

 AWS Database Migration Service 작업에서 Oracle 대상을 사용하려면 Oracle 데이터베이스에서 다음 권한을 부여합니다. 이러한 권한은 AWS DMS의 Oracle 데이터베이스 정의에서 지정된 사용자 계정에 부여합니다.
+ SELECT ANY TRANSACTION 
+ SELECT on V\$1NLS\$1PARAMETERS 
+ SELECT on V\$1TIMEZONE\$1NAMES 
+ SELECT on ALL\$1INDEXES 
+ SELECT on ALL\$1OBJECTS 
+ SELECT on DBA\$1OBJECTS
+ SELECT on ALL\$1TABLES 
+ SELECT on ALL\$1USERS 
+ SELECT on ALL\$1CATALOG 
+ SELECT on ALL\$1CONSTRAINTS 
+ SELECT on ALL\$1CONS\$1COLUMNS 
+ SELECT on ALL\$1TAB\$1COLS 
+ SELECT on ALL\$1IND\$1COLUMNS 
+ 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를 부여합니다.
+ 검증 기능으로 LOB 열을 검증하려면 `SYS.DBMS_CRYPTO` DMS 사용자에게 EXECUTE 권한을 부여합니다.

### 대상 데이터베이스의 AWS Database Migration Service 에 필요한 읽기 권한
<a name="CHAP_Target.Oracle.Privileges.Read"></a>

다음 DBA 테이블에 대한 읽기 권한이 AWS DMS 사용자 계정에 부여되어야 합니다.
+ SELECT on DBA\$1USERS
+ SELECT on DBA\$1TAB\$1PRIVS
+ SELECT on DBA\$1OBJECTS
+ SELECT on DBA\$1SYNONYMS
+ SELECT on DBA\$1SEQUENCES
+ SELECT on DBA\$1TYPES
+ SELECT on DBA\$1INDEXES
+ SELECT on DBA\$1TABLES
+ SELECT on DBA\$1TRIGGERS
+ SELECT on SYS.DBA\$1REGISTRY

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

### 마이그레이션 전 평가
<a name="CHAP_Target.Oracle.Privileges.Premigration"></a>

Oracle을 대상으로 [Oracle 평가](CHAP_Tasks.AssessmentReport.Oracle.md)에 나열된 마이그레이션 전 평가를 사용하려면 Oracle 데이터베이스 대상 엔드포인트에 명시된 사용자 계정에 다음 권한을 추가해야 합니다.

```
GRANT SELECT ON V_$INSTANCE TO dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

## Oracle 데이터베이스를의 대상으로 구성 AWS Database Migration Service
<a name="CHAP_Target.Oracle.Configuration"></a>

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

## Oracle을의 대상으로 사용할 때 엔드포인트 설정 AWS DMS
<a name="CHAP_Target.Oracle.ConnectionAttrib"></a>

추가 연결 속성을 사용하는 것과 비슷하게 엔드포인트 설정을 사용하여 Oracle 대상을 구성할 수 있습니다. AWS DMS 콘솔을 사용하거나의 `create-endpoint` 명령을 `--oracle-settings '{"EndpointSetting": "value", ...}'` JSON 구문과 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)함께 사용하여 대상 엔드포인트를 생성할 때 설정을 지정합니다.

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/dms/latest/userguide/CHAP_Target.Oracle.html)

## Oracle용 대상 데이터 형식
<a name="CHAP_Target.Oracle.DataTypes"></a>

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


|  AWS DMS 데이터 유형  |  Oracle 데이터 형식  | 
| --- | --- | 
|  BOOLEAN  |  NUMBER (1)  | 
|  BYTES  |  RAW(길이)  | 
|  DATE  |  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\$1with\$1timezone 표시: TIMESTAMP WITH TIMEZONE 포함  timestamp\$1with\$1local\$1timezone 표시: TIMESTAMP WITH LOCAL TIMEZONE 포함 interval\$1year\$1to\$1month 표시: INTERVAL YEAR TO MONTH 포함  interval\$1day\$1to\$1second 표시: 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 이 데이터 형식을와 함께 사용하려면 특정 작업에 대해 BLOBs 사용을 활성화 AWS DMS해야 합니다. BLOB 데이터 형식은 프라이머리 키를 포함하는 테이블에서만 지원됩니다  | 
|  CLOB  |  CLOB 이 데이터 형식을와 함께 사용하려면 특정 작업에 대해 CLOBs 사용을 활성화 AWS DMS해야 합니다. 변경 데이터 캡처(CDC) 중에 프라이머리 키를 포함하는 테이블에서만 CLOB 데이터 형식이 지원됩니다. STRING 선언된 크기가 4,000바이트를 초과하는 소스의 Oracle VARCHAR2 데이터 형식은 AWS DMS CLOB를 통해 Oracle 대상의 STRING에 매핑됩니다.  | 
|  NCLOB  |  NCLOB 이 데이터 형식을와 함께 사용하려면 특정 작업에 대해 NCLOBs 사용을 활성화 AWS DMS해야 합니다. CDC 중에 NCLOB 데이터 형식은 프라이머리 키를 포함하는 테이블에서만 지원됩니다. WSTRING 선언된 크기가 4,000바이트보다 큰 소스의 Oracle VARCHAR2 데이터 형식은 AWS DMS NCLOB를 통해 Oracle 대상의 WSTRING으로 매핑됩니다.  | 
| XMLTYPE |  XMLTYPE 대상 데이터 형식은 Oracle 간 복제 작업에서만 관련이 있습니다. 소스 데이터베이스가 Oracle이면 소스 데이터 형식은 Oracle 대상에 '그대로' 복제됩니다. 예를 들어, 원본의 XMLTYPE 데이터 형식은 대상에서 XMLTYPE 데이터 형식으로 생성됩니다.  | 