

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

# 를 사용하여 Linux, UNIX 및 Windows 데이터베이스용 IBM DB2에 ConnConnecting AWS Schema Conversion Tool
<a name="CHAP_Source.DB2LUW"></a>

 AWS SCT 를 사용하여 스키마, SQL 언어의 코드 객체 및 애플리케이션 코드를 Linux, Unix 및 Windows용 IBM Db2(Db2 LUW)에서 다음 대상으로 변환할 수 있습니다.
+ Amazon RDS for MySQL
+ Amazon Aurora MySQL 호환 버전
+ Amazon RDS for PostgreSQL
+ Amazon Aurora PostgreSQL 호환 에디션
+ Amazon RDS for MariaDB

AWS SCT 는 소스 Db2 LUW 버전 9.1, 9.5, 9.7, 10.1, 10.5, 11.1 및 11.5를 지원합니다.

## Db2 LUW를 소스로 사용하기 위한 권한
<a name="CHAP_Source.DB2LUW.Permissions"></a>

Db2 LUW 데이터베이스에 연결하여 사용 가능한 권한을 확인하고 소스에 대한 스키마 메타데이터를 읽는 데 필요한 권한은 다음과 같습니다.
+ 연결을 설정하는 데 필요한 권한:
  + CONNECT ON DATABASE
+ SQL 문을 실행하는 데 필요한 권한:
  + EXECUTE ON PACKAGE NULLID.SYSSH200
+ 인스턴스 수준 정보를 가져오는 데 필요한 권한:
  + EXECUTE ON FUNCTION SYSPROC.ENV\$1GET\$1INST\$1INFO
  + SELECT ON SYSIBMADM.ENV\$1INST\$1INFO
  + SELECT ON SYSIBMADM.ENV\$1SYS\$1INFO
+ 역할, 그룹 및 권한을 통해 허용되는 권한을 점검하는 데 필요한 권한:
  + EXECUTE ON FUNCTION SYSPROC.AUTH\$1LIST\$1AUTHORITIES\$1FOR\$1AUTHID
  + EXECUTE ON FUNCTION SYSPROC.AUTH\$1LIST\$1GROUPS\$1FOR\$1AUTHID
  + EXECUTE ON FUNCTION SYSPROC.AUTH\$1LIST\$1ROLES\$1FOR\$1AUTHID
  + SELECT ON SYSIBMADM.PRIVILEGES
+ 시스템 카탈로그 및 테이블에 필요한 권한:
  + SELECT ON SYSCAT.ATTRIBUTES
  + SELECT ON SYSCAT.CHECKS
  + SELECT ON SYSCAT.COLIDENTATTRIBUTES
  + SELECT ON SYSCAT.COLUMNS
  + SELECT ON SYSCAT.DATAPARTITIONEXPRESSION
  + SELECT ON SYSCAT.DATAPARTITIONS
  + SELECT ON SYSCAT.DATATYPEDEP
  + SELECT ON SYSCAT.DATATYPES
  + SELECT ON SYSCAT.HIERARCHIES
  + SELECT ON SYSCAT.INDEXCOLUSE
  + SELECT ON SYSCAT.INDEXES
  + SELECT ON SYSCAT.INDEXPARTITIONS
  + SELECT ON SYSCAT.KEYCOLUSE
  + SELECT ON SYSCAT.MODULEOBJECTS
  + SELECT ON SYSCAT.MODULES
  + SELECT ON SYSCAT.NICKNAMES
  + SELECT ON SYSCAT.PERIODS
  + SELECT ON SYSCAT.REFERENCES
  + SELECT ON SYSCAT.ROUTINEPARMS
  + SELECT ON SYSCAT.ROUTINES
  + SELECT ON SYSCAT.ROWFIELDS
  + SELECT ON SYSCAT.SCHEMATA
  + SELECT ON SYSCAT.SEQUENCES
  + SELECT ON SYSCAT.TABCONST
  + SELECT ON SYSCAT.TABLES
  + SELECT ON SYSCAT.TRIGGERS
  + SELECT ON SYSCAT.VARIABLEDEP
  + SELECT ON SYSCAT.VARIABLES
  + SELECT ON SYSCAT.VIEWS
  + SELECT ON SYSIBM.SYSDUMMY1
+  SQL 문을 실행하려면 데이터베이스에서 활성화된 워크로드 중 하나 이상을 사용할 수 있는 권한이 사용자 계정에 있어야 합니다. 사용자에게 할당된 워크로드가 없는 경우에는 해당 사용자가 기본 사용자 워크로드에 액세스할 수 있어야 합니다.
  + USAGE ON WORKLOAD SYSDEFAULTUSERWORKLOAD

쿼리를 실행하려면 페이지 크기가 8K, 16K 및 32K인 시스템 임시 테이블스페이스를 생성해야 합니다(테이블스페이스가 없는 경우). 임시 테이블스페이스를 생성하려면 다음 스크립트를 실행합니다.

```
CREATE BUFFERPOOL BP8K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 8K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_8K 
  PAGESIZE 8192 
  BUFFERPOOL BP8K;
  
CREATE BUFFERPOOL BP16K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 16K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP16K 
  PAGESIZE 16384 
  BUFFERPOOL BP16K;  
  
CREATE BUFFERPOOL BP32K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 32K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP32K 
  PAGESIZE 32768 
  BUFFERPOOL BP32K;
```

## Db2 LUW에 소스로 연결
<a name="CHAP_Source.DB2LUW.Connecting"></a>

다음 절차에 따라 AWS Schema Conversion Tool을 사용하여 Db2 LUW 소스 데이터베이스에 연결합니다.

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

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

1. **Db2 LUW**를 선택하고 **다음**을 선택합니다.

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

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) 섹션을 참조하세요.
   + IBM Db2 LUW 소스 데이터베이스 연결 정보를 수동으로 입력하려면 다음 지침을 사용합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html)

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

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

# Linux, UNIX 및 Windows용 IBM DB2에서 PostgreSQL용 Amazon Relational Database Service(Amazon RDS) 또는 Amazon Aurora PostgreSQL 호환 버전으로 마이그레이션
<a name="CHAP_Source.DB2LUW.ToPostgreSQL"></a>

IBM Db2 LUW를 PostgreSQL로 마이그레이션하면는 Db2 LUW와 함께 사용되는 다양한 트리거 문을 변환할 AWS SCT 수 있습니다. 이러한 트리거 명령문에는 다음이 포함됩니다.
+ **트리거 이벤트** – INSERT, DELETE, UPDATE 트리거 이벤트는 대상 테이블이나 대상 보기에 이벤트가 적용될 때마다 트리거된 작업이 실행되도록 지정합니다. INSERT, DELETE 및 UPDATE 이벤트의 조합을 지정할 수 있지만 각 이벤트를 한 번만 지정할 수 있습니다.는 단일 및 다중 트리거 이벤트를 AWS SCT 지원합니다. 이벤트에 대해 PostgreSQL은 거의 동일한 기능을 제공합니다.
+ **OF COLUMN 이벤트** - 기본 테이블의 열 이름을 지정할 수 있습니다. 트리거는 열 이름 목록에서 식별된 열을 업데이트해야만 활성화됩니다. PostgreSQL에도 동일한 기능이 있습니다.
+ **명령문 트리거** - 전체 명령문에 대해 트리거된 작업이 한 번만 적용되도록 지정합니다. BEFORE 트리거 또는 INSTEAD OF 트리거에는 이러한 유형의 트리거 세부 수준을 지정할 수 없습니다. 지정된 경우에는 영향을 받는 행이 없더라도 UPDATE 또는 DELETE 트리거가 활성화됩니다. PostgreSQL에도 이 기능이 있으며, 명령문 트리거에 대한 트리거 선언은 PostgreSQL과 Db2 LUW에서 동일합니다.
+ **참조 절** - 변환 변수의 상관 관계 이름과 변환 테이블의 테이블 이름을 지정합니다. 상관 관계 이름은 트리거 SQL 작업의 영향을 받는 행 집합에서 특정 행을 식별합니다. 테이블 이름은 영향 받는 전체 행 집합을 식별합니다. 트리거 SQL 작업의 영향을 받는 각 행은 지정된 상관 관계 이름을 가진 열을 한정함으로써 트리거된 작업에 사용할 수 있습니다. PostgreSQL은 이 기능을 지원하지 않으며 NEW 또는 OLD 상관 관계 이름만 사용합니다.
+ **INSTEAD OF 트리거** - AWS SCT 에서 이러한 트리거를 지원합니다.

## Db2 LUW 파티션 테이블을 PostgreSQL 버전 10 파티션 테이블 변환
<a name="CHAP_Source.DB2LUW.ToPostgreSQL.PartitionedTables"></a>

AWS SCT 는 PostgreSQL 10에서 Db2 LUW 테이블을 분할된 테이블로 변환할 수 있습니다. Db2 LUW 파티션 테이블을 PostgreSQL로 변환할 때는 다음과 같은 몇 가지 제한 사항이 있습니다.
+ Db2 LUW에서 null이 허용되는 열을 포함하는 파티션 테이블을 생성할 수 있으며 NULL 값을 저장할 파티션을 지정할 수 있습니다. 하지만 PostgreSQL은 RANGE 파티셔닝에서 NULL 값을 지원하지 않습니다.
+ Db2 LUW는 INCLUSIVE 또는 EXCLUSIVE 절을 사용하여 범위 경계 값을 설정할 수 있습니다. PostgreSQL은 시작 경계의 경우 INCLUSIVE, 끝 경계의 경우 EXCLUSIVE만 지원합니다. 변환된 파티션 이름은 <original\$1table\$1name>\$1<original\$1partition\$1name> 형식입니다.
+ Db2 LUW에서 파티션 테이블의 기본 키 또는 고유 키를 생성할 수 있습니다. PostgreSQL에서는 각 파티션의 기본 키 또는 고유 키를 직접 생성해야 합니다. 기본 또는 고유 키 제약 조건은 상위 테이블에서 제거해야 합니다. 변환된 키 이름은 <original\$1key\$1name>\$1<original\$1partition \$1name> 형식입니다.
+ Db2 LUW에서는 파티션 테이블에서 또는 파티션 테이블로의 외래 키 제약 조건을 생성할 수 있습니다. 하지만 PostgreSQL은 파티션 테이블에서 외래 키 참조를 지원하지 않습니다. 또한 PostgreSQL은 파티션 테이블에서 다른 테이블로의 외래 키 참조를 지원하지 않습니다.
+ Db2 LUW의 파티션 테이블에 인덱스를 생성할 수 있습니다. 하지만 PostgreSQL에서는 각 파티션에 대한 인덱스를 직접 생성해야 합니다. 인덱스는 상위 테이블에서 제거해야 합니다. 변환된 인덱스 이름은 <original\$1index\$1name>\$1<original\$1partition\$1name> 형식입니다.
+ 행 트리거는 파티션 테이블이 아닌 개별 파티션에 정의해야 합니다. 트리거는 상위 테이블에서 제거해야 합니다. 변환된 트리거 이름은 <original\$1trigger\$1name>\$1<original\$1partition\$1name> 형식입니다.

## PostgreSQL을 대상으로 사용하기 위한 권한
<a name="CHAP_Source.DB2LUW.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*를 안전한 암호로 바꿉니다.

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

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

# Linux, UNIX 및 Windows용 IBM DB2에서 Amazon RDS for MySQL 또는 Amazon Aurora MySQL로 마이그레이션
<a name="CHAP_Source.DB2LUW.ToMySQL"></a>

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

## MySQL을 대상으로 사용하기 위한 권한
<a name="CHAP_Source.DB2LUW.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
+ SELECT ON mysql.proc
+ INSERT, UPDATE ON AWS\$1DB2\$1EXT.\$1
+ INSERT, UPDATE, DELETE ON AWS\$1DB2\$1EXT\$1DATA.\$1
+ CREATE TEMPORARY TABLES ON AWS\$1DB2\$1EXT\$1DATA.\$1

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

```
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 SELECT ON mysql.proc TO 'user_name';
GRANT INSERT, UPDATE ON AWS_DB2_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_DB2_EXT_DATA.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_DB2_EXT_DATA.* TO 'user_name';
```

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

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 파라미터 그룹을 수정해야 합니다.