

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

# 를 사용하여 z/OS 데이터베이스용 IBM DB2에 연결 AWS Schema Conversion Tool
<a name="CHAP_Source.DB2zOS"></a>

 AWS SCT 를 사용하여 z/OS용 IBM Db2의 스키마, 코드 객체 및 애플리케이션 코드를 다음 대상으로 변환할 수 있습니다.
+ Amazon RDS for MySQL
+ Amazon Aurora MySQL 호환 버전
+ Amazon RDS for PostgreSQL
+ Amazon Aurora PostgreSQL 호환 에디션

## Db2 for z/OS를 소스 데이터베이스로 사용하기 위한 사전 조건
<a name="CHAP_Source.DB2zOS.Prerequisites"></a>

IBM Db2 for z/OS 버전 12 함수 수준 100 데이터베이스 버전은 IBM Db2 for z/OS 버전 12의 새로운 기능을 대부분 지원하지 않습니다. 이 데이터베이스 버전은 Db2 버전 11에 대한 폴백 및 Db2 버전 11과의 데이터 공유를 지원합니다. Db2 버전 11의 지원되지 않는 기능이 변환되지 않도록 하려면 IBM Db2 for z/OS 데이터베이스 함수 수준 500 이상을 AWS SCT에 대한 소스로 사용하는 것이 좋습니다.

다음 코드 예제를 사용하여 소스 IBM Db2 for z/OS 데이터베이스의 버전을 확인할 수 있습니다.

```
SELECT GETVARIABLE('SYSIBM.VERSION') as version FROM SYSIBM.SYSDUMMY1;
```

이 코드가 버전 `DSN12015` 이상을 반환해야 합니다.

다음 코드 예제를 사용하여 소스 IBM Db2 for z/OS 데이터베이스의 `APPLICATION COMPATIBILITY` 특수 레지스터 값을 확인할 수 있습니다.

```
SELECT CURRENT APPLICATION COMPATIBILITY as version FROM SYSIBM.SYSDUMMY1;
```

이 코드가 버전 `V12R1M500` 이상을 반환해야 합니다.

## Db2 for z/OS를 소스 데이터베이스로 사용하기 위한 권한
<a name="CHAP_Source.DB2zOS.Permissions"></a>

Db2 for z/OS 데이터베이스에 연결하고 시스템 카탈로그 및 테이블을 읽는 데 필요한 권한은 다음과 같습니다.
+ SELECT ON SYSIBM.LOCATIONS
+ SELECT ON SYSIBM.SYSCHECKS
+ SELECT ON SYSIBM.SYSCOLUMNS
+ SELECT ON SYSIBM.SYSDATABASE
+ SELECT ON SYSIBM.SYSDATATYPES
+ SELECT ON SYSIBM.SYSDUMMY1
+ SELECT ON SYSIBM.SYSFOREIGNKEYS
+ SELECT ON SYSIBM.SYSINDEXES
+ SELECT ON SYSIBM.SYSKEYCOLUSE
+ SELECT ON SYSIBM.SYSKEYS
+ SELECT ON SYSIBM.SYSKEYTARGETS
+ SELECT ON SYSIBM.SYSJAROBJECTS
+ SELECT ON SYSIBM.SYSPACKAGE
+ SELECT ON SYSIBM.SYSPARMS
+ SELECT ON SYSIBM.SYSRELS
+ SELECT ON SYSIBM.SYSROUTINES
+ SELECT ON SYSIBM.SYSSEQUENCES
+ SELECT ON SYSIBM.SYSSEQUENCESDEP
+ SELECT ON SYSIBM.SYSSYNONYMS
+ SELECT ON SYSIBM.SYSTABCONST
+ SELECT ON SYSIBM.SYSTABLES
+ SELECT ON SYSIBM.SYSTABLESPACE
+ SELECT ON SYSIBM.SYSTRIGGERS
+ SELECT ON SYSIBM.SYSVARIABLES
+ SELECT ON SYSIBM.SYSVIEWS

Db2 for z/OS 테이블을 PostgreSQL 파티션된 테이블로 변환하려면 다음과 같이 `RUNSTATS` 유틸리티를 사용하여 데이터베이스의 테이블스페이스 및 테이블에 대한 통계를 수집합니다.

```
LISTDEF YOURLIST INCLUDE TABLESPACES DATABASE YOURDB 
RUNSTATS TABLESPACE
LIST YOURLIST
TABLE (ALL) INDEX (ALL KEYCARD)
UPDATE ALL
REPORT YES
SHRLEVEL REFERENCE
```

이전 예제에서 `YOURDB` 자리 표시자를 소스 데이터베이스의 이름으로 바꿉니다.

## Db2 for z/OS에 소스로 연결
<a name="CHAP_Source.DB2zOS.Connecting"></a>

다음 절차에 따라 AWS SCT를 사용하여 Db2 for z/OS 소스 데이터베이스에 연결합니다.

**IBM Db2 for z/OS 소스 데이터베이스에 연결하려면**

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

1. **IBM Db2 for z/OS**를 선택하고 **다음**을 선택합니다.

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

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

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

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

## MySQL을 대상 데이터베이스로 사용하기 위한 권한
<a name="CHAP_Source.DB2zOS.ConfigureMySQL"></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\$1DB2ZOS\$1EXT.\$1
+ INSERT, UPDATE, DELETE ON AWS\$1DB2ZOS\$1EXT\$1DATA.\$1
+ CREATE TEMPORARY TABLES ON AWS\$1DB2ZOS\$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_DB2ZOS_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_DB2ZOS_EXT_DATA.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_DB2ZOS_EXT_DATA.* TO 'user_name';
```

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

Amazon RDS for MySQL을 대상으로 사용하려면 `log_bin_trust_function_creators` 파라미터를 true로 설정하고 `character_set_server`를 `latin1`로 설정합니다. 이들 파라미터를 구성하려면 새 DB 파라미터 그룹을 생성하거나 기존 DB 파라미터 그룹을 수정해야 합니다.

Aurora MySQL을 대상으로 사용하려면 `log_bin_trust_function_creators` 파라미터를 true로 설정하고 `character_set_server`를 `latin1`로 설정합니다. 또한 `lower_case_table_names` 파라미터를 true로 설정합니다. 이들 파라미터를 구성하려면 새 DB 파라미터 그룹을 생성하거나 기존 DB 파라미터 그룹을 수정해야 합니다.

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

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

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

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

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

```
CREATE ROLE user_name LOGIN PASSWORD 'your_password';
GRANT CREATE ON DATABASE db_name TO user_name;
GRANT rds_superuser 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` 역할을 사용하세요.

## Db2 for z/OS에서 PostgreSQL로의 변환 설정
<a name="CHAP_Source.DB2zOS.PostgreSQLConversionSettings"></a>

Db2 for z/OS에서 PostgreSQL로의 변환 설정을 편집하려면 **설정**을 선택한 다음 **변환 설정**을 선택합니다. 상단 목록에서 **Db2 for z/OS**를 선택한 다음 **Db2 for z/OS – PostgreSQL** 또는 **Db2 for z/OS – Amazon Aurora (PostgreSQL compatible)**를 선택합니다. AWS SCT 는 IBM Db2 for z/OS를 PostgreSQL로 변환하는 데 사용할 수 있는 모든 설정을 표시합니다.

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

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

  예를 들어, 변환된 코드의 설명 수를 최소화하려면 **오류만**을 선택하세요. 변환된 코드의 모든 작업 항목에 대한 설명을 포함하려면 **모든 메시지**를 선택합니다.
+ 대상 데이터베이스의 제약 조건에 대해 고유한 이름을 생성합니다.

  PostgreSQL에서 사용하는 모든 제약 조건 이름은 고유해야 합니다. AWS SCT 는 테이블 이름이 포함된 접두사를 제약 조건 이름에 추가하여 변환된 코드에서 제약 조건의 고유한 이름을 생성할 수 있습니다. AWS SCT 가 제약 조건에 대해 고유한 이름을 생성하도록 하려면 **Generate unique names for constraints**를 선택합니다.
+ 변환된 코드에서 DML 문의 열 이름, 표현식 및 절 형식을 유지합니다.

  AWS SCT 는 DML 문에서 열 이름, 표현식 및 절의 레이아웃을 소스 코드와 비슷한 위치 및 순서로 유지할 수 있습니다. 이렇게 하려면 **Keep the formatting of column names, expressions, and clauses in DML statements**에 대해 **예**를 선택합니다.
+ 변환 범위에서 테이블 파티션을 제외합니다.

  AWS SCT 는 변환 중에 소스 테이블의 모든 파티션을 건너뛸 수 있습니다. 이렇게 하려면 **Exclude table partitions from the conversion scope**를 선택합니다.
+ 증가에 따라 파티셔닝된 테이블에 대해 자동 파티셔닝을 사용합니다.

  데이터 마이그레이션의 경우는 지정된 크기보다 큰 모든 테이블을 자동으로 분할할 수 AWS SCT 있습니다. 이 옵션을 사용하려면 **Enforce partition of tables larger than**을 선택하고 테이블 크기를 기가바이트 단위로 입력합니다. 그런 다음 파티션 수를 입력합니다.이 옵션을 켤 때 소스 데이터베이스의 직접 액세스 스토리지 디바이스(DASD) 크기를 AWS SCT 고려합니다.

  AWS SCT 는 파티션 수를 자동으로 결정할 수 있습니다. 이렇게 하려면 **Increase the number of partitions proportionally**를 선택하고 최대 파티션 수를 입력합니다.
+ 동적 결과 세트를 refcursor 데이터 유형의 값 배열로 반환합니다.

  AWS SCT 는 동적 결과 세트를 반환하는 소스 프로시저를 추가 출력 파라미터로 열린 refcursor 배열이 있는 프로시저로 변환할 수 있습니다. 이렇게 하려면 **Use an array of refcursors to return all dynamic result sets**를 선택합니다.
+ 날짜 및 시간 값을 문자열 표현으로 변환하는 데 사용할 표준을 지정합니다.

  AWS SCT 는 지원되는 업계 형식 중 하나를 사용하여 날짜 및 시간 값을 문자열 표현으로 변환할 수 있습니다. 이렇게 하려면 **Use string representations of date values** 또는 **Use string representations of time values**를 선택합니다. 그런 다음, 다음 표준 중 하나를 선택합니다.
  + 국제 표준 기구(ISO)
  + IBM 유럽 표준(EUR)
  + IBM 미국 표준(USA)
  + Japanese Industrial Standard Christian Era(JIS)