

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

# 를 사용하여 Oracle Databases에 연결 AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle"></a>

 AWS SCT 를 사용하여 스키마, 데이터베이스 코드 객체 및 애플리케이션 코드를 Oracle Database에서 다음 대상으로 변환할 수 있습니다.
+ Amazon RDS for MySQL
+ Amazon Aurora MySQL 호환 버전
+ Amazon RDS for PostgreSQL
+ Amazon Aurora PostgreSQL 호환 에디션
+ Amazon RDS for Oracle
+ Amazon RDS for MariaDB

소스가 Oracle 데이터베이스인 경우 PostgreSQL 데이터베이스에서 설명을 적절한 형식으로 변환할 수 있습니다.는 테이블, 뷰 및 열에 대한 설명을 변환할 AWS SCT 수 있습니다. 주석에는 아포스트로피가 포함될 수 있습니다.는 문자열 리터럴과 마찬가지로 SQL 문을 변환할 때 아포스트로피를 AWS SCT 두 배로 늘립니다.

추가 정보는 다음을 참조하세요.

**Topics**
+ [Oracle을 소스로 사용하기 위한 권한](#CHAP_Source.Oracle.Permissions)
+ [Oracle 소스에 연결](#CHAP_Source.Oracle.Connecting)
+ [를 사용하여 Oracle에서 Amazon RDS for PostgreSQL 또는 Amazon Aurora PostgreSQL로 마이그레이션 AWS Schema Conversion Tool](CHAP_Source.Oracle.ToPostgreSQL.md)
+ [를 사용하여 Oracle에서 Amazon RDS for MySQL 또는 Amazon Aurora MySQL로 마이그레이션 AWS Schema Conversion Tool](CHAP_Source.Oracle.ToMySQL.md)
+ [를 사용하여 Oracle Database에서 Amazon RDS for Oracle로 마이그레이션 AWS Schema Conversion Tool](CHAP_Source.Oracle.ToRDSOracle.md)

## Oracle을 소스로 사용하기 위한 권한
<a name="CHAP_Source.Oracle.Permissions"></a>

Oracle이 소스일 경우 필요한 권한은 다음과 같습니다.
+ CONNECT 
+ SELECT\$1CATALOG\$1ROLE 
+ SELECT ANY DICTIONARY 
+ SELECT ON SYS.ARGUMENT\$1

## Oracle 소스에 연결
<a name="CHAP_Source.Oracle.Connecting"></a>

다음 절차를 통해 AWS Schema Conversion Tool을 사용하여 Oracle 원본 데이터베이스에 연결합니다.

**Oracle 소스 데이터베이스에 연결하려면**

1. 에서 **소스 추가**를 AWS Schema Conversion Tool선택합니다.

1. **Oracle**를 선택한 후 **다음**을 선택합니다.

   **소스 추가** 대화 상자가 나타납니다.

1. **연결 이름**에 데이터베이스의 이름을 입력합니다. AWS SCT 는 왼쪽 패널의 트리에 이 이름을 표시합니다.

1. 에서 데이터베이스 자격 증명을 사용하거나 수동으로 AWS Secrets Manager 입력합니다.
   + Secrets Manager의 데이터베이스 보안 인증 정보를 사용하려면 다음 지침을 따릅니다.

     1. **AWS Secret**에서 보안 암호의 이름을 선택합니다.

     1. **Populate**를 선택하여 Secrets Manager에서 데이터베이스 연결 대화 상자에 있는 모든 값을 자동으로 채웁니다.

     Secrets Manager의 데이터베이스 보안 인증 사용에 대한 자세한 내용은 [AWS Secrets Manager 에서 구성 AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md) 섹션을 참조하세요.
   + Oracle 소스 데이터베이스 연결 정보를 수동으로 입력하려면 다음 지침을 사용합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)

1. **연결 테스트를** 선택하여가 소스 데이터베이스에 연결할 AWS SCT 수 있는지 확인합니다.

1. **연결**을 선택하여 소스 데이터베이스에 연결합니다.

# 를 사용하여 Oracle에서 Amazon RDS for PostgreSQL 또는 Amazon Aurora PostgreSQL로 마이그레이션 AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToPostgreSQL"></a>

Oracle 데이터베이스를 RDS for PostgreSQL 또는 Amazon Aurora PostgreSQL로 변환하는 경우 다음 사항에 유의합니다.

**Topics**
+ [PostgreSQL을 대상 데이터베이스로 사용하기 위한 권한](#CHAP_Source.Oracle.ToPostgreSQL.ConfigureTarget)
+ [Oracle에서 PostgreSQL로 변환 설정](#CHAP_Source.Oracle.ToPostgreSQL.ConversionSettings)
+ [Oracle 시퀀스 변환](#CHAP_Source.Oracle.ToPostgreSQL.ConvertSequences)
+ [Oracle ROWID 변환](#CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID)
+ [Oracle 동적 SQL 변환](#CHAP_Source.Oracle.ToPostgreSQL.DynamicSQL)
+ [Oracle 파티션 변환](#CHAP_Source.Oracle.ToPostgreSQL.PG10Partitioning)

Oracle 시스템 객체를 PostgreSQL로 변환할 때는 다음 표와 같이 변환을 AWS SCT 수행합니다.


| Oracle 시스템 객체 | 설명 | 변환된 PostgreSQL 객체 | 
| --- | --- | --- | 
| V\$1VERSION  | Oracle 데이터베이스에 있는 핵심 라이브러리 구성 요소의 버전 번호 표시 | aws\$1oracle\$1ext.v\$1version | 
| V\$1INSTANCE | 현재 인스턴스의 상태를 나타내는 보기 | aws\$1oracle\$1ext.v\$1instance | 

 AWS SCT 를 사용하여 Oracle SQL\$1Plus 파일을 터미널 기반 프런트 엔드인 psql에서 PostgreSQL로 변환할 수 있습니다. 자세한 내용은 [를 사용하여 애플리케이션 SQL 변환 AWS SCT](CHAP_Converting.App.md) 단원을 참조하십시오.

## PostgreSQL을 대상 데이터베이스로 사용하기 위한 권한
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConfigureTarget"></a>

PostgreSQL을 대상으로 사용하려면 `CREATE ON DATABASE`에 권한이 AWS SCT 필요합니다. 각 대상 PostgreSQL 데이터베이스에 대해 이 권한을 부여해야 합니다.

변환된 공개 동의어를 사용하려면 데이터베이스 기본 검색 경로를 `"$user", public_synonyms, public`으로 변경합니다.

다음 코드 예제를 사용하여 데이터베이스 사용자를 생성하고 권한을 부여할 수 있습니다.

```
CREATE ROLE user_name LOGIN PASSWORD 'your_password';
GRANT CREATE ON DATABASE db_name TO user_name;
ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;
```

이전 예제에서 *user\$1name*을 사용자 이름으로 바꿉니다. 그런 다음 *db\$1name*을 대상 데이터베이스의 이름으로 바꿉니다. 마지막으로 *your\$1password*를 안전한 암호로 바꿉니다.

Amazon RDS for PostgreSQL을 대상으로 사용하려면 `rds_superuser`에 권한이 AWS SCT 필요합니다.

PostgreSQL에서는 스키마 소유자 또는 `superuser`만 스키마를 삭제할 수 있습니다. 소유자는 스키마 소유자가 일부 객체를 소유하지 않은 경우에도 스키마 및 이 스키마에 포함된 모든 객체를 삭제할 수 있습니다.

다른 사용자를 사용하여 대상 데이터베이스에 다른 스키마를 변환하고 적용하는 경우에서 스키마를 삭제할 수 없는 경우 오류 메시지가 표시될 AWS SCT 수 있습니다. 이 오류 메시지가 표시되지 않도록 하려면 `superuser` 역할을 사용하세요.

## Oracle에서 PostgreSQL로 변환 설정
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConversionSettings"></a>

Oracle에서 PostgreSQL로의 변환 설정을 편집하려면에서 **설정을** 선택한 AWS SCT다음 **변환 설정을** 선택합니다. 상단 목록에서 **Oracle**을 선택한 다음 **Oracle - PostgreSQL**을 선택합니다.는 Oracle에서 PostgreSQL로의 변환에 사용할 수 있는 모든 설정을 AWS SCT 표시합니다.

의 Oracle에서 PostgreSQL로의 변환 설정에는 다음에 대한 옵션이 AWS SCT 포함됩니다.
+ 변환된 코드에서 작업 항목이 포함된 설명의 수를 제한합니다.

  **선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 주석 추가에서** 작업 항목의 심각도를 선택합니다.는 선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 주석을 AWS SCT 추가합니다.

  예를 들어, 변환된 코드의 설명 수를 최소화하려면 **오류만**을 선택하세요. 변환된 코드의 모든 작업 항목에 대한 설명을 포함하려면 **모든 메시지**를 선택합니다.
+  AWS SCT 가 PostgreSQL에서 Oracle 구체화된 뷰를 테이블 또는 구체화된 뷰로 변환할 수 있도록 허용합니다. **Materialized view conversion as**에서 소스 구체화된 뷰를 변환하는 방법을 선택합니다.
+ PostgreSQL에서 지원하지 않는 파라미터가 있는 `TO_CHAR`, `TO_DATE` 및 `TO_NUMBER` 함수를 포함하는 경우 소스 Oracle 코드를 사용하여 작업합니다. 기본적으로 AWS SCT 는 이러한 파라미터의 사용을 변환된 코드로 에뮬레이션합니다.

  소스 Oracle 코드에 PostgreSQL이 지원하는 파라미터만 포함되어 있는 경우 기본 PostgreSQL `TO_CHAR`, `TO_DATE` 및 `TO_NUMBER` 함수를 사용할 수 있습니다. 이 경우, 변환된 코드는 더 빠르게 작동합니다. 이러한 파라미터만 포함하려면 다음 값을 선택합니다.
  + **Function TO\$1CHAR() does not use Oracle specific formatting strings**
  + **Function TO\$1DATE() does not use Oracle specific formatting strings**
  + **Function TO\$1NUMBER() does not use Oracle specific formatting strings**
+ 소스 Oracle 데이터베이스가 `NUMBER` 데이터 형식의 기본 또는 외래 키 열에 정수 값만 저장하는 경우를 해결하기 위해 AWS SCT 에서 이러한 열을 `BIGINT` 데이터 형식으로 변환할 수 있습니다. 이 방식을 적용하면 변환된 코드의 성능이 향상됩니다. 이 방법을 사용하려면 **Convert NUMBER primary / foreign key columns to BIGINT ones**를 선택합니다. 데이터 손실을 방지하려면 소스에서 이러한 열에 부동 소수점 값이 포함되지 않도록 해야 합니다.
+ 소스 코드에서 비활성화된 트리거와 제약 조건을 건너뜁니다. 이렇게 하려면 **Ignore disabled triggers and constraints**를 선택합니다.
+  AWS SCT 를 사용하여 동적 SQL이라고 하는 문자열 변수를 변환합니다. 데이터베이스 코드는 이러한 문자열 변수의 값을 변경할 수 있습니다. 가 AWS SCT 항상이 문자열 변수의 최신 값을 변환하도록 하려면 **호출된 루틴에서 생성된 동적 SQL 코드 변환을** 선택합니다.
+ PostgreSQL 버전 10 이전에서 프로시저를 지원하지 않는 문제를 해결합니다. 사용자 또는 사용자가 PostgreSQL의 프로시저를 사용하는 데 익숙하지 않은 경우는 Oracle 프로시저를 PostgreSQL 함수로 변환할 AWS SCT 수 있습니다. 이렇게 하려면 **프로시저를 함수로 변환**을 선택합니다.
+ 발생한 작업 항목에 대한 추가 정보를 확인합니다. 이렇게 하기 위해 **Add on exception raise block for migration issues with the next severity levels**를 선택하여 확장 팩에 특정 함수를 추가할 수 있습니다. 그런 다음 사용자 정의 예외를 발생시킬 심각도 수준을 선택합니다.
+ 자동으로 생성된 이름이 있는 제약 조건을 포함할 수 있는 소스 Oracle 데이터베이스를 사용하여 작업합니다. 소스 코드에서 이러한 이름을 사용하는 경우 **Convert the system generated constraint names using the source original names**를 선택해야 합니다. 소스 코드에서 이러한 제약 조건을 사용하지만 해당 이름은 사용하지 않는 경우 이 옵션을 선택 취소하여 변환 속도를 높입니다.
+ 데이터베이스와 애플리케이션이 서로 다른 시간대에서 실행되는지 여부를 확인합니다. 기본적으로는 변환된 코드의 시간대를에 AWS SCT 뮬레이션합니다. 하지만 데이터베이스와 애플리케이션이 동일한 시간대를 사용하는 경우에는 이 에뮬레이션이 필요하지 않습니다. 이 경우 **Time zone on the client side matches the time zone on server**를 선택합니다.
+ 소스 데이터베이스와 대상 데이터베이스가 서로 다른 시간대에서 실행되는지 여부를 확인합니다. 서로 다른 시간대에서 실행되는 경우, `SYSDATE` 내장 Oracle 함수를 에뮬레이션하는 함수가 소스 함수와 비교해 다른 값을 반환합니다. 소스 함수와 대상 함수가 동일한 값을 반환하도록 하려면 **Set default time zone for SYSDATE emulation**을 선택합니다.
+ orafce 확장의 함수를 변환된 코드에서 사용합니다. 이렇게 하려면 **Use orafce implementation**에서 사용할 함수를 선택합니다. orafce에 관한 자세한 내용은 GitHub에서 [orafce](https://github.com/orafce/orafce)를 참조하세요.

## Oracle 시퀀스 변환
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConvertSequences"></a>

AWS SCT 는 시퀀스를 Oracle에서 PostgreSQL로 변환합니다. 시퀀스를 사용하여 무결성 제약 조건을 유지하는 경우 마이그레이션된 시퀀스의 새 값이 기존 값과 겹치지 않도록 해야 합니다.

**변환된 시퀀스를 소스 데이터베이스의 마지막 값으로 채우려면**

1. Oracle을 소스로 사용하여 AWS SCT 프로젝트를 엽니다.

1. **설정**을 선택한 다음 **변환 설정**을 선택합니다.

1. 상단 목록에서 **Oracle**을 선택한 다음 **Oracle – PostgreSQL**을 선택합니다. AWS SCT 는 Oracle에서 PostgreSQL로의 변환에 사용할 수 있는 모든 설정을 표시합니다.

1. **Populate converted sequences with the last value generated on the source side**를 선택합니다.

1. **확인**을 선택하여 설정을 저장하고 **변환 설정** 대화 상자를 닫습니다.

## Oracle ROWID 변환
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID"></a>

 Oracle 데이터베이스에서 ROWID 유사 열(pseudocolumn)에는 테이블 행의 주소가 들어 있습니다. ROWID 가상 열은 Oracle에만 고유하므로는 ROWID 가상 열을 PostgreSQL의 데이터 열로 AWS SCT 변환합니다. 이 변환을 사용하면 ROWID 정보를 유지할 수 있습니다.

ROWID 가상 열을 변환할 때는 데이터 유형으로 `bigint` 데이터 열을 생성할 수 AWS SCT 있습니다. 프라이머리 키가 없는 경우 ROWID 열을 프라이머리 키로 AWS SCT 설정합니다. 기본 키가 있는 경우 고유한 제약 조건으로 ROWID 열을 AWS SCT 설정합니다.

소스 데이터베이스 코드에 숫자 데이터 유형을 사용하여 실행할 수 없는 ROWID가 있는 작업이 포함된 경우는 데이터 유형으로 `character varying` 데이터 열을 생성할 수 AWS SCT 있습니다.

**프로젝트에 Oracle ROWID용 데이터 열을 생성하려면**

1. Oracle을 소스로 사용하여 AWS SCT 프로젝트를 엽니다.

1. **설정**을 선택한 다음 **변환 설정**을 선택합니다.

1. 상단 목록에서 **Oracle**을 선택한 다음 **Oracle – PostgreSQL**을 선택합니다. AWS SCT 는 Oracle에서 PostgreSQL로의 변환에 사용할 수 있는 모든 설정을 표시합니다.

1. **행 ID 생성**에서 다음 중 하나를 수행합니다.
   + 숫자 데이터 열을 생성하려면 **Generate as identity**을 선택합니다.
   + 문자 데이터 열을 생성하려면 **Generate as character domain type**을 선택합니다.

1. **확인**을 선택하여 설정을 저장하고 **변환 설정** 대화 상자를 닫습니다.

## Oracle 동적 SQL 변환
<a name="CHAP_Source.Oracle.ToPostgreSQL.DynamicSQL"></a>

 Oracle은 동적 SQL을 구현하는 두 가지 방법을 제공합니다. 하나는 EXECUTE IMMEDIATE 문을 사용하는 것이고 다른 하나는 DBMS\$1SQL 패키지의 프로시저를 호출하는 것입니다. 소스 Oracle 데이터베이스에 동적 SQL이 있는 객체가 포함된 경우 AWS SCT 를 사용하여 Oracle 동적 SQL 문을 PostgreSQL로 변환합니다.

**Oracle 동적 SQL을 PostgreSQL로 변환하려면**

1. Oracle을 소스로 사용하여 AWS SCT 프로젝트를 엽니다.

1. Oracle 소스 트리 보기에서 동적 SQL을 사용하는 데이터베이스 객체를 선택합니다.

1. 객체에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **스키마 변환**을 선택한 후 객체(있는 경우)를 교체하는 데 동의합니다. 아래 스크린샷에는 동적 SQL을 사용하는 Oracle 프로시저 아래에 변환된 프로시저가 나와 있습니다.  
![\[동적 SQL 변환\]](http://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/images/dynamicsql1.png)

## Oracle 파티션 변환
<a name="CHAP_Source.Oracle.ToPostgreSQL.PG10Partitioning"></a>

AWS SCT 는 현재 다음과 같은 파티셔닝 방법을 지원합니다.
+ Range
+ List
+ 다중 열 범위
+ 해시
+ 복합(list-list, range-list, list-range, list-hash, range-hash, hash-hash)

# 를 사용하여 Oracle에서 Amazon RDS for MySQL 또는 Amazon Aurora MySQL로 마이그레이션 AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToMySQL"></a>

변환된 MySQL 코드에서 Oracle 데이터베이스 함수를 에뮬레이션하려면 AWS SCT에서 Oracle-MySQL 확장 팩을 사용합니다. 확장 팩에 대한 자세한 내용은 [에서 확장 팩 사용 AWS Schema Conversion Tool](CHAP_ExtensionPack.md) 섹션을 참조하세요.

**Topics**
+ [MySQL을 대상 데이터베이스로 사용하기 위한 권한](#CHAP_Source.Oracle.ToMySQL.ConfigureTarget)
+ [Oracle에서 MySQL로의 변환 설정](#CHAP_Source.Oracle.ToMySQL.ConversionSettings)
+ [마이그레이션 고려 사항](#CHAP_Source.Oracle.ToMySQL.MigrationConsiderations)
+ [Oracle의 WITH 문을 RDS for MySQL 또는 Amazon Aurora MySQL로 변환](#CHAP_Source.Oracle.ToMySQL.With)

## MySQL을 대상 데이터베이스로 사용하기 위한 권한
<a name="CHAP_Source.Oracle.ToMySQL.ConfigureTarget"></a>

MySQL을 대상으로 사용하기 위해 필요한 권한은 다음과 같습니다.
+ CREATE ON \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ REFERENCES ON \$1.\$1
+ SELECT ON \$1.\$1
+ CREATE VIEW ON \$1.\$1
+ SHOW VIEW ON \$1.\$1
+ TRIGGER ON \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ CREATE TEMPORARY TABLES ON \$1.\$1
+ AWS\$1LAMBDA\$1ACCESS
+ INSERT, UPDATE ON AWS\$1ORACLE\$1EXT.\$1
+ INSERT, UPDATE, DELETE ON AWS\$1ORACLE\$1EXT\$1DATA.\$1

MySQL 데이터베이스 버전 5.7 이하를 대상으로 사용하는 경우 AWS\$1LAMBDA\$1ACCESS 대신 I INVOKE LAMBDA \$1.\$1 권한을 부여합니다. MySQL 데이터베이스 버전 8.0 이상의 경우 AWS\$1LAMBDA\$1ACCESS 권한을 부여합니다.

다음 코드 예제를 사용하여 데이터베이스 사용자를 생성하고 권한을 부여할 수 있습니다.

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON *.* TO 'user_name';
GRANT AWS_LAMBDA_ACCESS TO 'user_name';
GRANT INSERT, UPDATE ON AWS_ORACLE_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_ORACLE_EXT_DATA.* TO 'user_name';
```

이전 예제에서 *user\$1name*을 사용자 이름으로 바꿉니다. 그런 다음 *your\$1password*를 안전한 암호로 바꿉니다.

MySQL 데이터베이스 버전 5.7 이하를 대상으로 사용하는 경우 `GRANT AWS_LAMBDA_ACCESS TO 'user_name'` 대신 `GRANT INVOKE LAMBDA ON *.* TO 'user_name'`을 사용합니다.

Amazon RDS for MySQL 또는 Amazon RDS for Aurora MySQL을 대상으로 사용하려면 `lower_case_table_names` 파라미터를 `1`로 설정합니다. 이 값은 MySQL 서버가 테이블, 인덱스, 트리거 및 데이터베이스와 같은 객체 이름의 식별자를 대소문자 구분 없이 처리한다는 것을 의미합니다. 대상 인스턴스에서 이진 로깅을 활성화했다면 `log_bin_trust_function_creators` 파라미터를 `1`로 설정합니다. 이 경우 저장된 함수를 생성하기 위해 `DETERMINISTIC`, `READS SQL DATA` 또는 `NO SQL` 특성을 사용할 필요가 없습니다. 이들 파라미터를 구성하려면 새 DB 파라미터 그룹을 생성하거나 기존 DB 파라미터 그룹을 수정해야 합니다.

## Oracle에서 MySQL로의 변환 설정
<a name="CHAP_Source.Oracle.ToMySQL.ConversionSettings"></a>

Oracle에서 MySQL로의 변환 설정을 편집하려면에서 **설정을** 선택한 AWS SCT다음 **변환 설정을** 선택합니다. 상단 목록에서 **Oracle**을 선택한 다음 **Oracle - MySQL**을 선택합니다.는 Oracle에서 MySQL로의 변환에 사용할 수 있는 모든 설정을 AWS SCT 표시합니다.

의 Oracle에서 MySQL로의 변환 설정에는 다음에 대한 옵션이 AWS SCT 포함됩니다.
+ 변환된 코드에서 작업 항목이 포함된 설명의 수를 제한합니다.

  **선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 주석 추가에서** 작업 항목의 심각도를 선택합니다.는 선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 주석을 AWS SCT 추가합니다.

  예를 들어, 변환된 코드의 설명 수를 최소화하려면 **오류만**을 선택하세요. 변환된 코드의 모든 작업 항목에 대한 설명을 포함하려면 **모든 메시지**를 선택합니다.
+ 소스 Oracle 데이터베이스가 `ROWID` 의사 열을 사용할 수 있지만 MySQL이 유사한 기능을 지원하지 않음을 해결하기 위해는 변환된 코드에서 `ROWID` 의사 열을 에뮬레이션할 AWS SCT 수 있습니다. 이렇게 하려면 **행 ID 생성?**에서 **Generate as identity**를 선택합니다.

  소스 Oracle 코드에서 `ROWID` 의사 열을 사용하지 않는 경우 **행 ID 생성?**에서 **Don't generate**를 선택합니다. 이 경우, 변환된 코드는 더 빠르게 작동합니다.
+ MySQL에서 지원하지 않는 파라미터가 있는 `TO_CHAR`, `TO_DATE` 및 `TO_NUMBER` 함수를 포함하는 경우 소스 Oracle 코드를 사용하여 작업합니다. 기본적으로 AWS SCT 는 이러한 파라미터의 사용을 변환된 코드로 에뮬레이션합니다.

  소스 Oracle 코드에 PostgreSQL이 지원하는 파라미터만 포함되어 있는 경우 기본 MySQL `TO_CHAR`, `TO_DATE` 및 `TO_NUMBER` 함수를 사용할 수 있습니다. 이 경우, 변환된 코드는 더 빠르게 작동합니다. 이러한 파라미터만 포함하려면 다음 값을 선택합니다.
  + **Function TO\$1CHAR() does not use Oracle specific formatting strings**
  + **Function TO\$1DATE() does not use Oracle specific formatting strings**
  + **Function TO\$1NUMBER() does not use Oracle specific formatting strings**
+ 데이터베이스와 애플리케이션이 서로 다른 시간대에서 실행되는지 여부를 확인합니다. 기본적으로 AWS SCT 는 변환된 코드로 시간대를 에뮬레이션합니다. 하지만 데이터베이스와 애플리케이션이 동일한 시간대를 사용하는 경우에는 이 에뮬레이션이 필요하지 않습니다. 이 경우 **Time zone on the client side matches the time zone on server**를 선택합니다.

## 마이그레이션 고려 사항
<a name="CHAP_Source.Oracle.ToMySQL.MigrationConsiderations"></a>

Oracle을 RDS for MySQL 또는 Aurora MySQL로 변환할 때 명령문이 실행되는 순서를 변경하려면 `GOTO` 문과 레이블을 사용할 수 있습니다. `GOTO` 문 뒤에 오는 PL/SQL 문은 건너뛰며 프로세스는 레이블에서 계속됩니다. `GOTO` 문과 레이블은 프로시저, 배치(batch), 명령문 블록 내 어디든 사용할 수 있습니다. 또한 다음 GOTO 문에도 사용할 수 있습니다.

MySQL은 `GOTO` 문을 사용하지 않습니다. 는 `GOTO` 문이 포함된 코드를 AWS SCT 변환할 때 `BEGIN…END` 또는 문을 사용하도록 `LOOP…END LOOP` 문을 변환합니다.

다음 표에서가 `GOTO` 문을 AWS SCT 변환하는 방법의 예를 찾을 수 있습니다.


| Oracle 문 | MySQL 문 | 
| --- | --- | 
|  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   GOTO label1;<br />   statement2;<br />   ....<br />   label1:<br />   Statement3;<br />   ....<br />END<br /></pre>  |  <pre>BEGIN<br /> label1:<br /> BEGIN<br />   ....<br />   statement1;<br />   ....<br />   LEAVE label1;<br />   statement2;<br />   ....<br /> END;<br />   Statement3;<br />   ....<br />END<br /></pre>  | 
|  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   label1:<br />   statement2;<br />   ....<br />   GOTO label1;<br />   statement3;<br />   ....<br />   statement4;<br />   ....<br />END<br /></pre>  |  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   label1:<br />   LOOP<br />    statement2;<br />    ....<br />    ITERATE label1;<br />    LEAVE label1;<br />   END LOOP; <br />    statement3;<br />    ....<br />    statement4;<br />    ....<br />END<br /></pre>  | 
|  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   label1:<br />   statement2;<br />   ....<br />   statement3;<br />   ....<br />   statement4;<br />   ....<br />END<br /></pre>  |  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   label1:<br />   BEGIN<br />    statement2;<br />    ....    <br />    statement3;<br />    ....<br />    statement4;<br />    ....    <br />   END; <br />END<br /></pre>  | 

## Oracle의 WITH 문을 RDS for MySQL 또는 Amazon Aurora MySQL로 변환
<a name="CHAP_Source.Oracle.ToMySQL.With"></a>

Oracle의 WITH 절(subquery\$1factoring)을 사용하여 서브쿼리 블록에 이름(쿼리 이름)을 할당할 수 있습니다. 그런 다음 쿼리 이름을 지정하여 이 서브쿼리 블록을 쿼리의 여러 위치에서 참조할 수 있습니다. 하위 쿼리 블록에 링크 또는 파라미터(로컬, 프로시저, 함수, 패키지)가 포함되지 않은 경우는 절을 뷰 또는 임시 테이블로 AWS SCT 변환합니다.

이 절을 임시 테이블로 변환하면 서브쿼리에 대한 반복된 참조를 보다 효율화할 수 있습니다. 그 이유는 데이터를 각 참조에서 요구하지 않고 임시 테이블에서 데이터를 쉽게 검색할 수 있기 때문입니다. 보기 또는 임시 테이블을 추가로 사용하여 이를 에뮬레이션할 수 있습니다. 뷰 이름은 `<procedure_name>$<subselect_alias>` 형식을 사용합니다.

다음 테이블에서 예제를 찾을 수 있습니다.


| Oracle 문 | MySQL 문 | 
| --- | --- | 
|  <pre>CREATE PROCEDURE <br /> TEST_ORA_PG.P_WITH_SELECT_VARIABLE_01<br />     (p_state IN NUMBER)<br />AS<br />  l_dept_id NUMBER := 1; <br />BEGIN<br />FOR cur IN  <br />           (WITH dept_empl(id, name, surname, <br />              lastname, state, dept_id)<br />              AS<br />                  (<br />                    SELECT id, name, surname,  <br />                     lastname, state, dept_id <br />                      FROM test_ora_pg.dept_employees<br />                     WHERE state = p_state AND <br />                       dept_id = l_dept_id)<br />            SELECT id,state   <br />              FROM dept_empl<br />            ORDER BY id)  LOOP<br />  NULL;<br />END LOOP;<br /></pre>  |  <pre>CREATE PROCEDURE test_ora_pg.P_WITH_SELECT_VARIABLE_01(IN par_P_STATE DOUBLE)<br />BEGIN<br />    DECLARE var_l_dept_id DOUBLE DEFAULT 1;<br />    DECLARE var$id VARCHAR (8000);<br />    DECLARE var$state VARCHAR (8000);<br />    DECLARE done INT DEFAULT FALSE;<br />    DECLARE cur CURSOR FOR SELECT<br />        ID, STATE<br />        FROM (SELECT<br />            ID, NAME, SURNAME, LASTNAME, STATE, DEPT_ID<br />            FROM TEST_ORA_PG.DEPT_EMPLOYEES<br />            WHERE STATE = par_p_state AND DEPT_ID = var_l_dept_id) AS dept_empl<br />        ORDER BY ID;<br />    DECLARE CONTINUE HANDLER FOR NOT FOUND<br />        SET done := TRUE;<br />    OPEN cur;<br /><br />    read_label:<br />    LOOP<br />        FETCH cur INTO var$id, var$state;<br /><br />        IF done THEN<br />            LEAVE read_label;<br />        END IF;<br /><br />        BEGIN<br />        END;<br />    END LOOP;<br />    CLOSE cur;<br />END;<br /></pre>  | 
|  <pre>CREATE PROCEDURE <br /> TEST_ORA_PG.P_WITH_SELECT_REGULAR_MULT_01<br />AS    <br />BEGIN<br /><br /> FOR cur IN  (<br />               WITH dept_empl AS<br />                   (<br />                        SELECT id, name, surname, <br />                         lastname, state, dept_id <br />                          FROM test_ora_pg.dept_employees<br />                         WHERE state = 1),<br />                    dept AS <br />                   (SELECT id deptid, parent_id, <br />                      name deptname<br />                      FROM test_ora_pg.department                <br />                   )<br />                SELECT dept_empl.*,dept.*          <br />                 FROM dept_empl, dept<br />                 WHERE dept_empl.dept_id = dept.deptid<br />              ) LOOP<br />              NULL;<br />            END LOOP;<br /></pre>  |  <pre>CREATE VIEW TEST_ORA_PG.`P_WITH_SELECT_REGULAR_MULT_01$dept_empl<br /> `(id, name, surname, lastname, state, dept_id)<br />AS<br />(SELECT id, name, surname, lastname, state, dept_id <br />   FROM test_ora_pg.dept_employees<br />  WHERE state = 1);<br />  <br />CREATE VIEW TEST_ORA_PG.`P_WITH_SELECT_REGULAR_MULT_01$dept<br /> `(deptid, parent_id,deptname)<br />AS<br />(SELECT id deptid, parent_id, name deptname<br />   FROM test_ora_pg.department);  <br /><br /><br />CREATE PROCEDURE test_ora_pg.P_WITH_SELECT_REGULAR_MULT_01()<br />BEGIN<br />    DECLARE var$ID DOUBLE;<br />    DECLARE var$NAME VARCHAR (30);<br />    DECLARE var$SURNAME VARCHAR (30);<br />    DECLARE var$LASTNAME VARCHAR (30);<br />    DECLARE var$STATE DOUBLE;<br />    DECLARE var$DEPT_ID DOUBLE;<br />    DECLARE var$deptid DOUBLE;<br />    DECLARE var$PARENT_ID DOUBLE;<br />    DECLARE var$deptname VARCHAR (200);<br />    DECLARE done INT DEFAULT FALSE;<br />    DECLARE cur CURSOR FOR SELECT<br />        dept_empl.*, dept.*<br />        FROM TEST_ORA_PG.`P_WITH_SELECT_REGULAR_MULT_01$dept_empl<br />          ` AS dept_empl,<br />             TEST_ORA_PG.`P_WITH_SELECT_REGULAR_MULT_01$dept<br />          ` AS dept<br />        WHERE dept_empl.DEPT_ID = dept.DEPTID;<br />    DECLARE CONTINUE HANDLER FOR NOT FOUND<br />        SET done := TRUE;<br />    OPEN cur;<br /><br />    read_label:<br />    LOOP<br />    FETCH cur INTO var$ID, var$NAME, var$SURNAME, <br />     var$LASTNAME, var$STATE, var$DEPT_ID, var$deptid, <br />     var$PARENT_ID, var$deptname;<br /><br />        IF done THEN<br />            LEAVE read_label;<br />        END IF;<br /><br />        BEGIN<br />        END;<br />    END LOOP;<br />    CLOSE cur;<br />END;<br /><br />call test_ora_pg.P_WITH_SELECT_REGULAR_MULT_01()<br /></pre>  | 
|  <pre>CREATE PROCEDURE <br />  TEST_ORA_PG.P_WITH_SELECT_VAR_CROSS_02(p_state IN NUMBER)<br />AS    <br />   l_dept_id NUMBER := 10;<br />BEGIN<br /> FOR cur IN  (<br />               WITH emp AS              <br />                    (SELECT id, name, surname, <br />                      lastname, state, dept_id <br />                       FROM test_ora_pg.dept_employees<br />                      WHERE dept_id > 10                 <br />                    ),<br />                    active_emp AS<br />                    (<br />                      SELECT id<br />                        FROM emp<br />                       WHERE emp.state = p_state <br />                    )<br />                    <br />                SELECT *          <br />                  FROM active_emp                 <br />              ) LOOP<br />         NULL;<br />  END LOOP;<br />  <br />END;<br /></pre>  |  <pre>CREATE VIEW TEST_ORA_PG.`P_WITH_SELECT_VAR_CROSS_01$emp<br />    `(id, name, surname, lastname, state, dept_id)<br />AS<br />(SELECT<br />       id, name, surname, lastname, <br />       state, dept_id<br />  FROM TEST_ORA_PG.DEPT_EMPLOYEES<br />  WHERE DEPT_ID > 10);<br /><br /><br />CREATE PROCEDURE <br />   test_ora_pg.P_WITH_SELECT_VAR_CROSS_02(IN par_P_STATE DOUBLE)<br />BEGIN<br />    DECLARE var_l_dept_id DOUBLE DEFAULT 10;<br />    DECLARE var$ID DOUBLE;<br />    DECLARE done INT DEFAULT FALSE;<br />    DECLARE cur CURSOR FOR SELECT *<br />                             FROM (SELECT<br />                                      ID<br />                                     FROM <br />                             TEST_ORA_PG.<br />                              `P_WITH_SELECT_VAR_CROSS_01$emp` AS emp<br />                                   WHERE emp.STATE = par_p_state) <br />                                    AS active_emp;<br />    DECLARE CONTINUE HANDLER FOR NOT FOUND<br />        SET done := TRUE;<br />    OPEN cur;<br /><br />    read_label:<br />    LOOP<br />        FETCH cur INTO var$ID;<br /><br />        IF done THEN<br />            LEAVE read_label;<br />        END IF;<br /><br />        BEGIN<br />        END;<br />    END LOOP;<br />    CLOSE cur;<br />END;<br /></pre>  | 

# 를 사용하여 Oracle Database에서 Amazon RDS for Oracle로 마이그레이션 AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToRDSOracle"></a>

Oracle 스키마와 코드를 Amazon RDS for Oracle로 마이그레이션할 경우 몇 가지 사항을 고려해야 합니다.
+ AWS SCT 는 객체 트리에 디렉터리 객체를 추가할 수 있습니다. 디렉터리 객체는 서버 파일 시스템의 물리적 디렉터리를 나타내는 논리적 구조입니다.** DBMS\$1LOB, UTL\$1FILE, DBMS\$1FILE\$1TRANSFER, DATAPUMP 유틸리티 등과 같은 패키지를 통해 디렉터리 객체를 사용할 수 있습니다.
+ AWS SCT 는 Oracle 테이블스페이스를 Amazon RDS for Oracle DB 인스턴스로 변환할 수 있도록 지원합니다. Oracle은 데이터를 테이블스페이스에 논리적으로 저장하고, 해당 테이블스페이스와 연결된 데이터 파일에 물리적으로 저장합니다. Oracle에서는 데이터 파일 이름을 사용하여 테이블스페이스를 만들 수 있습니다. Amazon RDS는 데이터 파일, 로그 파일 및 제어 파일에 대해서만 Oracle Managed Files(OMF)를 지원합니다.는 변환 중에 필요한 데이터 파일을 AWS SCT 생성합니다.
+ AWS SCT 는 서버 수준 역할 및 권한을 변환할 수 있습니다. Oracle 데이터베이스 엔진에는 역할 기반 보안이 사용됩니다. 역할이란 사용자에 대해 부여하거나 취소할 수 있는 권한 모음입니다. Amazon RDS의 사전 정의된 역할인 DBA는 일반적으로 Oracle 데이터베이스 엔진에 대한 모든 관리 권한을 허용합니다. 아래의 권한들은 Oracle 엔진을 사용하는 Amazon RDS DB 인스턴스의 DBA 역할에는 사용할 수 없습니다.
  + 데이터베이스 변경
  + 시스템 변경
  + 디렉터리 생성
  + 권한 부여
  + 역할 부여
  + 외부 작업 생성

  Amazon RDS for Oracle 사용자 역할에 고급 필터링 및 열 권한을 포함하여 다른 모든 권한을 부여할 수 있습니다.
+ AWS SCT 는 Oracle 작업을 Amazon RDS for Oracle에서 실행할 수 있는 작업으로 변환할 수 있도록 지원합니다. 이 변환에는 다음과 같은 몇 가지 제한 사항이 있습니다.
  + 실행 작업은 지원되지 않습니다.
  + ANYDATA 데이터 유형을 인수로 사용하는 일정 작업은 지원되지 않습니다.
+ Oracle 실제 애플리케이션 클러스터(RAC) 단일 노드는 Oracle Database 11g Release 2와 함께 제공된 Oracle Database Enterprise Edition에 속한 옵션입니다. Amazon RDS for Oracle은 RAC 기능을 지원하지 않습니다. 고가용성을 위해서는 Amazon RDS 다중 AZ를 사용하십시오.

  다중 AZ 배포에서 Amazon RDS는 자동으로 서로 다른 가용 영역에 동기식 예비 복제본을 프로비저닝하고 유지합니다. 기본 DB 인스턴스는 가용 영역 전체에서 대기 복제본으로 동기식으로 복제됩니다. 이 기능은 데이터 중복을 제공하고, I/O 중지를 없애고, 시스템 백업 중에 지연 시간 스파이크를 최소화합니다.
+ Oracle Spatial에는 Oracle 데이터베이스에서 공간 데이터의 저장, 검색, 업데이트 및 쿼리를 신속하게 실행할 수 있는 SQL 스키마 및 기능이 있습니다. Oracle Locator에는 인터넷 및 무선 서비스 기반 애플리케이션과 파트너 기반 GIS 솔루션을 지원할 때 필요한 기능이 있습니다. Oracle Locator는 Oracle Spatial의 제한된 서브셋입니다.

  Oracle Spatial 및 Oracle Locator 기능을 사용하려면 SPATIAL 옵션 또는 LOCATOR 옵션(함께 사용할 수 없음)을 DB 인스턴스의 옵션 그룹에 추가합니다.

  Amazon RDS for Oracle DB 인스턴스에서 Oracle Spatial 및 Oracle Locator를 사용하기 위해서는 몇 가지 전제 조건이 있습니다.
  + 인스턴스가 Oracle Enterprise Edition 버전 12.1.0.2.v6 이상 또는 11.2.0.4.v10 이상을 사용해야 합니다.
  + 인스턴스가 VPC(Virtual Private Cloud) 내에 있어야 합니다.
  + 인스턴스가 Oracle 기능을 지원할 수 있는 DB 인스턴스 클래스를 사용해야 합니다. 예를 들어 db.m1.small, db.t1.micro, db.t2.micro 또는 db.t2.small DB 인스턴스 클래스에는 Oracle Spatial이 지원되지 않습니다. 자세한 내용은 [Oracle을 위한 DB 인스턴스 클래스 지원](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html#Oracle.Concepts.InstanceClasses)을 참조하세요.
  + 인스턴스에 대해 자동 마이너 버전 업그레이드를 활성화해야 합니다. CVSS 점수가 9 이상인 보안 취약성 또는 발표된 기타 보안 취약성이 있을 경우 Amazon RDS는 DB 인스턴스를 최신 Oracle PSU로 업데이트합니다. 자세한 내용은 다음 섹션을 참조하세요.

    [Oracle DB 인스턴스 설정](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ModifyInstance.Oracle.html#USER_ModifyInstance.Oracle.Settings)
  + DB 인스턴스가 버전 11.2.0.4.v10 이상인 경우 XMLDB 옵션을 설치해야 합니다. 자세한 내용은 다음 섹션을 참조하세요.

    [Oracle XML DB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.XMLDB.html)
  + Oracle의 Oracle Spatial 라이선스가 있어야 합니다. 자세한 내용은 Oracle 설명서의 [Oracle Spatial and Graph](https://shop.oracle.com/apex/product?p1=OracleSpatialandGraph)를 참조하십시오.
+ Data Guard는 Oracle Database Enterprise Edition에 포함되어 있습니다. 고가용성을 위해서는 Amazon RDS 다중 AZ 기능을 사용하십시오.

  다중 AZ 배포에서 Amazon RDS는 자동으로 서로 다른 가용 영역에 동기식 예비 복제본을 프로비저닝하고 유지합니다. 기본 DB 인스턴스는 가용 영역 전체에서 대기 복제본으로 동기식으로 복제됩니다. 이 기능은 데이터 중복을 제공하고, I/O 중지를 없애고, 시스템 백업 중에 지연 시간 스파이크를 최소화합니다.
+ AWS SCT 는 Amazon RDS for Oracle로 마이그레이션할 때 Oracle DBMS\$1SCHEDULER 객체 변환을 지원합니다. AWS SCT 평가 보고서는 일정 객체를 변환할 수 있는지 여부를 나타냅니다. Amazon RDS에서 일정 객체를 사용하는 방법에 대한 자세한 내용은 [Amazon RDS 설명서](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.System.html#Appendix.Oracle.CommonDBATasks.ModifyScheduler) 를 참조하십시오.
+ Oracle에서 Oracle용 Amazon RDS로 변환하는 경우 DB Links를 지원합니다. 데이터베이스 링크는 특정 데이터베이스 내 스키마 객체로서, 사용자는 이 객체를 통해 다른 데이터베이스에 있는 객체에 액세스할 수 있습니다. 다른 데이터베이스가 Oracle 데이터베이스이어야 할 필요는 없습니다. 하지만 Oracle 데이터베이스가 아닌 데이터베이스에 액세스하려면 Oracle Heterogeneous Services를 사용해야 합니다.

  데이터베이스 링크를 생성하면 이 링크를 SQL 문에서 사용하여 다른 데이터베이스에 있는 테이블, 보기 및 PL/SQL 객체를 참조할 수 있습니다. 데이터베이스 링크를 사용하려면 테이블, 보기 또는 PL/SQL 객체 이름에 `@dblink`를 붙입니다. SELECT 문을 사용해 다른 데이터베이스에 있는 테이블 또는 보기를 쿼리할 수 있습니다. Oracle 데이터베이스 링크를 사용하는 방법에 대한 자세한 정보는 [ Oracle 설명서](https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm#ADMIN12083)를 참조하십시오.

  Amazon RDS에서 데이터베이스 링크를 사용하는 방법에 대한 자세한 정보는 [ Amazon RDS 설명서](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Database.html#Appendix.Oracle.CommonDBATasks.DBLinks)를 참조하십시오.
+  AWS SCT 평가 보고서는 변환을 위한 서버 지표를 제공합니다. Oracle 인스턴스에 대한 이러한 측정치에는 다음이 포함됩니다.
  + 대상 DB 인스턴스의 컴퓨팅 및 메모리 용량
  + 지원되지 않는 Oracle 기능(예: Amazon RDS가 지원하지 않는 Real Application Clusters 등)
  + 디스크 읽기/쓰기 로드
  + 평균 총 디스크 처리량
  + 서버 정보(서버 이름, OS, 호스트 이름, 문자 집합 등)

## RDS for Oracle을 대상으로 사용하기 위한 권한
<a name="CHAP_Source.Oracle.ToRDSOracle.ConfigureTarget"></a>

Amazon RDS for Oracle로 마이그레이션하려면 권한이 있는 데이터베이스 사용자를 생성합니다. 다음과 같은 코드 예제를 사용할 수 있습니다.

```
CREATE USER user_name IDENTIFIED BY your_password;

-- System privileges
GRANT DROP ANY CUBE BUILD PROCESS TO user_name;
GRANT ALTER ANY CUBE TO user_name;
GRANT CREATE ANY CUBE DIMENSION TO user_name;
GRANT CREATE ANY ASSEMBLY TO user_name;
GRANT ALTER ANY RULE TO user_name;
GRANT SELECT ANY DICTIONARY TO user_name;
GRANT ALTER ANY DIMENSION TO user_name;
GRANT CREATE ANY DIMENSION TO user_name;
GRANT ALTER ANY TYPE TO user_name;
GRANT DROP ANY TRIGGER TO user_name;
GRANT CREATE ANY VIEW TO user_name;
GRANT ALTER ANY CUBE BUILD PROCESS TO user_name;
GRANT CREATE ANY CREDENTIAL TO user_name;
GRANT DROP ANY CUBE DIMENSION TO user_name;
GRANT DROP ANY ASSEMBLY TO user_name;
GRANT DROP ANY PROCEDURE TO user_name;
GRANT ALTER ANY PROCEDURE TO user_name;
GRANT ALTER ANY SQL TRANSLATION PROFILE TO user_name;
GRANT DROP ANY MEASURE FOLDER TO user_name;
GRANT CREATE ANY MEASURE FOLDER TO user_name;
GRANT DROP ANY CUBE TO user_name;
GRANT DROP ANY MINING MODEL TO user_name;
GRANT CREATE ANY MINING MODEL TO user_name;
GRANT DROP ANY EDITION TO user_name;
GRANT CREATE ANY EVALUATION CONTEXT TO user_name;
GRANT DROP ANY DIMENSION TO user_name;
GRANT ALTER ANY INDEXTYPE TO user_name;
GRANT DROP ANY TYPE TO user_name;
GRANT CREATE ANY PROCEDURE TO user_name;
GRANT CREATE ANY SQL TRANSLATION PROFILE TO user_name;
GRANT CREATE ANY CUBE TO user_name;
GRANT COMMENT ANY MINING MODEL TO user_name;
GRANT ALTER ANY MINING MODEL TO user_name;
GRANT DROP ANY SQL PROFILE TO user_name;
GRANT CREATE ANY JOB TO user_name;
GRANT DROP ANY EVALUATION CONTEXT TO user_name;
GRANT ALTER ANY EVALUATION CONTEXT TO user_name;
GRANT CREATE ANY INDEXTYPE TO user_name;
GRANT CREATE ANY OPERATOR TO user_name;
GRANT CREATE ANY TRIGGER TO user_name;
GRANT DROP ANY ROLE TO user_name;
GRANT DROP ANY SEQUENCE TO user_name;
GRANT DROP ANY CLUSTER TO user_name;
GRANT DROP ANY SQL TRANSLATION PROFILE TO user_name;
GRANT ALTER ANY ASSEMBLY TO user_name;
GRANT CREATE ANY RULE SET TO user_name;
GRANT ALTER ANY OUTLINE TO user_name;
GRANT UNDER ANY TYPE TO user_name;
GRANT CREATE ANY TYPE TO user_name;
GRANT DROP ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY ROLE TO user_name;
GRANT DROP ANY VIEW TO user_name;
GRANT ALTER ANY INDEX TO user_name;
GRANT COMMENT ANY TABLE TO user_name;
GRANT CREATE ANY TABLE TO user_name;
GRANT CREATE USER TO user_name;
GRANT DROP ANY RULE SET TO user_name;
GRANT CREATE ANY CONTEXT TO user_name;
GRANT DROP ANY INDEXTYPE TO user_name;
GRANT ALTER ANY OPERATOR TO user_name;
GRANT CREATE ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY SEQUENCE TO user_name;
GRANT DROP ANY SYNONYM TO user_name;
GRANT CREATE ANY SYNONYM TO user_name;
GRANT DROP USER TO user_name;
GRANT ALTER ANY MEASURE FOLDER TO user_name;
GRANT ALTER ANY EDITION TO user_name;
GRANT DROP ANY RULE TO user_name;
GRANT CREATE ANY RULE TO user_name;
GRANT ALTER ANY RULE SET TO user_name;
GRANT CREATE ANY OUTLINE TO user_name;
GRANT UNDER ANY TABLE TO user_name;
GRANT UNDER ANY VIEW TO user_name;
GRANT DROP ANY DIRECTORY TO user_name;
GRANT ALTER ANY CLUSTER TO user_name;
GRANT CREATE ANY CLUSTER TO user_name;
GRANT ALTER ANY TABLE TO user_name;
GRANT CREATE ANY CUBE BUILD PROCESS TO user_name;
GRANT ALTER ANY CUBE DIMENSION TO user_name;
GRANT CREATE ANY EDITION TO user_name;
GRANT CREATE ANY SQL PROFILE TO user_name;
GRANT ALTER ANY SQL PROFILE TO user_name;
GRANT DROP ANY OUTLINE TO user_name;
GRANT DROP ANY CONTEXT TO user_name;
GRANT DROP ANY OPERATOR TO user_name;
GRANT DROP ANY LIBRARY TO user_name;
GRANT ALTER ANY LIBRARY TO user_name;
GRANT CREATE ANY LIBRARY TO user_name;
GRANT ALTER ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY TRIGGER TO user_name;
GRANT CREATE ANY SEQUENCE TO user_name;
GRANT DROP ANY INDEX TO user_name;
GRANT CREATE ANY INDEX TO user_name;
GRANT DROP ANY TABLE TO user_name;
GRANT SELECT_CATALOG_ROLE TO user_name;
GRANT SELECT ANY SEQUENCE TO user_name;

-- Database Links
GRANT CREATE DATABASE LINK TO user_name;
GRANT CREATE PUBLIC DATABASE LINK TO user_name;
GRANT DROP PUBLIC DATABASE LINK TO user_name;


-- Server Level Objects (directory)
GRANT CREATE ANY DIRECTORY TO user_name;
GRANT DROP ANY DIRECTORY TO user_name;
-- (for RDS only)
GRANT EXECUTE ON RDSADMIN.RDSADMIN_UTIL TO user_name;

-- Server Level Objects (tablespace)
GRANT CREATE TABLESPACE TO user_name;
GRANT DROP TABLESPACE TO user_name;

-- Server Level Objects (user roles)
/* (grant source privileges with admin option or convert roles/privs as DBA) */

-- Queues
grant execute on DBMS_AQADM to user_name;
grant aq_administrator_role to user_name;

-- for Materialized View Logs creation
GRANT SELECT ANY TABLE TO user_name;

-- Roles
GRANT RESOURCE TO user_name;
GRANT CONNECT TO user_name;
```

이전 예제에서 *user\$1name*을 사용자 이름으로 바꿉니다. 그런 다음 *your\$1password*를 안전한 암호로 바꿉니다.

## Oracle에서 Amazon RDS for Oracle로 변환할 때 제한 사항
<a name="CHAP_Source.Oracle.ToRDSOracle.Limitations"></a>

Oracle 스키마와 코드를 Amazon RDS for Oracle로 마이그레이션할 경우 몇 가지 제한 사항을 고려해야 합니다.
+  Amazon RDS의 사전 정의된 역할인 DBA는 일반적으로 Oracle 데이터베이스 엔진에 대한 모든 관리 권한을 허용합니다. 아래의 권한들은 Oracle 엔진을 사용하는 Amazon RDS DB 인스턴스의 DBA 역할에는 사용할 수 없습니다.
  + 데이터베이스 변경
  + 시스템 변경
  + 디렉터리 생성
  + 권한 부여
  + 역할 부여
  + 외부 작업 생성

  다른 모든 권한을 Oracle RDS 사용자 역할에 부여할 수 있습니다.
+ Amazon RDS for Oracle은 기존 방식의 감사, DBMS\$1FGA 패키지를 사용한 세분화된 감사 및 Oracle Unified Auditing을 지원합니다.
+ Amazon RDS for Oracle은 CDC(변경 데이터 캡처)를 지원하지 않습니다. 데이터 마이그레이션 도중이나 그 이후에 CDC를 수행하려면 AWS Database Migration Service를 사용합니다.