

# Amazon RDS for Db2
<a name="CHAP_Db2"></a>

Amazon RDS는 다음 IBM Db2 에디션을 실행하는 DB 인스턴스를 지원합니다.
+ Db2 Standard Edition
+ Db2 Advanced Edition

Amazon RDS는 다음 버전의 Db2를 실행하는 DB 인스턴스를 지원합니다.
+ Db2 11.5

마이너 버전 지원에 대한 자세한 내용은 [Amazon RDS의 Db2 버전](Db2.Concepts.VersionMgmt.md) 단원을 참조하세요.

DB 인스턴스를 생성하기 전에 이 사용 설명서의 [Amazon RDS 환경 설정](CHAP_SettingUp.md) 섹션에 있는 단계를 완료해야 합니다. 마스터 사용자를 이용하여 DB 인스턴스를 생성하면 사용자에게 몇 가지 제한이 적용된 `DBADM` 권한이 부여됩니다. 추가 데이터베이스 계정 생성과 같은 관리 작업에 이 사용자를 사용합니다. `SYSADM`, `SYSCTRL`, `SYSMAINT` 인스턴스 수준 권한 또는 `SECADM` 데이터베이스 수준 권한은 사용할 수 없습니다.

다음을 생성할 수 있습니다.
+ DB 인스턴스
+ DB 스냅샷
+ 특정 시점 복원
+ 자동 스토리지 백업 
+ 수동 스토리지 백업

Virtual Private Cloud(VPC)에서 Db2를 실행하는 DB 인스턴스를 사용할 수 있습니다. 또한 다양한 옵션을 활성화하여 Amazon RDS for Db2 DB 인스턴스에 기능을 추가할 수 있습니다. Amazon RDS는 고가용성 장애 조치 솔루션으로서 RDS for Db2용 다중 AZ 배포를 지원합니다.

**중요**  
관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 고급 권한이 필요한 특정 시스템 절차와 표에 대한 액세스를 제한합니다. IBM Db2 CLP와 같은 표준 SQL 클라이언트를 사용하여 데이터베이스에 액세스할 수 있습니다. 그러나 Telnet 또는 SSH(Secure Shell)를 사용하여 호스트에 직접 액세스할 수는 없습니다.

**Topics**
+ [Amazon RDS의 Db2 개요](db2-overview.md)
+ [Amazon RDS for Db2 DB 인스턴스를 생성하기 위한 사전 조건](db2-db-instance-prereqs.md)
+ [단일 Amazon RDS for Db2 DB 인스턴스의 여러 데이터베이스](db2-multiple-databases.md)
+ [DB 인스턴스에 연결](USER_ConnectToDb2DBInstance.md)
+ [Amazon RDS for Db2 DB 인스턴스 연결 보안](Db2.Concepts.RestrictedDBAPrivileges.md)
+ [Amazon RDS for Db2 DB 인스턴스 관리](db2-administering-db-instance.md)
+ [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md)
+ [Amazon RDS for Db2로 데이터 마이그레이션](db2-migrating-data-to-rds.md)
+ [Amazon RDS for Db2 페더레이션](db2-federation.md)
+ [Amazon RDS for Db2의 복제본 작업](db2-replication.md)
+ [Amazon RDS for Db2 DB 인스턴스 옵션](Db2.Options.md)
+ [Amazon RDS for Db2를 위한 외부 저장 프로시저](db2-external-stored-procedures.md)
+ [Amazon RDS for Db2에 대해 알려진 문제 및 제한](db2-known-issues-limitations.md)
+ [Amazon RDS for Db2 저장 프로시저 참조](db2-stored-procedures.md)
+ [Amazon RDS for Db2 사용자 정의 함수 참조](db2-user-defined-functions.md)
+ [Amazon RDS for Db2 문제 해결](db2-troubleshooting.md)

# Amazon RDS의 Db2 개요
<a name="db2-overview"></a>

다음 섹션을 살펴보면 Amazon RDS의 Db2에 대한 개요를 파악할 수 있습니다.

**Topics**
+ [Amazon RDS for Db2 기능](Db2.Concepts.FeatureSupport.md)
+ [Amazon RDS의 Db2 버전](Db2.Concepts.VersionMgmt.md)
+ [Amazon RDS for Db2 라이선스 옵션](db2-licensing.md)
+ [Amazon RDS for Db2 인스턴스 클래스](Db2.Concepts.General.InstanceClasses.md)
+ [Amazon RDS for Db2 기본 역할](db2-default-roles.md)
+ [Amazon RDS for Db2 파라미터](db2-supported-parameters.md)
+ [Amazon RDS에서 Db2 데이터베이스를 위한 EBCDIC 데이터 정렬](db2-ebcdic.md)
+ [Amazon RDS for Db2 DB 인스턴스의 현지 시간대](db2-time-zone.md)

# Amazon RDS for Db2 기능
<a name="Db2.Concepts.FeatureSupport"></a>

Amazon RDS for Db2는 IBM Db2 데이터베이스의 특성과 기능을 대부분 지원합니다. 일부 기능에는 제한된 지원 또는 제한된 권한이 있을 수 있습니다. 특정 Db2 버전의 Db2 데이터베이스 기능에 대한 자세한 내용은 [IBM Db2 설명서](https://www.ibm.com/docs/en/db2)를 참조하세요.

[데이터베이스 관련 새로운 소식](https://aws.amazon.com/about-aws/whats-new/database/) 페이지에서 새로운 Amazon RDS 기능을 필터링할 수 있습니다. [**제품(Products)**]에서 [**Amazon RDS**]를 선택합니다. 그런 다음 **Db2 2023**과 같은 키워드를 사용하여 검색할 수 있습니다.

**참고**  
다음 목록은 완전하지 않습니다.

**Topics**
+ [RDS for Db2에서 지원되는 기능](#db2-supported-features)
+ [RDS for Db2에서 지원되지 않는 기능](#db2-unsupported-features)

## RDS for Db2에서 지원되는 기능
<a name="db2-supported-features"></a>

RDS for Db2는 IBM Db2의 기본 기능과 Amazon RDS의 핵심 기능을 포함하는 기능을 지원합니다.

### IBM Db2의 기본 기능
<a name="db2-supported-features-native-db2"></a>

RDS for Db2는 다음과 같은 Db2 데이터베이스 기능을 지원합니다.
+ 고객이 정의한 코드 세트, 데이터 정렬, 페이지 크기 및 지역을 사용하는 표준 데이터베이스 생성 기능을 제공합니다. Amazon RDS [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 저장 프로시저를 사용합니다.
+ 로컬 사용자 및 그룹 추가, 삭제 또는 수정 기능을 제공합니다. [RDS for Db2에 대한 권한 부여 및 취소를 위한 저장된 프로시저](db2-sp-granting-revoking-privileges.md)에 대한 Amazon RDS 저장 프로시저를 사용합니다.
+ Amazon RDS [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role) 저장 프로시저를 사용한 역할 생성 기능을 제공합니다.
+ 표준 행 구성 표를 지원합니다.
+ 열로 구성된 표의 분석 워크로드를 지원합니다.
+ Oracle 및 MySQL과 같은 DB2 호환성 기능을 정의할 수 있습니다.
+ Java 기반 외부 저장 프로시저 지원
+ SSL/TLS를 사용하여 전송 중 데이터 암호화를 지원합니다.
+ 데이터베이스 상태 모니터링(`ALIVE`, `DOWN`, `STORAGE_FULL`, `UNKNOWN`, `STANDBY_CONNECTABLE`) 기능을 제공합니다.
+ 고객이 제공한 오프라인 또는 온라인 Linux (LE) 데이터베이스 복원 기능을 제공합니다. [RDS for Db2용 데이터베이스에 대해 저장된 프로시저](db2-sp-managing-databases.md)에 대한 Amazon RDS 저장 프로시저를 사용합니다.
+ 고객이 제공한 Db2 아카이브 로그를 적용하여 데이터베이스를 자체 관리형 Db2 데이터베이스와 동기화한 상태를 유지합니다. [RDS for Db2용 데이터베이스에 대해 저장된 프로시저](db2-sp-managing-databases.md)에 대한 Amazon RDS 저장 프로시저를 사용합니다.
+ Db2 인스턴스 수준 및 데이터베이스 수준 감사를 지원합니다.
+ 동종 페더레이션을 지원합니다.
+ Amazon Simple Storage Service(S3) 내 데이터 파일에서 표를 로드할 수 있습니다.
+ 사용자, 그룹 또는 역할에 부여한 `CONNECT`, `SYSMON`, `ACCESSCTRL`, `DATAACCESS`, `SQLADM`, `WLMADM`, `EXPLAIN`, `LOAD`, `IMPLICIT_SCHEMA` 등의 권한
+ 여러 데이터베이스 만들기.
**참고**  
RDS for Db2 DB 인스턴스에는 최대 50개의 데이터베이스가 포함될 수 있습니다. 자세한 내용은 [단일 Amazon RDS for Db2 DB 인스턴스의 여러 데이터베이스](db2-multiple-databases.md) 섹션을 참조하세요.

### Amazon RDS의 핵심 기능
<a name="db2-supported-features-rds-core"></a>

RDS for Db2는 다음과 같은 Amazon RDS의 핵심 기능을 지원합니다.
+ DB 인스턴스에 할당할 사용자 지정 파라미터 그룹
+ DB 인스턴스 생성, 수정 및 삭제
+ 자체 관리형 Db2 오프라인 또는 온라인 Linux (LE) 데이터베이스 백업 복원
**참고**  
백업을 복원하려면 DB 인스턴스를 생성할 때 데이터베이스 이름을 제공하지 마세요. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ gp3, io2 및 io1 스토리지 유형 지원
+ Kerberos 인증을 위한 AWS Managed Microsoft AD 사용 및 RDS for Db2를 위한 LDAP 그룹 인증
+ 기존 Db2 인스턴스의 보안 그룹, 포트, 인스턴스 유형, 스토리지, 백업 보존 기간 및 기타 설정 수정
+ DB 인스턴스를 위한 삭제 방지
+ 암호화된 백업의 리전 간 시점 복구(PITR)
+ 스토리지 암호화 및 저장 시 암호화에 AWS Key Management Service(AWS KMS) 사용
+ 고가용성을 위한 예비 복제본이 하나인 다중 AZ DB 인스턴스
+ DB 인스턴스 재부팅
+ 마스터 암호 업데이트
+ DB 인스턴스를 특정 시점으로 복원
+ 스토리지 수준 백업을 사용한 DB 인스턴스의 백업 및 복원
+ DB 인스턴스 시작 및 중지
+ DB 인스턴스 유지 관리
+ 동일 리전 및 교차 리전 대기 및 읽기 전용 복제본

## RDS for Db2에서 지원되지 않는 기능
<a name="db2-unsupported-features"></a>

RDS for Db2는 다음과 같은 Db2 데이터베이스 기능을 지원하지 않습니다.
+ 마스터 사용자의 `SYSADM`, `SECADM`, `SYSMAINT` 액세스
+ C, C\$1\$1 또는 Cobol로 작성된 외부 저장 프로시저
+ 단일 호스트의 여러 Db2 DB 인스턴스
+ 인증을 위한 외부 GSS-API 플러그인
+ Db2 데이터베이스 백업 또는 복원을 위한 외부 타사 플러그인
+ IBM Db2 Warehouse 등의 다중 노드 대량 병렬 처리(MPP)
+ IBM Db2 pureScale.
+ RDS for Db2에 대한 고가용성 재해 복구(HADR)의 수동 설정입니다.
**참고**  
Amazon RDS는 복제본을 통해 RDS for Db2에 대한 HADR을 지원하고 관리합니다. 자세한 내용은 [Amazon RDS for Db2의 복제본 작업](db2-replication.md) 섹션을 참조하세요.  
RDS for Db2는 다중 AZ 배포, 교차 리전 자동 백업 및 복제를 지원합니다. 자세한 내용은 [Amazon RDS에 대한 다중 AZ 인스턴스 배포](Concepts.MultiAZSingleStandby.md) 및 [다른 AWS 리전에 자동 백업 복제](USER_ReplicateBackups.md)(을)를 참조하세요.
+ 기본 데이터베이스 암호화
+ Informix, Sybase 및 Teradata에 대한 이기종 페더레이션. 자세한 내용은 [Amazon RDS for Db2 페더레이션](db2-federation.md) 섹션을 참조하세요.
+ 데이터 백업 및 복원을 통한 펜싱되지 않은 루틴 생성 및 펜싱되지 않은 기존 루틴 마이그레이션. 자세한 내용은 [울타리가 없는 루틴](db2-known-issues-limitations.md#db2-known-issues-limitations-non-fenced-routines) 섹션을 참조하세요.
+ 자동이 아닌 새 스토리지 테이블스페이스 생성 자세한 내용은 [마이그레이션 중 자동이 아닌 스토리지 테이블스페이스](db2-known-issues-limitations.md#db2-known-issues-limitations-non-automatic-storage-tablespaces) 섹션을 참조하세요.
+ 외부 테이블.

# Amazon RDS의 Db2 버전
<a name="Db2.Concepts.VersionMgmt"></a>

Db2의 경우 버전 번호는 **major.minor.build.revision의 형식을 취합니다(예: 11.5.9.0.sb00000000.r1). 버전 구현은 Db2의 버전 구현과 일치합니다.

**메이저**  
버전 번호의 정수 부분과 첫 번째 소수 부분 모두가 메이저 버전 번호입니다(예: 11.5). 메이저 버전 번호가 변경되는 경우(예: 버전 11.5에서 12.1로 변경되는 경우) 메이저 버전 변경으로 간주합니다.

**마이너**  
마이너 버전 번호는 버전 번호의 세 번째와 네 번째 부분 모두입니다(예: 11.5.9.0의 9.0). 세 번째 부분은 Db2 모드팩을 나타냅니다(예: 9.0의 9). 네 번째 부분은 Db2 픽스팩을 나타냅니다(예: 9.0의 0). Db2 모드팩 또는 Db2 픽스팩이 변경될 경우(예: 버전 11.5.9.0에서 11.5.9.1로 또는 11.5.9.0에서 11.5.10.0으로 변경되는 경우) 마이너 버전 변경으로 간주합니다. 단, 카탈로그 표 업데이트는 예외입니다. (Amazon RDS는 이러한 예외를 처리합니다.)

** 구축**  
빌드 번호는 버전 번호의 다섯 번째 부분입니다. 예를 들어, 11.5.9.0.sb00000000의 sb00000000이 이에 해당합니다. 숫자 부분이 모두 0인 빌드 번호는 표준 빌드를 나타냅니다. 숫자 부분이 모두 0이 아닌 빌드 번호는 특수 빌드를 나타냅니다. 기존 Db2 버전의 보안 수정 사항이나 특수 빌드가 있는 경우 빌드 번호가 변경됩니다. 빌드 번호 변경은 Amazon RDS에서 새 마이너 버전을 자동으로 적용했음을 나타내기도 합니다.

**개정**  
수정 번호는 버전 번호의 여섯 번째 부분입니다(예: 11.5.9.0.sb00000000.r1의 r1). 수정 버전은 기존 Db2 릴리스에 대한 Amazon RDS 개정판입니다. 수정 번호 변경은 Amazon RDS에서 새 마이너 버전을 자동으로 적용했음을 나타냅니다.

**Topics**
+ [Amazon RDS Db2 인스턴스에 대한 업그레이드 관리](Db2.Concepts.VersionMgmt.Supported.md)
+ [Amazon RDS에서 지원되는 Db2 메이저 버전](#Db2.Concepts.VersionMgmt.ReleaseCalendar)

# Amazon RDS Db2 인스턴스에 대한 업그레이드 관리
<a name="Db2.Concepts.VersionMgmt.Supported"></a>

RDS에서 지원되는 Db2 마이너 버전의 현재 목록을 보려면 다음 명령 중 하나를 사용합니다.

```
aws rds describe-db-engine-versions --engine db2-se
aws rds describe-db-engine-versions --engine db2-ae
```

또한 Amazon RDS는 업그레이드 롤아웃 정책을 지원하여 여러 데이터베이스 리소스 및 AWS 계정에서 자동 마이너 버전 업그레이드를 관리합니다. 자세한 내용은 [자동 마이너 버전 AWS Organizations 업그레이드에 업그레이드 롤아웃 정책 사용](RDS.Maintenance.AMVU.UpgradeRollout.md) 섹션을 참조하세요.

새 DB 인스턴스를 생성할 때는 현재 지원되는 모든 Db2 버전을 지정할 수 있습니다. 메이저 버전(예: Db2 11.5) 및 지정된 메이저 버전에 대해 지원되는 모든 마이너 버전을 지정할 수 있습니다. 버전이 지정되지 않은 경우 Amazon RDS는 지원되는 버전(보통 최신 버전)을 기본값으로 설정합니다. 메이저 버전이 지정되었지만 마이너 버전이 지정되지 않은 경우, Amazon RDS는 고객이 지정한 메이저 버전의 최근 릴리스를 기본값으로 설정합니다. 지원되는 버전 목록과 새로 만든 DB 인스턴스의 기본값을 보려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS Command Line Interface(AWS CLI) 명령을 사용합니다.

예를 들어, 지원되는 Amazon RDS for Db2 엔진 버전 목록을 보려면 다음 AWS CLI 명령을 실행합니다. *리전*을 사용자의 AWS 리전으로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-engine-versions \
    --filters Name=engine,Values=db2-ae,db2-se \
    --query "DBEngineVersions[].{Engine:Engine, EngineVersion:EngineVersion, DBParameterGroupFamily:DBParameterGroupFamily}" \
    --region region
```

Windows의 경우:

```
aws rds describe-db-engine-versions ^
    --filters Name=engine,Values=db2-ae,db2-se ^
    --query "DBEngineVersions[].{Engine:Engine, EngineVersion:EngineVersion, DBParameterGroupFamily:DBParameterGroupFamily}" ^
    --region region
```

다음 예제와 비슷한 출력이 생성됩니다.

```
[
    {
    "Engine": "db2-ae",
    "EngineVersion": "11.5.9.0.sb00000000.r1",
    "DBParameterGroupFamily": "db2-ae-11.5"
    },
    {
    "Engine": "db2-se",
    "EngineVersion": "11.5.9.0.sb00000000.r1",
    "DBParameterGroupFamily": "db2-se-11.5"
    }
]
```

기본 Db2 버전은 AWS 리전에 따라 다를 수 있습니다. 특정 마이너 버전으로 DB 인스턴스를 생성하려면 DB 인스턴스 생성 중에 마이너 버전을 지정합니다. `db2-ae` 및 `db2-se` 데이터베이스 엔진에 대한 AWS 리전의 기본 버전은 ` describe-db-engine-versions` 명령을 실행하여 확인할 수 있습니다. 다음 예제에서는 미국 동부(버지니아 북부)의 `db2-ae`에 대한 기본 버전을 반환합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-engine-versions \
    --default-only --engine db2-ae \
    --query "DBEngineVersions[].{Engine:Engine, EngineVersion:EngineVersion, DBParameterGroupFamily:DBParameterGroupFamily}" \
    --region us-east-1
```

Windows의 경우:

```
aws rds describe-db-engine-versions ^
    --default-only --engine db2-ae ^
    --query "DBEngineVersions[].{Engine:Engine, EngineVersion:EngineVersion, DBParameterGroupFamily:DBParameterGroupFamily}" ^
    --region us-east-1
```

다음 예제와 비슷한 출력이 생성됩니다.

```
[
    {
    "Engine": "db2-ae",
    "EngineVersion": "11.5.9.0.sb00000000.r1",
    "DBParameterGroupFamily": "db2-ae-11.5"
    }
]
```

Amazon RDS를 통해 사용자는 Db2 인스턴스를 Amazon RDS가 지원하는 새 메이저 버전으로 언제 업그레이드할지를 제어합니다. 특정 Db2 버전과의 호환성을 유지하고, 프로덕션 환경에 배포하기 전에 애플리케이션으로 새 버전을 테스트하고, 가장 원하는 일정에 맞춰 메이저 버전 업그레이드를 수행할 수 있습니다.

자동 마이너 버전 업그레이드를 사용하면 Amazon RDS가 지원하는 DB 인스턴스를 새 Db2 마이너 버전으로 자동 업그레이드합니다. 이 패치는 예약 유지보수 중에 발생합니다. DB 인스턴스를 수정하여 자동 마이너 버전 업그레이드를 활성화 또는 비활성화할 수 있습니다.

Db2 버전 11.5.9.1 및 11.5.10.0을 제외하고 새 Db2 마이너 버전으로의 자동 업그레이드에는 새 빌드 및 수정본으로의 자동 업그레이드가 포함됩니다. 11.5.9.1 및 11.5.10.0의 경우 마이너 버전을 수동으로 업그레이드하세요.

자동으로 예약된 업그레이드를 사용하지 않기로 선택한 경우, 사용자는 메이저 버전 업데이트를 위해 선택한 것과 동일한 프로시저에 따라 지원되는 마이너 버전 릴리스로 수동으로 업그레이드할 수 있습니다. 자세한 내용은 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md) 섹션을 참조하세요.

## Amazon RDS에서 지원되는 Db2 메이저 버전
<a name="Db2.Concepts.VersionMgmt.ReleaseCalendar"></a>

RDS for Db2 메이저 버전은 해당 IBM 버전에 대해 IBM 지원(기본)이 종료될 때까지 표준 지원에 따라 사용할 수 있습니다. 다음 표에는 테스트 및 업그레이드 주기를 계획하는 데 참고할 수 있는 날짜가 나와 있습니다. Amazon이 RDS for Db2 버전에 대한 지원을 원래 명시일보다 오래 연장할 경우, 이 표를 이후 날짜를 반영하도록 업데이트할 계획입니다.

다음 날짜를 사용하여 테스트 및 업그레이드 주기를 계획할 수 있습니다.

**참고**  
월과 연도만 있는 날짜는 대략적인 날짜이며 알 수 있는 정확한 날짜로 업데이트됩니다.  
[describe-db-major-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-major-engine-versions.html) AWS CLI 명령을 실행하거나 [DescribeDBMajorEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBMajorEngineVersions.html) RDS API 작업을 사용하여 Db2 데이터베이스의 메이저 버전을 볼 수 있습니다.


| Db2 메이저 버전  | IBM 릴리스 날짜  | RDS 릴리스 날짜  | IBM 지원 종료(Standard 및 Advanced Edition) | IBM 지원 종료(연장) | 
| --- | --- | --- | --- | --- | 
|  Db2 11.5  |  2019년 6월 27일  |  2023년 11월 27일  | 2027년 4월 30일 |  2031년 4월 30일  | 

# Amazon RDS for Db2 라이선스 옵션
<a name="db2-licensing"></a>

Amazon RDS for Db2에는 Bring Your Own License(BYOL) 라이선스 옵션과 AWS Marketplace를 통한 Db2 라이선스 옵션이 있습니다.

**Topics**
+ [Db2용 Bring Your Own License(BYOL)](#db2-licensing-options-byol)
+ [AWS Marketplace를 통한 Db2 라이선스](#db2-licensing-options-marketplace)
+ [Db2 라이선스 간 전환](#db2-edition-license-switching)

## Db2용 Bring Your Own License(BYOL)
<a name="db2-licensing-options-byol"></a>

BYOL 모델에서는 기존의 Db2 데이터베이스 라이선스를 사용하여 Amazon RDS에서 데이터베이스를 배포합니다. 실행할 DB 인스턴스 클래스와 Db2 데이터베이스 에디션에 적합한 Db2 데이터베이스 라이선스가 있어야 합니다. 또한 클라우드 컴퓨팅 환경에서 IBM 데이터베이스 소프트웨어 라이선스 IBM 정책을 따라야 합니다.

**참고**  
다중 AZ DB 인스턴스는 Db2 데이터베이스가 설치되었으나 실행되지 않기 때문에 콜드 스탠바이 상태입니다. 스탠바이 인스턴스는 요청을 읽거나 실행 또는 처리할 수 없습니다. 자세한 내용은 IBM 웹 사이트의 [IBM Db2 라이선스 정보]( https://www.ibm.com/support/customer/csol/terms/licenses#license-search)를 참조하세요.

이 모델에서는 활성 IBM 지원 계정을 계속 사용합니다. Db2 데이터베이스 서비스 요청은 IBM에 직접 문의하세요. 지원 계정에 사례 지원이 있는 경우 Amazon RDS 관련 문제는 지원에 문의합니다. Amazon Web Services 및 IBM에는 두 조직의 지원이 필요한 사례에 대해 다중 벤더 지원 프로세스가 있습니다.

Amazon RDS는 Db2 Standard Edition 및 Db2 Advanced Edition에 대한 BYOL 모델을 지원합니다.

**Topics**
+ [Db2용 Bring Your Own License(BYOL)를 위한 IBM ID](#db2-prereqs-ibm-info)
+ [RDS for Db2 DB 인스턴스의 파라미터 그룹에 IBM ID 추가](#db2-licensing-options-byol-adding-ids)
+ [을 와 통합AWS License Manager](#db2-lms-integration)

### Db2용 Bring Your Own License(BYOL)를 위한 IBM ID
<a name="db2-prereqs-ibm-info"></a>

BYOL 모델에서는 RDS for Db2 DB 인스턴스를 생성, 수정 또는 복원하려면 IBM Customer ID 및 IBM Site ID가 필요합니다. RDS for Db2 DB 인스턴스를 생성하기 전에** IBM Customer ID 및 IBM Site ID를 사용하여 사용자 지정 파라미터 그룹을 만들어야 합니다. 자세한 내용은 [RDS for Db2 DB 인스턴스의 파라미터 그룹에 IBM ID 추가](#db2-licensing-options-byol-adding-ids) 섹션을 참조하세요. 동일한 AWS 계정 또는 AWS 리전에서 서로 다른 IBM Customer IDs와 IBM Site IDs를 가진 여러 RDS for Db2 DB 인스턴스를 실행할 수 있습니다.

**중요**  
IBM Customer ID 및 IBM Site ID로 라이선스를 확인할 수 없는 경우 이러한 확인되지 않은 라이선스로 실행 중인 DB 인스턴스를 종료할 수 있습니다.

신규 IBM Db2 고객인 경우 먼저 Db2 소프트웨어 라이선스를 [https://www.ibm.com/products/db2/pricing](https://www.ibm.com/products/db2/pricing)에서 구매해야 합니다. Db2 소프트웨어 라이선스를 구매한 후에 IBM에서 IBM Customer ID와 IBM Site ID가 나와 있는 자격 증명을 받게 됩니다.

기존 IBM Db2 고객인 경우 IBM에서 제공하는 자격 증명 인증서에서 IBM Customer ID와 IBM Site ID를 찾아볼 수 있습니다.

[IBM Passport Advantage Online](https://www.ibm.com/software/passportadvantage/pao_customer.html) 계정에서도 IBM Customer ID 및 IBM Site ID를 찾을 수 있습니다. 로그인한 후 기본 페이지 또는 소프트웨어 다운로드 페이지에서 두 ID를 모두 볼 수 있습니다.

### RDS for Db2 DB 인스턴스의 파라미터 그룹에 IBM ID 추가
<a name="db2-licensing-options-byol-adding-ids"></a>

기본 파라미터 그룹을 수정할 수 없으므로, 사용자 지정 파라미터 그룹을 만든 다음 IBM Customer ID 및 IBM Site ID 값을 포함하도록 수정해야 합니다. 파라미터 그룹에 대한 자세한 내용은 [Amazon RDS DB 인스턴스용 DB 파라미터 그룹](USER_WorkingWithDBInstanceParamGroups.md) 단원을 참조하세요.

**중요**  
RDS for Db2 DB 인스턴스를 생성하기 전에** IBM Customer ID 및 IBM Site ID를 사용하여 사용자 지정 파라미터 그룹을 만들어야 합니다.

다음 표에 있는 파라미터 설정을 사용합니다.


| 파라미터 | 값 | 
| --- | --- | 
|  `rds.ibm_customer_id`  |  `<your IBM Customer ID>`  | 
|  `rds.ibm_site_id`  |  `<your IBM Site ID>`  | 
|  `ApplyMethod`  |  `immediate`, `pending-reboot`  | 

파라미터는 동적이므로, 파라미터에 대한 모든 변경 사항이 즉시 적용되기 때문에 DB 인스턴스를 재부팅할 필요가 없습니다. 변경 사항을 즉시 적용하지 않으려면 `ApplyMethod`를 `pending-reboot`로 설정하여 유지 관리 기간에 변경을 예약할 수 있습니다.

AWS Management Console, AWS CLI 또는 Amazon RDS API를 통해 사용자 지정 파라미터 그룹을 생성하고 수정할 수 있습니다.

#### 콘솔
<a name="db2-licensing-options-adding-ids-console"></a>

**IBM Customer ID 및 IBM Site ID를 파라미터 그룹에 추가하려면**

1. 새 DB 파라미터 그룹을 만듭니다. DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. 생성한 파라미터 그룹을 수정합니다. 파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

#### AWS CLI
<a name="db2-licensing-options-adding-ids-cli"></a>

**IBM Customer ID 및 IBM Site ID를 파라미터 그룹에 추가하려면**

1. [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 명령을 실행하여 사용자 지정 파라미터 그룹을 생성합니다.

   다음 필수 옵션을 포함합니다.
   + `--db-parameter-group-name` – 생성하려는 파라미터 그룹의 이름입니다.
   + `--db-parameter-group-family` – Db2 엔진 에디션 및 메이저 버전입니다. 유효한 값: `db2-se-11.5`, `db2-ae-11.5`.
   + `--description` – 이 파라미터 그룹에 대한 설명입니다.

   DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 명령을 실행하여 만든 사용자 지정 파라미터 그룹의 파라미터를 수정합니다.

   다음 필수 옵션을 포함합니다.
   + `--db-parameter-group-name` – 생성한 파라미터 그룹의 이름입니다.
   + `--parameters` – 파라미터 업데이트를 위한 파라미터 이름, 값, 응용 방법으로 구성된 배열입니다.

   파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

#### RDS API
<a name="db2-licensing-options-adding-ids-api"></a>

**IBM Customer ID 및 IBM Site ID를 파라미터 그룹에 추가하려면**

1. Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html) 작업을 사용하여 DB 파라미터 그룹을 생성합니다.

   다음 필수 파라미터를 포함합니다.
   + `DBParameterGroupName`
   + `DBParameterGroupFamily`
   + `Description`

   DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html) 작업을 사용하여 생성한 사용자 지정 파라미터 그룹의 파라미터를 수정합니다.

   다음 필수 파라미터를 포함합니다.
   + `DBParameterGroupName`
   + `Parameters`

   파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

이제 DB 인스턴스를 만들고 사용자 지정 파라미터 그룹을 DB 인스턴스에 연결할 준비가 되었습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 및 [Amazon RDS의 DB 인스턴스에 DB 파라미터 그룹 연결](USER_WorkingWithParamGroups.Associating.md)(을)를 참조하세요.

### 을 와 통합AWS License Manager
<a name="db2-lms-integration"></a>

BYOL 모델에서 RDS for Db2 라이선스 사용을 모니터링하는 데 도움이 되도록 [AWS License Manager](https://aws.amazon.com/license-manager/)는 RDS for Db2와 통합됩니다. License Manager는 Oracle 가상 CPU(vCPU)를 기반으로 RDS for Db2 엔진 버전 추적을 지원합니다. 또한 License Manager를 AWS Organizations와 함께 사용하여 모든 조직 계정을 중앙에서 관리할 수도 있습니다.

RDS for Db2 DB 인스턴스의 라이선스 사용량을 추적하려면 자체 관리형 라이선스를 만들어야 합니다. AWS Management Console, AWS License Manager CLI 및 AWS License Manager API를 사용하여 자체 관리형 라이선스를 만들 수 있습니다. 또는 CloudFormation 및 Terraform 템플릿을 사용하여 자체 관리형 라이선스 만들기를 자동화할 수 있습니다.

제품 정보 필터와 일치하는 RDS for Db2 리소스가 자체 관리형 라이선스와 자동으로 연결됩니다. RDS for Db2 DB 인스턴스 검색에는 최대 24시간이 소요될 수 있습니다.

다음 표에는 RDS for Db2용 엔진 에디션 제품 정보 필터에 사용 가능한 값이 나와 있습니다.


| 값 | 설명 | 
| --- | --- | 
|  `db2-se`  |  Db2 Standard Edition  | 
|  `db2-ae`  |  Db2 Advanced Edition  | 

**Topics**
+ [용어](#db2-lms-integration-terms)
+ [AWS License Manager에서 자체 관리형 라이선스 생성](#db2-lms-integration-tracking)
+ [템플릿을 사용하여 AWS License Manager에서 자체 관리형 라이선스 만들기 자동화](#db2-lms-integration-templates)
+ [자체 관리형 라이선스를 만들기 위한 설정](#db2-settings-lms)

#### 용어
<a name="db2-lms-integration-terms"></a>

이 페이지에서는 Amazon RDS와 AWS License Manager의 통합을 이야기할 때 다음 용어를 사용합니다.

자체 관리형 라이선스  
자체 관리형 라이선스는 AWS License Manager에서 사용되는 용어입니다. Amazon RDS 콘솔은 라이선스를 AWS License Manager 구성이라고 합니다. 자체 관리형 라이선스에는 기업 계약 조건에 기반한 라이선스 규칙이 포함됩니다. 생성하는 규칙은 AWS에서 라이선스를 사용하는 명령을 처리하는 방법을 결정합니다. 자체 관리형 라이선스를 만드는 동안 조직의 규정 준수 팀과 긴밀히 협력하여 기업 계약을 검토하세요. 자세한 내용은 [License Manager의 자체 관리형 라이선스](https://docs.aws.amazon.com/license-manager/latest/userguide/license-configurations.html)를 참조하세요.

#### AWS License Manager에서 자체 관리형 라이선스 생성
<a name="db2-lms-integration-tracking"></a>

AWS Management Console, AWS License Manager CLI 및 AWS License Manager API를 사용하여 자체 관리형 라이선스를 만들 수 있습니다.

**참고**  
AWS Management Console을 사용하여 RDS for Db2 DB 인스턴스를 생성하는 경우 라이선스의 이름을 입력하여 자체 관리형 라이선스를 생성합니다. 그런 다음 Amazon RDS는 DB 인스턴스를 이 라이선스와 연결합니다. (Amazon RDS 콘솔에서 이 라이선스를 AWS License Manager 구성이라고 합니다.) AWS License Manager CLI 또는 AWS License Manager API를 사용하여 RDS for Db2 DB 인스턴스를 생성하려면 먼저 다음 단계를 통해 자체 관리형 라이선스를 생성해야 합니다. RDS for Db2 DB 인스턴스를 특정 시점으로 복원하거나 스냅샷에서 복원하는 경우에도 동일한 상황이 적용됩니다.

##### 콘솔
<a name="db2-lms-integration.console"></a>

**RDS for Db2 DB 인스턴스의 라이선스 사용량을 추적하기 위한 자체 관리형 라이선스를 생성하는 방법**

1. [https://console.aws.amazon.com/license-manager/](https://console.aws.amazon.com/license-manager/)로 이동합니다.

1. 자체 관리형 라이선스를 생성합니다.

   자세한 내용은 **AWS License Manager 사용 설명서의 [Create a self-managed license](https://docs.aws.amazon.com/license-manager/latest/userguide/create-license-configuration.html)를 참조하세요.

   **제품 정보** 패널에서 **RDS Product Information Filter(RDS 제품 정보 필터)**에 대한 규칙을 추가합니다.

   자세한 내용은*AWS License Manager API 참조*의 [ProductInformation](https://docs.aws.amazon.com/license-manager/latest/APIReference/API_ProductInformation.html)을 참조하십시오.

##### AWS License Manager CLI
<a name="db2-lms-integration.cli"></a>

**참고**  
이 절차에서는 AWS License Manager CLI 명령을 사용합니다.

AWS CLI를 사용하여 자체 관리형 라이선스를 만들려면 AWS License Manager [create-license-configuration](https://docs.aws.amazon.com/cli/latest/reference/license-manager/create-license-configuration.html) 명령을 실행합니다. `--cli-input-json` 또는 `--cli-input-yaml` 옵션을 사용하여 옵션을 명령에 전달합니다.

자세한 내용은 [자체 관리형 라이선스를 만들기 위한 설정](#db2-settings-lms) 섹션을 참조하세요.

다음 명령은 Db2 Standard Edition에 대한 자체 관리형 라이선스를 만듭니다.

```
aws license-manager create-license-configuration --cli-input-json file://rds-db2-se.json
```

이전 명령의 `rds-db2-se.json` 파일에도 다음 JSON 내용이 있습니다.

```
{
    "Name": "rds-db2-se",
    "Description": "RDS Db2 Standard Edition",
    "LicenseCountingType": "vCPU",
    "LicenseCountHardLimit": false,
    "ProductInformationList": [
        {
            "ResourceType": "RDS",
            "ProductInformationFilterList": [
                {
                    "ProductInformationFilterName": "Engine Edition",
                    "ProductInformationFilterValue": ["db2-se"],
                    "ProductInformationFilterComparator": "EQUALS"
                }
            ]
        }
    ]
}
```

제품 정보에 대한 자세한 내용은 *AWS License Manager 사용 설명서*의 [리소스 인벤토리 자동 검색](https://docs.aws.amazon.com/license-manager/latest/userguide/automated-discovery.html)을 참조하십시오.

`--cli-input` 파라미터에 대한 자세한 내용은 *AWS CLI 사용 설명서*의 JSON 또는 YAML 입력 파일에서 [AWS CLI 스켈레톤 및 입력 파라미터 생성](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)을 참조하세요.

##### AWS License Manager API
<a name="db2-lms-integration.api"></a>

**참고**  
이 절차에서는 AWS License Manager API 명령을 사용합니다.

자체 관리형 라이선스를 생성하려면 다음과 같은 필수 파라미터로 [https://docs.aws.amazon.com/license-manager/latest/APIReference/API_CreateLicenseConfiguration.html](https://docs.aws.amazon.com/license-manager/latest/APIReference/API_CreateLicenseConfiguration.html) AWS License Manager API 작업을 사용합니다.
+ `Name`
+ `LicenseCountingType` 
+ `ProductInformationList`
+ `ResourceType`
+ `ProductInformationFilterList`
+ `ProductInformationFilterName`
+ `ProductInformationFilterValue`
+ `ProductInformationFilterComparator`

파라미터에 대한 자세한 내용은 [자체 관리형 라이선스를 만들기 위한 설정](#db2-settings-lms)를 참조하세요.

#### 템플릿을 사용하여 AWS License Manager에서 자체 관리형 라이선스 만들기 자동화
<a name="db2-lms-integration-templates"></a>

CloudFormation 및 Terraform 템플릿을 사용하여 자체 관리형 라이선스 만들기를 자동화할 수 있습니다.

다음 예시 CloudFormation 템플릿은 RDS for Db2의 Db2 Standard Edition에 대한 자체 관리형 라이선스를 만듭니다. Db2 Advanced Edition용 템플릿의 경우 `Name`, `Description` 및 `ProductInformationFilter`의 값을 업데이트합니다.

```
AWSTemplateFormatVersion: "2010-09-09"
Description: CloudFormation template to create a License Configuration for Db2 Standard Edition on RDS for Db2.

Resources:
  Db2LicenseConfiguration:
    Type: "AWS::LicenseManager::LicenseConfiguration"
    Properties:
      Name: "rds-db2-se"
      Description: "Db2 Standard Edition on RDS for Db2"
      LicenseCountingType: "vCPU"
      LicenseCountHardLimit: false
      ProductInformationList:
        - ResourceType: "RDS"
          ProductInformationFilterList:
            - ProductInformationFilterName: "Engine Edition"
              ProductInformationFilterValue:
                - "db2-se"
              ProductInformationFilterComparator: "EQUALS"
```

Amazon RDS에서 CloudFormation를 사용하는 방법에 대한 자세한 내용은 [AWS CloudFormation을 사용하여 Amazon RDS 리소스 생성](creating-resources-with-cloudformation.md) 단원을 참조하십시오.

다음 예시 Terraform 템플릿은 RDS for Db2의 Db2 Standard Edition에 대한 자체 관리형 라이선스를 만듭니다. *us-east-1*을 해당 AWS 리전으로 대체합니다. Db2 Advanced Edition용 템플릿의 경우 `name`, `description` 및 `product_information_filter`의 값을 업데이트합니다.

```
provider "aws" {
  region = "us-east-1"
}

resource "aws_licensemanager_license_configuration" "rds_db2_license_config" {
  name                     = "rds-db2-se"
  description              = "Db2 Standard Edition on RDS for Db2
  license_counting_type    = "vCPU"
  license_count_hard_limit = false

  product_information_list {
    resource_type = "RDS"

    product_information_filter {
      name       = "Engine Edition"
      comparator = "EQUALS"
      value      = ["db2-se"]
    }
  }
}
```

Terraform 및 Amazon RDS 사용에 대한 자세한 내용은 *AWS 권장 가이드*의 [Using Terraform as an IaC tool for the AWS 클라우드](https://docs.aws.amazon.com/prescriptive-guidance/latest/choose-iac-tool/terraform.html) 및 [Best practices for using the Terraform AWS Provider](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/introduction.html)를 참조하세요.

#### 자체 관리형 라이선스를 만들기 위한 설정
<a name="db2-settings-lms"></a>

다음 표에서는 AWS License Manager CLI, AWS License Manager API, CloudFormation 템플릿, Terraform 템플릿을 사용하여 자체 관리형 라이선스를 만들기 위한 설정에 대한 세부 정보를 찾을 수 있습니다. 다음 표의 파라미터 이름은 AWS License Manager API 및 CloudFormation 템플릿에서 사용되는 이름의 형식으로 표시됩니다.


| 파라미터 이름 | 데이터 형식 | 필수 | 설명 | 
| --- | --- | --- | --- | 
|  이름  |  문자열  |  예  |  구성 설정의 이름입니다.  | 
|  설명  |  문자열  |  No  |  라이선스 구성에 대한 설명입니다.  | 
|  LicenseCountingType  |  문자열  |  예  |  라이선스 인벤토리를 추적하는 데 사용되는 차원입니다. 유효한 값: `vCPU`.  | 
| LicenseCountHardLimit | 부울 | 아니요 | 하드 또는 소프트 라이선스 적용이 사용되는지 여부를 나타냅니다. 하드 한도를 초과하면 새 인스턴스의 시작이 차단됩니다. | 
|  ProductInformationList  |  객체 배열  |  예  | 라이선스 구성에 대한 제품 정보 목록입니다. | 
|  ResourceType  |  문자열  |  예  |  리소스 유형입니다. 유효한 값: `RDS`.  | 
|  ProductInformationFilterList  |  객체 배열  |  예  |  라이선스 구성에 대한 제품 정보 필터 목록입니다.  | 
|  ProductInformationFilterName  |  문자열  |  예  |  선언할 필터 유형의 이름입니다. 유효한 값: `Engine Edition`.  | 
|  ProductInformationFilterValue  |  문자열 배열  | 예 |  필터링할 값입니다. 값을 하나만 지정할 수 있습니다. 유효한 값: `db2-se` 또는 `db2-ae`.  | 
| ProductInformationFilterComparator |  문자열  |  예  | ProductInformationFilterName의 논리적 연산자입니다. 유효한 값: EQUALS. | 

## AWS Marketplace를 통한 Db2 라이선스
<a name="db2-licensing-options-marketplace"></a>

AWS Marketplace를 통한 Db2 라이선스 모델에서는 시간당 요금을 지불하고 Db2 라이선스를 구독할 수 있습니다. 이 모델을 사용하면 라이선스를 구매할 필요 없이 RDS for Db2를 빠르게 시작할 수 있습니다.

AWS Marketplace를 통한 Db2 라이선스를 사용하려면 사용하려는 특정 IBM Db2 에디션에 대한 활성 AWS Marketplace 구독이 필요합니다. 아직 구독이 없는 경우 해당 IBM Db2 에디션에 대해 [AWS Marketplace를 구독](#db2-marketplace-subscribing-registering)합니다.

Amazon RDS는 IBM Db2 Standard Edition과 IBM Db2 Advanced Edition에 AWS Marketplace를 통한 Db2 라이선스를 지원합니다.

**Topics**
+ [용어](#db2-marketplace-terminology)
+ [결제 및 청구](#db2-marketplace-billing)
+ [Db2 Marketplace 리스팅 구독 및 IBM으로 등록](#db2-marketplace-subscribing-registering)
+ [비공개 제안 받기](#db2-marketplace-private-offer)

### 용어
<a name="db2-marketplace-terminology"></a>

이 페이지에서는 Amazon RDS와 AWS Marketplace의 통합을 이야기할 때 다음 용어를 사용합니다.

SaaS 구독  
AWS Marketplace에서는 사용한 만큼만 지불하는 라이선스 모델과 같은 서비스형 소프트웨어(SaaS) 제품이 사용량 기반 구독 모델을 채택합니다. Db2의 소프트웨어 판매자인 IBM이 사용량을 추적하고, 고객은 사용한 만큼 요금을 지불합니다.

공개 제안  
공개 제안을 통해 AWS Management Console에서 직접 AWS Marketplace 제품을 구매할 수 있습니다.

비공개 제안  
비공개 제안은 판매자와 구매자가 AWS Marketplace에서 구매에 대한 사용자 지정 가격과 최종 사용자 라이선스 계약(EULA) 조건을 협상할 수 있는 구매 프로그램입니다.

Db2 Marketplace 요금  
Db2 소프트웨어 라이선스 사용에 대해 IBM에서 청구하는 요금. 이러한 서비스 요금은 AWS Marketplace를 통해 측정되며 AWS 청구서에서 AWS Marketplace 섹션에 표시됩니다.

Amazon RDS 수수료  
AWS에서 RDS for Db2 서비스에 부과하는 요금으로, AWS Marketplace for Db2 라이선스를 사용할 때 라이선스가 제외됩니다. 요금은 사용 중인 Amazon RDS를 통해 측정되며 AWS 청구서에 표시됩니다.

### 결제 및 청구
<a name="db2-marketplace-billing"></a>

RDS for Db2는 AWS Marketplace와 통합되어 Db2에 대해 사용한 만큼만 시간당 요금을 지불하는 라이선스를 제공합니다. Db2 Marketplace 요금은 Db2 소프트웨어의 라이선스 비용을 포함하며, Amazon RDS 요금은 RDS for Db2 DB 인스턴스 사용에 대한 비용을 포함합니다. 요금에 대한 자세한 내용은 [Amazon RDS for Db2 요금](https://aws.amazon.com/rds/db2/pricing/)을 참조하세요.

이러한 요금이 부과되지 않도록 하려면 RDS for Db2 DB 인스턴스를 모두 삭제해야 합니다. 또한 AWS Marketplace for Db2 라이선스 구독을 제거할 수 있습니다. DB 인스턴스를 삭제하지 않고 구독을 제거하면 Amazon RDS에서 계속해서 DB 인스턴스 사용에 대한 요금을 청구합니다. 자세한 내용은 [DB 인스턴스 삭제](USER_DeleteInstance.md) 섹션을 참조하세요.

[AWS Billing 콘솔](https://console.aws.amazon.com/billing)에서 AWS Marketplace를 통한 Db2 라이선스를 사용하는 RDS for Db2 DB 인스턴스의 청구서를 보고 결제를 관리할 수 있습니다. 청구서에는 두 가지 요금이 포함됩니다. 하나는 AWS Marketplace를 통한 Db2 라이선스 사용에 대한 요금이고 다른 하나는 Amazon RDS 사용에 대한 요금입니다. 청구에 대한 자세한 내용은 **AWS 결제 및 비용 관리 사용 설명서에서 [Viewing your bill](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/getting-viewing-bill.html)을 참조하세요.

### Db2 Marketplace 리스팅 구독 및 IBM으로 등록
<a name="db2-marketplace-subscribing-registering"></a>

AWS Marketplace를 통한 Db2 라이선스를 사용하려면 AWS Management Console을 사용하여 다음 두 작업을 완료해야 합니다. AWS CLI 또는 RDS API를 통해서는 이러한 작업을 완료할 수 없습니다.

**참고**  
AWS CLI 또는 RDS API를 사용하여 DB 인스턴스를 만들려면 먼저 이 두 작업을 완료해야 합니다.

**Topics**
+ [작업 1: AWS Marketplace에서 Db2를 구독합니다.](#db2-marketplace-subscribing)
+ [작업 2: IBM으로 구독 등록](#db2-marketplace-registering)

#### 작업 1: AWS Marketplace에서 Db2를 구독합니다.
<a name="db2-marketplace-subscribing"></a>

AWS Marketplace를 통해 Db2 라이선스를 사용하려면 Db2에 대한 활성 AWS Marketplace 구독이 있어야 합니다. 구독은 특정 IBM Db2 에디션과 연결되어 있으므로 사용하려는 Db2의 각 에디션([IBM Db2 Advanced Edition](https://aws.amazon.com/marketplace/pp/prodview-w6m4yctzzy5fk), [IBM Db2 Standard Edition](https://aws.amazon.com/marketplace/pp/prodview-gbsgwalbkphv6))에 대해 AWS Marketplace에서 Db2를 구독해야 합니다. AWS Marketplace 구독에 대한 자세한 내용은 **AWS Marketplace 구매자 안내서의 [Saas usage-based subscriptions](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-saas-products.html#saas-pricing-models)를 참조하세요.

[DB 인스턴스 생성](USER_CreateDBInstance.md)을 시작하기 **전에 AWS Marketplace에서 Db2를 구독하는 것이 좋습니다.

#### 작업 2: IBM으로 구독 등록
<a name="db2-marketplace-registering"></a>

AWS Marketplace에서 Db2를 구독한 후 선택한 선택한 Db2 구독 유형에 대한 AWS Marketplace 페이지에서 IBM 주문 등록을 완료합니다. AWS Marketplace 페이지에서 **구매 옵션 보기**를 선택한 다음 **계정 설정**을 선택합니다. 기존 IBM 계정으로 등록하거나 무료 IBM 계정을 만들어 등록할 수 있습니다.

### 비공개 제안 받기
<a name="db2-marketplace-private-offer"></a>

IBM에서 Db2에 대한 AWS Marketplace 비공개 제안을 요청할 수 있습니다. 자세한 내용은 **AWS Marketplace 구매자 설명서의 [비공개 제안](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-private-offers.html)을 참조하세요.

**참고**  
AWS Organizations 사용자로서 지급인 및 회원 계정에 발행된 비공개 제안을 받은 경우 아래 절차에 따라 조직의 각 계정에서 Db2를 직접 구독하세요.

**Db2 비공개 제안을 받으려면**

1. 비공개 제안이 발행되면 AWS Marketplace 콘솔에 로그인합니다.

1. Db2 비공개 제안 링크가 포함된 이메일을 엽니다.

1. 링크를 따라 비공개 제안에 직접 액세스합니다.
**참고**  
올바른 계정에 로그인하지 않고 이 링크를 따라가면 **Page not found**(404) 오류가 발생합니다.

1. 이용 약관을 검토합니다.

1. **약관에 동의**를 선택합니다.
**참고**  
AWS Marketplace 비공개 제안이 수락되지 않는 경우에도 AWS Marketplace의 Db2 서비스 수수료는 계속해서 공개 시간당 요율로 청구됩니다.

1. 제안 세부 정보를 확인하려면 제품 목록에서 **세부 정보 표시**를 선택합니다.

절차를 완료한 후 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md)의 단계에 따라 DB 인스턴스를 만들 수 있습니다. AWS Management Console의 **라이선스**에서 **AWS Marketplace를 통해**를 선택했는지 확인하세요.

## Db2 라이선스 간 전환
<a name="db2-edition-license-switching"></a>

RDS for Db2에서 Db2 라이선스 간에 전환할 수 있습니다. 예를 들어 Bring Your Own License(BYOL)로 시작한 다음 AWS Marketplace를 통한 Db2 라이선스로 전환할 수 있습니다.

**중요**  
AWS Marketplace를 통한 Db2 라이선스로 전환하려면 사용하려는 IBM Db2 에디션에 대한 AWS Marketplace 구독이 활성화되어 있는지 확인하세요. 활성화되어 있지 않으면 먼저 해당 Db2 에디션에 대해 [AWS Marketplace에서 Db2를 구독](#db2-marketplace-subscribing-registering)한 다음 복원 절차를 완료하세요.

### 콘솔
<a name="db2-restore-pitr-console"></a>

**Db2 라이선스 간에 전환하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **백업 자동화**를 선택합니다.

   자동 백업은 **현재 리전(Current Region)** 탭에 표시됩니다.

1. 복원하려는 DB 인스턴스를 선택합니다.

1. **작업**에서 **특정 시점으로 복구**를 선택합니다.

   **특정 시점으로 복구** 창이 나타납니다.

1. **최근 복원 가능 시간**을 선택하여 가능한 최근 시간으로 복원하거나, **사용자 지정**을 선택하여 시간을 선택합니다.

   **사용자 지정**을 선택한 경우 인스턴스를 복원하려는 날짜와 시간을 입력합니다.
**참고**  
시간은 현지 시간대로 표시됩니다. 즉, 협정 세계시(UTC)에서 오프셋으로 표시됩니다. 예를 들어 UTC-5는 동부 표준시/하절기 중부 표준시입니다.

1. **DB 엔진**에서 사용하려는 Db2 라이선스를 선택합니다.

1. **DB 인스턴스 식별자**에 대상 복원된 DB 인스턴스의 이름을 입력합니다. 이름은 고유해야 합니다.

1. 필요에 따라 DB 인스턴스 클래스, 스토리지, 스토리지 자동 크기 조정 사용 여부 등의 다른 옵션을 선택합니다.

   각 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 섹션을 참조하세요.

1. **특정 시점으로 복구**를 선택합니다.

자세한 내용은 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

### AWS CLI
<a name="db2-restore-pitr-cli"></a>

Db2 라이선스 간에 전환하려면 [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 명령을 실행합니다. 다음 예시에서는 최신 특정 시점 버전으로 복원하고, DB 엔진을 IBM Db2 Advanced Edition으로 설정하고, 라이선스 모델을 AWS Marketplace를 통한 Db2 라이선스로 설정합니다.

다른 설정을 지정할 수 있습니다. 각 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 섹션을 참조하세요.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds restore-db-instance-to-point-in-time \
2.     --source-db-instance-identifier my_source_db_instance \
3.     --target-db-instance-identifier my_target_db_instance \
4.     --use-latest-restorable-time \
5.     --engine db2-ae \
6.     --license-model marketplace-license
```
Windows의 경우:  

```
1. aws rds restore-db-instance-to-point-in-time ^
2.     --source-db-instance-identifier my_source_db_instance ^
3.     --target-db-instance-identifier my_target_db_instance ^
4.     --use-latest-restorable-time ^
5.     --engine db2-ae ^
6.     --license-model marketplace-license
```

자세한 내용은 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

### RDS API
<a name="db2-restore-pitr-api"></a>

Db2 라이선스 간에 전환하려면, Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) 작업을 다음 파라미터와 함께 직접 호출합니다.
+ `SourceDBInstanceIdentifier`
+ `TargetDBInstanceIdentifier`
+ `RestoreTime`
+ `Engine`
+ `LicenseModel`

자세한 내용은 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

# Amazon RDS for Db2 인스턴스 클래스
<a name="Db2.Concepts.General.InstanceClasses"></a>

DB 인스턴스의 계산 및 메모리 용량은 해당 DB 인스턴스 클래스에 의해 결정됩니다. 필요한 DB 인스턴스 클래스는 DB 인스턴스의 처리력 및 메모리 요구 사항에 따라 다릅니다.



## 지원되는 RDS for Db2 인스턴스 클래스
<a name="Db2.Concepts.InstanceClasses.Supported"></a>

지원되는 Amazon RDS for Db2 인스턴스 클래스는 Amazon RDS DB 인스턴스 클래스의 하위 집합입니다. Amazon RDS 인스턴스 클래스의 전체 목록은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.

**Topics**
+ [Db2 Standard Edition에 대해 지원되는 RDS for Db2 인스턴스 클래스](#Db2.Concepts.InstanceClasses.Supported.SE)
+ [Db2 Advanced Edition에 대해 지원되는 RDS for Db2 인스턴스 클래스](#Db2.Concepts.InstanceClasses.Supported.AE)

### Db2 Standard Edition에 대해 지원되는 RDS for Db2 인스턴스 클래스
<a name="Db2.Concepts.InstanceClasses.Supported.SE"></a>

다음 표에는 Db2 데이터베이스 버전 11.5.9.0의 Db2 Standard Edition에 대해 지원되는 모든 인스턴스 클래스가 나열되어 있습니다. 이러한 인스턴스 클래스는 Bring Your Own License(BYOL) 및 AWS Marketplace를 통한 Db2 라이선스 모두에 사용할 수 있습니다.


| 인스턴스 클래스 유형 | 인스턴스 클래스 | 
| --- | --- | 
|  3세대 Intel Xeon Scalable 프로세서, SSD 스토리지 및 네트워크 최적화 기능이 갖춰진 범용 인스턴스 클래스  |  db.m6idn.large–db.m6idn.8xlarge  | 
|  3세대 Intel Xeon Scalable 프로세서로 구동되는 범용 인스턴스 클래스  |  db.m6in.large–db.m6in.8xlarge  | 
|  범용 인스턴스 클래스  |  db.m7i.large–db.m7i.8xlarge db.m6i.large–db.m6i.8xlarge  | 
|  3세대 Intel Xeon Scalable 프로세서로 구동되는 로컬 NVMe 기반 SSD를 탑재한 메모리 최적화 인스턴스 클래스  |  db.x2iedn.xlarge  | 
|  3세대 Intel Xeon Scalable 프로세서로 구동되는 메모리 최적화 인스턴스 클래스  |  db.r6idn.large–db.r6idn.4xlarge db.r6in.large–db.r6in.4xlarge  | 
|  메모리 최적화 인스턴스 클래스  |  db.r7i.large–db.r7i.8xlarge db.r6i.large–db.r6i.4xlarge  | 
|  버스트 가능한 성능 인스턴스 클래스  |  db.t3.small–db.t3.2xlarge  | 

### Db2 Advanced Edition에 대해 지원되는 RDS for Db2 인스턴스 클래스
<a name="Db2.Concepts.InstanceClasses.Supported.AE"></a>

다음 표에는 Db2 데이터베이스 버전 11.5.9.0의 Db2 Advanced Edition에 대해 지원되는 모든 인스턴스 클래스가 나열되어 있습니다. 이러한 인스턴스 클래스는 Bring Your Own License(BYOL) 및 AWS Marketplace를 통한 Db2 라이선스 모두에 사용할 수 있습니다.


| 인스턴스 클래스 유형 | 인스턴스 클래스 | 
| --- | --- | 
|  3세대 Intel Xeon Scalable 프로세서, SSD 스토리지 및 네트워크 최적화 기능이 갖춰진 범용 인스턴스 클래스  |  db.m6idn.large–db.m6idn.32xlarge  | 
|  3세대 Intel Xeon Scalable 프로세서로 구동되는 범용 인스턴스 클래스  |  db.m6in.large–db.m6in.32xlarge  | 
|  범용 인스턴스 클래스  |  db.m6i.large–db.m7i.48xlarge db.m7i.large–db.m7i.48xlarge  | 
|  3세대 Intel Xeon Scalable 프로세서로 구동되는 로컬 NVMe 기반 SSD가 갖춰진 메모리 최적화 인스턴스 클래스  |  db.x2iedn.xlarge–db.x2iedn.32xlarge  | 
|  3세대 Intel Xeon Scalable 프로세서로 구동되는 메모리 최적화 인스턴스 클래스  |  db.r6idn.large–db.r6idn.32xlarge db.r6in.8xlarge–db.r6in.32xlarge  | 
|  메모리 최적화 인스턴스 클래스  |  db.r6i.large–db.r7i.48xlarge db.r7i.large–db.r7i.48xlarge  | 
|  버스트 가능한 성능 인스턴스 클래스  |  db.t3.small–db.t3.2xlarge  | 

# Amazon RDS for Db2 기본 역할
<a name="db2-default-roles"></a>

RDS for Db2는 다음 6가지 역할을 추가하고 `ADMIN` 옵션을 통해 해당 역할을 `master_user_role`에 부여합니다. 데이터베이스가 프로비저닝되면 RDS for Db2가 마스터 사용자에게 `master_user_role`을 부여합니다. 그러면 마스터 사용자는 데이터베이스에 연결하여 네이티브 `GRANT` 문으로 다른 사용자, 그룹 또는 역할에 이러한 역할을 부여할 수 있습니다.
+ **DBA** – RDS for Db2는 `DATAACCESS` 권한으로 이 빈 역할을 생성합니다. 마스터 사용자는 이 역할에 더 많은 인증 또는 권한을 추가한 다음 다른 사용자, 그룹 또는 역할에 해당 역할을 부여할 수 있습니다.
+ **DBA\$1RESTRICTED** – RDS for Db2는 이 빈 역할을 생성합니다. 마스터 사용자는 이 역할에 더 많은 권한을 추가한 다음 다른 사용자, 그룹 또는 역할에 해당 역할을 부여할 수 있습니다.
+ **DEVELOPER** – RDS for Db2는 `DATAACCESS` 권한으로 이 빈 역할을 생성합니다. 마스터 사용자는 이 역할에 더 많은 인증 또는 권한을 추가한 다음 다른 사용자, 그룹 또는 역할에 해당 역할을 부여할 수 있습니다.
+ **ROLE\$1NULLID\$1PACKAGES** – RDS for Db2는 `CREATE DATABASE` 실행 당시 Db2에 바인딩된 `ALL NULLID` 패키지에서 이 역할에 `EXECUTE` 권한을 부여합니다.
+ **ROLE\$1PROCEDURES** – RDS for Db2는 모든 `SYSIBM` 절차에서 이 역할에 `EXECUTE` 권한을 부여합니다.
+ **ROLE\$1TABLESPACES** – RDS for Db2는 `CREATE DATABASE` 명령으로 생성된 테이블스페이스에서 `USAGE` 권한을 부여합니다.

# Amazon RDS for Db2 파라미터
<a name="db2-supported-parameters"></a>

Amazon RDS for Db2는 데이터베이스 관리자 구성 파라미터, 레지스트리 변수, 데이터베이스 구성 파라미터 등 세 가지 유형의 파라미터를 사용합니다. 처음 두 유형은 파라미터 그룹을 통해 관리하고 마지막 유형은 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 저장 절차를 통해 관리할 수 있습니다.

기본적으로, RDS for Db2 DB 인스턴스는 Db2 데이터베이스 및 DB 인스턴스에 고유한 DB 파라미터 그룹을 사용합니다. 이 파라미터 그룹에는 IBM Db2 데이터베이스 엔진에 대한 파라미터가 포함되어 있습니다. 특히 데이터베이스 관리자 구성 파라미터와 레지스트리 변수가 포함되어 있습니다. 파라미터 그룹 작업에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하세요.

RDS for Db2 데이터베이스 구성 파라미터는 사용자가 선택한 스토리지 엔진의 기본값으로 설정됩니다. Db2 파라미터에 대한 자세한 내용은 IBM Db2 설명서의 [Db2 데이터베이스 구성 파라미터](https://www.ibm.com/docs/en/db2/11.5?topic=parameters-database-configuration)를 참조하세요.

**Topics**
+ [파라미터 그룹의 파라미터 보기](#db2-viewing-parameter-group-parameters)
+ [Db2 명령으로 모든 파라미터 보기](#db2-viewing-parameters-db2-commands)
+ [파라미터 그룹의 파라미터를 수정합니다.](#db2-modifying-parameter-group-parameters)
+ [Db2 명령을 사용하여 데이터베이스 구성 파라미터 수정](#db2-modifying-parameters-db2-commands)

## 파라미터 그룹의 파라미터 보기
<a name="db2-viewing-parameter-group-parameters"></a>

데이터베이스 관리자 구성 파라미터와 레지스트리 변수는 파라미터 그룹에서 설정됩니다. AWS Management Console, AWS CLI 또는 RDS API를 사용하여 특정 Db2 버전의 데이터베이스 관리자 구성 파라미터와 레지스트리 변수를 볼 수 있습니다.

### 콘솔
<a name="db2-viewing-parameter-group-parameters-console"></a>

**DB 파라미터 그룹의 파라미터 값을 보려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **파라미터 그룹**을 선택합니다.

   DB 파라미터 그룹이 목록에 나타납니다.

1. 파라미터 그룹의 이름을 선택하여 파라미터 목록을 봅니다.

### AWS CLI
<a name="db2-viewing-parameter-group-parameters-cli"></a>

[https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html) 명령을 실행하여 Db2 버전의 데이터베이스 관리자 구성 파라미터와 레지스트리 변수를 볼 수 있습니다. `--db-parameter-group-family` 옵션에 대해 다음 값 중 하나를 지정할 수 있습니다.
+ `db2-ae-11.5`
+ `db2-se-11.5`

예를 들어, Db2 Standard Edition 11.5에 대한 파라미터를 보려면 다음 명령을 실행합니다.

```
aws rds describe-engine-default-parameters --db-parameter-group-family db2-se-11.5
```

다음 예제와 비슷한 출력이 생성됩니다.



```
{
    "EngineDefaults": {
        "Parameters": [
            {
                "ParameterName": "agent_stack_sz",
                "ParameterValue": "1024",
                "Description": "You can use this parameter to determine the amount of memory that is allocated by Db2 for each agent thread stack.",
                "Source": "engine-default",
                "ApplyType": "static",
                "DataType": "integer",
                "AllowedValues": "256-32768",
                "IsModifiable": false
            },
            {
                "ParameterName": "agentpri",
                "ParameterValue": "-1",
                "Description": "This parameter controls the priority given to all agents and to other database manager instance processes and threads by the operating system scheduler. This priority determines how CPU time is allocated to the database manager processes, agents, and threads relative to other processes and threads running on the machine.",
                "Source": "engine-default",
                "ApplyType": "static",
                "DataType": "integer",
                "AllowedValues": "1-99",
                "IsModifiable": false
            },
            ...
        ]
    }
}
```

Db2 Standard Edition 11.5에 대한 수정 가능 파라미터만 나열하려면 다음 명령을 실행합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-engine-default-parameters \
    --db-parameter-group-family db2-se-11.5 \
    --query 'EngineDefaults.Parameters[?IsModifiable==`true`].{ParameterName:ParameterName, DefaultValue:ParameterValue}'
```

Windows의 경우:

```
aws rds describe-engine-default-parameters ^
    --db-parameter-group-family db2-se-11.5 ^
    --query 'EngineDefaults.Parameters[?IsModifiable==`true`].{ParameterName:ParameterName, DefaultValue:ParameterValue}'
```

### RDS API
<a name="db2-viewing-parameter-group-parameters-api"></a>

DB 파라미터 그룹의 파라미터 값을 보려면 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html) 작업을 다음 필수 파라미터와 함께 사용합니다.
+ `DBParameterGroupName`

## Db2 명령으로 모든 파라미터 보기
<a name="db2-viewing-parameters-db2-commands"></a>

Db2 명령을 사용하여 데이터베이스 관리자 구성 파라미터, 데이터베이스 구성 파라미터 및 레지스트리 변수에 대한 설정을 볼 수 있습니다.

**설정을 확인하려면**

1. Db2 데이터베이스에 연결합니다. 다음 예제에서 *database\$1name*, *master\$1username*, *master\$1password*를 사용자 정보로 바꿉니다.

   ```
   db2 "connect to database_name user master_username using master_password"
   ```

1. 지원되는 Db2 버전을 찾습니다.

   ```
   db2 "select service_level, fixpack_num from table(sysproc.env_get_inst_info()) as instanceinfo"
   ```

1. 특정 Db2 버전의 파라미터를 확인합니다.
   + 다음 명령을 실행하여 데이터베이스 관리자 구성 파라미터를 확인합니다.

     ```
     db2 "select cast(substr(name,1,24) as varchar(24)) as name, case 
         when value_flags = 'NONE' then '' else value_flags end flags, 
         cast(substr(value,1,64) as varchar(64)) as current_value
         from sysibmadm.dbmcfg
         order by name asc with UR"
     ```
   + 다음 명령을 실행하여 모든 데이터베이스 구성 파라미터를 확인합니다.

     ```
     db2 "select cast(substr(name,1,24) as varchar(24)) as name, case 
         when value_flags = 'NONE' then '' else value_flags end flags, 
         cast(substr(value,1,64) as varchar(64)) as current_value 
         from table(db_get_cfg(null)) order by name asc, member asc with UR"
     ```
   + 다음 명령을 실행하여 현재 설정된 레지스트리 변수를 확인합니다.

     ```
     db2 "select cast(substr(reg_var_name,1,50) as varchar(50)) as reg_var_name, 
         cast(substr(reg_var_value,1,50) as varchar(50)) as reg_var_value, 
         level from table(env_get_reg_variables(null)) 
         order by reg_var_name,member with UR"
     ```

## 파라미터 그룹의 파라미터를 수정합니다.
<a name="db2-modifying-parameter-group-parameters"></a>

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 사용자 지정 파라미터 그룹의 데이터베이스 관리자 구성 파라미터와 레지스트리 변수를 수정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스용 DB 파라미터 그룹](USER_WorkingWithDBInstanceParamGroups.md) 섹션을 참조하세요.

### 콘솔
<a name="db2-modifying-parameter-group-parameters-console"></a>

**데이터베이스 관리자 구성 파라미터와 레지스트리 변수를 수정하려면**

1. 사용자 지정 DB 매개 변수 그룹을 생성합니다. DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. 사용자 지정 파라미터 그룹의 파라미터를 수정하는 방법 파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

### AWS CLI
<a name="db2-modifying-parameter-group-parameters-cli"></a>

**데이터베이스 관리자 구성 파라미터와 레지스트리 변수를 수정하려면**

1. [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 명령을 실행하여 사용자 지정 파라미터 그룹을 생성합니다.

   다음 필수 옵션을 포함합니다.
   + `--db-parameter-group-name` – 생성하려는 파라미터 그룹의 이름입니다.
   + `--db-parameter-group-family` – Db2 엔진 에디션 및 메이저 버전입니다. 유효한 값: `db2-se-11.5`, `db2-ae-11.5`.
   + `--description` – 이 파라미터 그룹에 대한 설명입니다.

   DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 명령을 실행하여 만든 사용자 지정 파라미터 그룹의 파라미터를 수정합니다.

   다음 필수 옵션을 포함합니다.
   + `--db-parameter-group-name` – 생성한 파라미터 그룹의 이름입니다.
   + `--parameters` – 파라미터 업데이트를 위한 파라미터 이름, 값, 응용 방법으로 구성된 배열입니다.

   파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

### RDS API
<a name="db2-modifying-parameter-group-parameters-api"></a>

**데이터베이스 관리자 구성 파라미터와 레지스트리 변수를 수정하려면**

1. [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html) 작업을 사용하여 사용자 지정 DB 파라미터 그룹을 생성합니다.

   다음 필수 파라미터를 포함합니다.
   + `DBParameterGroupName`
   + `DBParameterGroupFamily`
   + `Description`

   DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html) 작업을 사용하여 생성한 사용자 지정 파라미터 그룹의 파라미터를 수정합니다.

   다음 필수 파라미터를 포함합니다.
   + `DBParameterGroupName`
   + `Parameters`

   파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

## Db2 명령을 사용하여 데이터베이스 구성 파라미터 수정
<a name="db2-modifying-parameters-db2-commands"></a>

Db2 명령으로 데이터베이스 구성 파라미터를 수정할 수 있습니다.

**데이터베이스 구성 파라미터를 수정하려면**

1. `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.update_db_param` 저장 절차를 직접적으로 호출하여 데이터베이스 구성 파라미터를 변경합니다. 자세한 내용은 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.update_db_param(
       'database_name', 
       'parameter_to_modify', 
       'changed_value',
       'restart_database')"
   ```

# Amazon RDS에서 Db2 데이터베이스를 위한 EBCDIC 데이터 정렬
<a name="db2-ebcdic"></a>

Amazon RDS for Db2는 Db2 데이터베이스에 대한 EBCDIC 데이터 정렬을 지원합니다. Amazon RDS [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 저장 프로시저를 사용하여 데이터베이스를 생성할 때만 데이터베이스에 대해 EBCDIC 데이터 정렬 시퀀스를 지정할 수 있습니다.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 RDS for Db2 DB 인스턴스를 생성할 때 데이터베이스 이름을 지정할 수 있습니다. 데이터베이스 이름을 지정하는 경우 Amazon RDS는 기본 데이터 정렬이 `SYSTEM`인 데이터베이스를 생성합니다. EBCDIC 데이터 정렬을 사용하는 데이터베이스를 생성해야 하는 경우 DB 인스턴스를 생성할 때 데이터베이스 이름을 지정하지 마세요.

RDS for Db2의 데이터베이스 데이터 정렬은 생성 시점에 설정되고 변경할 수 없습니다.

**EBCDIC 데이터 정렬을 사용하는 Db2 데이터베이스를 만들려면**

1. RDS for Db2 DB 인스턴스가 없는 경우 DB 인스턴스를 만들되 데이터베이스 이름을 지정하지 마세요. AWS Management Console, AWS CLI 또는 RDS API를 사용하여 DB 인스턴스를 만들 수 있습니다. 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 단원을 참조하십시오.

1. Db2 데이터베이스를 만들고 `rdsadmin.create_database` 저장 프로시저를 호출하여 데이터 정렬 옵션을 EBCDIC 값으로 설정합니다. 자세한 내용은 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 단원을 참조하십시오.
**중요**  
저장 프로시저를 사용하여 데이터베이스를 만든 후에는 데이터 정렬 시퀀스를 변경할 수 없습니다. 데이터베이스에서 다른 데이터 정렬 시퀀스를 사용하려면 [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 저장 프로시저를 호출하여 데이터베이스를 삭제하세요. 그런 다음 필요한 데이터 정렬 시퀀스로 데이터베이스를 생성합니다.

# Amazon RDS for Db2 DB 인스턴스의 현지 시간대
<a name="db2-time-zone"></a>

Db2를 실행 중인 Amazon RDS DB 인스턴스의 시간대가 기본적으로 설정되어 있습니다. 기본값은 협정 세계 표준시(UTC)입니다. 애플리케이션의 시간대와 일치하도록 대신 DB 인스턴스의 시간대를 현지 시간대로 설정할 수 있습니다.

DB 인스턴스를 처음 만들 때 시간대를 설정합니다. AWS Management Console, RDS API, AWS CLI를 사용하여 DB 인스턴스를 생성할 수 있습니다. 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 단원을 참조하십시오.

DB 인스턴스가 다중 AZ 배포의 일부인 경우 장애 조치 중에 시간대가 설정된 현지 시간대로 유지됩니다.

DB 인스턴스를 지정한 시점으로 복원할 수 있습니다. 시간은 현지 시간대로 표시됩니다. 자세한 내용은 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 단원을 참조하십시오.

DB 인스턴스에 대해 현지 시간대를 설정할 때 다음 제한 사항이 적용됩니다.
+ 기존 Amazon RDS for Db2 DB 인스턴스의 시간대를 수정할 수 없습니다.
+ DB 인스턴스의 스냅샷을 다른 시간대의 DB 인스턴스로 복원할 수 없습니다.
+ 한 표준 시간대의 백업 파일을 다른 표준 시간대로 복원하지 않는 것이 좋습니다. 한 표준 시간대의 백업 파일을 다른 표준 시간대로 복원하는 경우 쿼리와 애플리케이션을 감사하여 표준 시간대 변경의 영향을 확인해야 합니다.

## 사용 가능한 시간대
<a name="db2-time-zone-values"></a>

시간대 설정에 다음 값을 사용할 수 있습니다.


| 영역 | 시간대 | 
| --- | --- | 
|  아프리카  |  Africa/Cairo, Africa/Casablanca, Africa/Harare, Africa/Lagos, Africa/Luanda, Africa/Monrovia, Africa/Nairobi, Africa/Tripoli, Africa/Windhoek  | 
|  아메리카  |  America/Araguaina, America/Argentina/Buenos\$1Aires, America/Asuncion, America/Bogota, America/Caracas, America/Chicago, America/Chihuahua, America/Cuiaba, America/Denver, America/Detroit, America/Fortaleza, America/Godthab, America/Guatemala, America/Halifax, America/Lima, America/Los\$1Angeles, America/Manaus, America/Matamoros, America/Mexico\$1City, America/Monterrey, America/Montevideo, America/New\$1York, America/Phoenix, America/Santiago, America/Sao\$1Paulo, America/Tijuana, America/Toronto  | 
|  아시아  |  Asia/Amman, Asia/Ashgabat, Asia/Baghdad, Asia/Baku, Asia/Bangkok, Asia/Beirut, Asia/Calcutta, Asia/Damascus, Asia/Dhaka, Asia/Hong\$1Kong, Asia/Irkutsk, Asia/Jakarta, Asia/Jerusalem, Asia/Kabul, Asia/Karachi, Asia/Kathmandu, Asia/Kolkata, Asia/Krasnoyarsk, Asia/Magadan, Asia/Manila, Asia/Muscat, Asia/Novosibirsk, Asia/Rangoon, Asia/Riyadh, Asia/Seoul, Asia/Shanghai, Asia/Singapore, Asia/Taipei, Asia/Tehran, Asia/Tokyo, Asia/Ulaanbaatar, Asia/Vladivostok, Asia/Yakutsk, Asia/Yerevan  | 
|  대서양  |  Atlantic/Azores, Atlantic/Cape\$1Verde  | 
|  호주  |  Australia/Adelaide, Australia/Brisbane, Australia/Darwin, Australia/Eucla, Australia/Hobart, Australia/Lord\$1Howe, Australia/Perth, Australia/Sydney  | 
|  브라질  |  Brazil/DeNoronha, Brazil/East  | 
|  캐나다  |  Canada/Newfoundland, Canada/Saskatchewan  | 
|  기타  |  Etc/GMT-3  | 
|  유럽  |  Europe/Amsterdam, Europe/Athens, Europe/Berlin, Europe/Dublin, Europe/Helsinki, Europe/Kaliningrad, Europe/London, Europe/Madrid, Europe/Moscow, Europe/Paris, Europe/Prague, Europe/Rome, Europe/Sarajevo, Europe/Stockholm  | 
|  태평양  |  Pacific/Apia, Pacific/Auckland, Pacific/Chatham, Pacific/Fiji, Pacific/Guam, Pacific/Honolulu, Pacific/Kiritimati, Pacific/Marquesas, Pacific/Samoa, Pacific/Tongatapu, Pacific/Wake  | 
|  US  |  US/Alaska, US/Central, US/East-Indiana, US/Eastern, US/Pacific  | 
|  UTC  |  UTC  | 

# Amazon RDS for Db2 DB 인스턴스를 생성하기 위한 사전 조건
<a name="db2-db-instance-prereqs"></a>

다음 항목은 DB 인스턴스를 생성하기 전에 필요한 사전 조건입니다.

**Topics**
+ [관리자 계정](#db2-prereqs-admin-account)
+ [추가 고려 사항](#db2-prereqs-additional-considerations)

## 관리자 계정
<a name="db2-prereqs-admin-account"></a>

DB 인스턴스를 생성할 때 해당 인스턴스의 관리자 계정을 지정해야 합니다. Amazon RDS는 이 로컬 데이터베이스 관리자 계정에 `DBADM` 권한을 부여합니다.

관리자 계정에는 다음과 같은 특징과 기능이 있으며 제한이 적용됩니다.
+ 로컬 사용자이지만, AWS 계정는 아닙니다.
+ `SYSADM`, `SYSMAINT` 또는 `SYSCTRL` 등의 Db2 인스턴스 수준 권한이 없습니다.
+ Db2 인스턴스를 중지하거나 시작할 수 없습니다.
+ DB 인스턴스를 생성할 때 이름을 지정한 경우 Db2 데이터베이스를 삭제할 수 없습니다.
+ 카탈로그 표 및 뷰를 포함하여 Db2 데이터베이스에 대한 전체 액세스 권한을 가집니다.
+ Amazon RDS 저장 프로시저를 사용하여 로컬 사용자 및 그룹을 생성할 수 있습니다.
+ 자격 및 권한을 부여하거나 취소할 수 있습니다.

관리자 계정은 다음 작업을 수행할 수 있습니다.
+ DB 인스턴스를 생성, 수정 또는 삭제합니다.
+ DB 스냅샷을 만듭니다.
+ 특정 시점으로 복원을 시작합니다.
+ DB 스냅샷의 자동 백업을 생성합니다.
+ DB 스냅샷의 수동 백업을 생성합니다.
+ Amazon RDS의 기타 기능을 사용합니다.

## 추가 고려 사항
<a name="db2-prereqs-additional-considerations"></a>

DB 인스턴스를 생성하기 전에 다음 항목을 고려하세요.
+ 각 Amazon RDS for Db2 DB 인스턴스는 최대 50개의 Db2 데이터베이스를 호스팅할 수 있습니다. 자세한 내용은 [단일 Amazon RDS for Db2 DB 인스턴스의 여러 데이터베이스](db2-multiple-databases.md) 섹션을 참조하세요.
+ 초기 데이터베이스 이름
  + DB 인스턴스를 생성할 때 데이터베이스 이름을 입력하지 않으면 Amazon RDS는 데이터베이스를 생성하지 않습니다.
  + 다음과 같은 상황에서는 데이터베이스 이름을 입력하지 마세요.
    + `db2_compatibility_vector` 파라미터를 수정하려고 합니다. 자세한 내용은 [db2\$1compatibility\$1vector 파라미터 설정](db2-known-issues-limitations.md#db2-known-issues-limitations-db2-compatibility-vector) 섹션을 참조하세요.
+ Bring Your Own License(BYOL) 모델에서는 먼저 IBM Customer ID 및 IBM Site ID를 포함하는 사용자 지정 파라미터 그룹을 만들어야 합니다. 자세한 내용은 [Db2용 Bring Your Own License(BYOL)](db2-licensing.md#db2-licensing-options-byol) 섹션을 참조하세요.
+ AWS Marketplace를 통한 Db2 라이선스 모델에서는 사용하려는 특정 IBM Db2 에디션에 대한 활성 AWS Marketplace 구독이 필요합니다. 아직 구독이 없는 경우 사용하려는 IBM Db2 에디션에 대해 [AWS Marketplace에서 Db2를 구독](db2-licensing.md#db2-marketplace-subscribing-registering)합니다. 자세한 내용은 [AWS Marketplace를 통한 Db2 라이선스](db2-licensing.md#db2-licensing-options-marketplace) 섹션을 참조하세요.

# 단일 Amazon RDS for Db2 DB 인스턴스의 여러 데이터베이스
<a name="db2-multiple-databases"></a>

[rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 저장 프로시저를 직접 호출하여 단일 RDS for Db2 DB 인스턴스에 여러 데이터베이스를 만들 수 있습니다. 단일 RDS for Db2 DB 인스턴스는 데이터베이스 50개로 제한됩니다. 이 개수에는 활성화된 상태와 비활성화된 상태의 데이터베이스가 모두 포함됩니다.

**참고**  
2024년 11월 15일 전에 만들어진 RDS for Db2 DB 인스턴스에 여러 데이터베이스를 만드는 경우 DB 인스턴스를 재부팅하여 여러 데이터베이스에 대한 지원을 활성화해야 합니다.

기본적으로 Amazon RDS는 데이터베이스를 만들 때 데이터베이스를 활성화합니다. 메모리 리소스를 최적화하기 위해 자주 사용하지 않는 데이터베이스를 비활성화한 다음 나중에 필요할 때 활성화할 수 있습니다. 자세한 내용은 [데이터베이스 비활성화](db2-managing-databases.md#db2-deactivating-database) 및 [데이터베이스 활성화](db2-managing-databases.md#db2-activating-database)(을)를 참조하세요.

DB 인스턴스에서 활성화된 데이터베이스의 수는 서버에서 사용 가능한 메모리 리소스에 따라 달라집니다. 메모리 리소스는 DB 인스턴스 클래스와 데이터베이스에 대해 구성된 메모리의 양에 따라 다릅니다. DB 인스턴스 클래스에 대한 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요. RDS for Db2 데이터베이스의 메모리를 업데이트하는 방법에 대한 자세한 내용은 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 섹션을 참조하세요.

일반적인 데이터베이스 작업, 운영 체제 요구 사항 및 백업과 같은 기타 Amazon RDS 자동화 작업을 위해 2GB의 메모리가 있는 DB 인스턴스 클래스를 선택하는 것이 좋습니다. DB 인스턴스 클래스 변경에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

또한 IBM은 각 활성 데이터베이스에 대해 최소 1GB의 메모리를 권장합니다. 자세한 내용은 IBM 설명서의 [Disk and memory requirements](https://www.ibm.com/docs/en/db2/11.5?topic=servers-disk-memory-requirements)를 참조하세요.

다음 공식을 사용하여 DB 인스턴스가 가질 수 있는 최대 활성 데이터베이스 수를 계산할 수 있습니다.

```
Active database limit = (total server memory - 2 GB) / 1 GB 
```

다음 예시에서는 db.m6i.xlarge DB 인스턴스 클래스를 사용하는 DB 인스턴스의 최대 활성 데이터베이스 수를 보여줍니다.

```
Active database limit = (total server memory - 2 GB) / 1 GB 
                      = (16 GB - 2 GB) / 1 GB 
                      = 14 databases
```

Amazon RDS는 충돌 후 데이터베이스를 복구할 때 이전에 활성 상태였던 경우 데이터베이스를 활성화합니다. DB 인스턴스 클래스를 더 낮은 메모리 구성으로 수정하는 경우와 같은 특정 상황에서는 DB 인스턴스의 모든 데이터베이스를 활성화할 수 있는 메모리가 부족할 수 있습니다. 이러한 경우 Amazon RDS는 데이터베이스가 만들어진 순서대로 데이터베이스를 활성화합니다.

**참고**  
메모리 부족으로 인해 Amazon RDS가 활성화할 수 없는 모든 데이터베이스는 비활성화된 상태로 유지됩니다.

# DB 인스턴스에 연결
<a name="USER_ConnectToDb2DBInstance"></a>

Amazon RDS가 Amazon RDS for Db2 DB 인스턴스를 프로비저닝한 후에는 표준 SQL 클라이언트 애플리케이션을 사용해 DB 인스턴스에 연결할 수 있습니다. Amazon RDS는 관리형 서비스이므로, `SYSADM` `SYSCTRL`, `SECADM`, 또는 `SYSMAINT`로 로그인할 수 없습니다.

IBM Db2 CLP, IBM CLPPlus, DBeaver, 또는 IBM Db2 Data Management Console을 사용하여 IBM Db2 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결할 수 있습니다.

**참고**  
RDS for Db2 DB 인스턴스에 메모리가 충분하지 않은 경우 Db2 데이터베이스에 연결하지 못할 수 있습니다. 자세한 내용은 [데이터베이스 연결 오류](db2-troubleshooting.md#db2-database-connection-error) 단원을 참조하십시오.

**Topics**
+ [Amazon RDS for Db2 DB 인스턴스의 엔드포인트 찾기](db2-finding-instance-endpoint.md)
+ [IBM Db2 CLP을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-clp-client.md)
+ [IBM CLPPlus을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-ibm-clpplus-client.md)
+ [DBeaver을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-dbeaver.md)
+ [IBM Db2 Data Management Console을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-ibm-data-management-console.md)
+ [Amazon RDS for Db2를 사용하는 보안 그룹에 대한 고려 사항](db2-security-groups-considerations.md)

# Amazon RDS for Db2 DB 인스턴스의 엔드포인트 찾기
<a name="db2-finding-instance-endpoint"></a>

각 Amazon RDS DB 인스턴스에는 엔드포인트가 있으며, 각 엔드포인트에는 DB 인스턴스의 DNS 이름과 포트 번호가 있습니다. SQL 클라이언트 애플리케이션을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결하려면 DB 인스턴스에 연결할 수 있는 DNS 이름과 포트 번호가 필요합니다.

AWS Management Console 또는 AWS CLI를 사용하여 DB 인스턴스의 엔드포인트를 찾을 수 있습니다.

## 콘솔
<a name="db2-finding-instance-endpoint-console"></a>

**RDS for Db2 DB 인스턴스의 엔드포인트를 찾으려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1.  콘솔의 오른쪽 상단에서 DB 인스턴스의 AWS 리전을 선택합니다.

1. RDS for Db2 DB 인스턴스에 대한 DNS 이름과 포트 번호를 찾습니다.

   1. DB 인스턴스 목록을 표시할 **인스턴스**를 선택합니다.

   1. 인스턴스 세부 정보를 표시할 RDS for Db2 DB 인스턴스 이름을 선택합니다.

   1. **Connectivity & security(연결 및 보안)** 탭에서 엔드포인트를 복사합니다. 또한 포트 번호를 적어 둡니다. DB 인스턴스에 연결하려면 엔드포인트와 포트 번호가 모두 필요합니다.  
![\[엔드포인트와 포트를 보여주는 DB 인스턴스의 연결 및 보안 탭.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/db2-connectivity-security.png)

## AWS CLI
<a name="db2-finding-instance-endpoint-cli"></a>

RDS for Db2 DB 인스턴스의 엔드포인트를 찾으려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 실행합니다. 다음 예제에서 *database-1*을 DB 인스턴스 이름으로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-instances \
    --db-instance-identifier database-1 \
    --query 'DBInstances[].{DBInstanceIdentifier:DBInstanceIdentifier,DBName:DBName,Endpoint:Endpoint}' \
    --output json
```

Windows의 경우:

```
aws rds describe-db-instances ^
    --db-instance-identifier database-1 ^
    --query 'DBInstances[].{DBInstanceIdentifier:DBInstanceIdentifier,DBName:DBName,Endpoint:Endpoint}' ^
    --output json
```

다음 예제와 비슷한 출력이 생성됩니다. DNS 이름은 출력의 `Address` 라인에 포함되어 있습니다.

```
[
    {
        "DBInstanceIdentifier": "database-1",
        "DBName": "DB2DB",
        "Endpoint": {
            "Address": "database-1.123456789012.us-east-2.amazonaws.com",
            "Port": 50000,
            "HostedZoneId": "Z2OC4A7DETW6VH"
        }
    }
]
```

# IBM Db2 CLP을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결
<a name="db2-connecting-with-clp-client"></a><a name="db2-downloading-package"></a>

IBM Db2 CLP와 같은 명령줄 유틸리티를 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결할 수 있습니다. 이 유틸리티는 IBM Data Server Runtime Client의 일부입니다. IBM Fix Central에서 클라이언트를** **다운로드하려면 IBM Support의 [IBM 데이터 서버 클라이언트 패키지 버전 11.5 Mod 8 수정 팩 0](https://www.ibm.com/support/pages/node/6830885)을 참조하세요.

**Topics**
+ [용어](#db2-connecting-ibm-clp-terms)
+ [클라이언트 설치](#db2-connecting-ibm-clp-install-client)
+ [DB 인스턴스에 연결](#db2-connecting-ibm-clp-connect-db-instance)
+ [RDS for Db2 DB 인스턴스에 대한 연결 문제 해결](#db2-troubleshooting-connections-clp)

## 용어
<a name="db2-connecting-ibm-clp-terms"></a>

다음 용어는 [RDS for Db2 DB 인스턴스에 연결](#db2-connecting-ibm-clp-connect-db-instance)할 때 사용되는 명령을 설명하는 데 도움이 됩니다.

**catalog tcpip node**  
이 명령은 로컬 Db2 클라이언트에 원격 데이터베이스 노드를 등록하여 노드를 클라이언트 애플리케이션에 액세스할 수 있도록 합니다. 노드를 카탈로그화하려면 서버의 호스트 이름, 포트 번호, 통신 프로토콜과 같은 정보를 제공합니다. 그러면 카탈로그화된 노드는 하나 이상의 원격 데이터베이스가 있는 대상 서버를 나타냅니다. 자세한 내용은 IBM Db2 설명서의 [CATALOG TCPIP/TCPIP4/TCPIP6 NODE 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-tcpip-node)을 참조하세요.

**catalog database**  
이 명령은 로컬 Db2 클라이언트에 원격 데이터베이스를 등록하여 데이터베이스를 클라이언트 애플리케이션에 액세스할 수 있도록 합니다. 데이터베이스를 카탈로그화하려면 데이터베이스의 별칭, 데이터베이스가 있는 노드, 데이터베이스 연결에 필요한 인증 유형 등의 정보를 제공합니다. 자세한 내용은 IBM Db2 설명서의 [CATALOG DATABASE 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-database)을 참조하세요.

## 클라이언트 설치
<a name="db2-connecting-ibm-clp-install-client"></a>

[downloading the package for Linux](#db2-downloading-package) 후에 루트 또는 관리자 권한을 사용하여 클라이언트를 설치합니다.

**참고**  
AIX 또는 Windows에 클라이언트를 설치하려면 동일한 절차를 따르되, 운영 체제에 맞게 명령을 수정하세요.

**Linux에 클라이언트를 설치하려면**

1. **`./db2_install -f sysreq`**를 실행하고 **`yes`**를 선택하여 라이선스를 수락합니다.

1. 클라이언트를 설치할 위치를 선택합니다.

1. **`clientInstallDir/instance/db2icrt -s client` *instance\$1name***을 실행합니다. *instance\$1name*을 Linux에서 올바른 운영 체제 사용자로 바꿉니다. Linux에서 Db2 DB 인스턴스 이름은 운영 체제 사용자 이름에 연결됩니다.

   이 명령은 Linux에서 지정된 사용자의 홈 디렉터리에 **`sqllib`** 디렉터리를 만듭니다.

## DB 인스턴스에 연결
<a name="db2-connecting-ibm-clp-connect-db-instance"></a>

RDS for Db2 DB 인스턴스에 연결하려면 인스턴스의 DNS 이름과 포트 번호가 필요합니다. 찾는 방법에 대한 자세한 내용은 [엔드포인트 찾기](db2-finding-instance-endpoint.md) 섹션을 참조하세요. 또한 RDS for Db2 DB 인스턴스를 만들 때 정의한 데이터베이스 이름, 마스터 사용자 이름, 마스터 암호도 알아야 합니다. 찾는 방법에 대한 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 섹션을 참조하세요.

**IBM Db2 CLP를 사용하여 RDS for Db2 DB 인스턴스에 연결하려면**

1. IBM Db2 CLP 클라이언트 설치 중에 지정한 사용자 이름으로 로그인합니다.

1. RDS for Db2 DB 인스턴스를 카탈로그화합니다. 다음 예제에서 *node\$1name*, *dns\$1name*, *port*를 로컬 카탈로그의 노드 이름, DB 인스턴스의 DNS 이름, 포트 번호로 대체합니다.

   ```
   1. db2 catalog TCPIP node node_name remote dns_name server port
   ```

   **예제**

   ```
   db2 catalog TCPIP node remnode remote database-1.123456789012.us-east-1.amazonaws.com server 50000
   ```

1. `rdsadmin` 데이터베이스와 데이터베이스를 카탈로그화합니다. 그러면 Amazon RDS 저장 프로시저로 `rdsadmin` 데이터베이스에 연결하여 일부 관리 작업을 수행할 수 있습니다. 자세한 내용은 [RDS for Db2 DB 인스턴스 관리](db2-administering-db-instance.md) 섹션을 참조하세요.

   다음 예제에서 *database\$1alias*, *node\$1name*, *database\$1name*을 이 데이터베이스의 별칭, 이전 단계에서 정의한 노드 이름, 데이터베이스 이름으로 바꿉니다. `server_encrypt`에서는 네트워크를 통해 사용자 이름과 암호를 암호화합니다.

   ```
   db2 catalog database rdsadmin [ as database_alias ] at node node_name authentication server_encrypt
       
   db2 catalog database database_name [ as database_alias ] at node node_name authentication server_encrypt
   ```

   **예제**

   ```
   db2 catalog database rdsadmin at node remnode authentication server_encrypt
       
   db2 catalog database testdb as rdsdb2 at node remnode authentication server_encrypt
   ```

1. RDS for Db2 데이터베이스에 연결합니다. 다음 예제에서 *rds\$1database\$1alias*, *master\$1username*, *master\$1password*를 RDS for Db2 DB 인스턴스의 마스터 암호, 마스터 사용자 이름, 데이터베이스 이름으로 바꿉니다.

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

   다음 예제와 비슷한 출력이 생성됩니다.

   ```
   Database Connection Information
       
       Database server        = DB2/LINUXX8664 11.5.9.0
       SQL authorization ID   = ADMIN
       Local database alias   = TESTDB
   ```

1. 쿼리를 실행하고 결과를 확인합니다. 다음 예제는 생성한 데이터베이스를 선택하는 SQL 문을 보여줍니다.

   ```
   db2 "select current server from sysibm.dual"
   ```

   다음 예제와 비슷한 출력이 생성됩니다.

   ```
   1
       ------------------
       TESTDB
       
       1 record(s) selected.
   ```

## RDS for Db2 DB 인스턴스에 대한 연결 문제 해결
<a name="db2-troubleshooting-connections-clp"></a>

다음 `NULLID` 오류는 보통 클라이언트와 RDS for Db2 서버 버전이 일치하지 않아 발생합니다. 지원되는 Db2 클라이언트 버전은 IBM Db2 설명서의 [지원되는 클라이언트, 드라이버 및 서버 수준 조합](https://www.ibm.com/docs/en/db2/11.5?topic=communications-supported-combinations-clients-drivers-server-levels)을 참조하세요.

```
db2 "select * from syscat.tables"
SQL0805N Package "NULLID.SQLC2O29 0X4141414141454A69" was not found.
SQLSTATE=51002
```

이 오류가 발생한 후에는 이전 Db2 클라이언트의 패키지를 RDS for Db2에서 지원하는 Db2 서버 버전에 바인딩해야 합니다.

**이전 Db2 클라이언트의 패키지를 최신 Db2 서버에 바인딩하려면**

1. 클라이언트 머신에서 바인딩할 파일을 찾습니다. 일반적으로 이러한 파일은 Db2 클라이언트 설치 경로의 **bnd** 디렉터리에 있으며 확장자는 **.bnd**입니다.

1. Db2 서버에 연결합니다. 다음 예제에서 *database\$1name*을 Db2 서버 이름으로 바꿉니다. *master\$1username* 및 *master\$1password*를 사용자 정보로 대체합니다. 이 사용자에게는 `DBADM` 권한이 있습니다.

   ```
   db2 connect to database_name user master_username using master_password
   ```

1. 패키지를 바인딩하려면 `bind` 명령을 실행합니다.

   1. 클라이언트 머신에서 바인딩 파일이 있는 디렉터리로 이동합니다.

   1. 각 파일에 대해 `bind` 명령을 실행합니다.

      다음 옵션이 필요합니다.
      + `blocking all` - 단일 데이터베이스 요청으로 바인딩할 파일의 모든 패키지를 바인딩합니다.
      + `grant public` - 패키지를 실행할 `public` 권한을 부여합니다.
      + `sqlerror continue` - 오류가 발생해도 `bind` 프로세스가 계속되도록 지정합니다.

      `bind` 명령에 대한 자세한 내용은 IBM Db2 설명서의 [BIND 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-bind)을 참조하세요.

1. `syscat.package` 카탈로그 뷰를 쿼리하거나 `bind` 명령 이후에 반환되는 메시지를 확인하여 바인딩이 성공했는지 확인합니다.

자세한 내용은 IBM Support의 [DB2 v11.5 바인딩 파일 및 패키지 이름 목록](https://www.ibm.com/support/pages/node/6190455)을 참조하세요.

# IBM CLPPlus을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결
<a name="db2-connecting-with-ibm-clpplus-client"></a>

IBM CLPPlus와 같은 유틸리티를 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결할 수 있습니다. 이 유틸리티는 IBM Data Server Runtime Client의 일부입니다. IBM Fix Central에서 클라이언트를** **다운로드하려면 IBM Support의 [IBM 데이터 서버 클라이언트 패키지 버전 11.5 Mod 8 수정 팩 0](https://www.ibm.com/support/pages/node/6830885)을 참조하세요.

**중요**  
데스크톱과 함께 macOS, Windows, Linux 등 그래픽 사용자 인터페이스를 지원하는 운영 체제에서 IBM CLPPlus를 실행하는 것이 좋습니다. 헤드리스 Linux를 실행하는 경우 CLPPlus 명령과 함께 switch **-nw**를 사용하세요.

**Topics**
+ [클라이언트 설치](#db2-connecting-ibm-clpplus-install-client)
+ [DB 인스턴스에 연결](#db2-connecting-ibm-clpplus-connect-db-instance)
+ [DB2 저장 프로시저에서 CLOB 데이터 검색](#db2-connecting-ibm-clpplus-retrieve-clob-data)

## 클라이언트 설치
<a name="db2-connecting-ibm-clpplus-install-client"></a>

Linux의 패키지를 다운로드한 후 클라이언트를 설치합니다.

**참고**  
AIX 또는 Windows에 클라이언트를 설치하려면 동일한 절차를 따르되, 운영 체제에 맞게 명령을 수정하세요.

**Linux에 클라이언트를 설치하려면**

1. 를 실행합니다..**`./db2_install`**

1. **`clientInstallDir/instance/db2icrt -s client` *instance\$1name***을 실행합니다. *instance\$1name*을 Linux에서 올바른 운영 체제 사용자로 바꿉니다. Linux에서 Db2 DB 인스턴스 이름은 운영 체제 사용자 이름에 연결됩니다.

   이 명령은 Linux에서 지정된 사용자의 홈 디렉터리에 **`sqllib`** 디렉터리를 만듭니다.

## DB 인스턴스에 연결
<a name="db2-connecting-ibm-clpplus-connect-db-instance"></a>

RDS for Db2 DB 인스턴스에 연결하려면 인스턴스의 DNS 이름과 포트 번호가 필요합니다. 찾는 방법에 대한 자세한 내용은 [엔드포인트 찾기](db2-finding-instance-endpoint.md) 섹션을 참조하세요. 또한 RDS for Db2 DB 인스턴스를 만들 때 정의한 데이터베이스 이름, 마스터 사용자 이름, 마스터 암호도 알아야 합니다. 찾는 방법에 대한 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 섹션을 참조하세요.

**IBM CLPPlus를 사용하여 RDS for Db2 DB 인스턴스에 연결하려면**

1. 명령 구문을 검토합니다. 다음 예제에서 *clientDir*을 클라이언트가 설치된 위치로 바꿉니다.

   ```
   cd clientDir/bin
       ./clpplus -h
   ```

1. Db2 서버를 구성합니다. 다음 예제에서 *dsn\$1name*, *database\$1name*, *endpoint*, *port*를 RDS for Db2 DB 인스턴스의 DSN 이름, 데이터베이스 이름, 엔드포인트 및 포트로 대체합니다. 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스의 엔드포인트 찾기](db2-finding-instance-endpoint.md) 섹션을 참조하세요.

   ```
   db2cli writecfg add -dsn dsn_name -database database_name -host endpoint -port port -parameter "Authentication=SERVER_ENCRYPT"
   ```

1. RDS for Db2 DB 인스턴스에 연결합니다. 다음 예제에서 *master\$1username* 및 *dsn\$1name*을 마스터 사용자 이름과 DSN 이름으로 대체합니다.

   ```
   ./clpplus -nw master_username@dsn_name
   ```

1. Java Shell 창이 열립니다. RDS for Db2 DB 인스턴스의 마스터 암호를 입력합니다.
**참고**  
Java Shell 창이 열리지 않는 경우 `./clpplus -nw`를 실행하여 동일한 명령줄 창을 사용합니다.

   ```
   Enter password: *********
   ```

   연결이 이루어지면 다음 예제와 비슷한 출력이 생성됩니다.

   ```
   Database Connection Information :
   ---------------------------------
   Hostname = database-1.abcdefghij.us-east-1.rds.amazonaws.com
   Database server = DB2/LINUXX8664  SQL110590
   SQL authorization ID = admin
   Local database alias = DB2DB
   Port = 50000
   ```

1. 쿼리를 실행하고 결과를 확인합니다. 다음 예제는 생성한 데이터베이스를 선택하는 SQL 문을 보여줍니다.

   ```
   SQL > select current server from sysibm.dual;
   ```

   다음 예제와 비슷한 출력이 생성됩니다.

   ```
   1
       --------------------
       DB2DB
       SQL>
   ```

## DB2 저장 프로시저에서 CLOB 데이터 검색
<a name="db2-connecting-ibm-clpplus-retrieve-clob-data"></a>

rdsadmin.db2pd\$1command와 같은 저장 프로시저는 CLOB 열에 결과를 반환하며, 이 열은 최대 2GB의 데이터를 지원합니다. 그러나 DB2 CLP는 CLOB 출력을 8KB(8192바이트)로 제한하여 이 임계값을 초과하는 모든 데이터를 잘라냅니다. 전체 출력을 검색하려면 CLPPLUS를 대신 사용합니다.

1. 태스크 ID(task\$1id) 가져오기 

   ```
   db2 "select task_id, task_type, database_name, lifecycle, varchar(bson_to_json(task_input_params), 500) as task_params,
   cast(task_output as varchar(500)) as task_output, CREATED_AT, LAST_UPDATED_AT from table(rdsadmin.get_task_status(null,null,null))"
   ```

1. CLPPLUS 명령 실행

   task\$1id를 가져온 후 Unix 프롬프트에서 다음 명령을 실행합니다(TASK\$1ID를 실제 숫자 작업 ID로 대체).

   ```
   $ (echo "select task_output from table(rdsadmin.get_task_status(task_id,null,null));" ; echo "disconnect;" ; echo "exit;") | clpplus -nw -silent masteruser/MasterUserPassword@hostname:port_num/rdsadmin
   ```

# DBeaver을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결
<a name="db2-connecting-with-dbeaver"></a>

DBeaver와 같은 타사 도구를 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결할 수 있습니다. 이 유틸리티를 다운로드하려면 [DBeaver 커뮤니티](https://dbeaver.io/)를 참조하세요.

RDS for Db2 DB 인스턴스에 연결하려면 인스턴스의 DNS 이름과 포트 번호가 필요합니다. 찾는 방법에 대한 자세한 내용은 [엔드포인트 찾기](db2-finding-instance-endpoint.md) 섹션을 참조하세요. 또한 RDS for Db2 DB 인스턴스를 만들 때 정의한 데이터베이스 이름, 마스터 사용자 이름, 마스터 암호도 알아야 합니다. 찾는 방법에 대한 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 섹션을 참조하세요.

**DBeaver를 사용하여 RDS for Db2 DB 인스턴스에 연결하려면**

1. Start **DBeaver**.

1. 도구 모음에서 **새 연결** 아이콘을 선택한 다음 **Db2 for LUW**를 선택합니다.  
![\[DBeaver에서 엔진 유형을 나열하는 메뉴.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/dbeaver-add-connection.png)

1. **데이터베이스에 연결** 창에서 RDS for Db2 DB 인스턴스 정보를 입력합니다.

   1.  다음 정보를 입력합니다.
      + **호스트**에 DB 인스턴스의 DNS 이름을 입력합니다.
      + **포트**에 DB 인스턴스의 포트 번호를 입력합니다.
      + **데이터베이스**에 데이터베이스 이름을 입력합니다.
      + **사용자 이름**에 DB 인스턴스의 데이터베이스 관리자 이름을 입력합니다.
      + **암호**에 DB 인스턴스의 데이터베이스 관리자 암호를 입력합니다.

   1. **암호 저장**을 선택합니다.

   1. **드라이버 설정**을 선택합니다.  
![\[다양한 연결 설정이 채워져 있는 DBeaver의 데이터베이스에 연결 창.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/dbeaver-connect-database.png)

1. **드라이버 편집** 창에서 추가 보안 속성을 지정합니다.

   1. **드라이버 속성** 탭을 선택합니다.

   1. 2개의 **사용자 속성**을 추가합니다.

      1. 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) **새 속성 추가**를 선택합니다.

      1. **속성 이름**에 **encryptionAlgorithm**을 추가한 다음 **확인**을 선택합니다.

      1. **encryptionAlgorithm** 행을 선택한 상태에서 **값** 열을 선택하고 **2**를 추가합니다.

      1. 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) **새 속성 추가**를 선택합니다.

      1. **속성 이름**에 **securityMechanism**을 추가한 다음 **확인**을 선택합니다.

      1. **securityMechanism** 행을 선택한 상태에서 **값** 열을 선택하고 **7**을 추가합니다.

   1. **확인**을 선택합니다.  
![\[DBeaver의 드라이버 편집 창에 있는 드라이버 속성 탭.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/dbeaver-driver-properties-tab.png)

1. **데이터베이스에 연결** 창에서 **연결 테스트**를 선택합니다. 컴퓨터에 DB2 JBDC 드라이버가 설치되어 있지 않으면 드라이버가 자동으로 다운로드됩니다.

1. **확인**을 선택합니다.

1. **마침**을 클릭합니다.

1. **데이터베이스 탐색** 탭에서 데이터베이스 이름을 선택합니다. 이제 객체를 탐색할 수 있습니다.

이제 SQL 명령을 실행할 준비가 되었습니다.

**SQL 명령을 실행하고 결과를 확인하려면**

1. 상단 메뉴에서 **SQL**을 선택합니다. 그러면 SQL 스크립트 패널이 열립니다.

1. **스크립트** 패널에서 SQL 명령을 입력합니다.

1. 명령을 실행하려면 **SQL 쿼리 실행** 버튼을 선택합니다.

1. SQL 결과 패널에서 SQL 쿼리 결과를 확인합니다.  
![\[DBeaver에서 SQL 명령을 실행하고 결과를 보는 방법을 보여주는 창.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/dbeaver-sql-run-example.png)

# IBM Db2 Data Management Console을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결
<a name="db2-connecting-with-ibm-data-management-console"></a>

IBM Db2 Data Management Console을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결할 수 있습니다. IBM Db2 Data Management Console에서는 여러 RDS for Db2 DB 인스턴스를 관리하고 모니터링할 수 있습니다.

**참고**  
RDS for Db2 DB 인스턴스와 동일한 VPC 및 보안 그룹에 있는 Amazon EC2 Linux 또는 Windows 시스템이 있어야 합니다. VPC 및 보안 그룹은 내부 네트워크를 통해 DB 인스턴스에 대한 연결을 제어합니다.

IBM Db2 Data Management Console에서는 메타데이터 및 성능 지표를 저장하기 위한 리포지토리 Db2 데이터베이스가 필요하지만, RDS for Db2용 리포지토리 데이터베이스를 자동으로 생성할 수는 없습니다. 먼저 하나 이상의 RDS for Db2 DB 인스턴스를 모니터링하려면 리포지토리 데이터베이스를 만들어야 합니다. 그런 다음 IBM Db2 Data Management Console을 사용하여 IBM Db2 Data Management Console을 설치하고 RDS for Db2 DB 인스턴스에 연결합니다.

**Topics**
+ [1단계: DB 인스턴스를 모니터링하기 위한 리포지토리 데이터베이스 생성](#db2-creating-repo-db-monitoring-dmc)
+ [2단계: IBM Db2 Data Management Console 설치 및 설정](#db2-install-setup-dmc)
+ [3단계: 리포지토리 데이터베이스 구성 및 RDS for Db2 DB 인스턴스에 연결](#db2-connecting-db-instances-with-dmc)
+ [IBM Db2 Data Management Console 사용하기](#db2-using-dmc)

## 1단계: DB 인스턴스를 모니터링하기 위한 리포지토리 데이터베이스 생성
<a name="db2-creating-repo-db-monitoring-dmc"></a>

적절한 크기의 기존 RDS for Db2 DB 인스턴스를 다른 RDS for Db2 DB 인스턴스를 모니터링하기 위한 IBM Db2 Data Management Console용 리포지토리로 사용할 수 있습니다. 하지만 관리자에게는 버퍼 풀과 테이블스페이스를 생성할 `SYSCTRL` 권한이 없으므로, IBM Db2 Data Management Console 리포지토리 생성을 사용하여 리포지토리 데이터베이스를 생성하는 것은 실패합니다. 대신 리포지토리 데이터베이스를 생성해야 합니다. 이 리포지토리 데이터베이스는 RDS for Db2 DB 인스턴스를 모니터링합니다.

두 방법으로 리포지토리 데이터베이스를 만들 수 있습니다. RDS for Db2 데이터베이스를 생성한 다음 버퍼 풀, 사용자 테이블스페이스 및 시스템 임시 테이블스페이스를 수동으로 생성할 수 있습니다. 또는 IBM Db2 Data Management Console 리포지토리 데이터베이스를 호스팅할 별도의 Amazon EC2 인스턴스를 생성할 수 있습니다.

**Topics**
+ [버퍼 풀, 사용자 테이블스페이스 및 시스템 임시 테이블스페이스 수동 생성](#db2-manually-creating-dmc)
+ [IBM Db2 Data Management Console 리포지토리를 호스팅하기 위한 Amazon EC2 인스턴스 생성](#db2-creating-ec2-dmc)

### 버퍼 풀, 사용자 테이블스페이스 및 시스템 임시 테이블스페이스 수동 생성
<a name="db2-manually-creating-dmc"></a>

**버퍼 풀, 사용자 테이블스페이스 및 시스템 임시 테이블스페이스를 생성하려면**

1. `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password  
   ```

1. IBM Db2 Data Management Console의 버퍼 풀을 생성합니다. 다음 예제에서 *database\$1name*을 IBM Db2 Data Management Console에서 RDS for Db2 DB 인스턴스를 모니터링하기 위해 만든 리포지토리 이름으로 바꿉니다.

   ```
   db2 "call rdsadmin.create_bufferpool('database_name', 
        'BP4CONSOLE', 1000, 'Y', 'Y', 32768)"
   ```

1. IBM Db2 Data Management Console의 테이블스페이스 생성 다음 예제에서 *database\$1name*을 IBM Db2 Data Management Console에서 RDS for Db2 DB 인스턴스를 모니터링하기 위해 만든 리포지토리 이름으로 바꿉니다.

   ```
   db2 "call rdsadmin.create_tablespace('database_name', 
        'TS4CONSOLE', 'BP4CONSOLE', 32768)"
   ```

1. IBM Db2 Data Management Console의 임시 테이블스페이스를 생성합니다. 다음 예제에서 *database\$1name*을 IBM Db2 Data Management Console에서 RDS for Db2 DB 인스턴스를 모니터링하기 위해 만든 리포지토리 이름으로 바꿉니다.

   ```
   db2 "call rdsadmin.create_tablespace('database_name',
       'TS4CONSOLE_TEMP', 'BP4CONSOLE', 32768, 0, 0, 'S')"
   ```

이제 IBM Db2 Data Management Console을 설치할 준비가 되었습니다. 설치 및 설정에 대한 자세한 내용은 [2단계: IBM Db2 Data Management Console 설치 및 설정](#db2-install-setup-dmc) 섹션을 참조하세요.

### IBM Db2 Data Management Console 리포지토리를 호스팅하기 위한 Amazon EC2 인스턴스 생성
<a name="db2-creating-ec2-dmc"></a>

별도의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 생성하여 IBM Db2 Data Management Console 리포지토리를 호스팅할 수 있습니다. Amazon EC2 인스턴스 생성에 대한 자세한 내용은 **Amazon EC2 사용 설명서에서 [자습서: Amazon EC2 Linux 인스턴스 시작하기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)를 참조하세요.

## 2단계: IBM Db2 Data Management Console 설치 및 설정
<a name="db2-install-setup-dmc"></a>

버퍼 풀, 사용자 테이블스페이스 및 시스템 임시 테이블스페이스를 생성했으면 IBM Db2 Data Management Console을 설치하고 설정할 준비가 되었습니다.

**중요**  
RDS for Db2 DB 인스턴스와 동일한 VPC 및 보안 그룹에 있는 Amazon EC2 Linux 또는 Windows 시스템이 있어야 합니다. VPC 및 보안 그룹은 내부 네트워크를 통해 DB 인스턴스에 대한 연결을 제어합니다. 또한 IBM Db2 Data Management Console에 대한 [리포지토리 데이터베이스를 이미 생성](#db2-creating-repo-db-monitoring-dmc)했어야 합니다.

**IBM Db2 Data Management Console을 설치 및 설정하려면**

1. IBM 지원 웹 사이트의 [IBM Db2 Data Management Console 버전 3.1x 릴리스](https://www.ibm.com/support/pages/ibm-db2-data-management-console-version-31x-releases-new-features-and-enhancements)에서 IBM Db2 Data Management Console을 다운로드합니다.

1. IBM Db2 Data Management Console을 설치합니다.

1. IBM Db2 Data Management Console을 열고 Amazon EC2 시스템의 IP 주소와 Amazon EC2 인스턴스에 대한 HTTP 또는 HTTPS 연결에 사용하는 포트 번호를 사용합니다. 예는 `http://xx.xx.xx.xx:11080` 또는 `https://xx.xx.xx.xx.11081` 섹션을 참조하세요. `xx.xx.xx.xx`를 Amazon EC2 시스템의 IP 주소로 바꿉니다. `11080` 및 `11081`은 HTTP 및 HTTPS 연결을 위한 기본 포트입니다.

1. (선택 사항) Amazon EC2 인스턴스에서 포트 80 또는 443을 사용하려면 Apache httpd 또는 Nginx HTTP 서버를 사용하여 IBM Db2 Data Management Console 포트를 포트 80 또는 443으로 프록시할 수 있습니다. 자세한 내용은 [Apache HTTP Server Project](https://httpd.apache.org) 및 [nginx 웹 사이트](https://nginx.org/en/)를 참조하세요.

   IBM Db2 Data Management Console에 대한 연결을 허용하려면 보안 그룹의 인바운드 규칙을 편집해야 합니다. 프록시를 사용하는 경우 TCP/IP 포트 80 또는 443을 변경하여 IBM Db2 Data Management Console 포트로 리디렉션합니다. 프록시를 사용하지 않는 경우 TCP/IP 포트 80 또는 443을 기본 포트 11080(HTTP) 또는 11081(HTTPS)로 변경합니다.

이제 IBM Db2 Data Management Console에 로그인하여 리포지토리 데이터베이스를 구성하고 RDS for Db2 DB 인스턴스에 연결할 준비가 되었습니다. 자세한 내용은 [리포지토리 데이터베이스 구성 및 DB 인스턴스에 연결](#db2-connecting-db-instances-with-dmc) 섹션을 참조하세요.

## 3단계: 리포지토리 데이터베이스 구성 및 RDS for Db2 DB 인스턴스에 연결
<a name="db2-connecting-db-instances-with-dmc"></a>

리포지토리 데이터베이스에 처음 연결하면 IBM Db2 Data Management Console이 리포지토리를 자동으로 구성합니다. 리포지토리 데이터베이스를 구성한 후 IBM Db2 Data Management Console에 데이터베이스 연결을 추가할 수 있습니다.

RDS for Db2 DB 인스턴스에 연결하려면 인스턴스의 DNS 이름과 포트 번호가 필요합니다. 찾는 방법에 대한 자세한 내용은 [엔드포인트 찾기](db2-finding-instance-endpoint.md) 섹션을 참조하세요. 또한 RDS for Db2 DB 인스턴스를 만들 때 정의한 데이터베이스 이름, 마스터 사용자 이름, 마스터 암호도 알아야 합니다. 찾는 방법에 대한 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 섹션을 참조하세요. 인터넷을 통해 연결하는 경우 데이터베이스 포트로의 트래픽을 허용합니다. 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 섹션을 참조하세요.

**IBM Db2 Data Management Console을 사용하여 RDS for Db2 DB 인스턴스에 연결하려면**

1. 설치 중에 설정한 자격 증명으로 IBM Db2 Data Management Console에 로그인합니다.

1. 리포지토리를 구성합니다.

   1. **연결 및 데이터베이스** 섹션에서 RDS for Db2 DB 인스턴스에 대한 다음 정보를 입력합니다.
      + **호스트**에 DB 인스턴스의 DNS 이름을 입력합니다.
      + **포트**에 DB 인스턴스의 포트 번호를 입력합니다.
      + **데이터베이스**에 데이터베이스 이름을 입력합니다.  
![\[IBM Db2 Data Management Console의 연결 및 데이터베이스 섹션에 호스트, 포트, 데이터베이스 필드가 있음.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ibm-dmc-connection-database.png)

   1. **보안 및 보안 인증 정보** 섹션에서 RDS for Db2 DB 인스턴스에 대한 다음 정보를 입력합니다.
      + **보안 유형**에서 **암호화된 사용자 및 암호**를 선택합니다.
      + **사용자 이름**에 DB 인스턴스의 데이터베이스 관리자 이름을 입력합니다.
      + **암호**에 DB 인스턴스의 데이터베이스 관리자 암호를 입력합니다.

   1. **연결 테스트**를 선택합니다.
**참고**  
연결에 실패할 경우 보안 그룹의 인바운드 규칙을 통해 데이터베이스 포트가 열려 있는지 확인하세요. 자세한 내용은 [Amazon RDS for Db2를 사용하는 보안 그룹에 대한 고려 사항](db2-security-groups-considerations.md) 섹션을 참조하세요.

      RDS for Db2에서 [버퍼 풀, 사용자 테이블스페이스 및 시스템 임시 테이블스페이스를 수동으로 생성](#db2-manually-creating-dmc)하지 않은 경우 다음 오류 메시지가 표시될 수 있습니다.  
![\[작업을 수행할 권한이 없다는 오류 메시지.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ibm-dmc-error-message.png)

      RDS for Db2 DB 인스턴스를 모니터링하려면 IBM Db2 Data Management Console 리포지토리의 버퍼 표, 테이블스페이스 및 객체를 생성했는지 확인합니다. 또는 Amazon EC2 Db2 DB 인스턴스를 사용하여 RDS for Db2 DB 인스턴스를 모니터링하기 위한 IBM Db2 Data Management Console 리포지토리를 호스팅할 수 있습니다. 자세한 내용은 [1단계: DB 인스턴스를 모니터링하기 위한 리포지토리 데이터베이스 생성](#db2-creating-repo-db-monitoring-dmc) 섹션을 참조하세요.

   1. 연결을 성공적으로 테스트한 후 **다음**을 선택합니다.  
![\[IBM Db2 Data Management Console의 보안 및 자격 증명 섹션.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ibm-dmc-security-credential.png)

   IBM Db2 Data Management Console이 RDS for Db2 DB 인스턴스에서 버퍼 풀, 사용자 테이블스페이스 및 시스템 임시 테이블스페이스를 찾은 경우 IBM Db2 Data Management Console은 리포지토리 데이터베이스를 자동으로 구성합니다. Amazon EC2 인스턴스에서 Db2 인스턴스를 리포지토리 데이터베이스로 사용하는 경우 IBM Db2 Data Management Console은 버퍼 풀 및 기타 객체를 자동으로 생성합니다.

1. **통계 이벤트 모니터 옵트인 설정** 창에서 **다음**을 선택합니다.

1. (선택 사항) 새 연결을 추가합니다. 관리 및 모니터링을 위해 다른 RDS for Db2 DB 인스턴스를 사용하려면 리포지토리가 아닌 RDS for Db2 DB 인스턴스에 연결을 추가합니다.

   1. **연결 및 데이터베이스** 섹션에서 관리 및 모니터링에 사용할 RDS for Db2 DB 인스턴스에 대한 다음 정보를 입력합니다.
      + **연결 이름**에 Db2 데이터베이스 식별자를 입력합니다.
      + **호스트**에 DB 인스턴스의 DNS 이름을 입력합니다.
      + **포트**에 DB 인스턴스의 포트 번호를 입력합니다.
      + **데이터베이스**에 데이터베이스 이름을 입력합니다.  
![\[새 연결을 위한 IBM Db2 Data Management Console의 연결 및 데이터베이스 섹션에 호스트, 포트, 데이터베이스 필드가 있음.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ibm-dmc-new-connection-database.png)

   1. **보안 및 보안 인증 정보**** **섹션에서 **모니터링 데이터 수집 활성화**를 선택합니다.

   1. RDS for Db2 DB 인스턴스에 대한 다음 정보를 입력합니다.
      + **사용자 이름**에 DB 인스턴스의 데이터베이스 관리자 이름을 입력합니다.
      + **암호**에 DB 인스턴스의 데이터베이스 관리자 암호를 입력합니다.

   1. **연결 테스트**를 선택합니다.

   1. 연결을 성공적으로 테스트한 후 **저장**을 선택합니다.  
![\[새 연결을 위한 IBM Db2 Data Management Console의 보안 및 자격 증명 섹션.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ibm-dmc-new-security-credential.png)

   연결이 추가된 후 다음과 유사한 창이 표시됩니다. 이 창은 데이터베이스가 성공적으로 구성되었음을 나타냅니다.  
![\[IBM Db2 Data Management Console에서 데이터베이스가 성공적으로 구성되었음을 나타내는 창.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ibm-dmc-configuration-success.png)

1. **데이터베이스로 이동**을 선택합니다. 다음과 유사한 데이터베이스 창이 표시됩니다. 이 창은 지표, 상태 및 연결을 보여주는 대시보드입니다.  
![\[IBM Db2 Data Management Console의 데이터베이스 개요 창.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ibm-dmc-database-view.png)

이제 IBM Db2 Data Management Console을 사용할 수 있습니다.

## IBM Db2 Data Management Console 사용하기
<a name="db2-using-dmc"></a>

IBM Db2 Data Management Console을 사용하여 다음 유형의 작업을 수행할 수 있습니다.
+ 여러 RDS for Db2 DB 인스턴스를 관리합니다.
+ SQL 명령을 실행합니다.
+ 데이터 및 데이터베이스 객체를 탐색, 생성 또는 변경합니다.
+ SQL에서 `EXPLAIN PLAN` 문을 생성합니다.
+ 쿼리를 조정합니다.

**SQL 명령을 실행하고 결과를 확인하려면**

1. 왼쪽 탐색 모음에서 **SQL**을 선택합니다.

1. SQL 명령을 입력합니다.

1. **모두 실행**을 선택합니다.

1. **결과** 탭을 선택하여 결과를 봅니다.

![\[SQL 명령을 실행하고 결과를 보는 방법을 보여 주는 IBM Db2 Data Management Console의 데이터베이스 창.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ibm-dmc-sql-run-example.png)


# Amazon RDS for Db2를 사용하는 보안 그룹에 대한 고려 사항
<a name="db2-security-groups-considerations"></a>

Amazon RDS for Db2 DB 인스턴스에 연결하려면 필요한 IP 주소와 네트워크 구성이 포함되어 있는 보안 그룹과 연결되어야 합니다. RDS for Db2 DB 인스턴스는 기본 보안 그룹을 사용할 수 있습니다. RDS for Db2 DB 인스턴스를 생성할 때 구성할 필요가 없는 기본 보안 그룹을 할당한 경우에는 방화벽이 인터넷 연결을 차단합니다. 새 보안 그룹 생성에 대한 자세한 내용은 [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md) 단원을 참조하십시오.

새 보안 그룹을 생성하였으면 보안 그룹과 연동되도록 DB 인스턴스 설정을 변경합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

SSL을 사용하여 DB 인스턴스 연결을 암호화함으로써 보안을 강화할 수 있습니다. 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스에 SSL/TLS 사용](Db2.Concepts.SSL.md) 섹션을 참조하세요.

# Amazon RDS for Db2 DB 인스턴스 연결 보안
<a name="Db2.Concepts.RestrictedDBAPrivileges"></a>

Amazon RDS for Db2는 RDS for Db2 DB 인스턴스의 보안을 개선하는 방법을 지원합니다.

**Topics**
+ [Amazon RDS for Db2 DB 인스턴스에 SSL/TLS 사용](Db2.Concepts.SSL.md)
+ [Amazon RDS for Db2에 대한 Kerberos 인증 사용](db2-kerberos.md)

# Amazon RDS for Db2 DB 인스턴스에 SSL/TLS 사용
<a name="Db2.Concepts.SSL"></a>

SSL은 클라이언트와 서버 간의 네트워크 연결을 보호하는 데 사용되는 업계 표준 프로토콜입니다. SSL 버전 3.0 이후에 이름이 TLS로 변경되었지만, 여전히 이 프로토콜을 SSL로 지칭하는 경우가 많습니다. Amazon RDS는 Amazon RDS for Db2 DB 인스턴스에 SSL 암호화를 지원합니다. SSL/TLS를 사용하여 애플리케이션 클라이언트와 RDS for Db2 DB 인스턴스 간의 연결을 암호화할 수 있습니다. SSL/TLS 지원 기능은 RDS for Db2에 대한 모든 AWS 리전에서 사용할 수 있습니다.



RDS for Db2 DB 인스턴스에 대해 SSL/TLS 암호화를 활성화하려면 DB 인스턴스와 연결된 파라미터 그룹에 Db2 SSL 옵션을 추가합니다. Amazon RDS는 Db2에서 요구하는 대로 SSL/TLS 연결을 위해 두 번째 포트를 사용합니다. 이로 인해 DB 인스턴스와 Db2 클라이언트 간에 클리어 텍스트 통신과 SSL로 암호화된 통신이 동시에 발생할 수 있습니다. 예를 들어 이 포트를 클리어 텍스트 통신에 사용하여 VPC 내의 다른 리소스와 통신하면서 동일한 포트를 SSL로 암호화된 통신에 사용하여 VPC 외부의 리소스와 통신할 수 있습니다.

**Topics**
+ [SSL/TLS 연결 생성하기](#db2-creating-ssl-connection)
+ [Db2 데이터베이스 서버에 연결](#db2-connecting-to-server-ssl)

## SSL/TLS 연결 생성하기
<a name="db2-creating-ssl-connection"></a>

SSL/TLS 연결을 만들려면 인증 기관(CA)을 선택하고 모든 AWS 리전에 대한 인증서 번들을 다운로드한 다음 사용자 지정 파라미터 그룹에 파라미터를 추가합니다.

### 1단계: CA 선택 및 인증서 다운로드
<a name="db2-creating-ssl-connection-prereq"></a>

인증 기관(CA)을 선택하고 모든 AWS 리전에 대한 인증서 번들을 다운로드합니다. 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 섹션을 참조하세요.

### 2단계: 사용자 지정 파라미터 그룹의 파라미터 업데이트
<a name="db2-updating-parameters-ssl"></a>

**중요**  
RDS for Db2용 Bring Your Own License(BYOL) 모델을 사용하는 경우 IBM Customer ID 및 IBM Site ID용으로 만든 사용자 지정 파라미터 그룹을 수정합니다. RDS for Db2에 대해 다른 라이선스 모델을 사용하는 경우 절차에 따라 사용자 지정 파라미터 그룹에 파라미터를 추가합니다. 자세한 내용은 [Amazon RDS for Db2 라이선스 옵션](db2-licensing.md) 섹션을 참조하세요.

RDS for Db2 DB 인스턴스의 기본 파라미터 그룹은 수정할 수 없습니다. 따라서 사용자 지정 파라미터 그룹을 생성하여 수정한 후 RDS for Db2 DB 인스턴스에 연결해야 합니다. 파라미터 그룹에 대한 자세한 내용은 [Amazon RDS DB 인스턴스용 DB 파라미터 그룹](USER_WorkingWithDBInstanceParamGroups.md) 단원을 참조하세요.

 다음 표에 있는 파라미터 설정을 사용합니다.


| 파라미터 | 값 | 
| --- | --- | 
| DB2COMM | TCPIP,SSL 또는 SSL | 
| SSL\$1SVCENAME | <any port number except the number used for the non-SSL port> | 

**사용자 지정 파라미터 그룹의 파라미터를 업데이트하려면**

1. [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 명령을 실행하여 사용자 지정 파라미터 그룹을 생성합니다.

   다음 필수 옵션을 포함합니다.
   + `--db-parameter-group-name` – 생성하려는 파라미터 그룹의 이름입니다.
   + `--db-parameter-group-family` – Db2 엔진 에디션 및 메이저 버전입니다. 유효한 값: `db2-se-11-5`, `db2-ae-11.5`.
   + `--description` – 이 파라미터 그룹에 대한 설명입니다.

   DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 명령을 실행하여 만든 사용자 지정 파라미터 그룹의 파라미터를 수정합니다.

   다음 필수 옵션을 포함합니다.
   + `--db-parameter-group-name` – 생성한 파라미터 그룹의 이름입니다.
   + `--parameters` – 파라미터 업데이트를 위한 파라미터 이름, 값, 응용 방법으로 구성된 배열입니다.

   파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

1. 파라미터 그룹을 RDS for Db2 DB 인스턴스에 연결합니다. 자세한 내용은 [Amazon RDS의 DB 인스턴스에 DB 파라미터 그룹 연결](USER_WorkingWithParamGroups.Associating.md) 섹션을 참조하세요.

## Db2 데이터베이스 서버에 연결
<a name="db2-connecting-to-server-ssl"></a>

Db2 데이터베이스 서버 연결 지침은 언어별로 다릅니다.

------
#### [ Java ]

**Java를 사용하여 Db2 데이터베이스 서버에 연결하려면**

1. JDBC 드라이버를 다운로드합니다. 자세한 내용은 IBM 지원 설명서의 [DB2 JDBC 드라이버 버전 및 다운로드](https://www.ibm.com/support/pages/db2-jdbc-driver-versions-and-downloads)를 참조하세요.

1. 다음 콘텐츠로 쉘 스크립트 파일을 만듭니다. 이 스크립트는 번들의 모든 인증서를 Java KeyStore에 추가합니다.
**중요**  
스크립트의 경로에 `keytool`이 존재하는지 확인하여 스크립트가 찾을 수 있도록 하세요. Db2 클라이언트를 사용하는 경우 `~sqlib/java/jdk64/jre/bin` 아래에서 `keytool`을 찾을 수 있습니다.

   ```
   #!/bin/bash
   PEM_FILE=$1
   PASSWORD=$2
   KEYSTORE=$3
   # number of certs in the PEM file
   CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
   for N in $(seq 0 $(($CERTS - 1))); do
       ALIAS="${PEM_FILE%.*}-$N"
       cat $PEM_FILE |
       awk "n==$N { print }; /END CERTIFICATE/ { n++ }" |
       keytool -noprompt -import -trustcacerts -alias $ALIAS -keystore $KEYSTORE -storepass $PASSWORD
   done
   ```

1. 쉘 스크립트를 실행하고 인증서 번들이 포함된 PEM 파일을 Java KeyStore로 가져오려면 다음 명령을 실행합니다. *shell\$1file\$1name.sh*를 쉘 스크립트 파일의 이름으로, *암호*를 Java KeyStore의 암호로 변경합니다.

   ```
    ./shell_file_name.sh global-bundle.pem password truststore.jks
   ```

1. Db2 서버에 연결하려면 다음 명령을 실행합니다. 예제의 다음 자리 표시자를 RDS for Db2 DB 인스턴스 정보로 변경합니다.
   + *ip\$1address* – DB 인스턴스 엔드포인트의 IP 주소입니다.
   + *port* – SSL 연결의 포트 번호입니다. SSL이 아닌 포트에 사용되는 번호를 제외한 모든 포트 번호가 될 수 있습니다.
   + *database\$1name* – DB 인스턴스에 있는 데이터베이스의 이름입니다.
   + *master\$1username* – DB 인스턴스의 마스터 사용자 이름입니다.
   + *master\$1password* – DB 인스턴스의 마스터 암호입니다.

   ```
   export trustStorePassword=MyPassword
   java -cp ~/dsdriver/jdbc_sqlj_driver/linuxamd64/db2jcc4.jar \
   com.ibm.db2.jcc.DB2Jcc -url \
   "jdbc:db2://ip_address:port/database_name:\
   sslConnection=true;sslTrustStoreLocation=\
   ~/truststore.jks;\
   sslTrustStorePassword=${trustStorePassword};\
   sslVersion=TLSv1.2;\
   encryptionAlgorithm=2;\
   securityMechanism=7;" \
   -user master_username -password master_password
   ```

------
#### [ Node.js ]

**Node.js를 사용하여 Db2 데이터베이스 서버에 연결하려면**

1. **node-ibm\$1db** 드라이버를 설치합니다. 자세한 내용은 IBM Db2 설명서의 [Linux 및 UNIX 시스템에 node-ibm\$1db 드라이버 설치](https://www.ibm.com/docs/en/db2/11.5?topic=nodejs-installing-node-db-driver-linux-unix-systems)를 참조하세요.

1. 다음 콘텐츠를 바탕으로 JavaScript 파일을 생성합니다. 예제의 다음 자리 표시자를 RDS for Db2 DB 인스턴스 정보로 변경합니다.
   + *ip\$1address* – DB 인스턴스 엔드포인트의 IP 주소입니다.
   + *master\$1username* – DB 인스턴스의 마스터 사용자 이름입니다.
   + *master\$1password* – DB 인스턴스의 마스터 암호입니다.
   + *database\$1name* – DB 인스턴스에 있는 데이터베이스의 이름입니다.
   + *port* – SSL 연결의 포트 번호입니다. SSL이 아닌 포트에 사용되는 번호를 제외한 모든 포트 번호가 될 수 있습니다.

   ```
   var ibmdb = require("ibm_db");
   const hostname = "ip_address";
   const username = "master_username";
   const password = "master_password";
   const database = "database_name";
   const port = "port";
   const certPath = "/root/qa-bundle.pem";
   ibmdb.open("DRIVER={DB2};DATABASE=" + database + ";HOSTNAME=" + hostname + ";UID=" + username + ";PWD=" + password + ";PORT=" + port + ";PROTOCOL=TCPIP;SECURITY=SSL;SSLServerCertificate=" + certPath + ";", function (err, conn){
    if (err) return console.log(err);
    conn.close(function () {
    console.log('done');
    });
   });
   ```

1. JavaScript 파일을 실행하려면 다음 명령을 실행합니다.

   ```
   node ssl-test.js
   ```

------
#### [ Python ]

**Python를 사용하여 Db2 데이터베이스 서버에 연결하려면**

1. 다음 콘텐츠가 포함된 Python 파일을 생성합니다. 예제의 다음 자리 표시자를 RDS for Db2 DB 인스턴스 정보로 변경합니다.
   + *port* – SSL 연결의 포트 번호입니다. SSL이 아닌 포트에 사용되는 번호를 제외한 모든 포트 번호가 될 수 있습니다.
   + *master\$1username* – DB 인스턴스의 마스터 사용자 이름입니다.
   + *master\$1password* – DB 인스턴스의 마스터 암호입니다.
   + *database\$1name* – DB 인스턴스에 있는 데이터베이스의 이름입니다.
   + *ip\$1address* – DB 인스턴스 엔드포인트의 IP 주소입니다.

   ```
   import click
   import ibm_db
   import sys
   
   port = port;
   master_user_id = "master_username" # Master id used to create your DB instance
   master_password = "master_password" # Master password used to create your DB instance
   db_name = "database_name" # If not given "db-name'
   vpc_customer_private_ip = "ip_address" # Hosts end points - Customer private IP Addressicert_path = "/root/ssl/global-bundle.pem" # cert path
   
   @click.command()        
   @click.option("--path", help="certificate path")
   def db2_connect(path):
   
       try:
           conn = ibm_db.connect(f"DATABASE={db_name};HOSTNAME={vpc_customer_private_ip};PORT={port};
               PROTOCOL=TCPIP;UID={master_user_id};PWD={master_password};SECURITY=ssl;SSLServerCertificate={path};", "", "")
           try:
               ibm_db.exec_immediate(conn, 'create table tablename (a int);')
               print("Query executed successfully")
           except Exception as e:
               print(e)
           finally:
               ibm_db.close(conn)
               sys.exit(1)
       except Exception as ex:
           print("Trying to connect...")
   
   if __name__ == "__main__":
       db2_connect()
   ```

1. 생성한 Python 파일을 실행하는 다음 쉘 스크립트를 생성합니다. *python\$1file\$1name.py*를 Python 스크립트 파일의 이름으로 변경합니다.

   ```
   #!/bin/bash
   PEM_FILE=$1
   # number of certs in the PEM file
   CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
   
   for N in $(seq 0 $(($CERTS - 1))); do
       ALIAS="${PEM_FILE%.*}-$N"
       cert=`cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }"`
       cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }" > $ALIAS.pem
       python3 <python_file_name.py> --path $ALIAS.pem
       output=`echo $?`
       if [ $output == 1 ]; then
           break
       fi
   done
   ```

1. 인증서 번들과 함께 PEM 파일을 가져오고 쉘 스크립트를 실행하려면 다음 명령을 실행합니다. *shell\$1file\$1name.sh*를 쉘 스크립트 파일 이름으로 변경합니다.

   ```
   ./shell_file_name.sh global-bundle.pem
   ```

------
#### [ Db2 CLP ]

**Db2 CLP를 사용하여 Db2 데이터베이스 서버에 연결하려면**

1. Db2 CLP를 사용하여 Db2 인스턴스에 연결하려면 [IBM Fix Central](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=Security+Systems&product=ibm/Tivoli/IBM+Global+Security+Kit&release=All&platform=All&function=fixId&fixids=8.0.*&source=fc)에서 다운로드할 수 있는 GSKit이 필요합니다. Db2 CLP를 사용하려면 IBM Support의 [Download initial Version 11.5 clients and drivers](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers)에서 다운로드할 수 있는 IBM Db2 클라이언트도 필요합니다.

1. 키스토어를 만듭니다.

   ```
   gsk8capicmd_64 -keydb -create -db "directory/keystore-filename" -pw "changeThisPassword" -type pkcs12 -stash
   ```

1. 인증서 번들을 키스토어로 가져옵니다.

   ```
   gsk8capicmd_64 -cert -import -file global-bundle.pem -target directory/keystore-filename> -target_stashed
   ```

1. Db2 인스턴스 구성을 업데이트합니다.

   ```
   db2 update dbm cfg using SSL_CLNT_KEYDB keystore-filename SSL_CLNT_STASH keystore stash file immediate
   ```

1. 노드와 데이터베이스를 카탈로그화합니다.

   ```
   db2 catalog tcpip node ssluse1 REMOTE endpoint SERVER ssl_svcename security ssl
   
   db2 catalog database testdb as ssltest at node ssluse1
   ```

1. 데이터베이스에 연결합니다.

   ```
   db2 connect to ssltest user username using password
   ```

------

# Amazon RDS for Db2에 대한 Kerberos 인증 사용
<a name="db2-kerberos"></a>

Amazon RDS for Db2 DB 인스턴스에 연결할 때 Kerberos 인증을 통해 사용자를 인증할 수 있습니다. 이 구성에서, DB 인스턴스는 AWS Directory Service for Microsoft Active Directory(이)라는 AWS Managed Microsoft AD과(와) 함께 작동합니다. AWS Managed Microsoft AD 디렉터리의 도메인 및 기타 정보를 RDS for Db2 DB 인스턴스에 추가합니다. 사용자가 신뢰하는 도메인에 조인한 RDS for Db2 DB 인스턴스를 사용하여 인증할 경우 Directory Service를 사용하여 만든 AWS Managed Microsoft AD 디렉터리에 인증 요청이 전달됩니다.

모든 자격 증명을 동일한 디렉터리에 보관하면 시간과 노력을 절약할 수 있습니다. 이 접근 방식의 경우, 여러 DB 인스턴스에 대한 자격 증명을 보관하고 관리할 수 있는 중앙 집중식 공간이 있습니다. 디렉터리를 사용하면 전체 보안 프로필을 향상할 수도 있습니다.

자체 온프레미스 Microsoft Active Directory에서 자격 증명에 액세스할 수도 있습니다. 이렇게 하려면 AWS Managed Microsoft AD 디렉터리가 온프레미스 Microsoft Active Directory를 신뢰하도록 신뢰 도메인 관계를 만듭니다. 그러면 사용자가 온프레미스 네트워크에서 워크로드에 액세스할 때와 동일한 Windows Single Sign-On(SSO) 환경을 사용하여 RDS for Db2 DB 인스턴스에 액세스할 수 있습니다.

자세한 내용은 *AWS Directory Service 관리 가이드*의 [Directory Service란 무엇입니까?](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)를 참조하세요.

Kerberos 인증에 대한 자세한 내용은 다음 주제를 참조하세요.

**주제**
+ [Amazon RDS for Db2 DB 인스턴스에 대한 Kerberos 인증 설정](db2-kerberos-setting-up.md)
+ [Kerberos 인증을 사용하여 Amazon RDS for Db2에 연결](db2-kerberos-connecting.md)

## 리전 및 버전 사용 가능 여부
<a name="db2-kerberos-setting-up.RegionVersionAvailability"></a>

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전 리전에 따라 다릅니다. Kerberos 인증을 사용하는 RDS for Db2의 버전 및 리전 가용성에 대한 자세한 내용은 [Amazon RDS에서 Kerberos 인증을 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md) 섹션을 참조하세요.

**참고**  
RDS for Db2 DB 인스턴스에서 사용 중단된 DB 인스턴스 클래스에는 Kerberos 인증이 지원되지 않습니다. 자세한 내용은 [Amazon RDS for Db2 인스턴스 클래스](Db2.Concepts.General.InstanceClasses.md) 섹션을 참조하세요.

## RDS for Db2 DB 인스턴스에 대한 Kerberos 인증 개요
<a name="db2-kerberos-setting-up-overview"></a>

RDS for Db2 DB 인스턴스에 대해 Kerberos 인증을 설정하려면 다음과 같은 일반적인 단계(나중에 자세히 설명함)를 완료하세요.

1. AWS Managed Microsoft AD를 사용하여 AWS Managed Microsoft AD 디렉터리를 생성합니다. AWS Management Console, AWS Command Line Interface(AWS CLI) 또는 Directory Service를 사용하여 디렉터리를 생성할 수 있습니다. 자세한 내용은 **AWS Directory Service 관리 가이드의 [AWS Managed Microsoft AD 디렉터리 생성](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html)을 참조하세요.

1. 관리형 IAM 정책 `AmazonRDSDirectoryServiceAccess`를 사용하는 AWS Identity and Access Management(IAM) 역할을 생성합니다. 이 IAM 역할을 사용하여 Amazon RDS에서 디렉터리를 호출할 수 있습니다.

   IAM 역할이 액세스를 허용하려면 AWS 계정의 올바른 AWS 리전에서 AWS Security Token Service(AWS STS) 엔드포인트를 활성화해야 합니다. AWS STS 엔드포인트는 모든 AWS 리전에서 기본적으로 활성화되어 있으며 추가 작업 없이 사용할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 리전에서 AWS STS 활성화 및 비활성화](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate)를 참조하세요.

1. AWS Management Console, AWS CLI 또는 RDS API에서 다음 방법 중 하나를 사용하여 RDS for Db2 DB 인스턴스를 생성하거나 수정합니다.
   + 콘솔, [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 명령 또는 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API 작업을 사용하여 새 RDS for Db2 DB 인스턴스를 생성합니다. 지침은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 콘솔, [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령 또는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 작업을 사용하여 기존 RDS for Db2 DB 인스턴스를 수정합니다. 지침은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.
   + 콘솔, [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 명령 또는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) API 작업을 사용하여 DB 스냅샷에서 RDS for Db2 DB 인스턴스를 복원합니다. 지침은 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 섹션을 참조하세요.
   + 콘솔, [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 명령 또는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) API 작업을 사용하여 RDS for Db2 DB 인스턴스를 특정 시점으로 복원합니다. 지침은 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

   디렉터리와 동일한 Amazon Virtual Private Cloud(VPC) 또는 다른 AWS 계정이나 VPC에 DB 인스턴스를 배치할 수 있습니다. RDS for Db2 DB 인스턴스를 생성하거나 수정할 때 다음 작업을 수행합니다.
   + 디렉터리를 만들 때 생성된 도메인 식별자(`d-*` 식별자)를 제공합니다.
   + 생성한 IAM 역할의 이름을 제공합니다.
   + DB 인스턴스의 보안 그룹이 디렉터리의 보안 그룹에서 인바운드 트래픽을 수신할 수 있는지 확인합니다.

1. Db2 클라이언트를 구성하고 다음 포트에 대해 클라이언트 호스트와 Directory Service 간에 트래픽이 흐를 수 있는지 확인합니다.
   + TCP/UDP 포트 53 – DNS
   + TCP 88 – Kerberos 인증
   + TCP 389 – LDAP
   + TCP 464 – Kerberos 인증

## 도메인에서 DB 인스턴스 관리
<a name="db2-kerberos-managing-domain"></a>

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 DB 인스턴스 및 DB 인스턴스와 Microsoft Active Directory과의 관계를 관리할 수 있습니다. 예를 들어, Active Directory를 연결하여 Kerberos 인증을 활성화할 수 있습니다. 또한 Active Directory 연결을 제거하여 Kerberos 인증을 비활성화할 수 있습니다. 또한 외부에서 인증할 DB 인스턴스를 한 Microsoft Active Directory에서 다른 디렉터리로 이동할 수 있습니다.

예를 들어, [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 명령을 실행하여 다음 작업을 수행할 수 있습니다.
+ `--domain` 옵션에 현재 멤버십의 디렉터리 ID를 지정하여 실패한 멤버십에 대한 Kerberos 인증 활성화를 다시 시도합니다.
+ `--domain` 옵션에 대해 `none`을 지정하여 DB 인스턴스에서 Kerberos 인증을 비활성화합니다.
+ `--domain` 옵션에 대한 새 도메인의 도메인 식별자를 지정하여 한 도메인에서 다른 도메인으로 DB 인스턴스를 이동합니다.

### 도메인 멤버십 이해
<a name="db2-kerberos-managing-domain.understanding"></a>

DB 인스턴스를 생성하거나 수정하고 나면 해당 인스턴스는 도메인의 멤버가 됩니다. 콘솔에서 또는 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) CLI 명령을 실행하여 도메인 멤버십의 상태를 확인할 수 있습니다. DB 인스턴스의 상태는 다음 중 한 가지가 될 수 있습니다.
+ `kerberos-enabled` – DB 인스턴스에 Kerberos 인증이 활성화되어 있습니다.
+ `enabling-kerberos` - AWS에서 이 DB 인스턴스에 대한 Kerberos 인증 활성화를 진행 중입니다.
+ `pending-enable-kerberos` – 이 DB 인스턴스에 대한 Kerberos 인증 활성화가 보류 중입니다.
+ `pending-maintenance-enable-kerberos` - AWS에서 예약된 다음 유지 관리 기간에 DB 인스턴스에 대한 Kerberos 인증을 활성화하려 합니다.
+ `pending-disable-kerberos` – 이 DB 인스턴스에 대한 Kerberos 인증 비활성화가 보류 중입니다.
+ `pending-maintenance-disable-kerberos` - AWS에서 예약된 다음 유지 관리 기간에 DB 인스턴스에 대한 Kerberos 인증을 비활성화하려 합니다.
+ `enable-kerberos-failed` - 구성 문제로 인해 AWS가 DB 인스턴스에 대해 Kerberos 인증을 활성화하지 못했습니다. DB 인스턴스 수정 명령을 다시 실행하기 전에 구성 문제를 해결하세요.
+ `disabling-kerberos` - AWS에서 이 DB 인스턴스에 대한 Kerberos 인증 비활성화를 진행 중입니다.

네트워크 연결 문제 또는 잘못된 IAM 역할로 인해 Kerberos 인증 활성화 요청이 실패할 수 있습니다. 경우에 따라 DB 인스턴스를 만들거나 수정할 때 Kerberos 인증을 사용하려고 하면 실패할 수 있습니다. 이런 경우 올바른 IAM 역할을 사용하고 있는지 확인한 다음 DB 인스턴스를 수정하여 도메인에 조인합니다.

# Amazon RDS for Db2 DB 인스턴스에 대한 Kerberos 인증 설정
<a name="db2-kerberos-setting-up"></a>

AWS Directory Service for Microsoft Active Directory(AWS Managed Microsoft AD)를 사용하여 RDS for Db2 DB 인스턴스에 대한 Kerberos 인증을 설정합니다. Kerberos 인증을 설정하려면 다음 단계를 따릅니다.

**Topics**
+ [1단계: AWS Managed Microsoft AD를 사용하여 디렉터리 생성](#db2-kerberos-setting-up.create-directory)
+ [2단계: 신뢰 생성](#db2-kerberos-setting-up-create-forest-trust)
+ [3단계: Amazon RDS에서 Directory Service에 액세스할 수 있도록 IAM 역할 만들기](#db2-kerberos-setting-up-create-iam-role)
+ [4단계: 사용자 생성 및 구성](#db2-kerberos-setting-up.create-users)
+ [5단계: AWS Managed Microsoft AD에서 RDS for Db2 관리자 그룹 만들기](#db2-kerberos-setting-up-vpc-peering)
+ [6단계: DB 파라미터 수정](#db2-kerberos-setting-up-modify-db-parameter)
+ [7단계: RDS for Db2 DB 인스턴스 만들기 또는 수정](#db2-kerberos-setting-up-create-modify)
+ [8단계: PowerShell에서 Active Directory 그룹 SID 검색](#db2-kerberos-setting-up-retrieve-ad-group-sid)
+ [9단계: RDS for Db2 DB 인스턴스에 GroupName 매핑에 대한 SID 추가](#db2-kerberos-setting-up-add-sid-group-mapping)
+ [10단계: Db2 클라이언트 구성](#db2-kerberos-setting-up-create-logins)

## 1단계: AWS Managed Microsoft AD를 사용하여 디렉터리 생성
<a name="db2-kerberos-setting-up.create-directory"></a>

Directory Service는 AWS 클라우드에서 완전관리형 Active Directory를 생성합니다. AWS Managed Microsoft AD 디렉터리를 생성할 때 Directory Service에서 두 개의 도메인 컨트롤러와 DNS 서버가 자동으로 생성됩니다. 디렉터리 서버는 VPC 내 다른 서브넷에서 생성됩니다. 이러한 중복은 장애가 발생해도 디렉터리에 액세스할 수 있도록 보장하는 데 도움이 됩니다.

 AWS Managed Microsoft AD 디렉터리를 생성하는 경우 Directory Service에서 다음 작업이 자동으로 수행됩니다.
+ VPC 내에서 Active Directory를 설정합니다.
+ 사용자 이름 `Admin`과 지정된 암호를 사용하여 디렉터리 관리자 계정을 생성합니다. 이 계정을 사용하여 디렉터리를 관리할 수 있습니다.
**중요**  
반드시 이 암호를 저장해야 합니다. Directory Service에서는 이 암호를 저장하지 않으므로 암호를 검색하거나 다시 설정할 수 없습니다.
+ 디렉터리 컨트롤러에 대한 보안 그룹을 만듭니다. 보안 그룹이 RDS for Db2 DB 인스턴스와의 통신을 허용해야 합니다.

AWS Directory Service for Microsoft Active Directory를 시작하면 AWS는 디렉터리의 모든 객체를 포함하는 조직 단위(OU)를 생성합니다. 디렉터리를 만들 때 입력한 NetBIOS 이름이 있는 이 OU는 도메인 루트에 있습니다. 도메인 루트는 AWS에서 소유하고 관리합니다.

`Admin` 디렉터리를 사용하여 생성한 AWS Managed Microsoft AD 계정은 OU의 가장 일반적인 관리 활동에 대한 권한이 있습니다.
+ 사용자를 생성, 업데이트 또는 삭제합니다.
+ 파일 또는 인쇄 서버와 같은 도메인에 리소스를 추가한 다음 해당 리소스에 대한 권한을 OU의 사용자에게 할당합니다.
+ 추가 OU 및 컨테이너 생성.
+ 권한 위임.
+ 삭제된 객체를 Active Directory 휴지통에서 복원합니다.
+ Directory Service에서 Windows PowerShell에 대한 Active Directory 및 도메인 이름 서비스(DNS) 모듈을 실행합니다.

또한 `Admin` 계정은 다음 도메인 차원 활동을 수행할 권한이 있습니다.
+ DNS 구성 관리(레코드, 영역 및 전달자 추가, 제거 또는 업데이트) 
+ DNS 이벤트 로그 보기 
+ 보안 이벤트 로그 보기 

**AWS Managed Microsoft AD으로 디렉터리를 생성하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/directoryservicev2/](https://console.aws.amazon.com/directoryservicev2/)에서 Directory Service 콘솔을 엽니다.

1. **디렉터리 설정**을 선택합니다.

1. **AWS Managed Microsoft AD**를 선택합니다. AWS Managed Microsoft AD는 현재 Amazon RDS에서 사용하도록 지원되는 유일한 옵션입니다.

1. ******다음******을 선택합니다.

1. ******디렉터리 정보 입력****** 페이지에서 다음 정보를 제공합니다.
   + **에디션** – 요구 사항에 맞는 에디션을 선택합니다.
   + **디렉터리 DNS 이름**** **– 디렉터리를 위한 정규화된 이름(예: `corp.example.com`)입니다.
   + **디렉터리 NetBIOS 이름**** **– 디렉터리의 선택적 짧은 이름(예: `CORP`)입니다.
   + **디렉터리 설명** – 디렉터리에 대한 선택적 설명입니다.
   + **관리자 암호**** **– 디렉터리 관리자의 암호입니다. 디렉터리 생성 프로세스에서는 사용자 이름 `Admin`과 이 암호를 사용하여 관리자 계정을 생성합니다.

     디렉터리 관리자 암호는 "admin"이라는 단어를 포함할 수 없습니다. 암호는 대소문자를 구분하며 길이가 8\$164자 사이여야 합니다. 또한 다음 네 범주 중 세 개에 해당하는 문자를 1자 이상 포함해야 합니다.
     + 소문자(a–z) 
     + 대문자(A–Z) 
     + 숫자(0–9) 
     + 영숫자 외의 특수 문자(\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/) 
     + 암호 확인 – 관리자 암호를 다시 입력합니다.
**중요**  
반드시 이 암호를 저장해야 합니다. Directory Service에서는 이 암호를 저장하지 않으며 암호를 검색하거나 재설정할 수 없습니다.

1. **Next**(다음)를 선택합니다.

1. **Choose VPC and subnets(VPC 및 서브넷 선택)** 페이지에 다음 정보를 입력합니다.
   + **VPC** – 디렉터리에 대한 VPC를 선택합니다. RDS for Db2 DB 인스턴스는 이와 동일한 VPC 또는 다른 VPC에서 생성할 수 있습니다.
   + **서브넷** – 디렉터리 서버에 대한 서브넷을 선택합니다. 두 서브넷이 서로 다른 가용 영역에 있어야 합니다.

1. **Next**(다음)를 선택합니다.

1. 디렉터리 정보를 검토합니다. 변경이 필요하면 **이전**을 선택하여 변경합니다. 정보가 올바르면 **Create directory(디렉터리 생성)**을 선택합니다.  
![\[Directory Service 콘솔에서 디렉터리를 생성하는 동안 나타나는 검토 및 생성 창.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/db2-create-ADS-directory.png)

디렉터리를 생성하는 데 몇 분 정도 걸립니다. 디렉터리가 성공적으로 생성되면 **상태** 값이 **활성**으로 변경됩니다.

디렉터리에 대한 정보를 보려면 **디렉터리 ID**에서 해당 디렉터리 ID를 선택합니다. **디렉터리 ID** 값을 적어 두십시오. RDS for Db2 DB 인스턴스를 생성하거나 수정할 때 이 값이 필요합니다.

![\[디렉터리 ID가 있는 Directory Service 콘솔의 디렉터리 세부 정보 섹션.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/db2-ADS-directory-details.png)


## 2단계: 신뢰 생성
<a name="db2-kerberos-setting-up-create-forest-trust"></a>

AWS Managed Microsoft AD만 사용하려는 경우 [3단계: Amazon RDS에서 Directory Service에 액세스할 수 있도록 IAM 역할 만들기](#db2-kerberos-setting-up-create-iam-role) 섹션으로 넘어갑니다.

자체관리형 Active Directory를 사용하여 Kerberos 인증을 활성화하려면 자체관리형 Active Directory 간에 포리스트 신뢰 관계를 만들어야 합니다. 포리스트 신뢰는 Microsoft AD와 자체관리형 Active Directory 및 이전 단계에서 만들어진 AWS Managed Microsoft AD 간의 신뢰 관계입니다. 두 Active Directory가 서로를 신뢰하는 양방향일 수도 있습니다. Directory Service를 사용하여 포리스트 신뢰를 설정하는 방법에 대한 자세한 내용은 *AWS Directory Service 관리 안내서*의 [When to create a trust relationship](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_setup_trust.html)을 참조하세요.

## 3단계: Amazon RDS에서 Directory Service에 액세스할 수 있도록 IAM 역할 만들기
<a name="db2-kerberos-setting-up-create-iam-role"></a>

사용자를 대신해서 Amazon RDS가 Directory Service를 호출하도록 하려면 AWS 계정에서 관리형 IAM 정책 `AmazonRDSDirectoryServiceAccess`를 사용하는 IAM 역할이 필요합니다. 이 역할을 사용하여 Amazon RDS에서 Directory Service를 호출할 수 있습니다.

AWS Management Console을 사용하여 DB 인스턴스를 생성할 때 콘솔 사용자에게 `iam:CreateRole` 권한이 있으면 콘솔에서 필요한 IAM 역할을 자동으로 생성합니다. 이 경우 역할 이름은 `rds-directoryservice-kerberos-access-role`입니다. 그렇지 않으면 IAM 역할을 수동으로 생성해야 합니다. 이 IAM 역할을 생성할 때 `Directory Service`를 선택하고 여기에 AWS 관리형 정책인 `AmazonRDSDirectoryServiceAccess`를 연결합니다.

서비스에 대한 IAM 역할 생성에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스에 대한 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)을 참조하세요.

**참고**  
RDS for Microsoft SQL Server에 대한 Windows 인증에 사용되는 IAM 역할은 RDS for Db2에 사용할 수 없습니다.

`AmazonRDSDirectoryServiceAccess` 관리형 정책인을 사용하는 대신 필요한 권한이 포함된 정책을 생성할 수 있습니다. 이 경우 IAM 역할에 다음과 같은 IAM 신뢰 정책이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

또한 역할에는 다음과 같은 IAM 역할 정책도 있어야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

## 4단계: 사용자 생성 및 구성
<a name="db2-kerberos-setting-up.create-users"></a>

Active Directory Users and Computers 도구를 사용하여 사용자를 만들 수 있습니다. Active Directory Domain Services 및 Active Directory Lightweight Directory Services 도구 중 하나입니다. 자세한 내용은 Microsoft 설명서의 [Active Directory 도메인에 사용자 및 컴퓨터 추가](https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/create-an-active-directory-server#add-users-and-computers-to-the-active-directory-domain)를 참조하세요. 이 경우 사용자는 도메인에 속하며 디렉터리에서 ID가 유지되는 개인 또는 기타 엔터티(예: 사용자의 컴퓨터)입니다.

Directory Service 디렉터리에서 사용자를 생성하려면 Directory Service 디렉터리의 멤버인 Windows 기반 Amazon EC2 인스턴스에 연결되어 있어야 합니다. 이와 동시에 사용자를 생성할 권한이 있는 사용자로 로그인한 상태이어야 합니다. 자세한 내용은 *AWS Directory Service관리 안내서*의 [사용자 생성](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_create_user.html)을 참조하십시오.

## 5단계: AWS Managed Microsoft AD에서 RDS for Db2 관리자 그룹 만들기
<a name="db2-kerberos-setting-up-vpc-peering"></a>

RDS for Db2는 마스터 사용자 또는 2명의 Amazon RDS 예약 사용자 `rdsdb` 및 `rdsadmin`에 대한 Kerberos 인증을 지원하지 않습니다. 대신 AWS Managed Microsoft AD에서 `masterdba`라는 새로운 그룹을 생성해야 합니다. 자세한 내용은 Microsoft 설명서의 [Active Directory에서 그룹 계정 생성](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/create-a-group-account-in-active-directory)을 참조하세요. 이 그룹에 추가하는 모든 사용자는 마스터 사용자 권한을 갖게 됩니다.

Kerberos 인증을 활성화하면 마스터 사용자는 `masterdba` 역할을 잃습니다. 따라서 Kerberos 인증을 비활성화하지 않으면 마스터 사용자는 인스턴스 로컬 사용자 그룹 멤버십에 액세스할 수 없습니다. 암호 로그인을 통해 마스터 사용자를 계속 사용하려면 AWS Managed Microsoft AD에서 마스터 사용자와 동일한 이름을 가진 사용자를 생성하세요. 그런 다음 사용자를 `masterdba` 그룹에 추가합니다.

## 6단계: DB 파라미터 수정
<a name="db2-kerberos-setting-up-modify-db-parameter"></a>

AWS Managed Microsoft AD만 사용하려는 경우 [7단계: RDS for Db2 DB 인스턴스 만들기 또는 수정7단계: DB 인스턴스 만들기 또는 수정](#db2-kerberos-setting-up-create-modify) 섹션으로 넘어갑니다.

자체관리형 Active Directory를 사용하여 Kerberos 인증을 활성화하려면 파라미터 그룹에서 `rds.active_directory_configuration` 파라미터를 `AWS_MANAGED_AD_WITH_TRUST`로 설정해야 합니다. 기본적으로 이 파라미터는 AWS Managed Microsoft AD만 사용하도록 `AWS_MANAGED_AD`로 설정됩니다.

DB 파라미터 수정에 대한 자세한 정보는 [파라미터 그룹의 파라미터를 수정합니다.](db2-supported-parameters.md#db2-modifying-parameter-group-parameters) 섹션을 참조하세요.

## 7단계: RDS for Db2 DB 인스턴스 만들기 또는 수정
<a name="db2-kerberos-setting-up-create-modify"></a>

디렉터리에서 사용할 RDS for Db2 DB 인스턴스를 생성하거나 수정합니다. AWS Management Console, AWS CLI 또는 RDS API를 사용하여 DB 인스턴스를 디렉터리에 연결할 수 있습니다. 이 작업을 다음 중 한 가지 방법으로 수행할 수 있습니다.
+ 콘솔, [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 명령 또는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API 작업을 사용하여 새 RDS for Db2 DB 인스턴스를 생성합니다. 지침은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ 콘솔, [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령 또는 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 작업을 사용하여 기존 RDS for Db2 DB 인스턴스를 수정합니다. 지침은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.
+ 콘솔, [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 명령 또는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) API 작업을 사용하여 DB 스냅샷에서 RDS for Db2 DB 인스턴스를 복원합니다. 지침은 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 섹션을 참조하세요.
+ 콘솔, [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 명령 또는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) API 작업을 사용하여 RDS for Db2 DB 인스턴스를 특정 시점으로 복원합니다. 지침은 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

Kerberos 인증은 VPC의 RDS for Db2 DB 인스턴스에 대해서만 지원됩니다. DB 인스턴스는 디렉터리와 동일한 VPC 또는 다른 VPC에 있을 수 있습니다. DB 인스턴스가 디렉터리와 통신할 수 있도록 DB 인스턴스는 디렉터리의 VPC 내 송수신을 허용하는 보안 그룹을 사용해야 합니다.

### 콘솔
<a name="db2-kerberos-setting-up-create-modify-console"></a>

콘솔을 사용하여 DB 인스턴스를 생성, 수정 또는 복원할 때 **데이터베이스 인증** 섹션에서 **암호 및 Kerberos 인증**을 선택합니다. 그런 다음 [**디렉터리 찾아보기(Browse Directory)**]를 선택합니다. 디렉터리를 선택하거나 **디렉터리 생성**을 선택하여 Directory Service를 사용합니다.

![\[암호 및 Kerberos 인증이 선택되어 있는 Amazon RDS 콘솔의 데이터베이스 인증 섹션.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/db2-database-authentication-directory.png)


### AWS CLI
<a name="db2-kerberos-setting-up-create-modify-cli"></a>

AWS CLI를 사용하는 경우 생성한 도메인 디렉터리를 DB 인스턴스에서 사용하려면 다음과 같은 파라미터가 필요합니다.
+ `--domain` 파라미터의 경우 디렉터리를 만들 때 생성된 도메인 식별자('`d-*`' 식별자)를 사용하세요.
+ `--domain-iam-role-name` 파라미터의 경우 귀하가 생성한, 관리형 IAM 정책 `AmazonRDSDirectoryServiceAccess`를 사용하는 역할을 사용하십시오.

다음 예제에서는 디렉터리를 사용하도록 DB 인스턴스를 수정합니다. 예제에서 다음 자리 표시자를 사용자의 값으로 바꿉니다.
+ *db\$1instance\$1name* – RDS for Db2 DB 인스턴스의 이름입니다.
+ *directory\$1id* – 생성한 AWS Directory Service for Microsoft Active Directory 디렉터리의 ID입니다.
+ *role\$1name* – 생성한 IAM 역할의 이름입니다.

```
aws rds modify-db-instance --db-instance-identifier db_instance_name --domain d-directory_id --domain-iam-role-name role_name 
```

**중요**  
DB 인스턴스를 수정하여 Kerberos 인증을 활성화하는 경우에는 변경 후 DB 인스턴스를 재부팅하세요.

## 8단계: PowerShell에서 Active Directory 그룹 SID 검색
<a name="db2-kerberos-setting-up-retrieve-ad-group-sid"></a>

보안 ID(SID)는 위탁자 또는 보안 그룹을 고유하게 식별하는 데 사용됩니다. Active Directory에서 보안 그룹 또는 계정이 만들어지면 Active Directory는 그룹에 SID를 할당합니다. Active Directory에서 AD 보안 그룹 SID를 검색하려면 Active Directory 도메인의 일부인 Windows 클라이언트 머신에서 `Get-ADGroup` cmdlet을 사용합니다. `Identity` 파라미터는 SID를 사용할 Active Directory 그룹 이름을 지정합니다.

다음 예제에서는 Active Directory 그룹 `adgroup1`의 SID를 반환합니다.

```
C:\Users\Admin> Get-ADGroup -Identity adgroup1 | select SID

             SID
-----------------------------------------------
S-1-5-21-3168537779-1985441202-1799118680-1612
```

데이터베이스와 관련된 모든 그룹에 대해 이 매핑을 생성해야 합니다.

## 9단계: RDS for Db2 DB 인스턴스에 GroupName 매핑에 대한 SID 추가
<a name="db2-kerberos-setting-up-add-sid-group-mapping"></a>

이전 단계에서 만든 GroupName 매핑에 대한 SID를 RDS for Db2 DB 인스턴스에 추가해야 합니다. 각 매핑에 대해 다음 저장 프로시저를 직접적으로 호출합니다. *SID* 및 *group\$1name*을 자체 정보로 바꿉니다.

```
db2 connect to rdsadmin
db2 "call rdsadmin.set_sid_group_mapping(?, 'SID','group_name')"
```

자세한 내용은 [rdsadmin.set\$1sid\$1group\$1mapping](db2-sp-granting-revoking-privileges.md#db2-sp-set-sid-group-mapping) 섹션을 참조하세요.

작업 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

## 10단계: Db2 클라이언트 구성
<a name="db2-kerberos-setting-up-create-logins"></a>

**Db2 클라이언트를 구성하려면**

1. 도메인을 가리키도록 **/etc/krb5.conf** 파일(또는 동등한 파일)을 생성합니다.
**참고**  
Windows 운영 체제의 경우 **C:\$1windows\$1krb5.ini** 파일을 생성합니다.

1. 클라이언트 호스트와 Directory Service 간에 트래픽이 흐를 수 있는지 확인합니다. Netcat과 같은 네트워크 유틸리티를 사용하여 다음 작업을 수행하세요.

   1. 포트 53의 DNS를 통한 트래픽을 확인합니다.

   1. 포트 53 및 Directory Service용 포트 88 및 464를 포함하는 Kerberos의 TCP/UDP를 통한 트래픽을 확인합니다.

1. 데이터베이스 포트를 통해 클라이언트 호스트와 DB 인스턴스 간에 트래픽이 흐를 수 있는지 확인합니다. `db2` 명령을 사용하여 데이터베이스에 연결하고 액세스할 수 있습니다.

다음 예제는 AWS Managed Microsoft AD에 대한 /etc/krb5.conf 파일 콘텐츠입니다.

```
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = example.com
admin_server = example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
```

# Kerberos 인증을 사용하여 Amazon RDS for Db2에 연결
<a name="db2-kerberos-connecting"></a>

다음 절차에 따라 Kerberos 인증을 통해 Amazon RDS for Db2 DB 인스턴스에 연결합니다.

**Kerberos 인증을 사용하여 RDS for Db2에 연결하려면**

1. 명령 프롬프트에서 다음 명령을 실행합니다. 다음 예제에서 *username*을 Microsoft Active Directory 사용자 이름으로 바꿉니다.

   ```
   kinit username
   ```

1. RDS for Db2 DB 인스턴스가 공개 액세스 가능한 VPC를 사용하는 경우 Amazon EC2 클라이언트의 `/etc/hosts` 파일에 DB 인스턴스 엔드포인트의 IP 주소를 추가합니다. 다음 예제에서는 IP 주소를 얻은 다음 `/etc/hosts` 파일에 추가합니다.

   ```
   % dig +short Db2-endpoint.AWS-Region.rds.amazonaws.com  
   ;; Truncated, retrying in TCP mode.
   ec2-34-210-197-118.AWS-Region.compute.amazonaws.com.
   34.210.197.118 
   
   % echo "34.210.197.118  Db2-endpoint.AWS-Region.rds.amazonaws.com" >> /etc/hosts
   ```

1. 다음 명령을 사용하여 Active Directory와 연결된 RDS for Db2 DB 인스턴스에 로그인합니다. *database\$1name*을 RDS for Db2 데이터베이스의 이름으로 바꿉니다.

   ```
   db2 connect to database_name
   ```

# Amazon RDS for Db2 DB 인스턴스 관리
<a name="db2-administering-db-instance"></a>

이 주제에서는 Amazon RDS for Db2 DB 인스턴스와 관련하여 수행하는 일반적인 관리 작업을 안내합니다. 일부 작업은 모든 Amazon RDS DB 인스턴스에서 동일합니다. RDS for Db2에만 해당되는 작업도 있습니다.

다음 작업은 모든 RDS 데이터베이스에 공통적으로 적용됩니다. 표준 SQL 클라이언트를 사용하여 RDS for Db2 데이터베이스에 연결하는 것과 같이 RDS for Db2 전용 작업도 있습니다.


| 작업 영역 | 관련 설명서 | 
| --- | --- | 
|  **인스턴스 클래스, 스토리지 및 PIOPS** 프로덕션 인스턴스를 생성하는 경우 Amazon RDS에서 인스턴스 클래스, 스토리지 유형 및 프로비저닝된 IOPS가 작동하는 방식을 알아봅니다.  |  [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) [Amazon RDS 스토리지 유형](CHAP_Storage.md#Concepts.Storage)  | 
|  **다중 AZ 배포** 프로덕션 DB 인스턴스에서는 다중 AZ 배포를 사용해야 합니다. 다중 AZ 배포는 DB 인스턴스를 위해 향상된 가용성, 데이터 내구성 및 내결함성을 제공합니다.  |  [Amazon RDS에 대한 다중 AZ 배포 구성 및 관리](Concepts.MultiAZ.md)  | 
|  ** Amazon VPC** AWS 계정에 기본 Virtual Private Cloud(VPC)가 있는 경우에는 DB 인스턴스가 기본 VPC 내부에 자동으로 생성됩니다. 계정에 기본 VPC가 없는데 VPC 안에 DB 인스턴스를 만들려면 VPC와 서브넷 그룹을 만든 후 DB 인스턴스를 만듭니다.  |  [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md)  | 
|  **보안 그룹** 기본적으로 DB 인스턴스는 액세스를 막는 방화벽을 사용합니다. 따라서 DB 인스턴스에 액세스하기 위한 알맞은 IP 주소와 네트워크 구성으로 보안 그룹을 생성해야 합니다.  |  [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md)  | 
|  **파라미터 그룹** RDS for Db2 DB 인스턴스에 `rds.ibm_customer_id` 및 `rds.ibm_site_id` 파라미터를 추가해야 하므로, DB 인스턴스를 생성하기 전에 파라미터 그룹을 생성해야 합니다. DB 인스턴스에 다른 특정 데이터베이스 파라미터가 필요한 경우 DB 인스턴스를 생성하기 전에 이 파라미터 그룹에 추가합니다.  |  [RDS for Db2 DB 인스턴스의 파라미터 그룹에 IBM ID 추가](db2-licensing.md#db2-licensing-options-byol-adding-ids) [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md)  | 
|  **옵션 그룹 수** DB 인스턴스에 특정 데이터베이스 옵션이 필요할 경우, 옵션 그룹을 생성한 후 DB 인스턴스를 생성합니다.  |  [Amazon RDS for Db2 DB 인스턴스 옵션](Db2.Options.md)  | 
|  **DB 인스턴스에 연결** 보안 그룹을 만들고 이를 DB 인스턴스에 연결한 후 IBM Db2 CLP와 같은 표준 SQL 클라이언트 애플리케이션을 사용하여 DB 인스턴스에 연결할 수 있습니다.  |  [DB 인스턴스에 연결](USER_ConnectToDb2DBInstance.md)  | 
|  **백업 및 복원** DB 인스턴스를 구성하여 자동 스토리지 백업을 생성하거나 수동 스토리지 스냅샷을 생성한 다음 백업 또는 스냅샷에서 인스턴스를 복원할 수 있습니다.  | [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) | 
|  **모니터링** IBM Db2 Data Management Console을 사용하여 RDS for Db2 DB 인스턴스를 모니터링할 수 있습니다. CloudWatch Amazon RDS 지표, 이벤트 및 향상된 모니터링 기능을 통해 RDS for Db2 DB 인스턴스를 모니터링할 수도 있습니다.  |  [IBM Db2 Data Management Console을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-ibm-data-management-console.md) [Amazon RDS 콘솔에서 지표 보기](USER_Monitoring.md) [Amazon RDS 이벤트 보기](USER_ListEvents.md) [Enhanced Monitoring을 사용하여 OS 지표 모니터링](USER_Monitoring.OS.md)  | 
|  **로그 파일** RDS for Db2 DB 인스턴스의 로그 파일에 액세스할 수 있습니다.  |  [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md)  | 

**Topics**
+ [Amazon RDS for Db2 DB 인스턴스에 대한 공통 시스템 작업 수행](db2-performing-common-system-tasks-db-instances.md)
+ [Amazon RDS for Db2 DB 인스턴스에 대한 공통 데이터베이스 작업 수행](db2-performing-common-database-tasks-db-instances.md)

# Amazon RDS for Db2 DB 인스턴스에 대한 공통 시스템 작업 수행
<a name="db2-performing-common-system-tasks-db-instances"></a>

Db2를 실행하는 Amazon RDS DB 인스턴스에서 시스템과 관련된 일반적인 데이터베이스 관리 작업을 수행할 수 있습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

RDS for Db2에서 권한을 부여 및 취소하고 원격 데이터베이스에 연결하는 방법에 대한 자세한 내용은 다음 주제를 참조하세요.

**주제**
+ [RDS for Db2에 대한 권한 부여 및 취소](db2-granting-revoking-privileges.md)
+ [원격 RDS for Db2 DB 인스턴스에 연결](db2-attaching-to-remote.md)

## 사용자 지정 데이터베이스 엔드포인트 생성
<a name="db2-creating-custom-database-endpoint"></a>

Amazon RDS for Db2로 마이그레이션할 때 사용자 지정 데이터베이스 엔드포인트 URL을 사용하여 애플리케이션 변경을 최소화할 수 있습니다. 예를 들어, `db2.example.com`을 현재 DNS 레코드로 사용하는 경우 Amazon Route 53에 추가할 수 있습니다. Route 53에서는 프라이빗 호스팅 영역을 사용하여 현재 DNS 데이터베이스 엔드포인트를 RDS for Db2 데이터베이스 엔드포인트에 매핑할 수 있습니다. Amazon RDS 데이터베이스 엔드포인트에 대해 사용자 지정 `A` 또는 `CNAME` 레코드를 추가하려면 **Amazon Route 53 개발자 안내서의 [Amazon Route 53을 사용한 도메인 등록 및 관리](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html)를 참조하세요.

**참고**  
도메인을 Route 53으로 이전할 수 없는 경우 DNS 공급자를 사용하여 RDS for Db2 데이터베이스 엔드포인트 URL에 대한 `CNAME` 레코드를 생성할 수 있습니다. DNS 공급자 설명서를 참조하세요.

# RDS for Db2에 대한 권한 부여 및 취소
<a name="db2-granting-revoking-privileges"></a>

사용자는 데이터베이스에 연결된 그룹의 멤버십을 통해 데이터베이스에 액세스할 수 있습니다.

다음 프로시저를 사용하여 데이터베이스에 대한 액세스를 제어할 수 있는 권한을 부여하거나 취소할 수 있습니다.

이 프로시저는 로컬 머신에서 IBM Db2 CLP를 실행하여 RDS for Db2 DB 인스턴스에 연결합니다. 로컬 머신에서 실행되는 RDS for Db2 DB 인스턴스에 연결하려면 TCPIP 노드와 데이터베이스를 카탈로그화해야 합니다. 자세한 내용은 [IBM Db2 CLP을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-clp-client.md) 섹션을 참조하세요.

**Topics**
+ [사용자에게 데이터베이스 액세스 권한 부여](#db2-granting-user-access)
+ [사용자의 암호 변경](#db2-changing-user-password)
+ [사용자에게 그룹 추가](#db2-adding-group-to-user)
+ [사용자로부터 그룹 제거](#db2-removing-groups-from-user)
+ [사용자 제거](#db2-removing-user)
+ [사용자 표시](#db2-listing-users-database)
+ [역할 생성](#db2-creating-role)
+ [역할 부여](#db2-granting-role)
+ [역할 취소](#db2-revoking-role)
+ [역할 삭제](#db2-dropping-role)
+ [데이터베이스 권한 부여](#db2-granting-dbadmin-auth)
+ [데이터베이스 권한 취소](#db2-revoking-dbadmin-auth)

## 사용자에게 데이터베이스 액세스 권한 부여
<a name="db2-granting-user-access"></a>

**사용자에게 데이터베이스 액세스 권한을 부여하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

   다음 예제와 비슷한 출력이 생성됩니다.

   ```
   Database Connection Information
       
   Database server        = DB2/LINUXX8664 11.5.8.0
   SQL authorization ID   = ADMIN
   Local database alias   = RDSADMIN
   ```

1. `rdsadmin.add_user`를 호출하여 권한 부여 목록에 사용자를 추가합니다. 자세한 내용은 [rdsadmin.add\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-add-user) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.add_user(
       'username',
       'password',
       'group_name,group_name')"
   ```

1. (선택 사항) `rdsadmin.add_groups`를 호출하여 사용자에게 그룹을 더 추가합니다. 자세한 내용은 [rdsadmin.add\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.add_groups(
       'username',
       'group_name,group_name')"
   ```

1. 사용자가 사용할 수 있는 권한을 확인합니다. 다음 예제에서 *rds\$1database\$1alias*, *master\$1user*, *master\$1password*를 사용자 자체 정보로 바꿉니다. *username*도 사용자의 사용자 이름으로 대체합니다.

   ```
   db2 terminate
   db2 connect to rds_database_alias user master_user using master_password
   db2 "SELECT SUBSTR(AUTHORITY,1,20) AUTHORITY, D_USER, D_GROUP, D_PUBLIC
          FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('username', 'U') ) AS T
          ORDER BY AUTHORITY"
   ```

   다음 예제와 비슷한 출력이 생성됩니다.

   ```
   AUTHORITY            D_USER D_GROUP D_PUBLIC
   -------------------- ------ ------- --------
   ACCESSCTRL           N      N       N
   BINDADD              N      N       N
   CONNECT              N      N       N
   CREATETAB            N      N       N
   CREATE_EXTERNAL_ROUT N      N       N
   CREATE_NOT_FENCED_RO N      N       N
   CREATE_SECURE_OBJECT N      N       N
   DATAACCESS           N      N       N
   DBADM                N      N       N
   EXPLAIN              N      N       N
   IMPLICIT_SCHEMA      N      N       N
   LOAD                 N      N       N
   QUIESCE_CONNECT      N      N       N
   SECADM               N      N       N
   SQLADM               N      N       N
   SYSADM               *      N       *
   SYSCTRL              *      N       *
   SYSMAINT             *      N       *
   SYSMON               *      N       *
   WLMADM               N      N       N
   ```

1. 사용자를 추가한 그룹에 RDS for Db2 역할 `ROLE_NULLID_PACKAGES`, `ROLE_TABLESPACES`, `ROLE_PROCEDURES`를 부여합니다. 자세한 내용은 [Amazon RDS for Db2 기본 역할](db2-default-roles.md) 섹션을 참조하세요.
**참고**  
`RESTRICTIVE` 모드에서 RDS for Db2 DB 인스턴스를 생성합니다. 따라서 RDS for Db2 역할 `ROLE_NULLID_PACKAGES`, `ROLE_TABLESPACES`, `ROLE_PROCEDURES`는 IBM Db2 CLP 및 Dynamic SQL에 대해 `NULLID` 패키지에서 실행 권한을 부여합니다. 또한 이러한 역할은 테이블스페이스에 대한 사용자 권한을 부여합니다.

   1. Db2 데이터베이스에 연결합니다. 다음 예제에서 *database\$1name*, *master\$1user*, *master\$1password*를 사용자 자체 정보로 바꿉니다.

      ```
      db2 connect to database_name user master_user using master_password
      ```

   1. 그룹에 `ROLE_NULLED_PACKAGES` 역할을 부여합니다. 다음 예제에서 *group\$1name*을 역할을 추가하려는 그룹의 이름으로 바꿉니다.

      ```
      db2 "grant role ROLE_NULLID_PACKAGES to group group_name"
      ```

   1. 동일한 그룹에 `ROLE_TABLESPACES` 역할을 부여합니다. 다음 예제에서 *group\$1name*을 역할을 추가하려는 그룹의 이름으로 바꿉니다.

      ```
      db2 "grant role ROLE_TABLESPACES to group group_name"
      ```

   1. 동일한 그룹에 `ROLE_PROCEDURES` 역할을 부여합니다. 다음 예제에서 *group\$1name*을 역할을 추가하려는 그룹의 이름으로 바꿉니다.

      ```
      db2 "grant role ROLE_PROCEDURES to group group_name"
      ```

1. 사용자를 추가한 그룹에 `connect`, `bindadd`, `createtab`, `IMPLICIT_SCHEMA` 권한을 부여합니다. 다음 예제에서 *group\$1name*을 사용자를 추가한 두 번째 그룹의 이름으로 대체합니다.

   ```
   db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public"
   db2 "grant connect, bindadd, createtab, implicit_schema on database to group group_name"
   ```

1. 사용자를 추가한 각 추가 그룹에 대해 4\$16단계를 반복합니다.

1. 사용자로 연결하고, 표를 만들고, 표에 값을 넣고, 표에서 데이터를 반환하여 사용자의 액세스 권한을 테스트합니다. 다음 예제에서 *rds\$1database\$1alias*, *username*, *password*를 데이터베이스 이름과 사용자의 사용자 이름 및 암호로 바꿉니다.

   ```
   db2 connect to rds_database_alias user username using password
   db2 "create table t1(c1 int not null)"
   db2 "insert into t1 values (1),(2),(3),(4)"
   db2 "select * from t1"
   ```

## 사용자의 암호 변경
<a name="db2-changing-user-password"></a>

**사용자의 암호를 변경하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. `rdsadmin.change_password`를 호출하여 암호를 변경합니다. 자세한 내용은 [rdsadmin.change\$1password](db2-sp-granting-revoking-privileges.md#db2-sp-change-password) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.change_password(
       'username',
       'new_password')"
   ```

## 사용자에게 그룹 추가
<a name="db2-adding-group-to-user"></a>

**사용자에게 그룹을 추가하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. `rdsadmin.add_groups`를 호출하여 사용자에게 그룹을 추가합니다. 자세한 내용은 [rdsadmin.add\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.add_groups(
       'username',
       'group_name,group_name')"
   ```

## 사용자로부터 그룹 제거
<a name="db2-removing-groups-from-user"></a>

**사용자로부터 그룹을 제거하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. `rdsadmin.remove_groups`를 호출하여 그룹을 제거합니다. 자세한 내용은 [rdsadmin.remove\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-remove-groups) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.remove_groups(
       'username',
       'group_name,group_name')"
   ```

## 사용자 제거
<a name="db2-removing-user"></a>

**권한 부여 목록에서 사용자를 제거하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. `rdsadmin.remove_user`를 호출하여 권한 부여 목록에서 사용자를 제거합니다. 자세한 내용은 [rdsadmin.remove\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-remove-user) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.remove_user('username')"
   ```

## 사용자 표시
<a name="db2-listing-users-database"></a>

권한 부여 목록에 사용자를 표시하려면 `rdsadmin.list_users` 저장 프로시저를 호출하세요. 자세한 내용은 [rdsadmin.list\$1users](db2-sp-granting-revoking-privileges.md#db2-sp-list-users) 섹션을 참조하세요.

```
db2 "call rdsadmin.list_users()"
```

## 역할 생성
<a name="db2-creating-role"></a>

[rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role) 저장 프로시저를 사용하여 역할을 생성할 수 있습니다.

**역할을 생성하려면**

1. `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 콘텐츠를 출력하도록 Db2를 설정합니다.

   ```
   db2 set serveroutput on 
   ```

1. 역할을 생성합니다. 자세한 내용은 [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.create_role(
       'database_name',
       'role_name')"
   ```

1. 콘텐츠를 출력하지 않도록 Db2를 설정합니다.

   ```
   db2 set serveroutput off
   ```

## 역할 부여
<a name="db2-granting-role"></a>

[rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role) 저장 프로시저를 사용하여 역할, 사용자 또는 그룹에 역할을 할당할 수 있습니다.

**역할을 할당하려면**

1. `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 콘텐츠를 출력하도록 Db2를 설정합니다.

   ```
   db2 set serveroutput on 
   ```

1. 역할을 할당합니다. 자세한 내용은 [rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.grant_role(
       'database_name',
       'role_name',
       'grantee',
       'admin_option')"
   ```

1. 콘텐츠를 출력하지 않도록 Db2를 설정합니다.

   ```
   db2 set serveroutput off
   ```

## 역할 취소
<a name="db2-revoking-role"></a>

[rdsadmin.revoke\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role) 저장 프로시저를 사용하여 역할, 사용자 또는 그룹에서 역할을 취소할 수 있습니다.

**역할을 취소하려면 다음과 같이 하세요.**

1. `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 역할을 취소합니다. 자세한 내용은 [rdsadmin.revoke\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.revoke_role(
       ?,
       'database_name',
       'role_name',
       'grantee')"
   ```

## 역할 삭제
<a name="db2-dropping-role"></a>

[rdsadmin.drop\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role) 저장 프로시저를 사용하여 역할을 삭제할 수 있습니다.

**역할을 삭제하는 방법**

1. `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 역할을 삭제합니다. 자세한 내용은 [rdsadmin.drop\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.drop_role(
       ?,
       'database_name',
       'role_name')"
   ```

## 데이터베이스 권한 부여
<a name="db2-granting-dbadmin-auth"></a>

`DBADM` 권한을 가진 마스터 사용자는 역할, 사용자 또는 그룹에 `DBADM`, `ACCESSCTRL` 또는 `DATAACCESS` 권한을 부여할 수 있습니다.

**데이터베이스에 권한을 부여하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. `rdsadmin.dbadm_grant`를 호출하여 사용자에게 액세스 권한을 부여합니다. 자세한 내용은 [rdsadmin.dbadm\$1grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.dbadm_grant(
       ?,
       'database_name,
       'authorization',
       'grantee')"
   ```

**사용 사례**

다음 절차는 역할 생성, 역할에 `DBADM` 권한 부여, 사용자에게 역할 할당 및 그룹에 역할 할당 과정을 안내합니다.

****

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. `TESTDB` 데이터베이스에 대해 `PROD_ROLE` 역할을 생성합니다. 자세한 내용은 [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.create_role(
       'TESTDB',
       'PROD_ROLE')"
   ```

1. `PROD_USER` 사용자에게 역할을 할당합니다. `PROD_USER`에 역할을 할당할 수 있는 관리자 권한이 부여됩니다. 자세한 내용은 [rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.grant_role(
       ?,
       'TESTDB',
       'PROD_ROLE',
       'USER PROD_USER',
       'Y')"
   ```

1. (선택 사항) 추가 권한을 제공합니다. 다음 예제에서는 `FUNDPROD` 데이터베이스에 대해 `PROD_ROLE` 역할에 `DBADM` 권한을 부여합니다. 자세한 내용은 [rdsadmin.dbadm\$1grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.dbadm_grant(
       ?,
       'FUNDPROD',
       'DBADM',
       'ROLE PROD_ROLE')"
   ```

1. 세션을 종료합니다.

   ```
   db2 terminate
   ```

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `TESTDB` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to TESTDB user master_username using master_password
   ```

1. 역할에 더 많은 권한을 추가합니다.

   ```
   db2 "grant connect, implicit_schema on database to role PROD_ROLE"
   ```

1. 그룹에 `PROD_ROLE` 역할을 부여합니다.

   ```
   db2 "grant role PROD_ROLE to group PRODGRP"
   ```

`PRODGRP` 그룹에 속한 사용자는 이제 `TESTDB` 데이터베이스 연결, 테이블 생성 또는 스키마 생성과 같은 작업을 수행할 수 있습니다.

## 데이터베이스 권한 취소
<a name="db2-revoking-dbadmin-auth"></a>

`DBADM` 권한을 가진 마스터 사용자는 역할, 사용자 또는 그룹의 `DBADM`, `ACCESSCTRL` 또는 `DATAACCESS` 권한을 취소할 수 있습니다.

**데이터베이스 권한을 취소하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. `rdsadmin.dbadm_revoke`를 호출하여 사용자 액세스 권한을 취소합니다. 자세한 내용은 [rdsadmin.dbadm\$1revoke](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-revoke) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.dbadm_revoke(
       ?,
       'database_name,
       'authorization',
       'grantee')"
   ```

# 원격 RDS for Db2 DB 인스턴스에 연결
<a name="db2-attaching-to-remote"></a>

다음 단계에 따라 원격 RDS for Db2 DB 인스턴스에 연결하고 `get snapshot` 작업을 실행합니다.

**원격 RDS for Db2 DB 인스턴스에 연결하려면**

1. 클라이언트 측 IBM Db2 CLP 세션을 실행합니다. RDS for Db2 DB 인스턴스 및 데이터베이스 카탈로그화에 대한 자세한 내용은 [IBM Db2 CLP을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-clp-client.md) 섹션을 참조하세요. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 기록해 둡니다.

1. RDS for Db2 DB 인스턴스에 연결합니다. 다음 예제에서 *node\$1name*, *master\$1username*, *master\$1password*를 카탈로그화한 TCPIP 노드 이름과 RDS for Db2 DB 인스턴스의 마스터 사용자 이름 및 마스터 암호로 대체합니다.

   ```
   db2 attach to node_name user master_username using master_password
   ```

원격 RDS for Db2 DB 인스턴스에 연결한 후 다음 명령 및 기타 `get snapshot` 명령을 실행할 수 있습니다. 자세한 내용은 IBM Db2 설명서의 [GET SNAPSHOT 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-get-snapshot)을 참조하세요.

```
db2 list applications
db2 get snapshot for all databases
db2 get snapshot for database manager
db2 get snapshot for all applications
```

# Amazon RDS for Db2 DB 인스턴스에 대한 공통 데이터베이스 작업 수행
<a name="db2-performing-common-database-tasks-db-instances"></a>

Amazon RDS for Db2 DB 인스턴스에서 데이터베이스와 관련된 일반적인 DBA 작업을 수행할 수 있습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 마스터 사용자는 `SYSADM`, `SYSMAINT` 또는 `SYSCTRL` 권한을 요구하는 명령이나 유틸리티를 실행할 수 없습니다.

버퍼 풀, 데이터베이스 및 테이블스페이스의 일반적인 작업에 대한 자세한 내용은 다음 주제를 참조하세요.

**주제**
+ [버퍼 풀의 일반적인 작업](db2-managing-buffer-pools.md)
+ [공통 데이터베이스 작업](db2-managing-databases.md)
+ [테이블스페이스의 일반적인 작업](db2-managing-tablespaces.md)

# 버퍼 풀의 일반적인 작업
<a name="db2-managing-buffer-pools"></a>

RDS for Db2 데이터베이스의 버퍼 풀을 생성, 변경 또는 삭제할 수 있습니다. 버퍼 풀을 생성, 변경 또는 삭제하려면 마스터 사용자가 사용할 수 없는 더 높은 수준의 `SYSADM` 또는 `SYSCTRL` 권한이 필요합니다. 대신 Amazon RDS 저장 프로시저를 사용하세요.

버퍼 풀을 플러시할 수도 있습니다.

**Topics**
+ [버퍼 풀 생성](#db2-creating-buffer-pool)
+ [버퍼 풀 변경](#db2-altering-buffer-pool)
+ [버퍼 풀 삭제](#db2-dropping-buffer-pool)
+ [버퍼 풀 플러시](#db2-flushing-buffer-pools)

## 버퍼 풀 생성
<a name="db2-creating-buffer-pool"></a>

RDS for Db2 데이터베이스용 버퍼 풀을 만들려면 `rdsadmin.create_bufferpool` 저장 프로시저를 호출합니다. 자세한 내용은 IBM Db2 설명서의 [CREATE BUFFERPOOL 문](https://www.ibm.com/docs/en/db2/11.5?topic=statements-create-bufferpool)을 참조하세요.

**버퍼 풀을 생성하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.create_bufferpool`을 호출하여 버퍼 풀을 생성합니다. 자세한 내용은 [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.create_bufferpool(
       'database_name', 
       'buffer_pool_name', 
       buffer_pool_size, 
       'immediate', 
       'automatic', 
       page_size, 
       number_block_pages, 
       block_size)"
   ```

## 버퍼 풀 변경
<a name="db2-altering-buffer-pool"></a>

RDS for Db2 데이터베이스용 버퍼 풀을 변경하려면 `rdsadmin.alter_bufferpool` 저장 프로시저를 호출합니다. 자세한 내용은 IBM Db2 설명서의 [ALTER BUFFERPOOL 문](https://www.ibm.com/docs/en/db2/11.5?topic=statements-alter-bufferpool)을 참조하세요.

**버퍼 풀을 변경하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.alter_bufferpool`을 호출하여 버퍼 풀을 변경합니다. 자세한 내용은 [rdsadmin.alter\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-alter-buffer-pool) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.alter_bufferpool(
       'database_name', 
       'buffer_pool_name', 
       buffer_pool_size, 
       'immediate', 
       'automatic', 
       change_number_blocks, 
       number_block_pages, 
       block_size)"
   ```

## 버퍼 풀 삭제
<a name="db2-dropping-buffer-pool"></a>

RDS for Db2 데이터베이스용 버퍼 풀을 삭제하려면 `rdsadmin.drop_bufferpool` 저장 프로시저를 호출합니다. 자세한 내용은 IBM Db2 설명서의 [버퍼 풀 삭제](https://www.ibm.com/docs/en/db2/11.5?topic=pools-dropping-buffer)를 참조하세요.

**중요**  
삭제하려는 버퍼 풀에 테이블스페이스가 할당되어 있지 않은지 확인합니다.

**버퍼 풀을 삭제하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.drop_bufferpool`을 호출하여 버퍼 풀을 삭제합니다. 자세한 내용은 [rdsadmin.drop\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-drop-buffer-pool) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.drop_bufferpool(
       'database_name', 
       'buffer_pool_name')"
   ```

## 버퍼 풀 플러시
<a name="db2-flushing-buffer-pools"></a>

RDS for Db2가 메모리의 페이지를 스토리지에 기록하도록 버퍼 풀을 플러시하여 체크포인트를 강제 적용할 수 있습니다.

**참고**  
버퍼 풀을 플러시할 필요는 없습니다. Db2는 트랜잭션을 커밋하기 전에 로그를 동기적으로 기록합니다. 더티 페이지가 여전히 버퍼 풀에 있을 수 있지만, Db2는 이러한 페이지를 스토리지에 비동기적으로 작성합니다. 시스템이 예기치 않게 종료되더라도 데이터베이스를 다시 시작하면 Db2가 자동으로 충돌 복구를 수행합니다. 충돌 복구 중에 Db2는 커밋된 변경 내용을 데이터베이스에 쓰거나 커밋되지 않은 트랜잭션의 변경 내용을 롤백합니다.

**버퍼 풀을 플러시하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 Db2 데이터베이스에 연결합니다. 다음 예제에서 *rds\$1database\$1alias*, *master\$1username*, *master\$1password*를 사용자 자체 정보로 바꿉니다.

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 버퍼 풀을 플러시합니다.

   ```
   db2 flush bufferpools all
   ```

# 공통 데이터베이스 작업
<a name="db2-managing-databases"></a>

RDS for Db2 DB 인스턴스에서 데이터베이스를 생성, 삭제 또는 복원할 수 있습니다. 데이터베이스를 생성, 삭제 또는 복원하려면 더 높은 수준의 `SYSADM` 권한이 필요하며, 이 권한은 마스터 사용자가 사용할 수 없습니다. 대신 Amazon RDS 저장 프로시저를 사용하세요.

또한 모니터링, 유지 관리, 데이터베이스 정보 수집과 같은 일반적인 관리 작업을 수행할 수 있습니다.

**Topics**
+ [데이터베이스 생성](#db2-creating-database)
+ [데이터베이스 설정 구성](#db2-configuring-database)
+ [데이터베이스 파라미터 수정](#db2-modifying-db-parameters)
+ [로그 보존 구성](#db2-configuring-log-retention)
+ [로그 정보 나열](#db2-listing-log-information)
+ [세분화된 액세스 제어(FGAC) 사용](#db2-using-fine-grained-access-control)
+ [데이터베이스 비활성화](#db2-deactivating-database)
+ [데이터베이스 활성화](#db2-activating-database)
+ [데이터베이스 재활성화](#db2-reactivating-database)
+ [데이터베이스 삭제](#db2-dropping-database)
+ [데이터베이스 백업](#db2-backing-up-database)
+ [Amazon S3에 아카이브 로그 복사](#db2-copying-archive-logs-to-s3)
+ [데이터베이스 복원](#db2-restoring-database)
+ [데이터베이스 나열](#db2-listing-databases)
+ [데이터베이스에 대한 정보 수집](#db2-collecting-info-db)
+ [데이터베이스의 애플리케이션 강제 종료](#db2-forcing-application-off-db)
+ [성능 보고서 생성](#db2-generating-performance-reports)

## 데이터베이스 생성
<a name="db2-creating-database"></a>

RDS for Db2 DB 인스턴스에서 데이터베이스를 만들려면 `rdsadmin.create_database` 저장 프로시저를 직접 호출합니다. 자세한 내용은 IBM Db2 설명서의 [CREATE DATABASE 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-create-database)을 참조하세요.

**참고**  
`db2_compatibility_vector` 파라미터를 수정하려는 경우 데이터베이스를 만들기 전에 파라미터를 수정합니다. 자세한 내용은 [db2\$1compatibility\$1vector 파라미터 설정](db2-known-issues-limitations.md#db2-known-issues-limitations-db2-compatibility-vector) 섹션을 참조하세요.

**데이터베이스를 생성하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.create_database`를 직접 호출하여 데이터베이스를 생성합니다. 자세한 내용은 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.create_database(
       'database_name',
       'database_page_size',
       'database_code_set',
       'database_territory',
       'database_collation',
       'database_autoconfigure_str',
       'database_non-restrictive')"
   ```

1. (선택 사항) 만들려는 각 데이터베이스에 대해 `rdsadmin.create_database`를 직접 호출하여 추가 데이터베이스를 만듭니다. 각 Db2 DB 인스턴스에는 최대 50개의 데이터베이스를 포함할 수 있습니다. 자세한 내용은 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.create_database('database_name')"
   ```

1. (선택 사항) 다음 방법 중 하나를 사용하여 데이터베이스가 만들어졌는지 확인합니다.
   + 를 호출합니다`rdsadmin.list_databases` 자세한 내용은 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 섹션을 참조하세요.
   + 다음 SQL 명령을 실행합니다.

     ```
     db2 "select varchar(r.task_type,25) as task_type, r.database_name, 
         varchar(r.lifecycle,15) as lifecycle, r.created_at, r.database_name,
         varchar(bson_to_json(task_input_params),256) as input_params, 
         varchar(r.task_output,1024) as task_output 
         from table(rdsadmin.get_task_status(null,null,'create_database')) 
         as r order by created_at desc"
     ```

## 데이터베이스 설정 구성
<a name="db2-configuring-database"></a>

RDS for Db2 DB 인스턴스에서 데이터베이스용 설정을 구성하려면 `rdsadmin.set_configuration` 저장 프로시저를 직접 호출합니다. 예를 들어, 복원 작업 중에 생성할 버퍼나 버퍼 조작기 개수를 구성할 수 있습니다.

**데이터베이스 설정을 구성하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. (선택 사항) `rdsadmin.show_configuration`을 직접 호출하여 현재 구성 설정을 확인합니다. 자세한 내용은 [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.show_configuration('name')"
   ```

1. `rdsadmin.set_configuration`을 직접 호출하여 데이터베이스 설정을 구성합니다. 자세한 내용은 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.set_configuration(
       'name',  
       'value')"
   ```

## 데이터베이스 파라미터 수정
<a name="db2-modifying-db-parameters"></a>

Amazon RDS for Db2는 데이터베이스 관리자 구성 파라미터, 레지스트리 변수, 데이터베이스 구성 파라미터 등 세 가지 유형의 파라미터를 사용합니다. 처음 두 유형은 파라미터 그룹을 통해 업데이트하고 마지막 유형은 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 저장 프로시저를 통해 업데이트할 수 있습니다.

**참고**  
기존 파라미터 값만 수정할 수 있습니다. RDS for Db2는 지원하지 않는 파라미터 새로 추가할 수 없습니다.

이러한 파라미터 및 파라미터 값 수정 방법에 대한 자세한 내용은 [Amazon RDS for Db2 파라미터](db2-supported-parameters.md) 섹션을 참조하세요.

## 로그 보존 구성
<a name="db2-configuring-log-retention"></a>

Amazon RDS에서 RDS for Db2 데이터베이스용 로그 파일을 보관하는 기간을 구성하려면 `rdsadmin.set_archive_log_retention` 저장 프로시저를 직접 호출합니다.

**데이터베이스의 로그 보존을 구성하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. (선택 사항) `rdsadmin.show_archive_log_retention`을 직접 호출하여 현재 로그 보존 구성을 확인합니다. 자세한 내용은 [rdsadmin.show\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-show-archive-log-retention) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.show_archive_log_retention(
       ?,
       'database_name')"
   ```

1. `rdsadmin.set_archive_log_retention`을 직접 호출하여 데이터베이스의 로그 보존을 구성합니다. 자세한 내용은 [rdsadmin.set\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-set-archive-log-retention) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.set_archive_log_retention(
       ?,            
       'database_name',  
       'archive_log_retention_hours')"
   ```

## 로그 정보 나열
<a name="db2-listing-log-information"></a>

사용된 총 스토리지 크기와 같은 세부 정보를 포함하여 아카이브 로그 파일에 대한 세부 정보를 나열하려면 `rdsadmin.list_archive_log_information` 저장 프로시저를 호출합니다.

**데이터베이스에 대한 로그 정보를 나열하려면 다음과 같이 합니다.**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.list_archive_log_information`을 호출하여 로그 파일 정보 목록을 반환합니다. 자세한 내용은 [rdsadmin.list\$1archive\$1log\$1information](db2-sp-managing-databases.md#db2-sp-list-archive-log-information) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.list_archive_log_information(
       ?,            
       'database_name')"
   ```

## 세분화된 액세스 제어(FGAC) 사용
<a name="db2-using-fine-grained-access-control"></a>

세분화된 액세스 제어 명령을 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 있는 테이블 데이터에 대한 액세스를 제어하려면 `rdsadmin.fgac_command` 저장 프로시저를 직접적으로 호출합니다. FGAC를 사용하여 사용자 역할 또는 데이터 속성에 따라 데이터에 대한 액세스를 제한할 수 있습니다. 예를 들어 데이터 유형에 따라 환자 의료 데이터 또는 특정 의료 서비스 공급자에 대한 액세스를 제한할 수 있습니다.

**세분화된 액세스 제어를 사용하여 데이터베이스의 테이블 데이터에 대한 액세스 제어**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.fgac_command`를 직접적으로 호출하여 다양한 세분화된 액세스 제어 명령을 실행합니다. 자세한 내용은 [rdsadmin.fgac\$1command파라미터](db2-sp-managing-databases.md#db2-sp-fgac-command) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.fgac_command(     
       ?,
       'database_name',
       'fgac_command')"
   ```

## 데이터베이스 비활성화
<a name="db2-deactivating-database"></a>

RDS for Db2 DB 인스턴스에서 데이터베이스를 비활성화하려면 `rdsadmin.deactivate_database` 저장 프로시저를 직접적으로 호출합니다.

기본적으로 Amazon RDS는 RDS for Db2 DB 인스턴스에서 데이터베이스를 만들 때 데이터베이스를 활성화합니다. 자주 사용하지 않는 데이터베이스를 비활성화하여 메모리 리소스를 절약할 수 있습니다.

**데이터베이스를 비활성화하는 방법**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.deactivate_database`를 직접 호출하여 데이터베이스를 비활성화합니다. 자세한 내용은 [rdsadmin.deactivate\$1database](db2-sp-managing-databases.md#db2-sp-deactivate-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.deactivate_database(    
       ?, 
       'database_name')"
   ```

## 데이터베이스 활성화
<a name="db2-activating-database"></a>

독립형 RDS for Db2 DB 인스턴스에서 데이터베이스를 활성화하려면 `rdsadmin.activate_database` 저장 프로시저를 직접적으로 호출합니다.

기본적으로 Amazon RDS는 RDS for Db2 DB 인스턴스에서 데이터베이스를 만들 때 데이터베이스를 활성화합니다. 자주 사용하지 않는 데이터베이스를 비활성화하여 메모리 리소스를 보존한 다음 나중에 비활성화된 데이터베이스를 활성화할 수 있습니다.

**데이터베이스를 활성화하는 방법**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.activate_database`를 직접 호출하여 데이터베이스를 활성화합니다. 자세한 내용은 [rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.activate_database(
       ?, 
       'database_name')"
   ```

## 데이터베이스 재활성화
<a name="db2-reactivating-database"></a>

복제본 소스 RDS for Db2 DB 인스턴스에서 데이터베이스를 재활성화하려면 `rdsadmin.reactivate_database` 저장 프로시저를 직접적으로 호출합니다. 데이터베이스 구성을 변경한 후 RDS for Db2 DB 인스턴스에서 데이터베이스를 재활성화해야 할 수 있습니다. 데이터베이스를 재활성화해야 하는지 확인하려면 데이터베이스에 연결하고 `db2 get db cfg show detail`을 실행합니다.

데이터베이스 구성을 변경한 후 이 저장 프로시저를 직접적으로 호출하여 독립형 RDS for Db2 DB 인스턴스에서 데이터베이스를 재활성화할 수도 있습니다. 또는 먼저 `rdsadmin.deactivate_database` 저장 프로시저를 직접적으로 호출한 다음 `rdsadmin.activate_database` 저장 프로시저를 직접적으로 호출하여 독립형 RDS for Db2 DB 인스턴스에서 데이터베이스를 재활성화할 수 있습니다. 자세한 내용은 [데이터베이스 비활성화](#db2-deactivating-database) 및 [데이터베이스 활성화](#db2-activating-database)(을)를 참조하세요.

**데이터베이스를 재활성화하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.reactivate_database`를 직접적으로 호출하여 데이터베이스를 재활성화합니다. 자세한 내용은 [rdsadmin.reactivate\$1database](db2-sp-managing-databases.md#db2-sp-reactivate-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.reactivate_database(
       ?, 
       'database_name')"
   ```

## 데이터베이스 삭제
<a name="db2-dropping-database"></a>

RDS for Db2 DB 인스턴스에서 데이터베이스를 삭제하려면 `rdsadmin.drop_database` 저장 프로시저를 직접 호출합니다. 자세한 내용은 IBM Db2 설명서의 [데이터베이스 삭제](https://www.ibm.com/docs/en/db2/11.5?topic=databases-dropping)를 참조하세요.

**참고**  
특정 조건이 충족되는 경우에만 저장 프로시저를 직접 호출하여 데이터베이스를 삭제할 수 있습니다. 자세한 내용은 `rdsadmin.drop_database`에 대한 [사용 노트](db2-sp-managing-databases.md#db2-sp-drop-database-usage-notes)를 참조하세요.

**데이터베이스를 삭제하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.drop_database`를 직접 호출하여 데이터베이스를 삭제합니다. 자세한 내용은 [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.drop_database('database_name')"
   ```

## 데이터베이스 백업
<a name="db2-backing-up-database"></a>

RDS for Db2 DB 인스턴스의 데이터베이스를 Amazon S3로 백업하려면 `rdsadmin.backup_database` 저장 프로시저를 직접적으로 호출합니다. 자세한 내용은 IBM Db2 설명서의 [BACKUP DATABASE 명령](https://www.ibm.com/docs/en/db2/11.5.x?topic=commands-backup-database)을 참조하세요.

**참고**  
이 저장 프로시저는 Amazon S3와의 통합을 사용합니다. 계속하기 전에 통합을 구성했는지 확인합니다. 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md) 섹션을 참조하세요.

**데이터베이스 백업**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. S3에 대한 VPC 게이트웨이 엔드포인트 생성 S3용 VPC 게이트웨이 엔드포인트가 이미 있는 경우 4단계로 건너뜁니다.

   RDS for Db2 DB 인스턴스가 Amazon S3와 상호 작용하려면 프라이빗 서브넷을 사용할 수 있는 VPC와 Amazon S3 게이트웨이 엔드포인트가 있어야 합니다. 자세한 내용은 [1단계: Amazon S3에 대한 VPC 게이트웨이 엔드포인트 생성](db2-troubleshooting.md#db2-creating-endpoint) 섹션을 참조하세요.

1. S3의 VPC 게이트웨이 엔드포인트를 확인합니다. 자세한 내용은 [2단계: Amazon S3용 VPC 게이트웨이 엔드포인트가 존재하는지 확인](db2-troubleshooting.md#db2-confirming-endpoint) 섹션을 참조하세요.

1. `rdsadmin.backup_database`를 직접적으로 호출하여 데이터베이스를 백업합니다. 자세한 내용은 [rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.backup_database(
       ?,
       'database_name', 
       's3_bucket_name', 
       's3_prefix', 
       'backup_type',
       'compression_option',
       'util_impact_priority', 
       'num_files',
       'parallelism',
       'num_buffers')"
   ```

1. 연결을 종료합니다.

   ```
   terminate
   ```

1. (선택 사항) 백업 파일이 *s3\$1prefix/dbi\$1resource\$1id/db\$1name*으로 Amazon S3 버킷에 업로드되었는지 확인합니다. 파일이 *s3\$1prefix/dbi\$1resource\$1id/db\$1name*에 표시되지 않는 경우 데이터베이스 백업 상태를 확인하여 문제를 식별합니다. 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요. 식별된 문제를 해결할 수 없는 경우 [AWS Support](https://aws.amazon.com/premiumsupport/)에 문의하세요.

1. (선택 사항) Amazon S3에 대한 백업이 완료되면 백업을 RDS for Db2 DB 인스턴스 또는 로컬 서버와 같은 다른 위치로 복원할 수 있습니다. RDS for Db2 DB 인스턴스로 복원하는 것에 대한 자세한 내용은 [데이터베이스 복원](#db2-restoring-database) 섹션을 참조하세요.

## Amazon S3에 아카이브 로그 복사
<a name="db2-copying-archive-logs-to-s3"></a>

이제 RDS for Db2 DB 인스턴스에서 Amazon S3로 Db2 아카이브 로그를 복사할 수 있습니다. `rdsadmin.backup_database`를 통해 생성된 기본 백업과 아카이브 로그를 사용하여 다른 RDS for Db2 인스턴스 또는 EC2 데이터베이스에서 특정 시점으로 데이터베이스를 복원하고 롤포워드할 수 있습니다.

 이 기능을 구성하기 전에 저장 프로시저 `rdsadmin.backup_database`를 사용하여 RDS for Db2 데이터베이스를 설정합니다.

이 기능은 RDS for Db2 DB 인스턴스 수준에서 작동하지만 데이터베이스별로 아카이브 로그 복사를 활성화하거나 비활성화할 수 있습니다.

**Amazon S3로의 아카이브 로그 복사를 구성하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)을 직접적으로 호출하여 S3로의 아카이브 로그 백업을 설정합니다.

   ```
   db2 "call rdsadmin.set_configuration(
       'name',
       'value')"
   ```

    **예제:** 

   ```
   db2 "call rdsadmin.set_configuration('ARCHIVE_LOG_COPY_TARGET_S3_ARN', 'arn:aws:s3:::my_rds_db2_backups/archive-log-copy/')"
   ```

1. `rdsadmin.enable_archive_log_copy`를 직접적으로 호출하여 데이터베이스에 대한 아카이브 로그 복사를 활성화합니다. *database\$1name*을 해당 데이터베이스 이름으로 바꿉니다.

   ```
   db2 "call rdsadmin.enable_archive_log_copy(?, 'database_name')"
   ```

1. 마찬가지로 데이터베이스에 대한 아카이브 로그 복사를 비활성화하려면 `rdsadmin.disable_archive_log_copy`를 직접적으로 호출합니다.

   ```
   db2 "call rdsadmin.disable_archive_log_copy(?, 'database_name')"
   ```

1. `rdsadmin.list_databases`를 직접적으로 호출하여 아카이브 로그 복사 상태를 확인합니다.

   ```
   db2 "select * from table(rdsadmin.list_databases())"
   ```

    **샘플 출력:** 

   ```
   DATABASE_NAME   CREATE_TIME                DATABASE_UNIQUE_ID                                 ARCHIVE_LOG_RETENTION_HOURS ARCHIVE_LOG_COPY ARCHIVE_LOG_LAST_UPLOAD_FILE ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME ARCHIVE_LOG_COPY_STATUS
   --------------- -------------------------- -------------------------------------------------- --------------------------- ---------------- ---------------------------- --------------------------------- ------------------------------
   RDSADMIN        2026-01-06-02.03.42.569069 RDSADMIN                                                                     0 DISABLED         -                            -                                 -
   FOO             2026-01-06-02.13.42.885650 F0D81C7E-7213-4565-B376-4F33FCF420E3                                         7 ENABLED          S0006536.LOG                 2026-01-28-19.15.10.000000        UPLOADING
   CODEP           2026-01-14-19.42.42.508476 106EEF95-6E30-4FFF-85AE-B044352DF095                                         0 DISABLED         -                            -                                 -
   ...
   ```

## 데이터베이스 복원
<a name="db2-restoring-database"></a>

Amazon S3 버킷에서 RDS for Db2 DB 인스턴스로 데이터베이스를 이동하려면 `rdsadmin.restore_database` 저장 프로시저를 직접 호출합니다. 자세한 내용은 IBM Db2 설명서의 [RESTORE DATABASE 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database)을 참조하세요.

**데이터베이스를 복원하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. (선택 사항) `rdsadmin.show_configuration`을 직접 호출하고 현재 구성 설정을 확인하여 복원 작업을 최적화합니다. 자세한 내용은 [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.show_configuration('name')"
   ```

1. `rdsadmin.set_configuration`을 직접 호출하여 복원 작업을 최적화하도록 설정을 구성합니다. 이러한 값을 명시적으로 설정하면 대량 데이터가 있는 데이터베이스를 복원할 때 성능이 향상될 수 있습니다. 자세한 내용은 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.set_configuration(
       'name',  
       'value')"
   ```

1. `rdsadmin.restore_database`를 호출하여 데이터베이스를 복원합니다. 자세한 내용은 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.restore_database(
       ?,
       'database_name', 
       's3_bucket_name', 
       's3_prefix', 
       restore_timestamp, 
       'backup_type')"
   ```

1. (선택 사항) `rdsadmin.list_databases`를 직접 호출하고 복원된 데이터베이스가 나열되었는지 확인하여 데이터베이스가 복원되었는지 확인합니다. 자세한 내용은 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 섹션을 참조하세요.

1. `rdsadmin.rollforward_database`를 직접 호출하여 데이터베이스를 다시 온라인 상태로 만들고 추가 트랜잭션 로그를 적용합니다. 자세한 내용은 [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.rollforward_database(
       ?,
       'database_name',
       's3_bucket_name', 
       s3_prefix, 
       'rollforward_to_option', 
       'complete_rollforward')"
   ```

1. (선택 사항) `rdsadmin.rollforward_database` 저장 프로시저를 직접적으로 호출하여 [rdsadmin.rollforward\$1status](db2-sp-managing-databases.md#db2-sp-rollforward-status) 저장 프로시저의 상태를 확인합니다.

1. 이전 단계에서 `complete_rollforward`를 `FALSE`로 설정한 경우에는 `rdsadmin.complete_rollforward`를 직접 호출하여 데이터베이스를 다시 온라인 상태로 전환하는 작업을 완료해야 합니다. 자세한 내용은 [rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.complete_rollforward(
       ?,
       'database_name')"
   ```

1. (선택 사항) `rdsadmin.complete_rollforward` 저장 프로시저를 직접적으로 호출하여 [rdsadmin.rollforward\$1status](db2-sp-managing-databases.md#db2-sp-rollforward-status) 저장 프로시저의 상태를 확인합니다.

## 데이터베이스 나열
<a name="db2-listing-databases"></a>

`rdsadmin.list_databases` 사용자 정의 함수를 직접 호출하여 Amazon RDS for Db2에서 실행되는 모든 데이터베이스를 나열할 수 있습니다.

**데이터베이스를 나열하는 방법**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.list_databases`를 직접 호출하여 데이터베이스를 나열합니다. 자세한 내용은 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 섹션을 참조하세요.

   ```
   db2 "select * from table(rdsadmin.list_databases())"
   ```

## 데이터베이스에 대한 정보 수집
<a name="db2-collecting-info-db"></a>

RDS for Db2 DB 인스턴스에서 데이터베이스에 대한 정보를 수집하려면 `rdsadmin.db2pd_command` 저장 프로시저를 직접적으로 호출합니다. 이 정보를 사용하면 데이터베이스를 모니터링하거나 문제를 해결할 수 있습니다.

**데이터베이스에 대한 정보를 수집하려면 다음과 같이 하세요.**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.db2pd_command`를 직접 호출하여 데이터베이스에 대한 정보를 수집합니다. 자세한 내용은 [rdsadmin.db2pd\$1command](db2-sp-managing-databases.md#db2-sp-db2pd-command) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.db2pd_command('db2pd_cmd')"
   ```

## 데이터베이스의 애플리케이션 강제 종료
<a name="db2-forcing-application-off-db"></a>

RDS for Db2 인스턴스의 데이터베이스에서 애플리케이션을 강제 종료하려면 `rdsadmin.force_application` 저장 프로시저를 직접적으로 호출합니다. 데이터베이스 유지 관리를 수행하기 전에 데이터베이스에서 애플리케이션을 강제로 제거해야 합니다.

**데이터베이스의 애플리케이션을 강제 종료하려면 다음과 같이 하세요.**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.force_application`을 직접적으로 호출하여 데이터베이스의 애플리케이션을 강제 종료합니다. 자세한 내용은 [rdsadmin.force\$1application](db2-sp-managing-databases.md#db2-sp-force-application) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.force_application(     
       ?,
       'applications')"
   ```

## 성능 보고서 생성
<a name="db2-generating-performance-reports"></a>

프로시저 또는 스크립트를 사용하여 성능 보고서를 생성할 수 있습니다. 프로시저 사용에 대한 자세한 내용은 IBM Db2 설명서의 [DBSUMMARY 프로시저 - 시스템 및 애플리케이션 성능 지표에 대한 요약 보고서 생성](https://www.ibm.com/docs/en/db2/11.5?topic=mm-dbsummary-procedure-generate-summary-report-system-application-performance-metrics)을 참조하세요.

Db2는 `~sqllib/sample/perf` 디렉터리에 `db2mon.sh` 파일을 포함합니다. 스크립트를 실행하면 합리적인 비용으로 광범위한 SQL 지표 보고서를 생성할 수 있습니다. `db2mon.sh` 파일 및 관련 스크립트 파일을 다운로드하려면 IBM db2-samples GitHub 리포지토리의 [https://github.com/IBM/db2-samples/tree/master/perf](https://github.com/IBM/db2-samples/tree/master/perf) 디렉터리를 참조하세요.

**스크립트를 사용하여 성능 보고서를 생성하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 Db2 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. `rdsadmin.create_bufferpool`을 호출하여 페이지 크기가 4096인 버퍼 풀 `db2monbp`를 생성합니다. 자세한 내용은 [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.create_bufferpool('database_name','db2monbp',4096)"
   ```

1. `rdsadmin.create_tablespace`을 호출하여 `db2monbp` 버퍼 풀을 사용하는 임시 테이블스페이스 `db2montmptbsp`를 생성합니다. 자세한 내용은 [rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.create_tablespace('database_name',\
       'db2montmptbsp','db2monbp',4096,1000,100,'T')"
   ```

1. `db2mon.sh` 스크립트를 열고 데이터베이스 연결에 대한 줄을 수정합니다.

   1. 다음과 같은 줄을 제거합니다.

      ```
      db2 -v connect to $dbName
      ```

   1. 이전 단계의 줄을 다음 줄로 바꿉니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호로 대체합니다.

      ```
      db2 -v connect to $dbName user master_username using master_password
      ```

   1. 다음과 같은 줄을 제거합니다.

      ```
      db2 -v create bufferpool db2monbp
      
      db2 -v create user temporary tablespace db2montmptbsp bufferpool db2monbp
      
      db2 -v drop tablespace db2montmptbsp
      
      db2 -v drop bufferpool db2monbp
      ```

1. `db2mon.sh` 스크립트를 실행하여 지정된 간격으로 보고서를 출력합니다. 다음 예제에서 *absolute\$1path*는 스크립트 파일의 전체 경로로, *rds\$1database\$1alias*는 데이터베이스 이름으로, *seconds*는 보고서 생성 사이의 시간(0\$13,600초)으로 바꿉니다.

   ```
   absolute_path/db2mon.sh rds_database_alias seconds | tee -a db2mon.out
   ```

   **예제**

   다음 예제는 스크립트 파일이 `home` 디렉터리 아래의 `perf` 디렉터리에 있음을 보여줍니다.

   ```
   /home/db2inst1/sqllib/samples/perf/db2mon.sh rds_database_alias seconds | tee -a db2mon.out
   ```

1. 버퍼 풀과 `db2mon.sh` 파일용으로 생성된 테이블스페이스를 삭제합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호로 대체합니다. *database\$1name*을 데이터베이스의 이름으로 바꿉니다. 자세한 내용은 [rdsadmin.drop\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-drop-tablespace) 및 [rdsadmin.drop\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-drop-buffer-pool)(을)를 참조하세요.

   ```
   db2 connect to rdsadmin user master_username using master_password
   
   db2 "call rdsadmin.drop_tablespace('database_name','db2montmptbsp')"
   
   db2 "call rdsadmin.drop_bufferpool('database_name','db2monbp')"
   ```

## 스토리지 관리
<a name="db2-managing-storage"></a>

Db2는 자동 스토리지를 사용하여 표, 인덱스, 임시 파일과 같은 데이터베이스 객체의 물리적 스토리지를 관리합니다. 스토리지 공간을 수동으로 할당하고 사용 중인 스토리지 경로를 추적하는 대신, 자동 스토리지를 통해 Db2 시스템은 필요에 따라 스토리지 경로를 생성하고 관리할 수 있습니다. 이를 통해 Db2 데이터베이스 관리를 단순화하고 사람의 실수로 인한 오류 가능성을 줄일 수 있습니다. 자세한 내용은 IBM Db2 설명서의 [자동 스토리지](https://www.ibm.com/docs/en/db2/11.5?topic=overview-automatic-storage)를 참조하세요.

RDS for Db2를 사용하면 논리적 볼륨과 파일 시스템을 자동으로 확장하여 스토리지 크기를 동적으로 늘릴 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 스토리지 작업](USER_PIOPS.StorageTypes.md) 섹션을 참조하세요.

# 테이블스페이스의 일반적인 작업
<a name="db2-managing-tablespaces"></a>

RDS for Db2 데이터베이스의 테이블스페이스를 생성, 변경, 삭제 또는 이름을 변경할 수 있습니다. 테이블스페이스를 생성, 변경, 삭제 또는 이름을 변경하려면 마스터 사용자가 사용할 수 없는 더 높은 수준의 `SYSADM` 권한이 필요합니다. 대신 Amazon RDS 저장 프로시저를 사용하세요.

**Topics**
+ [테이블스페이스 생성](#db2-creating-tablespace)
+ [테이블스페이스 변경](#db2-altering-tablespace)
+ [테이블스페이스 이름 변경](#db2-renaming-tablespace)
+ [테이블스페이스 삭제](#db2-dropping-tablespace)
+ [테이블스페이스의 상태 확인](#db2-checking-tablespaces-procedure)
+ [테이블스페이스에 관한 세부 정보 반환](#db2-tablespaces-info-db2pd)
+ [테이블스페이스의 상태 및 스토리지 그룹 나열](#db2-state-storage-group-tablespace-sql)
+ [표의 테이블스페이스 나열](#db2-return-tablespaces-sql)
+ [테이블스페이스 컨테이너 나열](#db2-listing-tablespace-containers)

## 테이블스페이스 생성
<a name="db2-creating-tablespace"></a>

RDS for Db2 데이터베이스용 테이블스페이스를 만들려면 `rdsadmin.create_tablespace` 저장 프로시저를 호출합니다. 자세한 내용은 IBM Db2 설명서의 [CREATE TABLESPACE 문](https://www.ibm.com/docs/en/db2/11.5?topic=statements-create-tablespace)을 참조하세요.

**중요**  
테이블스페이스를 만들려면 테이블스페이스와 연결할 페이지 크기가 같은 버퍼 풀이 있어야 합니다. 자세한 내용은 [버퍼 풀의 일반적인 작업](db2-managing-buffer-pools.md) 섹션을 참조하세요.

**테이블스페이스를 생성하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.create_tablespace`를 호출하여 테이블스페이스를 생성합니다. 자세한 내용은 [rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.create_tablespace(
       'database_name', 
       'tablespace_name',
       'buffer_pool_name', 
       tablespace_initial_size, 
       tablespace_increase_size, 
       'tablespace_type')"
   ```

## 테이블스페이스 변경
<a name="db2-altering-tablespace"></a>

RDS for Db2 데이터베이스용 테이블스페이스를 변경하려면 `rdsadmin.alter_tablespace` 저장 프로시저를 호출합니다. 이 저장 프로시저를 사용하여 테이블스페이스의 버퍼 풀을 변경하거나, 하이 워터 마크를 낮추거나, 테이블스페이스를 온라인으로 전환할 수 있습니다. 자세한 내용은 IBM Db2 설명서의 [ALTER TABLESPACE 문](https://www.ibm.com/docs/en/db2/11.5?topic=statements-alter-tablespace)을 참조하세요.

**테이블스페이스를 변경하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.alter_tablespace`를 호출하여 테이블스페이스를 변경합니다. 자세한 내용은 [rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.alter_tablespace(
       'database_name', 
       'tablespace_name', 
       'buffer_pool_name', 
       buffer_pool_size, 
       tablespace_increase_size, 
       'max_size', 'reduce_max', 
       'reduce_stop', 
       'reduce_value', 
       'lower_high_water', 
       'lower_high_water_stop', 
       'switch_online')"
   ```

## 테이블스페이스 이름 변경
<a name="db2-renaming-tablespace"></a>

RDS for Db2 데이터베이스용 테이블스페이스의 이름을 변경하려면 `rdsadmin.rename_tablespace` 저장 프로시저를 호출합니다. 자세한 내용은 IBM Db2 설명서의 [RENAME TABLESPACE 문](https://www.ibm.com/docs/en/db2/11.5?topic=statements-rename-tablespace)을 참조하세요.

**테이블스페이스 이름을 변경하는 방법**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.rename_tablespace`를 직접 호출하여 테이블스페이스의 이름을 변경합니다. 테이블스페이스의 이름으로 지정할 수 있는 것에 대한 제한 사항을 비롯한 자세한 내용은 [rdsadmin.rename\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-rename-tablespace) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.rename_tablespace(
       'database_name', 
       'source_tablespace_name',
       'target_tablespace_name')"
   ```

## 테이블스페이스 삭제
<a name="db2-dropping-tablespace"></a>

RDS for Db2 데이터베이스용 테이블스페이스를 삭제하려면 `rdsadmin.drop_tablespace` 저장 프로시저를 호출합니다. 테이블스페이스를 삭제하기 전에 먼저 표, 인덱스 또는 대형 객체(LOB)와 같은 테이블스페이스의 모든 객체를 삭제해야 합니다. 자세한 내용은 IBM Db2 설명서의 [테이블스페이스 삭제](https://www.ibm.com/docs/en/db2/11.5?topic=spaces-dropping-table)를 참조하세요.

**테이블스페이스를 삭제하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.drop_tablespace`를 호출하여 테이블스페이스를 삭제합니다. 자세한 내용은 [rdsadmin.drop\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-drop-tablespace) 섹션을 참조하세요.

   ```
   db2 "call rdsadmin.drop_tablespace(
       'database_name', 
       'tablespace_name')"
   ```

## 테이블스페이스의 상태 확인
<a name="db2-checking-tablespaces-procedure"></a>

 `cast` 함수를 사용하여 테이블스페이스의 상태를 확인할 수 있습니다.

**테이블스페이스의 상태를 확인하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 Db2 데이터베이스에 연결합니다. 다음 예제에서 *rds\$1database\$1alias*, *master\$1username*, *master\$1password*를 사용자 자체 정보로 바꿉니다.

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 요약 출력을 반환합니다.

   요약 출력은 다음과 같습니다.

   ```
   db2 "select cast(tbsp_id as smallint) as tbsp_id,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(tbsp_type as varchar(3)) as tbsp_type,
   cast(tbsp_state as varchar(10)) as state,
   cast(tbsp_content_type as varchar(8)) as contents from table(mon_get_tablespace(null,-1)) order by tbsp_id"
   ```

## 테이블스페이스에 관한 세부 정보 반환
<a name="db2-tablespaces-info-db2pd"></a>

`cast` 함수를 사용하여 한 구성원 또는 모든 구성원의 테이블스페이스 정보를 반환할 수 있습니다.

**테이블스페이스에 관한 세부 정보를 반환하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 Db2 데이터베이스에 연결합니다. 다음 예제에서 *rds\$1database\$1alias*, *master\$1username*, *master\$1password*를 사용자 자체 정보로 바꿉니다.

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 한 멤버 또는 모든 멤버의 데이터베이스에 있는 모든 테이블스페이스에 대한 세부 정보를 반환합니다.

   한 멤버의 경우에는 다음과 같습니다.

   ```
   db2 "select cast(member as smallint) as member,
   cast(tbsp_id as smallint) as tbsp_id,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(tbsp_type as varchar(3)) as tbsp_type,
   cast(tbsp_state as varchar(10)) as state,
   cast(tbsp_content_type as varchar(8)) as contents,
   cast(tbsp_total_pages as integer) as total_pages,
   cast(tbsp_used_pages as integer) as used_pages,
   cast(tbsp_free_pages as integer) as free_pages,
   cast(tbsp_page_top as integer) as page_hwm,
   cast(tbsp_page_size as integer) as page_sz,
   cast(tbsp_extent_size as smallint) as extent_sz,
   cast(tbsp_prefetch_size as smallint) as prefetch_sz,
   cast(tbsp_initial_size as integer) as initial_size,
   cast(tbsp_increase_size_percent as smallint) as increase_pct,
   cast(storage_group_name as varchar(12)) as stogroup from table(mon_get_tablespace(null,-1)) order by member, tbsp_id "
   ```

   모든 멤버의 경우에는 다음과 같습니다.

   ```
   db2 "select cast(member as smallint) as member
   cast(tbsp_id as smallint) as tbsp_id,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(tbsp_type as varchar(3)) as tbsp_type,
   cast(tbsp_state as varchar(10)) as state,
   cast(tbsp_content_type as varchar(8)) as contents,
   cast(tbsp_total_pages as integer) as total_pages,
   cast(tbsp_used_pages as integer) as used_pages,
   cast(tbsp_free_pages as integer) as free_pages,
   cast(tbsp_page_top as integer) as page_hwm,
   cast(tbsp_page_size as integer) as page_sz,
   cast(tbsp_extent_size as smallint) as extent_sz,
   cast(tbsp_prefetch_size as smallint) as prefetch_sz,
   cast(tbsp_initial_size as integer) as initial_size,
   cast(tbsp_increase_size_percent as smallint) as increase_pct,
   cast(storage_group_name as varchar(12)) as stogroup from table(mon_get_tablespace(null,-2)) order by member, tbsp_id "
   ```

## 테이블스페이스의 상태 및 스토리지 그룹 나열
<a name="db2-state-storage-group-tablespace-sql"></a>

SQL 문을 실행하여 테이블스페이스의 상태 및 스토리지 그룹을 나열할 수 있습니다.

테이블스페이스의 상태 및 스토리지 그룹을 나열하려면 다음 SQL 문을 실행합니다.

```
db2 "SELECT varchar(tbsp_name, 30) as tbsp_name,
                  varchar(TBSP_STATE, 30) state,
                  tbsp_type,
                  varchar(storage_group_name,30) storage_group
FROM TABLE(MON_GET_TABLESPACE('',-2)) AS t"
```

## 표의 테이블스페이스 나열
<a name="db2-return-tablespaces-sql"></a>

SQL 문을 실행하여 표의 테이블스페이스를 나열할 수 있습니다.

표의 테이블스페이스를 나열하려면 다음 SQL 문을 실행합니다. 다음 예제에서 *SCHEMA\$1NAME* 및 *TABLE\$1NAME*을 다음과 같이 스키마 및 테이블 이름으로 바꿉니다.

```
db2 "SELECT 
   VARCHAR(SD.TBSPACE,30) AS DATA_SPACE,
   VARCHAR(SL.TBSPACE,30) AS LONG_SPACE,
   VARCHAR(SI.TBSPACE,30) AS INDEX_SPACE
 FROM 
   SYSCAT.DATAPARTITIONS P 
   JOIN SYSCAT.TABLESPACES SD ON SD.TBSPACEID = P.TBSPACEID 
   LEFT JOIN SYSCAT.TABLESPACES SL ON SL.TBSPACEID = P.LONG_TBSPACEID
   LEFT JOIN SYSCAT.TABLESPACES SI ON SI.TBSPACEID = P.INDEX_TBSPACEID
 WHERE
    TABSCHEMA = 'SCHEMA_NAME'
 AND TABNAME   = 'TABLE_NAME'"
```

## 테이블스페이스 컨테이너 나열
<a name="db2-listing-tablespace-containers"></a>

`cast` 명령을 사용하여 모든 테이블스페이스 컨테이너 또는 특정 테이블스페이스 컨테이너를 나열할 수 있습니다.

**테이블스페이스의 테이블스페이스 컨테이너를 나열하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 Db2 데이터베이스에 연결합니다. 다음 예제에서 *rds\$1database\$1alias*, *master\$1username*, *master\$1password*를 자체 정보로 바꿉니다.

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 데이터베이스 또는 특정 테이블스페이스 컨테이너의 모든 테이블스페이스 컨테이너 목록을 반환합니다.

   모든 테이블스페이스 컨테이너의 경우에는 다음과 같습니다.

   ```
   db2 "select cast(member as smallint) as member,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(container_id as smallint) as id,
   cast(container_name as varchar(60)) as container_path, container_type as type from table(mon_get_container(null,-2)) order by member,tbsp_id,container_id"
   ```

   특정 테이블스페이스 컨테이너의 경우에는 다음과 같습니다.

   ```
   db2 "select cast(member as smallint) as member,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(container_id as smallint) as id,
   cast(container_name as varchar(60)) as container_path, container_type as type from table(mon_get_container('TBSP_1',-2)) order by member, tbsp_id,container_id"
   ```

# Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합
<a name="db2-s3-integration"></a>

Amazon RDS 저장 프로시저를 사용하는 Amazon Simple Storage Service(S3) 버킷과 Amazon RDS for Db2 DB 인스턴스 간에 파일을 전송할 수 있습니다. 자세한 내용은 [Amazon RDS for Db2 저장 프로시저 참조](db2-stored-procedures.md) 섹션을 참조하세요.

**참고**  
DB 인스턴스와 Amazon S3 버킷은 같은 AWS 리전에 있어야 합니다.

RDS for Db2를 Amazon S3와 통합하려면 DB 인스턴스가 RDS for Db2가 있는 Amazon S3 버킷에 액세스할 수 있어야 합니다. 현재 S3 버킷이 없는 경우에는 [버킷을 생성하세요](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket-overview.html).

**Topics**
+ [1단계: IAM 정책 생성](#db2-creating-iam-policy)
+ [2단계: IAM 역할 생성 및 IAM 정책 연결](#db2-creating-iam-role)
+ [3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가](#db2-adding-iam-role)

## 1단계: IAM 정책 생성
<a name="db2-creating-iam-policy"></a>

이 단계에서는 Amazon S3 버킷에서 RDS DB 인스턴스로 파일을 전송하는 데 필요한 권한을 가진 AWS Identity and Access Management(IAM) 정책을 생성합니다. 이 단계에서는 이미 S3 버킷을 생성한 것으로 가정합니다. 자세한 내용은 *Amazon S3 사용자 안내서*의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.

정책을 생성하기 전에 다음 정보를 기록해 둡니다.
+ 버킷의 Amazon 리소스 이름(ARN)
+ 버킷에서 SSE-KMS 또는 SSE-S3 암호화를 사용하는 경우 AWS Key Management Service(AWS KMS) 키에 대한 ARN.

생성하는 IAM 정책에는 다음 정보가 포함되어야 합니다. *\$1amzn-s3-demo-bucket\$1*을 S3 버킷 이름으로 바꿉니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3BucketAccess",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::${amzn-s3-demo-bucket}/*",
                "arn:aws:s3:::${amzn-s3-demo-bucket}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

AWS Management Console 또는 AWS Command Line Interface(AWS CLI)를 사용하여 IAM 정책을 생성할 수 있습니다.

### 콘솔
<a name="creating-iam-policy-console"></a>

**Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **정책**을 선택합니다.

1. **정책 생성**을 선택한 다음 **JSON**을 선택합니다.

1. 서비스별 작업을 추가합니다. Amazon S3 버킷에서 Amazon RDS로 파일을 전송하려면 버킷 권한 및 객체 권한을 선택해야 합니다.

1. **리소스(Resources)**를 확장합니다. 버킷과 객체 리소스를 지정해야 합니다.

1. **다음**을 선택합니다.

1. **정책 이름**에 이 정책의 이름을 입력합니다.

1. (선택 사항) **설명**에 이 정책에 대한 설명을 입력합니다.

1. **정책 생성**을 선택합니다.

### AWS CLI
<a name="creating-iam-policy-cli"></a>

**Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면**

1.  다음 JSON 정책 문서가 포함된 JSON 파일을 생성합니다. *\$1amzn-s3-demo-bucket\$1*을 S3 버킷 이름으로 바꿉니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowS3BucketAccess",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:AbortMultipartUpload",
                   "s3:ListBucket",
                   "s3:GetObjectVersion",
                   "s3:ListMultipartUploadParts",
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::${amzn-s3-demo-bucket}/*",
                   "arn:aws:s3:::${amzn-s3-demo-bucket}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListAllMyBuckets"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) 명령을 실행합니다. 다음 예제에서 *iam\$1policy\$1name* 및 *iam\$1policy\$1file\$1name*을 IAM 정책의 이름과 1단계에서 생성한 JSON 파일의 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam create-policy \
       --policy-name iam_policy_name \
       --policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Action": [
               "kms:GenerateDataKey",
               "kms:Decrypt",
               "s3:PutObject",
               "s3:GetObject",
               "s3:AbortMultipartUpload",
               "s3:ListBucket",
               "s3:DeleteObject",
               "s3:GetObjectVersion",
               "s3:ListMultipartUploadParts"
             ],
             "Resource": [
               "arn:aws:s3:::s3_bucket_name/*",
               "arn:aws:s3:::s3_bucket_name"
             ]
           }
         ]
       }'
   ```

   Windows의 경우:

   ```
   aws iam create-policy ^
       --policy-name iam_policy_name ^
       --policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
               "Action": [
                 "s3:PutObject",
                 "s3:GetObject",
                 "s3:AbortMultipartUpload",
                 "s3:ListBucket",
                 "s3:DeleteObject",
                 "s3:GetObjectVersion",
                 "s3:ListMultipartUploadParts"
               ],
               "Resource": [
                 "arn:aws:s3:::s3_bucket_name/*",
                 "arn:aws:s3:::s3_bucket_name"
               ]
           }
         ]
       }'
   ```

1. 정책이 생성되면 정책의 ARN을 기록해 둡니다. [2단계: IAM 역할 생성 및 IAM 정책 연결](#db2-creating-iam-role)에 대한 ARN이 필요합니다.

IAM 정책 생성에 대한 자세한 내용은 IAM 사용 설명서의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

## 2단계: IAM 역할 생성 및 IAM 정책 연결
<a name="db2-creating-iam-role"></a>

이 단계에서는 [1단계: IAM 정책 생성](#db2-creating-iam-policy)에서 IAM 정책을 생성했다고 가정합니다. 이 단계에서는 RDS for Db2 DB 인스턴스에 대한 IAM 역할을 만든 다음 역할에 IAM 정책을 연결합니다.

AWS Management Console 또는 AWS CLI를 사용하여 DB 인스턴스에 대한 IAM 역할을 만들 수 있습니다.

### 콘솔
<a name="creating-iam-role-console"></a>

**IAM 역할을 생성하여 여기에 IAM 정책을 연결하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. **역할 생성(Create role)**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형**에 **AWS 서비스**를 선택합니다.

1. **서비스 또는 사용 사례**의 경우 **RDS**를 선택한 다음 **RDS ****– ****데이터베이스에 역할 추가**를 선택합니다.

1. **다음**을 선택합니다.

1. **권한 정책**의 경우 생성한 IAM 정책의 이름을 검색하여 선택합니다.

1. **다음**을 선택합니다.

1. **역할 이름(Role name)**에 역할 이름을 입력합니다.

1. (선택 사항)**설명**에 새 역할에 대한 설명을 입력합니다.

1. **역할 생성**을 선택합니다.

### AWS CLI
<a name="creating-iam-role-cli"></a>

**IAM 역할을 생성하여 여기에 IAM 정책을 연결하려면**

1. 다음 JSON 정책 문서가 포함된 JSON 파일을 생성합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rds.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 명령을 실행합니다. 다음 예제에서 *iam\$1role\$1name* 및 *iam\$1assume\$1role\$1policy\$1file\$1name*을 IAM 역할의 이름과 1단계에서 생성한 JSON 파일의 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam create-role \
       --role-name iam_role_name \
       --assume-role-policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

   Windows의 경우:

   ```
   aws iam create-role ^
       --role-name iam_role_name ^
       --assume-role-policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

1. 역할이 생성되면 역할의 ARN을 기록하십시오. [3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가](#db2-adding-iam-role)에 대한 ARN이 필요합니다.

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html) 명령을 실행합니다. 다음 예제에서 *iam\$1policy\$1arn*을 [1단계: IAM 정책 생성](#db2-creating-iam-policy)에서 생성한 IAM 정책의 ARN으로 대체합니다. *iam\$1role\$1name*을 방금 생성한 IAM 역할 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam attach-role-policy \
      --policy-arn iam_policy_arn \
      --role-name iam_role_name
   ```

   Windows의 경우:

   ```
   aws iam attach-role-policy ^
      --policy-arn iam_policy_arn ^
      --role-name iam_role_name
   ```

자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자에게 권한을 위임하기 위한 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)을 참조하십시오.

## 3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가
<a name="db2-adding-iam-role"></a>

이 단계에서는 IAM 역할을 RDS for Db2 DB 인스턴스에 추가합니다. 다음과 같은 요구 사항을 확인합니다.
+ 필수 Amazon S3 권한 정책이 연결된 IAM 역할에 대한 액세스 권한이 있어야 합니다.
+ 한 번에 하나의 IAM 역할만 RDS for Db2 DB 인스턴스에 연결할 수 있습니다.
+ RDS for Db2 DB 인스턴스는 **사용 가능** 상태여야 합니다.

AWS Management Console 또는 AWS CLI를 사용하여 DB 인스턴스에 IAM 역할을 추가할 수 있습니다.

### 콘솔
<a name="db2-adding-iam-role-console"></a>

**IAM 역할을 RDS for Db2 DB 인스턴스에 추가하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. RDS for Db2 DB 인스턴스 이름을 선택합니다.

1. **연결성 및 보안(Connectivity & security)** 탭에서 페이지 하단의 **IAM 역할 관리(Manage IAM roles)** 섹션이 나올 때까지 아래로 스크롤합니다.

1. **IAM 역할을 이 인스턴스에 추가**에는 [2단계: IAM 역할 생성 및 IAM 정책 연결](#db2-creating-iam-role)에서 생성한 역할을 선택합니다.

1. **기능**에서 **S3\$1INTEGRATION**을 선택하십시오.

1. [**Add role**]을 선택합니다.  
![\[S3_INTEGRATION 기능이 DB 인스턴스의 IAM 역할에 추가되었습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/db2-s3-integration-role.png)

### AWS CLI
<a name="db2-adding-iam-role-cli"></a>

RDS for Db2 DB 인스턴스에 IAM 역할을 추가하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-instance.html) 명령을 실행합니다. 다음 예제에서 *region*, *db\$1instance\$1name*, *iam\$1role\$1arn*을 DB 인스턴스가 있는 AWS 리전의 이름, DB 인스턴스 이름, [2단계: IAM 역할 생성 및 IAM 정책 연결](#db2-creating-iam-role)에서 생성한 IAM 역할의 ARN으로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds add-role-to-db-instance \
    --region $region \
    --db-instance-identifier $db_instance_name \
    --feature-name S3_INTEGRATION \
    --role-arn $iam_role_arn \
```

Windows의 경우:

```
aws rds add-role-to-db-instance ^
    --region $region \
    --db-instance-identifier db_instance_name ^
    --feature-name S3_INTEGRATION ^
    --role-arn iam_role_arn ^
```

RDS for Db2 DB 인스턴스에 역할이 성공적으로 추가되었는지 확인하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 실행합니다. 다음 예제에서 *db\$1instance\$1name*을 DB 인스턴스 이름으로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-instances \
    --filters "Name=db-instance-id,Values=db_instance_name" \
    --query 'DBInstances[].AssociatedRoles'
```

Windows의 경우:

```
aws rds describe-db-instances ^
    --filters "Name=db-instance-id,Values=db_instance_name" ^
    --query 'DBInstances[].AssociatedRoles'
```

다음 예제와 비슷한 출력이 생성됩니다.

```
[
    [
        {
            "RoleArn": "arn:aws:iam::0123456789012:role/rds-db2-s3-role",
            "FeatureName": "S3_INTEGRATION",
            "Status": "ACTIVE"
        }
    ]
]
```

# Amazon RDS for Db2로 데이터 마이그레이션
<a name="db2-migrating-data-to-rds"></a>

AWS 또는 기본 Db2 도구를 사용하여 자체 관리형 Db2 데이터베이스를 Amazon RDS for Db2로 마이그레이션할 수 있습니다.

AWS 서비스를 사용하여 Db2 데이터베이스에서 Amazon RDS for Db2로 마이그레이션하는 방법에 대한 자세한 내용은 [AWS 서비스를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션](db2-migration-approaches.md) 섹션을 참조하세요.

기본 Db2 도구를 사용하여 Db2 데이터베이스에서 Amazon RDS for Db2로 마이그레이션하는 방법에 대한 자세한 내용은 [기본 Db2 도구를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션](db2-native-db2-tools.md) 섹션을 참조하세요.

# AWS 서비스를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션
<a name="db2-migration-approaches"></a>

Amazon RDS에서 Db2 데이터베이스의 데이터를 Amazon RDS for Db2로 마이그레이션하는 방법에는 몇 가지가 있습니다. Linux, AIX 또는 Windows 환경에서 Amazon RDS for Db2로 Db2 데이터베이스를 일회성 마이그레이션할 수 있습니다. 가동 중지를 최소화하기 위해 가동 중지 시간이 거의 발생하지 않는 마이그레이션을 수행할 수 있습니다. 데이터를 Amazon S3에 저장하고 한 번에 한 테이블씩 Db2 데이터베이스에 로드하여 데이터를 마이그레이션할 수 있습니다. 복제 또는 AWS Database Migration Service 사용을 통해 동기 마이그레이션을 수행할 수도 있습니다.

Linux 기반 Db2 데이터베이스의 일회성 마이그레이션의 경우 Amazon RDS는 오프라인 및 온라인 백업만 지원합니다. Amazon RDS에서는 증분 백업과 Delta 백업을 지원하지 않습니다. Linux 기반 Db2 데이터베이스의 가동 중지 시간이 거의 없는 마이그레이션의 경우 Amazon RDS에는 온라인 백업이 필요합니다. 가동 중지 시간이 거의 없는 마이그레이션에는 온라인 백업을 사용하고, 가동 중지를 처리할 수 있는 마이그레이션에는 오프라인 백업을 사용하는 것이 좋습니다.

**Topics**
+ [Linux에서 Amazon RDS for Db2의 Linux로 마이그레이션](db2-one-time-migration-linux.md)
+ [Linux에서 Amazon RDS for Db2의 가동 중지 시간이 거의 없는 Linux로 마이그레이션](db2-near-zero-downtime-migration.md)
+ [Amazon RDS for Db2에 대해 Linux에서 Linux로 동기식 마이그레이션](db2-synchronous-migration-linux.md)
+ [AIX 또는 Windows에서 Amazon RDS for Db2의 Linux로 마이그레이션](db2-one-time-migration-aix-windows-linux.md)
+ [Amazon S3를 통해 Amazon RDS for Db2로 Db2 데이터 마이그레이션](db2-migration-load-from-s3.md)
+ [AWS Database Migration Service(AWS DMS)를 사용하여 Amazon RDS for Db2로 마이그레이션](db2-migration-amazon-dms.md)

# Linux에서 Amazon RDS for Db2의 Linux로 마이그레이션
<a name="db2-one-time-migration-linux"></a>

이 마이그레이션 접근 방식을 사용하면 자체 관리형 Db2 데이터베이스를 Amazon S3 버킷으로 백업합니다. 그런 다음 Amazon RDS 저장 프로시저를 사용하여 Db2 데이터베이스를 Amazon RDS for Db2 DB 인스턴스로 복원합니다. Amazon S3 사용에 대한 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md) 섹션을 참조하세요.

RDS for Db2의 백업 및 복원은 IBM Db2가 지원되는 업그레이드 경로 및 제한 사항을 따릅니다. 자세한 내용은 IBM Db2 설명서의 [Db2 서버의 지원되는 업그레이드 경로](https://www.ibm.com/docs/en/db2/11.5?topic=servers-supported-upgrade-paths-db2) 및 [Db2 서버의 업그레이드 제한](https://www.ibm.com/docs/en/db2/11.5?topic=servers-upgrade-restrictions)을 참조하세요.

**Topics**
+ [기본 복원 사용에 대한 제한 및 권장 사항](#db2-linux-migration-limitations)
+ [Amazon S3로 데이터베이스 백업](#db2-linux-backing-up-database)
+ [기본 자동 스토리지 그룹 생성](#db2-linux-creating-auto-storage-group)
+ [Db2 데이터베이스 복원](#db2-linux-restoring-db2-database)

## 기본 복원 사용에 대한 제한 및 권장 사항
<a name="db2-linux-migration-limitations"></a>

기본 복원 사용 시 다음과 같은 제한 및 권장 사항이 적용됩니다.
+ Amazon RDS는 지원되는 RDS for Db2 버전과 일치하는 Db2의 온프레미스 버전 마이그레이션만 지원합니다. 지원되는 버전에 대한 자세한 내용은 [Amazon RDS Db2 인스턴스에 대한 업그레이드 관리](Db2.Concepts.VersionMgmt.Supported.md) 섹션을 참조하세요.
+ Amazon RDS는 네이티브 복원을 위한 오프라인 및 온라인 백업만 지원합니다. Amazon RDS에서는 증분 백업이나 Delta 백업을 지원하지 않습니다.
+ RDS for Db2 DB 인스턴스가 위치한 리전과 다른 AWS 리전에서는 Amazon S3 버킷으로 복원할 수 없습니다.
+ Amazon S3는 Amazon S3 버킷에 업로드되는 파일 크기를 5TB로 제한합니다. 데이터베이스 백업 파일이 5TB를 초과하는 경우 백업 파일을 더 작은 파일로 분할하세요.
+ Amazon RDS는 울타리가 없는 외부 루틴, 증분 복원 또는 Delta 복원을 지원하지 않습니다.
+ 암호화된 원본 데이터베이스에서 복원할 수 없지만 암호화된 Amazon RDS DB 인스턴스로 복원할 수 있습니다.

복원 프로세스는 구성에 따라 다릅니다.

`USE_STREAMING_RESTORE`를 `TRUE`로 설정하면 Amazon RDS는 복원 중에 S3 버킷에서 백업을 직접 스트리밍합니다. 스트리밍은 스토리지 요구 사항을 크게 줄입니다. 백업 크기 또는 원본 데이터베이스 크기 중 더 큰 크기와 같거나 더 큰 스토리지 공간만 프로비저닝하면 됩니다.

`USE_STREAMING_RESTORE`를 `FALSE`로 설정하면 Amazon RDS는 먼저 백업을 RDS for Db2 DB 인스턴스에 다운로드한 다음 백업을 추출합니다. 추출에는 추가 스토리지 공간이 필요합니다. 백업 크기와 원본 데이터베이스 크기를 합한 크기보다 크거나 같은 저장 공간을 프로비저닝해야 합니다.

복원된 데이터베이스의 최대 크기는 지원되는 최대 데이터베이스 크기에서 복원 프로세스 중 임시 스토리지에 필요한 공간을 뺀 값과 같습니다.

## Amazon S3로 데이터베이스 백업
<a name="db2-linux-backing-up-database"></a>

Amazon S3에 데이터베이스를 백업하려면 다음 AWS 구성 요소가 필요합니다.
+ **백업 파일을 저장하는 Amazon S3 버킷: Amazon RDS로 마이그레이션하려는 모든 백업 파일을 업로드합니다. 가동 중지를 처리할 수 있는 마이그레이션에는 오프라인 백업을 사용하는 것이 좋습니다. S3 버킷이 이미 있다면 해당 버킷을 사용할 수 있습니다. S3 버킷이 없는 경우 **Amazon S3 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.
**참고**  
데이터베이스가 크고 S3 버킷으로 전송하는 데 시간이 오래 걸리는 경우 AWS Snow Family 디바이스를 주문하고 AWS에 백업을 수행하도록 요청할 수 있습니다. 파일을 디바이스에 복사하여 Snow Family 팀에 반환하면 팀은 백업된 이미지를 S3 버킷으로 전송합니다. 자세한 내용은 [AWS Snow Family 설명서](https://docs.aws.amazon.com/snowball/)를 참조하세요.
+ **S3 버킷에 액세스하기 위한 IAM 역할: 이미 IAM 역할이 있다면 해당 역할을 사용할 수 있습니다. 역할이 없는 경우 [2단계: IAM 역할 생성 및 IAM 정책 연결](db2-s3-integration.md#db2-creating-iam-role) 섹션을 참조하세요.
+ **IAM 역할에 연결된 신뢰 관계 및 권한이 포함된 IAM 정책: 자세한 내용은 [1단계: IAM 정책 생성](db2-s3-integration.md#db2-creating-iam-policy) 섹션을 참조하세요.
+ **RDS for Db2 DB 인스턴스에 추가된 IAM 역할: 자세한 내용은 [3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가](db2-s3-integration.md#db2-adding-iam-role) 섹션을 참조하세요.

## 기본 자동 스토리지 그룹 생성
<a name="db2-linux-creating-auto-storage-group"></a>

소스 데이터베이스에 기본 자동 스토리지 그룹이 있어야 합니다. 데이터베이스에 기본 자동 스토리지 그룹이 없는 경우 새 자동 스토리지 그룹을 만들어야 합니다.

**기본 자동 스토리지 그룹을 만들려면**

1. 소스 데이터베이스에 연결합니다. 다음 예제에서 *source\$1database*를 데이터베이스 이름으로 바꿉니다.

   ```
   db2 connect to source_database 
   ```

1. 자동 스토리지 그룹을 생성하고 이를 기본값으로 설정합니다. 다음 예제에서 *storage\$1path*를 스토리지 그룹이 있는 절대 경로로 바꿉니다.

   ```
   db2 "create stogroup IBMSTOGROUP ON storage_path set as default"
   ```

1. 백엔드 프로세스를 종료합니다.

   ```
   db2 terminate
   ```

1. 데이터베이스를 비활성화하고 모든 데이터베이스 서비스를 중지합니다. 다음 예제에서 *source\$1database*를 스토리지 그룹을 만든 대상 데이터베이스의 이름으로 바꿉니다.

   ```
   db2 deactivate db source_database
   ```

1. 데이터베이스를 백업합니다. 다음 예제에서 *source\$1database*를 스토리지 그룹을 만든 대상 데이터베이스의 이름으로 바꿉니다. *file\$1system\$1path*를 데이터베이스를 백업하려는 위치의 절대 경로로 바꿉니다.

   ```
   db2 backup database source_database to file_system_path 
   ```

## Db2 데이터베이스 복원
<a name="db2-linux-restoring-db2-database"></a>

Amazon S3에 데이터베이스를 백업하고 자동 스토리지 그룹을 만들고 나면 Db2 데이터베이스를 RDS for Db2 DB 인스턴스로 복원할 수 있습니다.

**Db2 데이터베이스를 Amazon S3 버킷에서 RDS for Db2 DB 인스턴스로 복원**

1. RDS for Db2 DB 인스턴스에 연결합니다. 자세한 내용은 [DB 인스턴스에 연결](USER_ConnectToDb2DBInstance.md) 섹션을 참조하세요.

1. (선택 사항) 데이터베이스가 최적의 설정으로 구성되어 있는지 확인하려면 [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)을 직접적으로 호출하여 다음 파라미터의 값을 확인합니다.
   + `RESTORE_DATABASE_NUM_BUFFERS`
   + `RESTORE_DATABASE_PARALLELISM`
   + `RESTORE_DATABASE_NUM_MULTI_PATHS`
   + `USE_STREAMING_RESTORE`

   필요에 따라 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)을 사용하여 이러한 값을 수정합니다. 이러한 파라미터를 적절하게 구성하면 대량의 데이터로 데이터베이스를 복원할 때 성능이 크게 향상될 수 있습니다. 대부분의 마이그레이션 시나리오에서는 스토리지 요구 사항을 줄이고 복원 속도를 개선할 수 있으므로 `USE_STREAMING_RESTORE`를 `TRUE`로 설정하는 것이 좋습니다.

1. `rdsadmin.restore_database`를 호출하여 데이터베이스를 복원합니다. 자세한 내용은 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 섹션을 참조하세요.

# Linux에서 Amazon RDS for Db2의 가동 중지 시간이 거의 없는 Linux로 마이그레이션
<a name="db2-near-zero-downtime-migration"></a>

이 마이그레이션 접근 방식을 사용하면 자체 관리형 Db2 데이터베이스(소스)에서 Amazon RDS for Db2로 Linux 기반 Db2 데이터베이스를 마이그레이션합니다. 이 접근 방식을 사용하면 애플리케이션 또는 사용자의 중단이나 가동 중지 시간이 최소화되거나 전혀 발생하지 않습니다. 이 접근 방식은 데이터베이스를 백업하고 로그 재생을 통해 복원하므로, 진행 중인 작업의 중단을 방지하고 데이터베이스의 고가용성을 제공합니다.

가동 중지 시간이 거의 없는 마이그레이션을 달성하기 위해 RDS for Db2는 로그 재생을 통한 복원을 구현합니다. 이 접근 방식은 자체 관리형 Linux 기반 Db2 데이터베이스의 백업을 가져와 RDS for Db2 서버에 복원합니다. Amazon RDS 저장 프로시저를 사용하면 후속 트랜잭션 로그를 적용하여 데이터베이스를 최신 상태로 유지합니다.

**Topics**
+ [가동 중지 시간이 거의 없는 마이그레이션에 대한 제한 사항 및 권장 사항](#db2-near-zero-downtime-migration-limitations)
+ [Amazon S3로 데이터베이스 백업](#db2-near-zero-downtime-backing-up-database)
+ [기본 자동 스토리지 그룹 생성](#db2-near-zero-migration-creating-auto-storage-group)
+ [Db2 데이터베이스 마이그레이션](#db2-migrating-db2-database)

## 가동 중지 시간이 거의 없는 마이그레이션에 대한 제한 사항 및 권장 사항
<a name="db2-near-zero-downtime-migration-limitations"></a>

가동 중지 시간이 거의 없는 마이그레이션을 사용하는 경우 다음과 같은 제한 사항과 권장 사항이 적용됩니다.
+ Amazon RDS는 가동 중지 시간이 거의 없는 마이그레이션을 위해 온라인 백업이 필요합니다. 아카이브된 트랜잭션 로그를 업로드할 때 Amazon RDS가 데이터베이스를 롤포워드 보류 상태로 유지하기 때문입니다. 자세한 내용은 [Db2 데이터베이스 마이그레이션](#db2-migrating-db2-database) 섹션을 참조하세요.
+ RDS for Db2 DB 인스턴스가 위치한 리전과 다른 AWS 리전에서는 Amazon S3 버킷으로 복원할 수 없습니다.
+ Amazon S3는 S3 버킷에 업로드되는 파일 크기를 5TB로 제한합니다. 데이터베이스 백업 파일이 5TB를 초과하는 경우 백업 파일을 더 작은 파일로 분할하세요.
+ Amazon RDS는 울타리가 없는 외부 루틴, 증분 복원 또는 Delta 복원을 지원하지 않습니다.
+ 암호화된 원본 데이터베이스에서 복원할 수 없지만 암호화된 Amazon RDS DB 인스턴스로 복원할 수 있습니다.

복원 프로세스는 구성에 따라 다릅니다.

`USE_STREAMING_RESTORE`를 `TRUE`로 설정하면 Amazon RDS는 복원 중에 S3 버킷에서 백업을 직접 스트리밍합니다. 스트리밍은 스토리지 요구 사항을 크게 줄입니다. 백업 크기 또는 원본 데이터베이스 크기 중 더 큰 크기와 같거나 더 큰 스토리지 공간만 프로비저닝하면 됩니다.

`USE_STREAMING_RESTORE`를 `FALSE`로 설정하면 Amazon RDS는 먼저 백업을 RDS for Db2 DB 인스턴스에 다운로드한 다음 백업을 추출합니다. 추출에는 추가 스토리지 공간이 필요합니다. 백업 크기와 원본 데이터베이스 크기를 합한 크기보다 크거나 같은 저장 공간을 프로비저닝해야 합니다.

복원된 데이터베이스의 최대 크기는 지원되는 최대 데이터베이스 크기에서 복원 프로세스 중 임시 스토리지에 필요한 공간을 뺀 값과 같습니다.

## Amazon S3로 데이터베이스 백업
<a name="db2-near-zero-downtime-backing-up-database"></a>

Amazon S3에 데이터베이스를 백업하려면 다음 AWS 구성 요소가 필요합니다.
+ **백업 파일을 저장하는 Amazon S3 버킷: Amazon RDS로 마이그레이션하려는 모든 백업 파일을 업로드합니다. Amazon RDS는 가동 중지 시간이 거의 없는 마이그레이션을 위해 온라인 백업이 필요합니다. S3 버킷이 이미 있다면 해당 버킷을 사용할 수 있습니다. S3 버킷이 없는 경우 **Amazon S3 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.
**참고**  
데이터베이스가 크고 S3 버킷으로 전송하는 데 시간이 오래 걸리는 경우 AWS Snow Family 디바이스를 주문하고 AWS에 백업을 수행하도록 요청할 수 있습니다. 파일을 디바이스에 복사하여 Snow Family 팀에 반환하면 팀은 백업된 이미지를 S3 버킷으로 전송합니다. 자세한 내용은 [AWS Snow Family 설명서](https://docs.aws.amazon.com/snowball/)를 참조하세요.
+ **S3 버킷에 액세스하기 위한 IAM 역할: 이미 AWS Identity and Access Management(IAM) 역할이 있다면 해당 역할을 사용할 수 있습니다. 역할이 없는 경우 [2단계: IAM 역할 생성 및 IAM 정책 연결](db2-s3-integration.md#db2-creating-iam-role) 섹션을 참조하세요.
+ **IAM 역할에 연결된 신뢰 관계 및 권한이 포함된 IAM 정책: 자세한 내용은 [1단계: IAM 정책 생성](db2-s3-integration.md#db2-creating-iam-policy) 섹션을 참조하세요.
+ **RDS for Db2 DB 인스턴스에 추가된 IAM 역할: 자세한 내용은 [3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가](db2-s3-integration.md#db2-adding-iam-role) 섹션을 참조하세요.

## 기본 자동 스토리지 그룹 생성
<a name="db2-near-zero-migration-creating-auto-storage-group"></a>

소스 데이터베이스에 기본 자동 스토리지 그룹이 있어야 합니다. 데이터베이스에 기본 자동 스토리지 그룹이 없는 경우 새 자동 스토리지 그룹을 만들어야 합니다.

**기본 자동 스토리지 그룹을 만들려면**

1. 소스 데이터베이스에 연결합니다. 다음 예제에서 *source\$1database*를 데이터베이스 이름으로 바꿉니다.

   ```
   db2 connect to source_database 
   ```

1. 자동 스토리지 그룹을 생성하고 이를 기본값으로 설정합니다. 다음 예제에서 *storage\$1path*를 스토리지 그룹이 있는 절대 경로로 바꿉니다.

   ```
   db2 "create stogroup IBMSTOGROUP ON storage_path set as default"
   ```

1. 백엔드 프로세스를 종료합니다.

   ```
   db2 terminate
   ```

## Db2 데이터베이스 마이그레이션
<a name="db2-migrating-db2-database"></a>

가동 중지 시간이 거의 없는 마이그레이션을 설정하고 나면 Amazon S3 버킷의 Db2 데이터베이스를 RDS for Db2 DB 인스턴스로 마이그레이션할 준비가 된 것입니다.

**Amazon S3 버킷에서 RDS for Db2 DB 인스턴스로 백업 파일의 가동 중지 시간이 거의 없는 마이그레이션 수행**

1. 소스 데이터베이스를 온라인으로 백업합니다. 자세한 내용은 IBM Db2 설명서의 [BACKUP DATABASE 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-backup-database)을 참조하세요.

1. Amazon S3 버킷에 데이터베이스 백업을 복사합니다. Amazon S3 사용에 대한 자세한 내용은 [Amazon Simple Storage Service 사용 설명서](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)를 참조하세요.

1. RDS for Db2 DB 인스턴스의 *master\$1username* 및 *master\$1password*를 사용하여 `rdsadmin` 서버에 연결합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. (선택 사항) 데이터베이스가 최적의 설정으로 구성되어 있는지 확인하려면 [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)을 직접적으로 호출하여 다음 파라미터의 값을 확인합니다.
   + `RESTORE_DATABASE_NUM_BUFFERS`
   + `RESTORE_DATABASE_PARALLELISM`
   + `RESTORE_DATABASE_NUM_MULTI_PATHS`
   + `USE_STREAMING_RESTORE`

   필요에 따라 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)을 사용하여 이러한 값을 수정합니다. 이러한 파라미터를 적절하게 구성하면 대량의 데이터로 데이터베이스를 복원할 때 성능이 크게 향상될 수 있습니다. 대부분의 마이그레이션 시나리오에서는 스토리지 요구 사항을 줄이고 복원 속도를 개선할 수 있으므로 `USE_STREAMING_RESTORE`를 `TRUE`로 설정하는 것이 좋습니다.

1. `rdsadmin.restore_database`를 호출하여 RDS for Db2 서버의 백업을 복원합니다. `backup_type`를 `ONLINE`으로 설정합니다. 자세한 내용은 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 섹션을 참조하세요.

1. 소스 서버에서 S3 버킷으로 아카이브 로그를 복사합니다. 자세한 내용은 IBM Db2 설명서의 [아카이브 로깅](https://www.ibm.com/docs/en/db2/11.5?topic=logging-archive)을 참조하세요.

1. `rdsadmin.rollforward_database`를 호출하여 필요한 횟수만큼 아카이브 로그를 적용합니다. 데이터베이스를 `ROLL-FORWARD PENDING` 상태로 유지하려면 `complete_rollforward`를 `FALSE`로 설정합니다. 자세한 내용은 [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database) 섹션을 참조하세요.

1. 모든 아카이브 로그를 적용한 후 `rdsadmin.complete_rollforward`를 호출하여 데이터베이스를 온라인 상태로 전환합니다. 자세한 내용은 [rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward) 섹션을 참조하세요.

1. 데이터베이스의 애플리케이션 엔드포인트를 업데이트하거나 트래픽을 RDS for Db2 서버로 리디렉션하도록 DNS 엔드포인트를 업데이트하여 애플리케이션 연결을 RDS for Db2 서버로 전환합니다. RDS for Db2 데이터베이스 엔드포인트와 함께 자체 관리형 Db2 데이터베이스에서 Db2 자동 클라이언트 경로 변경 기능을 사용할 수도 있습니다. 자세한 내용은 IBM Db2 설명서의 [자동 클라이언트 경로 변경 설명 및 설정](https://www.ibm.com/docs/en/db2/11.5?topic=reroute-configuring-automatic-client)을 참조하세요.

1. (선택 사항) 소스 데이터베이스를 종료합니다.

# Amazon RDS for Db2에 대해 Linux에서 Linux로 동기식 마이그레이션
<a name="db2-synchronous-migration-linux"></a>

이 마이그레이션 접근 방식을 사용하면 자체 관리형 Db2 데이터베이스와 Amazon RDS for Db2 DB 인스턴스 간에 복제를 설정합니다. 자체 관리형 데이터베이스의 변경 내용은 거의 실시간으로 RDS for Db2 DB 인스턴스에 복제됩니다. 이 접근 방식을 사용하면 마이그레이션 프로세스 중에 지속적인 가용성을 제공하고 가동 중지를 최소화할 수 있습니다.

# AIX 또는 Windows에서 Amazon RDS for Db2의 Linux로 마이그레이션
<a name="db2-one-time-migration-aix-windows-linux"></a>

이 마이그레이션 접근 방식에서는 기본 Db2 도구를 사용하여 자체 관리형 Db2 데이터베이스를 Amazon S3 버킷에 백업합니다. 기본 Db2 도구에는 `export` 유틸리티, `db2move` 시스템 명령 또는 `db2look` 시스템 명령이 포함됩니다. Db2 데이터베이스는 자체 관리형으로 또는 Amazon Elastic Compute Cloud(Amazon EC2)에서 사용할 수 있습니다. AIX 또는 Windows 시스템에서 Amazon S3 버킷으로 데이터를 이동할 수 있습니다. 그런 다음 Db2 클라이언트를 사용하여 S3 버킷에서 Amazon RDS for Db2 데이터베이스로 직접 데이터를 로드합니다. 가동 중지 시간은 데이터베이스 크기에 따라 다릅니다. Amazon S3 사용에 대한 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md) 섹션을 참조하세요.

**Db2 데이터베이스를 RDS for Db2로 마이그레이션하려면**

1. 데이터베이스 백업을 준비합니다. 자체 관리형 Db2 시스템에 백업을 보관할 수 있는 충분한 양의 스토리지를 구성합니다.

1. 데이터베이스를 백업합니다.

   1. [db2look 시스템 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2look-db2-statistics-ddl-extraction-tool)을 실행하여 모든 객체의 데이터 정의 언어(DDL) 파일을 추출합니다.

   1. [Db2 내보내기 유틸리티](https://www.ibm.com/docs/en/db2/11.5?topic=utility-exporting-data), [db2move 시스템 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2move-database-movement-tool) 또는 [CREATE EXTERNAL TABLE 문](https://www.ibm.com/docs/en/db2/11.5?topic=statements-create-table-external)을 실행하여 Db2 표 데이터를 Db2 시스템의 스토리지로 언로드합니다.

1. 백업을 Amazon S3 버킷으로 이동합니다. 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md) 단원을 참조하십시오.
**참고**  
데이터베이스가 크고 S3 버킷으로 전송하는 데 시간이 오래 걸리는 경우 AWS Snow Family 디바이스를 주문하고 AWS에 백업을 수행하도록 요청할 수 있습니다. 파일을 디바이스에 복사하여 Snow Family 팀에 반환하면 팀은 백업된 이미지를 S3 버킷으로 전송합니다. 자세한 내용은 [AWS Snow Family 설명서](https://docs.aws.amazon.com/snowball/)를 참조하십시오.

1. Db2 클라이언트를 사용하여 S3 버킷에서 RDS for Db2 데이터베이스로 직접 데이터를 로드합니다. 자세한 내용은 [Amazon S3로 마이그레이션](db2-migration-load-from-s3.md) 단원을 참조하십시오.

# Amazon S3를 통해 Amazon RDS for Db2로 Db2 데이터 마이그레이션
<a name="db2-migration-load-from-s3"></a>

이 마이그레이션 접근 방식을 사용하면 먼저 단일 테이블의 데이터를 데이터 파일에 저장하고 Amazon S3 버킷에 저장합니다. 그런 다음 [LOAD 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)을 사용하여 해당 데이터 파일의 데이터를 Amazon RDS for Db2 데이터베이스의 테이블로 로드합니다. Amazon S3 사용에 대한 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md) 섹션을 참조하세요.

**Topics**
+ [Amazon S3에 데이터 저장](#db2-migration-load-from-s3-saving-data-file)
+ [RDS for Db2 테이블에 데이터 로드](#db2-migration-load-from-s3-into-db-table)

## Amazon S3에 데이터 저장
<a name="db2-migration-load-from-s3-saving-data-file"></a>

단일 테이블의 데이터를 Amazon S3에 저장하려면 데이터베이스 유틸리티를 사용하여 데이터베이스 관리 시스템(DBMS)에서 CSV 파일로 데이터를 추출하세요. 그런 다음 각 파일을 Amazon S3에 업로드합니다.

Amazon S3에 데이터 파일을 저장하려면 다음 AWS 구성 요소가 필요합니다.
+ *백업 파일을 저장할 Amazon S3 버킷*: S3 버킷이 이미 있다면 해당 버킷을 사용할 수 있습니다. S3 버킷이 없는 경우 **Amazon S3 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.
+ **S3 버킷에 액세스하기 위한 IAM 역할: 이미 IAM 역할이 있다면 해당 역할을 사용할 수 있습니다. 역할이 없는 경우 [2단계: IAM 역할 생성 및 IAM 정책 연결](db2-s3-integration.md#db2-creating-iam-role) 섹션을 참조하세요.
+ **IAM 역할에 연결된 신뢰 관계 및 권한이 포함된 IAM 정책: 자세한 내용은 [1단계: IAM 정책 생성](db2-s3-integration.md#db2-creating-iam-policy) 섹션을 참조하세요.
+ **RDS for Db2 DB 인스턴스에 추가된 IAM 역할: 자세한 내용은 [3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가](db2-s3-integration.md#db2-adding-iam-role) 섹션을 참조하세요.

## RDS for Db2 테이블에 데이터 로드
<a name="db2-migration-load-from-s3-into-db-table"></a>

Amazon S3에 데이터 파일을 저장한 후 이러한 파일의 데이터를 RDS for Db2 DB 인스턴스의 개별 테이블로 로드할 수 있습니다.

**Db2 테이블 데이터를 RDS for Db2 DB 데이터베이스 테이블에 로드하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 저장된 파일이 보관되는 Amazon S3 버킷으로 연결되는 스토리지 액세스 별칭을 카탈로그화합니다. 다음 단계에서 사용할 수 있도록 이 별칭의 이름을 적어 둡니다. 동일한 Amazon S3 버킷에 저장된 데이터 파일에서 여러 테이블을 로드하려는 경우 이 단계를 한 번만 수행하면 됩니다.

   다음 예제는 *jorge\$1souza*라는 사용자에게 *amzn-s3-demo-bucket*이라는 이름의 버킷에 대한 액세스 권한을 부여하는 *my\$1s3\$1alias*라는 별칭을 카탈로그화합니다.

   ```
   db2 "call rdsadmin.catalog_storage_access(?, 'my_s3_alias', 'amzn-s3-demo-bucket', 'USER', 'jorge_souza')"
   ```

   이 저장 절차에 대한 자세한 내용은 [rdsadmin.catalog\$1storage\$1access](db2-sp-managing-storage-access.md#db2-sp-catalog-storage-access) 단원을 참조하세요.

1. Amazon S3 버킷으로 연결되는 스토리지 액세스 별칭을 사용하여 `LOAD` 명령을 실행합니다.
**참고**  
`LOAD` 명령에서 오류가 반환되는 경우 Amazon S3용 VPC 게이트웨이 엔드포인트를 생성하고 보안 그룹에 아웃바운드 규칙을 추가해야 할 수 있습니다. 자세한 내용은 [파일 I/O 오류](db2-troubleshooting.md#db2-file-input-output-error) 섹션을 참조하세요.

   다음 예제에서는 *my\$1s3\$1datafile.csv*라는 데이터 파일의 데이터를 *my\$1db2\$1table*이라는 테이블로 로드합니다. 이 예제에서는 *my\$1s3\$1alias*라는 별칭이 연결된 Amazon S3 버킷에 데이터 파일이 있다고 가정합니다.

   ```
   db2 "load from db2remote://my_s3_alias//my_s3_datafile.csv of DEL insert into my_db2_table";
   ```

   다음 예제에서는 *my\$1table1\$1export.ixf*라는 데이터 파일의 LOB를 *my\$1db2\$1table*이라는 테이블로 로드합니다. 이 예제에서는 *my\$1s3\$1alias*라는 별칭이 연결된 Amazon S3 버킷에 데이터 파일이 있다고 가정합니다.

   ```
   db2 "call sysproc.admin_cmd('load from "db2remote://my_s3_alias//my_table1_export.ixf" of ixf
           lobs from "db2remote://my_s3_alias//" xml from "db2remote://my_s3_alias//"
           modified by lobsinfile implicitlyhiddeninclude identityoverride generatedoverride periodoverride transactionidoverride
           messages on server
           replace into "my_schema"."my_db2_table"
                                  nonrecoverable
           indexing mode incremental allow no access')"
   ```

   RDS for Db2 DB 인스턴스에서 테이블에 로드하려는 Amazon S3 버킷의 각 데이터 파일에 대해 이 단계를 반복합니다.

   `LOAD` 명령에 대한 자세한 내용은 [LOAD 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)을 참조하세요.

# AWS Database Migration Service(AWS DMS)를 사용하여 Amazon RDS for Db2로 마이그레이션
<a name="db2-migration-amazon-dms"></a>

일회성 마이그레이션에 AWS DMS를 사용하고 Linux, Unix(예: AIX) 및 Windows의 Db2에서 Amazon RDS for Db2로 동기화할 수 있습니다. 자세한 내용은 [AWS Database Migration Service란 무엇인가요?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)를 참조하세요.

# 기본 Db2 도구를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션
<a name="db2-native-db2-tools"></a>

몇 가지 네이티브 Db2 도구, 유틸리티 및 명령을 사용하여 Db2 데이터베이스의 데이터를 Amazon RDS for Db2 데이터베이스로 직접 이동할 수 있습니다. 이러한 기본 Db2 도구를 사용하려면 클라이언트 머신을 RDS for Db2 DB 인스턴스에 연결할 수 있어야 합니다. 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스에 클라이언트 머신 연결](db2-connecting-client-rds.md) 단원을 참조하십시오.

**참고**  
데이터를 이동하는 또 다른 방법은 먼저 Amazon S3 버킷에 저장한 다음 `LOAD` 명령을 사용하여 RDS for Db2 데이터베이스의 테이블로 데이터를 전송하는 것입니다. 이 방법은 RDS for Db2와 S3 간의 네트워크 연결이 양호하기 때문에 대량의 데이터를 마이그레이션할 때 최상의 성능을 제공합니다. 자세한 내용은 [Amazon S3를 통해 Amazon RDS for Db2로 Db2 데이터 마이그레이션](db2-migration-load-from-s3.md) 단원을 참조하십시오.


| 도구 이름 | 사용 사례 | 제한 사항 | 
| --- | --- | --- | 
|  [db2look](db2-native-db2-tools-db2look.md)  |  자체 관리형 Db2 데이터베이스의 메타데이터를 RDS for Db2 데이터베이스로 복사합니다.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 
|  [IMPORT 명령](db2-native-db2-tools-import.md)  |  소형 표와 대형 객체(LOB)가 있는 표를 클라이언트 머신에서 RDS for Db2 DB 인스턴스로 마이그레이션합니다.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 
|  [INGEST 유틸리티](db2-native-db2-tools-ingest.md)   |  클라이언트 머신에 대형 객체(LOB)가 없는 파일 및 파이프의 데이터를 RDS for Db2 DB 인스턴스로 지속적으로 스트리밍합니다.** `INSERT` 및 `MERGE` 작업을 지원합니다.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 
|  [INSERT 명령](db2-native-db2-tools-insert.md)  |  자체 관리형 Db2 데이터베이스에서 RDS for Db2 데이터베이스로 소형 표의 데이터를 복사합니다.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 
|  [LOAD CLIENT 명령](db2-native-db2-tools-load.md)  |  대형 객체(LOB)가 없는 소형 표를 클라이언트 머신에서 RDS for Db2 DB 인스턴스로 마이그레이션합니다.**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 

# Amazon RDS for Db2 DB 인스턴스에 클라이언트 머신 연결
<a name="db2-connecting-client-rds"></a>

기본 Db2 도구를 사용하여 Db2 데이터베이스의 데이터를 Amazon RDS for Db2 데이터베이스로 이동하려면 먼저 클라이언트 머신을 RDS for Db2 DB 인스턴스에 연결해야 합니다.

클라이언트 머신은 다음 중 하나일 수 있습니다.
+ Linux, Windows 또는 macOS의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스. 이 인스턴스는 RDS for Db2 DB 인스턴스, AWS Cloud9 또는 AWS CloudShell과 동일한 Virtual Private Cloud(VPC)에 있어야 합니다.
+ Amazon EC2 인스턴스의 자체 관리형 Db2 인스턴스. 인스턴스는 동일한 VPC에 있어야 합니다.
+ Amazon EC2 인스턴스의 자체 관리형 Db2 인스턴스. VPC 피어링을 활성화한 경우 인스턴스가 서로 다른 VPC에 있을 수 있습니다. 자세한 내용은 Amazon Virtual Private Cloud VPC 피어링 가이드**의 [VPC 피어링 연결 생성](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html)을 참조하세요.
+ 자체 관리 환경에서 Linux, Windows 또는 macOS를 실행하는 로컬 시스템. RDS for Db2에 공개적으로 연결할 수 있거나 자체 관리형 Db2 인스턴스 및 AWS 간에 VPN 연결을 활성화해야 합니다.

클라이언트 머신을 RDS for Db2 DB 인스턴스에 연결하려면 IBM Db2 Data Management Console을 사용하여 클라이언트 머신에 로그인하세요. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 및 [IBM Db2 Data Management Console](db2-connecting-with-ibm-data-management-console.md)(을)를 참조하세요.

AWS Database Migration Service(AWS DMS)를 사용하여 데이터베이스에 대해 쿼리를 실행하고, SQL 실행 계획을 실행하고, 데이터베이스를 모니터링할 수 있습니다. 자세한 내용은 **AWS Database Migration Service 사용 설명서의 [AWS Database Migration Service란 무엇인가요?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)를 참조하세요.

클라이언트 머신을 RDS for Db2 DB 인스턴스에 성공적으로 연결했으면 기본 Db2 도구를 사용하여 데이터를 복사할 수 있습니다. 자세한 내용은 [기본 Db2 도구를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션](db2-native-db2-tools.md) 섹션을 참조하세요.

# db2look을 사용하여 Db2에서 Amazon RDS for Db2로 데이터베이스 메타데이터 복사
<a name="db2-native-db2-tools-db2look"></a>

`db2look`은 데이터 정의 언어(DDL) 파일, 객체, 권한, 구성, WLM 및 데이터베이스 레이아웃을 추출하는 기본 Db2 도구입니다. `db2look`을 사용하여 자체 관리형 Db2 데이터베이스의 데이터베이스 메타데이터를 Amazon RDS for Db2 데이터베이스로 복사할 수 있습니다. 자세한 내용은 IBM Db2 설명서의 [db2look을 사용한 데이터베이스 모방](https://www.ibm.com/docs/en/db2/11.5?topic=tools-db2look)을 참조하세요.

**데이터베이스 메타데이터를 복사하려면**

1. 자체 관리형 Db2 시스템에서 `db2look` 도구를 실행하여 DDL 파일을 추출합니다. 다음 예제에서 *database\$1name*을 Db2 데이터베이스 이름으로 바꿉니다.

   ```
   db2look -d database_name -e -l -a -f -wlm -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 클라이언트 머신이 소스(자체 관리형 Db2) 데이터베이스 및 RDS for Db2 DB 인스턴스에 액세스할 수 있는 경우 원격 인스턴스에 직접 연결하여 클라이언트 머신에 `db2look.sql` 파일을 생성할 수 있습니다. 그런 다음 원격 자체 관리형 Db2 인스턴스를 카탈로그화합니다.

   1. 노드를 카탈로그화합니다. 다음 예제에서 *dns\$1ip\$1address* 및 *port*를 자체 관리형 Db2 데이터베이스의 DNS 이름 또는 IP 주소 및 포트 번호로 대체합니다.

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. 데이터베이스를 카탈로그화합니다. 다음 예제에서 *source\$1database\$1name* 및 *source\$1database\$1alias*를 자체 관리형 Db2 데이터베이스의 이름과 이 데이터베이스에 사용할 별칭으로 바꿉니다.

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \ 
          authentication server_encrypt
      ```

   1. 소스 데이터베이스에 연결합니다. 다음 예제에서 *source\$1database\$1alias*, *user\$1id*, *user\$1password*를 이전 단계에서 만든 별칭과 자체 관리형 Db2 데이터베이스의 사용자 ID 및 암호로 대체합니다.

      ```
      db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
          -cor -createdb -printdbcfg -o db2look.sql
      ```

1. 클라이언트 머신에서 원격 자체 관리형 Db2 데이터베이스에 액세스할 수 없는 경우 `db2look.sql` 파일을 클라이언트 머신에 복사합니다. 그런 다음 RDS for Db2 DB 인스턴스를 카탈로그화합니다.

   1. 노드를 카탈로그화합니다. 다음 예제에서 *dns\$1ip\$1address* 및 *port*를 RDS for Db2 DB 인스턴스의 DNS 이름 또는 IP 주소 및 포트 번호로 대체합니다.

      ```
      db2 catalog tcpip node remnode REMOTE dns_ip_address server port
      ```

   1. 데이터베이스를 카탈로그화합니다. 다음 예제에서 *rds\$1database\$1name* 및 *rds\$1database\$1alias*를 RDS for Db2 데이터베이스의 이름과 이 데이터베이스에 사용할 별칭으로 바꿉니다.

      ```
      db2 catalog database rds_database_name as rds_database_alias at node remnode \ 
          authentication server_encrypt
      ```

   1. RDS for Db2를 관리하는 관리 데이터베이스를 카탈로그화합니다. 데이터를 저장하는 데는 이 데이터베이스를 사용할 수 없습니다.

      ```
      db2 catalog database rdsadmin as rdsadmin at node remnode authentication server_encrypt
      ```

1. 버퍼 풀과 테이블스페이스를 생성합니다. 관리자는 버퍼 풀이나 테이블스페이스를 생성할 권한이 없습니다. 하지만 Amazon RDS 저장 프로시저를 사용하여 생성할 수는 있습니다.

   1. `db2look.sql` 파일에서 버퍼 풀과 테이블스페이스의 이름과 정의를 찾습니다.

   1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 Amazon RDS에 연결합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

      ```
      db2 connect to rdsadmin user master_username using master_password
      ```

   1. `rdsadmin.create_bufferpool`을 호출하여 버퍼 풀을 생성합니다. 자세한 내용은 [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool) 단원을 참조하십시오.

      ```
      db2 "call rdsadmin.create_bufferpool(
          'database_name', 
          'buffer_pool_name', 
          buffer_pool_size, 
          'immediate', 
          'automatic', 
          page_size, 
          number_block_pages, 
          block_size)"
      ```

   1. `rdsadmin.create_tablespace`를 호출하여 테이블스페이스를 생성합니다. 자세한 내용은 [rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace) 단원을 참조하십시오.

      ```
      db2 "call rdsadmin.create_tablespace(
          'database_name', 
          'tablespace_name',
          'buffer_pool_name', 
          tablespace_initial_size, 
          tablespace_increase_size, 
          'tablespace_type')"
      ```

   1. 추가하려는 각 추가 버퍼 풀 또는 테이블스페이스에 대해 c 또는 d 단계를 반복합니다.

   1. 연결을 종료합니다.

      ```
      db2 terminate
      ```

1. 표와 객체를 생성합니다.

   1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 RDS for Db2 데이터베이스에 연결합니다. 다음 예제에서 *rds\$1database\$1name*, *master\$1username*, *master\$1password*를 사용자 자체 정보로 바꿉니다.

      ```
      db2 connect to rds_database_name user master_username using master_password
      ```

   1. `db2look.sql` 파일을 실행합니다.

      ```
      db2 -tvf db2look.sql
      ```

   1. 연결을 종료합니다.

      ```
      db2 terminate
      ```

# IMPORT 명령을 사용하여 클라이언트 시스템에서 Amazon RDS for Db2로 데이터 가져오기
<a name="db2-native-db2-tools-import"></a>

클라이언트 머신에서 `IMPORT` 명령을 사용하여 Amazon RDS for Db2 서버로 데이터를 가져올 수 있습니다.

**중요**  
`IMPORT` 명령 메서드는 소형 표와 대형 객체(LOB)가 포함된 표를 마이그레이션하는 데 유용합니다. `INSERT` 및 `DELETE` 로깅 작업 때문에 `IMPORT` 명령이 `LOAD` 유틸리티보다 느립니다. 클라이언트 머신과 RDS for Db2 사이의 네트워크 대역폭이 제한적인 경우 다른 마이그레이션 방법을 사용하는 것이 좋습니다. 자세한 내용은 [기본 Db2 도구를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션](db2-native-db2-tools.md) 단원을 참조하십시오.

**RDS for Db2 서버로 데이터를 가져오려면**

1. IBM Db2 Data Management Console을 사용하여 클라이언트 머신에 로그인합니다. 자세한 내용은 [IBM Db2 Data Management Console을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-ibm-data-management-console.md) 단원을 참조하십시오.

1. 클라이언트 머신에 있는 RDS for Db2 데이터베이스를 카탈로그화합니다.

   1. 노드를 카탈로그화합니다. 다음 예제에서 *dns\$1ip\$1address* 및 *port*를 자체 관리형 Db2 데이터베이스의 DNS 이름 또는 IP 주소 및 포트 번호로 대체합니다.

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. 데이터베이스를 카탈로그화합니다. 다음 예제에서 *source\$1database\$1name* 및 *source\$1database\$1alias*를 자체 관리형 Db2 데이터베이스의 이름과 이 데이터베이스에 사용할 별칭으로 바꿉니다.

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \
          authentication server_encrypt
      ```

1. 소스 데이터베이스에 연결합니다. 다음 예제에서 *source\$1database\$1alias*, *user\$1id*, *user\$1password*를 이전 단계에서 만든 별칭과 자체 관리형 Db2 데이터베이스의 사용자 ID 및 암호로 대체합니다.

   ```
   db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
       -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 자체 관리형 Db2 시스템에서 ` EXPORT` 명령을 사용하여 데이터 파일을 생성합니다. 다음 예제에서 *directory*를 데이터 파일이 있는 클라이언트 머신의 디렉터리로 바꿉니다. *file\$1name* 및 *table\$1name*을 데이터 파일 이름 및 표 이름으로 바꿉니다.

   ```
   db2 "export to /directory/file_name.txt of del lobs to /directory/lobs/ \
       modified by coldel\| select * from table_name"
   ```

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 RDS for Db2 데이터베이스에 연결합니다. 다음 예제에서 **rds\$1database\$1alias**, *master\$1username*, *master\$1password*를 사용자 자체 정보로 바꿉니다.

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. `IMPORT` 명령을 사용하여 클라이언트 머신의 파일에서 원격 RDS for Db2 데이터베이스로 데이터를 가져올 수 있습니다. 자세한 내용은 IBM Db2 설명서의 [IMPORT 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-import)을 참조하세요. 다음 예제에서 *directory* 및 *file\$1name*을 데이터 파일이 있는 클라이언트 머신의 디렉터리와 데이터 파일 이름으로 바꿉니다. *SCHEMA\$1NAME* 및 *TABLE\$1NAME*을 스키마 및 표 이름으로 바꿉니다.

   ```
   db2 "IMPORT from /directory/file_name.tbl OF DEL LOBS FROM /directory/lobs/ \
       modified by coldel\| replace into SCHEMA_NAME.TABLE_NAME"
   ```

1. 연결을 종료합니다.

   ```
   db2 terminate
   ```

# LOAD 명령을 사용하여 클라이언트 시스템에서 Amazon RDS for Db2로 데이터 가져오기
<a name="db2-native-db2-tools-load"></a>

`LOAD CLIENT` 명령을 사용하여 클라이언트 머신의 파일 데이터를 RDS for Db2 서버로 로드할 수 있습니다. RDS for Db2 서버에는 SSH 연결이 없으므로, 자체 관리형 Db2 서버 또는 Db2 클라이언트 머신에서 `LOAD CLIENT` 명령을 사용할 수 있습니다.

**중요**  
`LOAD CLIENT` 명령 메서드는 소형 표를 마이그레이션하는 데 유용합니다. 클라이언트와 RDS for Db2 사이의 네트워크 대역폭이 제한적인 경우 다른 마이그레이션 방법을 사용하는 것이 좋습니다. 자세한 내용은 [기본 Db2 도구를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션](db2-native-db2-tools.md)을 참조하세요.  
데이터 파일에 대형 객체 파일 이름에 대한 참조가 포함된 경우 Db2 서버에 대형 객체(LOB)가 있어야 하므로, `LOAD` 명령이 작동하지 않습니다. 클라이언트 머신에서 RDS for Db2 서버로 LOB를 로드하려고 하면 SQL3025N 오류가 발생합니다. 대신 [IMPORT 명령](db2-native-db2-tools-import.md)을 사용하세요.

**RDS for Db2 서버로 데이터를 로드하려면**

1. IBM Db2 Data Management Console을 사용하여 클라이언트 머신에 로그인합니다. 자세한 내용은 [IBM Db2 Data Management Console을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결](db2-connecting-with-ibm-data-management-console.md) 단원을 참조하십시오.

1. 클라이언트 머신에 있는 RDS for Db2 데이터베이스를 카탈로그화합니다.

   1. 노드를 카탈로그화합니다. 다음 예제에서 *dns\$1ip\$1address* 및 *port*를 자체 관리형 Db2 데이터베이스의 DNS 이름 또는 IP 주소 및 포트 번호로 대체합니다.

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. 데이터베이스를 카탈로그화합니다. 다음 예제에서 *source\$1database\$1name* 및 *source\$1database\$1alias*를 자체 관리형 Db2 데이터베이스의 이름과 이 데이터베이스에 사용할 별칭으로 바꿉니다.

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \
          authentication server_encrypt
      ```

1. 소스 데이터베이스에 연결합니다. 다음 예제에서 *source\$1database\$1alias*, *user\$1id*, *user\$1password*를 이전 단계에서 만든 별칭과 자체 관리형 Db2 데이터베이스의 사용자 ID 및 암호로 대체합니다.

   ```
   db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
       -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 자체 관리형 Db2 시스템에서 `EXPORT` 명령을 사용하여 데이터 파일을 생성합니다. 다음 예제에서 *directory*를 데이터 파일이 있는 클라이언트 머신의 디렉터리로 바꿉니다. *file\$1name* 및 *TABLE\$1NAME*을 데이터 파일 이름 및 표 이름으로 바꿉니다.

   ```
   db2 "export to /directory/file_name.txt of del modified by coldel\| \
       select * from TPCH.TABLE_NAME"
   ```

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 RDS for Db2 데이터베이스에 연결합니다. 다음 예제에서 **rds\$1database\$1alias**, *master\$1username*, *master\$1password*를 사용자 자체 정보로 바꿉니다.

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. `LOAD` 명령을 사용하여 클라이언트 머신의 파일에서 원격 RDS for Db2 데이터베이스로 데이터를 로드합니다. 자세한 내용은 IBM Db2 설명서의 [LOAD 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)을 참조하세요. 다음 예제에서 *directory*를 데이터 파일이 있는 클라이언트 머신의 디렉터리로 바꿉니다. *file\$1name* 및 *TABLE\$1NAME*을 데이터 파일 이름 및 표 이름으로 바꿉니다.

   ```
   db2 "LOAD CLIENT from /directory/file_name.txt \
       modified by coldel\| replace into TPCH.TABLE_NAME \
       nonrecoverable without prompting"
   ```

1. 연결을 종료합니다.

   ```
   db2 terminate
   ```

# INSERT 명령을 사용하여 Db2에서 Amazon RDS for Db2로 데이터 가져오기
<a name="db2-native-db2-tools-insert"></a>

자체 관리형 Db2 서버에서 `INSERT` 명령을 사용하여 Amazon RDS for Db2 데이터베이스에 데이터를 삽입할 수 있습니다. 이 마이그레이션 방식에서는 원격 RDS for Db2 DB 인스턴스의 별명을 사용합니다. 자체 관리형 Db2 데이터베이스(소스)는 RDS for Db2 데이터베이스(대상)에 연결할 수 있어야 합니다.

**중요**  
`INSERT` 명령 메서드는 소형 표를 마이그레이션하는 데 유용합니다. 자체 관리형 Db2 데이터베이스와 RDS for Db2 데이터베이스 간의 네트워크 대역폭이 제한적인 경우 다른 마이그레이션 방법을 사용하는 것이 좋습니다. 자세한 내용은 [기본 Db2 도구를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션](db2-native-db2-tools.md) 단원을 참조하십시오.

**자체 관리형 Db2 데이터베이스의 데이터를 RDS for Db2 데이터베이스로 복사하려면**

1. 자체 관리형 Db2 인스턴스에서 RDS for Db2 DB 인스턴스를 카탈로그화합니다.

   1. 노드를 카탈로그화합니다. 다음 예제에서 *dns\$1ip\$1address* 및 *port*를 자체 관리형 Db2 데이터베이스의 DNS 이름 또는 IP 주소 및 포트 번호로 대체합니다.

      ```
      db2 catalog tcpip node remnode REMOTE dns_ip_address SERVER port
      ```

   1. 데이터베이스를 카탈로그화합니다. 다음 예제에서 *rds\$1database\$1name*을 RDS for Db2 DB 인스턴스의 데이터베이스 이름으로 바꿉니다.

      ```
      db2 catalog database rds_database_name as remdb at node remnode \
          authentication server_encrypt
      ```

1. 자체 관리형 Db2 인스턴스에서 페더레이션을 활성화합니다. 다음 예제에서 *source\$1database\$1name*을 자체 관리형 Db2 인스턴스의 데이터베이스 이름으로 바꿉니다.

   ```
   db2 update dbm cfg using FEDERATED YES source_database_name
   ```

1. RDS for Db2 DB 인스턴스에 표를 생성합니다.

   1. 노드를 카탈로그화합니다. 다음 예제에서 *dns\$1ip\$1address* 및 *port*를 자체 관리형 Db2 데이터베이스의 DNS 이름 또는 IP 주소 및 포트 번호로 대체합니다.

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. 데이터베이스를 카탈로그화합니다. 다음 예제에서 *source\$1database\$1name* 및 *source\$1database\$1alias*를 자체 관리형 Db2 데이터베이스의 이름과 이 데이터베이스에 사용할 별칭으로 바꿉니다.

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \
          authentication server_encrypt
      ```

1. 소스 데이터베이스에 연결합니다. 다음 예제에서 *source\$1database\$1alias*, *user\$1id*, *user\$1password*를 이전 단계에서 만든 별칭과 자체 관리형 Db2 데이터베이스의 사용자 ID 및 암호로 대체합니다.

   ```
   db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
       -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 페더레이션을 설정하고 자체 관리형 Db2 인스턴스에서 RDS for Db2 데이터베이스 표의 별명을 생성합니다.

   1. 로컬 데이터베이스에 연결합니다. 다음 예제에서 *source\$1database\$1name*을 자체 관리형 Db2 인스턴스의 데이터베이스 이름으로 바꿉니다.

      ```
      db2 connect to source_database_name
      ```

   1.  Db2 데이터 소스에 액세스하기 위한 래퍼를 생성합니다.

      ```
      db2 create wrapper drda
      ```

   1. 페더레이션된 데이터베이스에서 데이터 소스를 정의합니다. 다음 예제에서 *admin* 및 *admin\$1password*를 자체 관리형 Db2 인스턴스의 보안 인증 정보로 대체합니다. *rds\$1database\$1name*을 RDS for Db2 DB 인스턴스의 데이터베이스 이름으로 바꿉니다.

      ```
      db2 "create server rdsdb2 type DB2/LUW version '11.5.9.0' \
          wrapper drda authorization "admin" password "admin_password" \
          options( dbname 'rds_database_name', node 'remnode')"
      ```

   1. 두 데이터베이스의 사용자를 매핑합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 RDS for Db2 DB 인스턴스의 보안 인증 정보로 대체합니다.

      ```
      db2 "create user mapping for user server rdsdb2 \
          options (REMOTE_AUTHID 'master_username', REMOTE_PASSWORD 'master_password')"
      ```

   1. RDS for Db2 서버와의 연결을 확인합니다.

      ```
      db2 set passthru rdsdb2
      ```

   1. 원격 RDS for Db2 데이터베이스에서 표의 별명을 생성합니다. 다음 예제에서 *NICKNAME* 및 *TABLE\$1NAME*을 표의 별명과 표 이름으로 바꿉니다.

      ```
      db2 create nickname REMOTE.NICKNAME for RDSDB2.TABLE_NAME.NICKNAME
      ```

1. 원격 RDS for Db2 데이터베이스 표에 데이터를 삽입합니다. 자체 관리형 Db2 인스턴스의 로컬 표에 있는 `select` 문에 별명을 사용합니다. 다음 예제에서 *NICKNAME* 및 *TABLE\$1NAME*을 표의 별명과 표 이름으로 바꿉니다.

   ```
   db2 "INSERT into REMOTE.NICKNAME select * from RDS2DB2.TABLE_NAME.NICKNAME"
   ```

# INGEST 유틸리티를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 가져오기
<a name="db2-native-db2-tools-ingest"></a>

`INGEST` 유틸리티를 사용하여 클라이언트 머신의 파일 및 파이프에서 대상 Amazon RDS for Db2 DB 인스턴스로 데이터를 지속적으로 스트리밍할 수 있습니다. `INGEST` 유틸리티는 `INSERT` 및 `MERGE` 작업을 지원합니다. 자세한 내용은 IBM Db2 설명서의 [수집 유틸리티](https://www.ibm.com/docs/en/db2/11.1?topic=reference-ingest-utility)를 참조하세요.

이 `INGEST` 유틸리티는 별명을 지원하므로, 이를 사용하여 자체 관리형 Db2 데이터베이스의 데이터를 RDS for Db2 데이터베이스로 전송할 수 있습니다. 이 접근 방식은 두 데이터베이스 간에 네트워크 연결이 있는 한 사용할 수 있습니다.

**중요**  
`INGEST` 유틸리티는 대형 객체(LOB)를 지원하지 않습니다. 대신 [`IMPORT` 명령](db2-native-db2-tools-import.md)을 사용하세요.

`INGEST` 유틸리티의 `RESTARTABLE` 기능을 사용하려면 RDS for Db2 데이터베이스에서 다음 명령을 실행합니다.

```
db2 "call sysproc.sysinstallobjects(‘INGEST’,‘C’,NULL,NULL)"
```

# Amazon RDS for Db2 페더레이션
<a name="db2-federation"></a>

Amazon RDS for Db2 데이터베이스를 페더레이션 데이터베이스로 사용할 수 있습니다. RDS for Db2에 대한 페더레이션을 설정한 후에는 RDS for Db2 데이터베이스에서 여러 데이터베이스의 데이터에 액세스하고 이를 쿼리할 수 있습니다. 페더레이션을 사용하면 데이터를 RDS for Db2 데이터베이스로 마이그레이션하거나 데이터를 단일 데이터베이스로 통합하지 않아도 됩니다.

RDS for Db2 데이터베이스를 페더레이션 데이터베이스로 사용하면 데이터를 서로 다른 데이터베이스에 보관하면서 모든 RDS for Db2 기능에 계속 액세스하고 다양한 AWS 서비스를 활용할 수 있습니다. 동일한 유형의 서로 다른 데이터베이스를 연결하는 동종 페더레이션과 유형이 서로 다른 여러 데이터베이스를 연결하는 이기종 페더레이션을 모두 설정할 수 있습니다.

먼저 RDS for Db2의 Db2 데이터베이스를 원격 데이터베이스에 연결합니다. 그런 다음 연결된 모든 데이터베이스에 대해 쿼리를 실행할 수 있습니다. 예를 들어 RDS for Db2 데이터베이스의 테이블을 z/OS 기반 원격 Db2 데이터베이스의 테이블과 조인하는 SQL JOIN 문을 실행할 수 있습니다.

**Topics**
+ [동종 페더레이션](#db2-federation-homogeneous)
+ [이기종 페더레이션](#db2-federation-heterogeneous)

## 동종 페더레이션
<a name="db2-federation-homogeneous"></a>

RDS for Db2 데이터베이스와 다음 Db2 제품군 간에 동종 페더레이션을 설정할 수 있습니다.
+ Linux, UNIX 및 Windows(LUW)용 Db2
+ Db2 iSeries
+ Db2 for z/OS

RDS for Db2 동종 페더레이션은 다음 동작을 지원하지 않습니다.
+ RDS for Db2 호스트 데이터베이스에서 노드 디렉터리와 원격 데이터베이스를 설정하는 `CATALOG` 명령 실행
+ z/OS 기반 Db2에 대해 페더레이션할 때 워크로드 밸런싱(WLB) 설정
+ IBM 데이터 서버 드라이버 구성 파일(`db2dsdriver.cfg`) 구성

RDS for Db2 동종 페더레이션의 요구 사항은 다음과 같습니다.
+ `UNFENCED` 모드에서 DRDA 래퍼를 생성해야 합니다. 그러지 않으면 RDS for Db2에서 페더레이션이 작동하지 않습니다.
+ RDS for Db2 호스트 데이터베이스에서 원격 호스트 데이터베이스로 들어오는 트래픽과 나가는 트래픽을 허용해야 합니다. 자세한 내용은 [보안 그룹을 생성하여 VPC 내부의 DB 인스턴스에 대한 액세스를 제공](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup) 섹션을 참조하세요.

**Topics**
+ [1단계: DRDA 래퍼 및 페더레이션 서버 생성](#db2-federation-homogeneous-create)
+ [2단계: 사용자 매핑 만들기](#db2-federation-homogeneous-map)
+ [3단계: 연결 확인](#db2-federation-homogeneous-check)

### 1단계: DRDA 래퍼 및 페더레이션 서버 생성
<a name="db2-federation-homogeneous-create"></a>

동종 페더레이션을 위해 DRDA 래퍼와 페더레이션 서버를 생성합니다. 원격 호스트에 연결할 때는 `HOST`, `PORT` 및 `DBNAME`을 사용합니다.

원격 Db2 데이터베이스 유형에 따라 다음 방법 중 하나를 선택합니다.
+ **Linux, UNIX 및 Windows(LUX)용 Db2 데이터베이스** - 다음 SQL 명령을 실행합니다. 다음 예제에서는 *server\$1name*을 페더레이션에 사용할 서버의 이름으로 바꿉니다. *db2\$1version*을 원격 Db2 데이터베이스 버전으로 바꿉니다. *username*과 *password*를 연결하려는 원격 Db2 데이터베이스의 자격 증명으로 바꿉니다. *db\$1name*, *dns\$1name* 및 *port*를 연결하려는 원격 Db2 데이터베이스의 적절한 값으로 바꿉니다.

  ```
  create wrapper drda options(DB2_FENCED 'N');
  create server server_name type DB2/LUW wrapper drda version 'db2_version' authorization "master_username" password "master_password" options (add DBNAME 'db_name',add HOST 'dns_name',add PORT 'port');
  ```

  **예제**

  ```
  create wrapper drda options(DB2_FENCED 'N');
  create server SERVER1 type DB2/LUW wrapper drda version '11.5' authorization "sysuser" password "******" options (add DBNAME 'TESTDB2',add HOST 'ip-123-45-67-899.us-west-1.compute.internal',add PORT '25010');
  ```
+ **Db2 iSeries** – 다음 SQL 명령을 실행합니다. 다음 예제에서는 *wrapper\$1name* 및 *library\$1name*을 DRDA 래퍼 및 [래퍼 라이브러리 파일](https://www.ibm.com/docs/en/db2/11.5?topic=wrapper-db2-library-files)의 이름으로 바꿉니다. *server\$1name*을 페더레이션에 사용할 서버의 이름으로 바꿉니다. *db2\$1version*을 원격 Db2 데이터베이스 버전으로 바꿉니다. *username* 및 *password*를 연결하려는 원격 Db2 데이터베이스의 자격 증명으로 바꿉니다. *dns\$1name*, *port* 및 *db\$1name*을 연결하려는 원격 Db2 데이터베이스의 적절한 값으로 바꿉니다.

  ```
  create wrapper wrapper_name library 'library name' options(DB2_FENCED 'N');
  create server server_name type db2/mvs version db2_version wrapper wrapper_name authorization "sername" password "password" options (HOST 'dns_name', PORT 'port', DBNAME 'db_name');
  ```

  **예제**

  ```
  create wrapper WRAPPER1 library 'libdb2drda.so' options(DB2_FENCED 'N');
  create server SERVER1 type db2/mvs version 11 wrapper WRAPPER1 authorization "sysuser" password "******" options (HOST 'test1.123.com', PORT '446', DBNAME 'STLEC1');
  ```
+ **z/OS용 Db2** – 다음 SQL 명령을 실행합니다. 다음 예제에서는 *wrapper\$1name* 및 *library\$1name*을 DRDA 래퍼 및 [래퍼 라이브러리 파일](https://www.ibm.com/docs/en/db2/11.5?topic=wrapper-db2-library-files)의 이름으로 바꿉니다. *server\$1name*을 페더레이션에 사용할 서버의 이름으로 바꿉니다. *db2\$1version*을 원격 Db2 데이터베이스 버전으로 바꿉니다. *username* 및 *password*를 연결하려는 원격 Db2 데이터베이스의 자격 증명으로 바꿉니다. *dns\$1name*, *port* 및 *db\$1name*을 연결하려는 원격 Db2 데이터베이스의 적절한 값으로 바꿉니다.

  ```
  create wrapper wrapper_name library 'library_name' options(DB2_FENCED 'N');
  create server server_name type db2/mvs version db2_version wrapper wrapper_name authorization "username" password "password" options (HOST 'dns_name', PORT 'port', DBNAME 'db_name');
  ```

  **예제**

  ```
  create wrapper WRAPPER1 library 'libdb2drda.so' OPTIONS(DB2_FENCED 'N');
  create server SERVER1 type db2/mvs version 11 wrapper WRAPPER1 authorization "sysuser" password "******" options (HOST 'test1.123.com', PORT '446', DBNAME 'STLEC1');
  ```

### 2단계: 사용자 매핑 만들기
<a name="db2-federation-homogeneous-map"></a>

다음 SQL 명령어를 실행하여 사용자 매핑을 만들고 페더레이션 서버를 데이터 소스 서버와 연결합니다. 다음 예제에서는 *server\$1name*을 작업을 수행하려는 원격 서버의 이름으로 바꿉니다. 이 서버는 [1단계](#db2-federation-homogeneous-create)에서 만든 서버입니다. *username* 및 *password*를 이 원격 서버의 자격 증명으로 바꿉니다.

```
create user mapping for user server server_name options (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');
```

자세한 내용은 IBM Db2 설명서의 [사용자 매핑](https://www.ibm.com/docs/en/db2/11.5?topic=systems-user-mappings)을 참조하세요.

### 3단계: 연결 확인
<a name="db2-federation-homogeneous-check"></a>

연결을 확인하여 페더레이션 설정이 성공했는지 확인합니다. SET PASSTHRU 명령으로 세션을 열어 네이티브 SQL 명령을 원격 데이터 소스로 보낸 다음 원격 데이터 서버에 테이블을 생성합니다.

1. 세션을 열고 닫아 데이터 소스에 SQL을 제출합니다. 다음 예제에서는 *server\$1name*을 1단계에서 페더레이션용으로 만든 서버의 이름으로 바꿉니다.

   ```
   set passthru server_name;
   ```

1. 새 테이블을 만듭니다. 다음 예제에서는 *column\$1name*, *data\$1type* 및 *value*를 테이블에 적합한 항목으로 바꿉니다.

   ```
   create table table_name ( column_name data_type(value), column_name data_type(value);
   ```

    자세한 내용은 IBM Db2 설명서의 [CREATE TABLE 문](https://www.ibm.com/docs/en/db2-event-store/2.0.0?topic=statements-create-table)을 참조하세요.

1. 인덱스를 만들고 테이블에 행 값을 삽입한 다음 연결을 재설정합니다. 연결을 재설정하면 연결이 끊어지지만 백엔드 프로세스는 그대로 유지됩니다. 다음 예제에서 *index\$1name*, *table\$1name*, *column\$1name* 및 *columnx\$1value*를 해당 정보로 대체합니다.

   ```
   create index index_name on table_name(column_name);
   insert into table_name values(column1_value,column2_value,column3_value);
   insert into table_name values(column1_value,column2_value,column3_value);
   set passthru reset;
   
   connect reset;
   ```

1. 원격 Db2 데이터베이스에 연결하고, 원격 서버의 닉네임을 만들고, 작업을 수행합니다. 원격 Db2 데이터베이스의 데이터에 모두 액세스했으면 연결을 재설정한 다음 종료하세요. 다음 예제에서 *database\$1name*을 원격 Db2 데이터베이스 이름으로 바꿉니다. *nickname*을 이름으로 바꿉니다. *server\$1name* 및 *table\$1name*을 작업을 수행하려는 원격 서버 및 해당 서버의 테이블 이름으로 바꿉니다. *username*을 원격 서버의 정보로 바꿉니다. *sql\$1command*를 원격 서버에서 수행할 작업으로 바꿉니다.

   ```
   connect to database_name;
   create nickname nickname for server_name."username"."table_name";
   select sql_command from nickname;
   connect reset;
   terminate;
   ```

**예제**

다음 예제에서는 페더레이션 서버 `testdb10`에서 작업을 수행할 수 있는 패스스루 세션을 만듭니다.

그런 다음 데이터 유형이 서로 다른 세 개의 열로 구성된 테이블 `t1`이 생성됩니다.

그런 다음 이 예제에서는 테이블 `t1`의 세 열에 인덱스 `i1_t1`을 만듭니다. 이후 해당 세 열에 값이 포함된 두 행이 삽입된 다음 연결이 해제됩니다.

마지막으로, 예제에서는 원격 Db2 데이터베이스 `testdb2`에 연결하고 페더레이션 서버 `testdb10`의 테이블 ` t1`에 대한 닉네임을 만듭니다. 해당 데이터 소스의 사용자 이름 `TESTUSER`로 닉네임이 생성됩니다. SQL 명령은 테이블 `t1`의 모든 데이터를 출력합니다. 이 예제는 연결을 해제하고 세션을 종료합니다.

```
set passthru testdbl0;

create table t1 ( c1 decimal(13,0), c2 char(200), c3 int);

create index i1_t1 on t1(c3);
insert into t1 values(1,'Test',1);
insert into t1 values(2,'Test 2',2);
connect reset;

connect to testdb2;
create nickname remote_t1 for testdbl0."TESTUSER"."T1";
select * from remote_t1;
connect reset;
terminate;
```

## 이기종 페더레이션
<a name="db2-federation-heterogeneous"></a>

RDS for Db2 데이터베이스와 Oracle 및 Microsoft SQL Server 등의 다른 데이터 소스 간에 이기종 페더레이션을 설정할 수 있습니다. Db2 LUW가 지원하는 데이터 소스의 전체 목록은 IBM 지원 사이트의 [Db2 LUW V11.5에 번들로 제공되는 페더레이션의 데이터 소스 지원 매트릭스](https://www.ibm.com/support/pages/data-source-support-matrix-federation-bundled-db2-luw-v115)를 참조하세요.

RDS for Db2 이기종 페더레이션은 다음 항목을 지원하지 않습니다.
+ 다른 데이터 소스의 네이티브 래퍼
+ 다른 데이터 소스의 JDBC 래퍼
+ Sybase, Informix 및 Teradata 데이터 소스와의 페더레이션(이러한 데이터 소스는 RDS for Db2에 클라이언트 소프트웨어를 설치해야 하기 때문)

RDS for Db2 이기종 페더레이션에는 다음과 같은 요구 사항이 있습니다.
+ RDS for Db2는 ODBC 래퍼 메서드만 지원합니다.
+ 래퍼의 명시적 정의를 생성하는 경우 `DB2_FENCED` 옵션을 `'N'`으로 설정해야 합니다. ODBC에 유효한 래퍼 옵션 목록은 IBM Db2 설명서의 [ODBC 옵션](https://www.ibm.com/docs/en/db2/11.5?topic=options-odbc)을 참조하세요.
+ RDS for Db2 호스트 데이터베이스에서 원격 호스트 데이터베이스로 들어오고 나가는 트래픽을 허용해야 합니다. 자세한 내용은 [보안 그룹을 생성하여 VPC 내부의 DB 인스턴스에 대한 액세스를 제공](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup) 섹션을 참조하세요.

Oracle과의 페더레이션에 대한 자세한 내용은 IBM Support 사이트의 [Db2 페더레이션 및 ODBC 드라이버를 사용하여 Oracle을 쿼리하는 방법](https://www.ibm.com/support/pages/node/6431133)을 참조하세요.

페더레이션을 지원하는 데이터 소스에 대한 자세한 내용은 IBM Support 사이트의 [Db2 LUW V11.5에 번들로 제공되는 페더레이션의 데이터 소스 지원 매트릭스](https://www.ibm.com/support/pages/node/957245)를 참조하세요.

**Topics**
+ [1단계: ODBC 래퍼 만들기](#db2-federation-heteogenous-define-wrapper)
+ [2단계: 페더레이션 서버 만들기](#db2-federation-heterogeneous-create)
+ [3단계: 사용자 매핑 만들기](#db2-federation-heterogeneous-map)
+ [4단계: 연결 확인](#db2-federation-heterogeneous-check)

### 1단계: ODBC 래퍼 만들기
<a name="db2-federation-heteogenous-define-wrapper"></a>

다음 명령을 실행하여 래퍼를 생성합니다.

```
db2 "create wrapper odbc options( module '/home/rdsdb/sqllib/federation/odbc/lib/libodbc.so')"
```

### 2단계: 페더레이션 서버 만들기
<a name="db2-federation-heterogeneous-create"></a>

다음 명령을 실행하여 페더레이션 서버를 생성합니다. 다음 예제에서는 *server\$1name*을 페더레이션에 사용할 서버의 이름으로 바꿉니다. *wrapper\$1type*을 적절한 래퍼로 바꿉니다. *db\$1version*을 원격 데이터베이스 버전으로 바꿉니다. *dns\$1name*, *port* 및 *service\$1name*을 연결하려는 원격 데이터베이스의 적절한 값으로 바꿉니다.

```
db2 "create server server_name type wrapper_type version db_version options (HOST 'dns_name', PORT 'port', SERVICE_NAME 'service_name')“
```

래퍼 유형에 대한 자세한 내용은 IBM Support 사이트의 [Db2 LUW V11.5에 번들로 제공되는 페더레이션의 데이터 소스 지원 매트릭스](https://www.ibm.com/support/pages/node/957245)를 참조하세요.

**예제**

다음 예제에서는 원격 Oracle 데이터베이스를 위한 페더레이션 서버를 만듭니다.

```
db2 "create server server1 type oracle_odbc version 12.1 options (HOST 'test1.amazon.com', PORT '1521', SERVICE_NAME 'pdborcl.amazon.com')“
```

### 3단계: 사용자 매핑 만들기
<a name="db2-federation-heterogeneous-map"></a>

다음 SQL 명령어를 실행하여 사용자 매핑을 만들고 페더레이션 서버를 데이터 소스 서버와 연결합니다. 다음 예제에서는 *server\$1name*을 작업을 수행하려는 원격 서버의 이름으로 바꿉니다. 이 서버는 [2단계](#db2-federation-heterogeneous-create)에서 만든 서버입니다. *username* 및 *password*를 이 원격 서버의 자격 증명으로 바꿉니다.

```
create user mapping for user server server_name options (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');
```

자세한 내용은 IBM Db2 설명서의 [사용자 매핑](https://www.ibm.com/docs/en/db2/11.5?topic=systems-user-mappings)을 참조하세요.

### 4단계: 연결 확인
<a name="db2-federation-heterogeneous-check"></a>

연결을 확인하여 페더레이션 설정이 성공했는지 확인합니다. SET PASSTHRU 명령으로 세션을 열어 네이티브 SQL 명령을 원격 데이터 소스로 보낸 다음 원격 데이터 서버에 테이블을 생성합니다.

1. 세션을 열고 닫아 데이터 소스에 SQL을 제출합니다. 다음 예제에서는 *server\$1name*을 [2단계](#db2-federation-heterogeneous-create)에서 페더레이션용으로 만든 서버의 이름으로 바꿉니다.

   ```
   set passthru server_name;
   ```

1. 새 테이블을 만듭니다. 다음 예제에서는 *column\$1name*, *data\$1type* 및 *value*를 테이블에 적합한 항목으로 바꿉니다.

   ```
   create table table_name ( column_name data_type(value), column_name data_type(value);
   ```

    자세한 내용은 IBM Db2 설명서의 [CREATE TABLE 문](https://www.ibm.com/docs/en/db2-event-store/2.0.0?topic=statements-create-table)을 참조하세요.

1. 인덱스를 만들고 테이블에 행 값을 삽입한 다음 연결을 재설정합니다. 연결을 재설정하면 연결이 끊어지지만 백엔드 프로세스는 그대로 유지됩니다. 다음 예제에서 *index\$1name*, *table\$1name*, *column\$1name* 및 *columnx\$1value*를 해당 정보로 대체합니다.

   ```
   create index index_name on table_name(column_name);
   insert into table_name values(column1_value,column2_value,column3_value);
   insert into table_name values(column1_value,column2_value,column3_value);
   set passthru reset;
   
   connect reset;
   ```

1. 원격 Db2 데이터베이스에 연결하고, 원격 서버의 닉네임을 만들고, 작업을 수행합니다. 원격 Db2 데이터베이스의 데이터에 모두 액세스했으면 연결을 재설정한 다음 종료하세요. 다음 예제에서 *database\$1name*을 원격 Db2 데이터베이스 이름으로 바꿉니다. *nickname*을 이름으로 바꿉니다. *server\$1name* 및 *table\$1name*을 작업을 수행하려는 원격 서버 및 해당 서버의 테이블 이름으로 바꿉니다. *username*을 원격 서버의 정보로 바꿉니다. *sql\$1command*를 원격 서버에서 수행할 작업으로 바꿉니다.

   ```
   connect to database_name;
   create nickname nickname for server_name."username"."table_name";
   select sql_command from nickname;
   connect reset;
   terminate;
   ```

**예제**

다음 예제에서는 페더레이션 서버 `testdb10`에서 작업을 수행할 수 있는 패스스루 세션을 만듭니다.

그런 다음 데이터 유형이 서로 다른 세 개의 열로 구성된 테이블 `t1`이 생성됩니다.

그런 다음 이 예제에서는 테이블 `t1`의 세 열에 인덱스 `i1_t1`을 만듭니다. 이후 해당 세 열에 값이 포함된 두 행이 삽입된 다음 연결이 해제됩니다.

마지막으로, 예제에서는 원격 Db2 데이터베이스 `testdb2`에 연결하고 페더레이션 서버 `testdb10`의 테이블 ` t1`에 대한 닉네임을 만듭니다. 해당 데이터 소스의 사용자 이름 `TESTUSER`로 닉네임이 생성됩니다. SQL 명령은 테이블 `t1`의 모든 데이터를 출력합니다. 이 예제는 연결을 해제하고 세션을 종료합니다.

```
set passthru testdbl0;

create table t1 ( c1 decimal(13,0), c2 char(200), c3 int);

create index i1_t1 on t1(c3);
insert into t1 values(1,'Test',1);
insert into t1 values(2,'Test 2',2);
connect reset;

connect to testdb2;
create nickname remote_t1 for testdbl0."TESTUSER"."T1";
select * from remote_t1;
connect reset;
terminate;
```

# Amazon RDS for Db2의 복제본 작업
<a name="db2-replication"></a>

RDS for Db2는 읽기 조정 및 재해 복구 기능을 제공하는 복제본 데이터베이스 생성을 지원합니다. 읽기 워크로드를 오프로드하기 위한 읽기 전용 복제본과 리전 간 재해 복구를 위한 대기 복제본의 두 가지 모드로 복제본을 생성할 수 있습니다. RDS for Db2는 복제에 IBM Db2 고가용성 재해 복구(HADR) 기술을 사용합니다. 자세한 내용은 IBM Db2 설명서의 [High availability disaster recovery (HADR)](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)를 참조하세요.

*Db2 복제본* 데이터베이스는 기본 데이터베이스의 물리적 복사본입니다. 읽기 전용 모드의 Db2 복제본을 *읽기 전용 복제본*이라고 합니다. 대기 모드의 Db2 복제본을 *대기 복제본*이라고 합니다. Db2는 복제본에서의 쓰기를 허용하지 않지만, 복제본을 승격하여 쓰기 가능한 상태로 만들 수 있습니다. 승격된 복제본에는 승격 요청이 이루어진 시점까지 복제된 데이터가 있습니다. 자세한 내용은 [읽기 전용 복제본을 독립 DB 인스턴스로 승격](USER_ReadRepl.Promote.md) 섹션을 참조하세요.

RDS for Db2 복제본의 기능 및 동작에 대한 요약은 [DB 엔진별 읽기 전용 복제본의 차이점](USER_ReadRepl.Overview.Differences.md) 섹션을 참조하세요.

## 읽기 전용 및 대기 복제본
<a name="db2-read-replicas.overview.modes"></a>

Db2 복제본을 생성하거나 수정할 때 다음 모드 중 하나로 배치할 수 있습니다.

**읽기 전용**.  
이 값이 기본값입니다. HADR은 원본 데이터베이스의 변경 사항을 모든 읽기 전용 복제본 데이터베이스로 전송하고 적용합니다. 읽기 전용 복제본의 경우 Db2 환경 변수 `DB2_HADR_ROS`는 `ON`으로 설정됩니다. 복제본 데이터베이스의 읽기 쿼리에 대한 격리 수준은 `Uncommitted Read`입니다. 자세한 내용은 IBM Db2 설명서의 [활성 대기 데이터베이스의 격리 수준](https://www.ibm.com/docs/en/db2/11.5?topic=standby-isolation-level-active-database)을 참조하세요.  
모든 DB 엔진에 적용되는 읽기 전용 복제본에 대한 일반적인 정보는 [DB 인스턴스 읽기 전용 복제본 작업](USER_ReadRepl.md) 섹션을 참조하세요. Db2에 대한 자세한 내용은 IBM Db2 설명서의 [고가용성 재해 복구(HADR)](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)를 참조하세요.

 **대기**  
대기 복제본의 경우 복제본 데이터베이스가 사용자 연결을 수락하지 않도록 Db2 환경 변수 `DB2_HADR_ROS`가 `OFF`로 설정됩니다. 대기 복제본의 주된 용도는 교차 리전 재해 복구입니다.  
대기 복제본은 읽기 전용 워크로드를 처리할 수 없습니다. 대기 복제본에는 아카이브 로그가 없습니다.

소스 DB 인스턴스 하나에서 최대 세 개까지 복제본을 생성할 수 있습니다. 동일한 원본 DB 인스턴스에 대해 읽기 전용 DB 복제본과 대기 DB 복제본을 조합하여 생성할 수 있습니다. 복제본을 생성한 후 복제본 모드를 변경할 수 있습니다. 자세한 내용은 [Amazon RDS for Db2 복제본 모드 수정](db2-replicas-changing-replica-mode.md) 섹션을 참조하세요.

복제본을 생성하기 전에 모든 요구 사항을 충족하는지 확인합니다. 자세한 내용은 [RDS for Db2 복제본에 대한 요구 사항 및 고려 사항](db2-read-replicas.limitations.md) 섹션을 참조하세요.

## 데이터베이스 활성화
<a name="db2-read-replicas.overview.database-activations"></a>

Db2 HADR은 데이터베이스 수준에서 구성됩니다. 복제본을 생성하면 `rdsadmin`을 포함해 RDS가 완전히 관리하는 모든 Db2 데이터베이스에 HADR이 설정됩니다. Db2 복제본을 생성하기 전에 모든 데이터베이스를 명시적으로 활성화해야 합니다. 활성화하지 않으면 복제본 생성이 실패하고 Amazon RDS가 이벤트를 내보냅니다. DB 인스턴스에 하나 이상의 복제본이 생긴 후에는 `rdsadmin.activate_database` 또는 `rdsadmin.deactivate_database` 저장 프로시저를 사용하여 DB 인스턴스에서 데이터베이스를 활성화하거나 비활성화할 수 없습니다. 자세한 내용은 [RDS for Db2용 데이터베이스에 대해 저장된 프로시저](db2-sp-managing-databases.md) 섹션을 참조하세요.

## HADR 구성
<a name="db2-read-replicas.overview.hadr-configurations"></a>

데이터베이스에 연결한 다음, `db2 get db cfg`를 실행하여 데이터베이스에 대한 모든 HADR 구성을 볼 수 있습니다.

## 아카이브 로그 보존
<a name="db2-read-replicas.overview.log-retention"></a>

Amazon RDS는 다음 조건이 충족되면 기본 DB 인스턴스에서 로그를 제거합니다.
+ 로그가 최소 2시간 이상 경과됨
+ 아카이브 로그 보존 시간에 대한 설정이 초과됨
+ 아카이브 로그가 모든 복제본 DB 인스턴스에 성공적으로 복제됨 이 조건은 동일한 AWS 리전의 DB 인스턴스와 교차 리전 DB 인스턴스에 적용됩니다.

아카이브 로그 보존 시간 설정에 대한 자세한 내용은 [rdsadmin.set\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-set-archive-log-retention) 섹션을 참조하세요.

Amazon RDS는 각 데이터베이스를 개별적으로 확인하고 정리합니다. 데이터베이스의 HADR 연결이 끊어지거나 연결에 대한 정보를 사용할 수 없는 경우 Amazon RDS는 해당 데이터베이스를 건너뛰고 아카이브 로그를 제거하지 않습니다.

## Db2 복제 중 중단
<a name="db2-read-replicas.overview.outages"></a>

복제본을 생성하면 Amazon RDS가 소스 DB 인스턴스의 DB 스냅샷을 캡처하고 복제를 시작합니다. DB 스냅샷 작업이 시작될 때 소스 DB 인스턴스에서 매우 짧은 I/O 보류가 발생합니다. 이러한 I/O 중단은 일반적으로 1초 정도 지속됩니다. 그러나 소스 DB 인스턴스가 다중 AZ 배포인 경우 소스 DB 인스턴스에 I/O 보류가 발생하지 않습니다. 이는 다중 AZ 배포의 경우 보조 DB 인스턴스에서 스냅샷이 생성되기 때문입니다.

DB 스냅샷은 Db2 복제본이 됩니다. Amazon RDS는 서비스 중단 없이 소스 데이터베이스 및 복제본에 필요한 파라미터와 권한을 설정합니다. 마찬가지로 복제본을 삭제해도 중단이 발생하지 않습니다.

# RDS for Db2 복제본에 대한 요구 사항 및 고려 사항
<a name="db2-read-replicas.limitations"></a>

Db2 복제본 요구 사항은 라이선스 및 버전 관리, 백업 및 복원 고려 사항, 복제 동작, 일반적인 운영 고려 사항 등 여러 범주로 나뉩니다. Db2 복제본을 생성하기 전에 다음 요구 사항 및 고려 사항을 숙지하세요.

## Db2 복제본에 대한 버전 및 라이선스 요구 사항
<a name="db2-read-replicas.limitations.versions-and-licenses"></a>

RDS for Db2 복제본을 생성하기 전에 버전 및 라이선싱 모델에 대한 다음 정보를 검토하세요.
+ **지원 버전** – 모든 Db2 11.5 버전은 복제본 DB 인스턴스를 지원합니다.

  원본 및 복제본 DB 인스턴스는 동일한 메이저 버전을 사용해야 합니다. Db2 복제본은 마이너 버전 업그레이드를 지원하지만 메이저 버전 업그레이드는 지원하지 않습니다. DB 인스턴스 업그레이드에 대한 정보는 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md) 섹션을 참조하세요.
**참고**  
소스 DB 인스턴스를 업그레이드할 때 버전 호환성을 유지하기 위해 모든 복제본이 자동으로 업그레이드됩니다.
+ **유효한 라이선싱 모델 및 복제본 모델** – Db2 Advanced Edition(AE)과 Standard Edition(SE) 모두 Bring Your Own License(BYOL) 모델과 AWS Marketplace 모델을 통한 Db2 라이선스 모두에 대해 읽기 전용 또는 대기 모드의 복제본을 생성할 수 있습니다.
+ **사용자 지정 파라미터 그룹** - 복제본에 대한 사용자 지정 파라미터 그룹을 지정해야 합니다.

  BYOL 모델을 사용하는 복제본의 경우 이 사용자 지정 파라미터 그룹에 IBM Site ID 및 IBM Customer ID가 포함되어야 합니다. 자세한 내용은 [Db2용 Bring Your Own License(BYOL)를 위한 IBM ID](db2-licensing.md#db2-prereqs-ibm-info) 섹션을 참조하세요. AWS Management Console, AWS CLI 또는 RDS API를 사용하여 복제본에 대해 이 사용자 지정 파라미터 그룹을 지정할 수 있습니다.
+ **vCPU 수**는 복제본 모드 및 라이선스 모델에 따라 다릅니다.
  + **대기 복제본**은 DB 인스턴스 크기에 관계없이 항상 두 개의 vCPU를 사용합니다.
    + **BYOL 모델** – AWS License Manager 구성은 RDS for Db2 DB 인스턴스가 두 개의 vCPU를 사용함을 보여 줍니다.
    + **AWS Marketplace 모델을 통한 Db2 라이선스** – 청구서에 두 개의 vCPU에 대한 라이선스 비용이 반영됩니다.
  + **읽기 전용 복제본**은 DB 인스턴스 크기와 동일한 vCPU 수를 사용합니다.
    + **BYOL 모델** - AWS License Manager 구성은 RDS for Db2 DB 인스턴스가 DB 인스턴스 크기와 일치하는 동일한 수의 vCPU를 사용함을 보여 줍니다.
    + **AWS Marketplace 모델을 통한 Db2 라이선스** - 청구서에는 DB 인스턴스 크기와 일치하는 동일한 수의 vCPU에 대한 라이선스 비용이 반영됩니다.

## RDS for Db2 복제본에 대한 백업 및 복구 고려 사항
<a name="db2-read-replicas.limitations.backups"></a>

복제본 백업은 기본 데이터베이스 백업과 동작이 다릅니다. 다음 백업 및 복원 요구 사항을 고려하세요.
+ RDS for Db2 복제본의 스냅샷을 생성하거나 자동 백업을 설정하려면 백업 보존 기간을 수동으로 설정해야 합니다. 자동 백업은 기본적으로 켜져 있지 않습니다.
+ 복제본 백업을 복원할 때는 백업이 완료된 시간이 아니라 데이터베이스 시간으로 복원됩니다. 이 데이터베이스 시간이란 백업에 있는 데이터의 가장 최근에 적용된 트랜잭션 시간입니다. 복제본이 기본 데이터베이스보다 몇 분 또는 몇 시간 정도 지연될 수 있기 때문에 이러한 차이는 상당합니다. 여러 데이터베이스가 있는 경우 RDS for Db2는 가장 이른 데이터베이스 시간을 사용합니다.

  차이점을 찾으려면 AWS CLI [describe-db-snapshots](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshots.html) 명령을 실행하거나 RDS API [DescribeDBSnapshots](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshots.html) 작업을 직접 호출합니다. `SnapshotDatabaseTime` 값을 `OriginalSnapshotCreateTime` 값과 비교합니다. `SnapshotDatabaseTime` 값은 복제본 백업의 데이터베이스 시간입니다. `OriginalSnapshotCreateTime` 값은 기본 데이터베이스에 적용된 최신 트랜잭션입니다.

백업 및 백업 복원에 대한 자세한 내용은 [RDS for Db2 복제본 백업 작업](db2-read-replicas.backups.md) 섹션을 참조하세요.

## RDS for Db2 복제본에 대한 복제 고려 사항
<a name="db2-read-replicas.limitations.replication"></a>

Db2 복제본은 특정 제한 및 동작과 함께 HADR 기술을 사용합니다. 다음과 같은 복제 고려 사항을 검토합니다.
+ 복제는 RDS for Db2 DB 인스턴스의 모든 데이터베이스에 Db2 HADR을 사용합니다.
+ 복제는 `LOAD` 명령을 지원하지 않습니다. 소스 DB 인스턴스에서 `LOAD` 명령을 실행하면 일관되지 않은 데이터가 수신됩니다.
+ RDS for Db2는 다음 항목을 복제하지 않습니다.
  + 스토리지 액세스. 스토리지 액세스에 의존하는 외부 테이블과 같은 데이터에 유의하세요.
  + 로깅되지 않은 비 인라인 LOB.
  + 외부 저장 프로시저의 바이너리(C 또는 Java)
+ 대기 복제본의 경우 RDS for Db2는 다음 항목을 복제합니다.
  + 마스터 사용자를 제외한 로컬 사용자
  + 데이터베이스 구성 파라미터
+ 읽기 전용 복제본의 경우 RDS for Db2는 다음 항목을 복제합니다.
  + 마스터 사용자를 제외한 로컬 사용자
  + SID 그룹 매핑

## RDS for Db2 복제본에 대한 기타 고려 사항
<a name="db2-read-replicas.limitations.miscellaneous"></a>

Db2 복제본에는 추가 운영 고려 사항이 적용됩니다. 다음 항목을 검토합니다.
+ RDS for Db2는 데이터베이스 구성을 복제본에 복제합니다. RDS for Db2는 복제본을 승격할 때 각 데이터베이스를 비활성화하고 활성화합니다.
+ RDS for Db2는 마스터 사용자 및 SID 그룹 매핑이 아닌 로컬 사용자를 복제본에 복제합니다. 복제본에서 마스터 사용자를 수정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.
+ 모든 데이터베이스는 활성 상태여야 합니다. 데이터베이스 활성화에 대한 자세한 내용은 [RDS for Db2용 데이터베이스에 대해 저장된 프로시저](db2-sp-managing-databases.md) 섹션을 참조하세요.
+ 복제본을 생성하기 전에 데이터베이스 생성, 삭제, 복원 또는 롤링 포워드를 위한 모든 저장 프로시저를 완료해야 합니다. 이러한 저장 프로시저 사용에 대한 자세한 내용은 [RDS for Db2용 데이터베이스에 대해 저장된 프로시저](db2-sp-managing-databases.md) 섹션을 참조하세요.
+ 복제본이 생성되면 Amazon RDS는 소스 DB 인스턴스의 모든 데이터베이스에 대한 데이터베이스 수준 파라미터 `blocknonlogged`를 `YES`로 설정합니다. 소스 복제본이 다시 단독 인스턴스가 되면 Amazon RDS는 값을 다시 `NO`로 설정합니다. 자세한 내용은 IBM Db2 설명서의 [blocknonlogged - Block creation of tables that allow non-logged activity configuration parameter](https://www.ibm.com/docs/en/db2/11.1?topic=dcp-blocknonlogged-block-creation-tables-that-allow-non-logged-activity)를 참조하세요.
+ 복제본이 생성되면 Amazon RDS는 소스 DB 인스턴스의 모든 데이터베이스에 대한 데이터베이스 수준 파라미터 `logindexbuild`를 `YES`로 설정합니다. 소스 복제본이 다시 단독 인스턴스가 되면 Amazon RDS는 값을 다시 `NO`로 설정합니다. 자세한 내용은 IBM Db2 설명서의 [logindexbuild - Log index pages created configuration parameter](https://www.ibm.com/docs/en/db2/11.1?topic=parameters-logindexbuild-log-index-pages-created)를 참조하세요.

# RDS for Db2 복제본 생성 준비
<a name="db2-read-replicas.Configuration"></a>

RDS for Db2 복제본을 생성하기 전에 성공적인 복제를 위해 다음 작업을 완료해야 합니다. 이러한 작업은 일반적인 문제를 방지하고 최적의 성능을 보장하는 데 도움이 됩니다.

## 작업 1: 자동 백업 활성화
<a name="db2-read-replicas.configuration.autobackups"></a>

임의의 DB 인스턴스를 원본 DB 인스턴스로 사용하려면 원본 DB 인스턴스의 자동 백업을 활성화해야 합니다. 이는 모든 복제본 생성 작업에 대한 사전 조건입니다. 이 절차를 수행하는 방법에 대한 자세한 내용은 [자동 백업 활성화](USER_WorkingWithAutomatedBackups.Enabling.md) 섹션을 참조하세요.

Db2 복제본별 백업에 대한 자세한 내용은 [RDS for Db2 복제본 백업 작업](db2-read-replicas.backups.md) 섹션을 참조하세요.

## 작업 2: 컴퓨팅 및 스토리지 리소스 계획
<a name="db2-read-replicas.configuration.planning-resources"></a>

원본 DB 인스턴스와 해당 복제본이 운영 로드에 맞게 컴퓨팅 및 스토리지 면에서 제대로 크기가 조정되었는지 확인합니다. 복제본이 컴퓨팅, 네트워크 또는 스토리지 리소스 용량에 도달하면 복제본은 해당 소스에서 변경 사항을 수신하거나 적용하는 것을 중지합니다. 복제본 성능 및 리소스 사용률 모니터링에 대한 자세한 내용은 [읽기 전용 복제본 모니터링](USER_ReadRepl.Monitoring.md) 섹션을 참조하세요.

RDS for Db2는 개입을 통해 소스 DB 인스턴스와 해당 복제본 간의 긴 복제본 지연 시간을 완화하지 않습니다. 복제 지연이 높은 경우 문제 해결 지침은 [Db2 복제 지연 모니터링](db2-troubleshooting-replicas.md#db2-troubleshooting-replicas-lag) 섹션을 참조하세요.

복제본의 스토리지 및 CPU 리소스를 해당 원본 및 다른 복제본과 별도로 수정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## 작업 3: 데이터베이스 준비
<a name="db2-read-replicas.configuration.activate-databases"></a>

복제본을 생성하기 전에 다음 사항에 따라 데이터베이스가 준비되었는지 확인합니다.
+ DB 인스턴스에 존재해야 하는 모든 데이터베이스가 DB 인스턴스에 포함되어 있는지 확인합니다. 복제본을 생성한 후에는 DB 인스턴스에서 데이터베이스를 생성, 삭제 또는 기본 복원할 수 없습니다. [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database), [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 또는 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 저장 프로시저에 대한 직접 호출은 모두 실패합니다.
+ DB 인스턴스의 모든 데이터베이스가 활성 상태입니다. 비활성 상태인 데이터베이스가 있으면 복제본 생성이 실패합니다. 데이터베이스 활성화에 대한 자세한 내용은 [RDS for Db2용 데이터베이스에 대해 저장된 프로시저](db2-sp-managing-databases.md) 섹션을 참조하세요.

## 다음 단계
<a name="db2-read-replicas-configuration-next-steps"></a>

모든 준비 작업을 완료한 후 Db2 복제본을 생성할 준비가 되었습니다.
+ 읽기 전용 복제본을 생성하려면 [읽기 전용 복제본 생성](USER_ReadRepl.Create.md) 섹션을 참조하세요.
+ 대기 복제본을 생성하려면 [대기 Db2 복제본 생성](db2-read-replicas.creating-in-standby-mode.md) 섹션을 참조하세요.

# 대기 모드에서 RDS for Db2 복제본 생성
<a name="db2-read-replicas.creating-in-standby-mode"></a>

기본적으로 Db2 복제본은 읽기 전용 모드로 생성됩니다. 재해 복구를 위해 대기 모드에서 복제본을 생성할 수 있습니다. 대기 복제본은 사용자 연결을 수락하지 않지만 리전 간 시나리오에 더 빠른 장애 조치 기능을 제공합니다.

대기 복제본을 생성하기 전에 준비 작업을 완료했는지 확인합니다. 자세한 내용은 [RDS for Db2 복제본 생성 준비](db2-read-replicas.Configuration.md) 섹션을 참조하세요. 대기 복제본을 생성한 후 복제본 모드를 변경할 수 있습니다. 자세한 내용은 [Amazon RDS for Db2 복제본 모드 수정](db2-replicas-changing-replica-mode.md) 섹션을 참조하세요.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 대기 복제본을 생성할 수 있습니다. 읽기 전용 복제본 생성에 대한 자세한 내용은 [읽기 전용 복제본 생성](USER_ReadRepl.Create.md) 섹션을 참조하세요.

## 콘솔
<a name="db2-read-replicas.creating-in-standby-mode.console"></a>

**소스 RDS for Db2 DB 인스턴스에서 대기 복제본을 생성하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. 대기 복제본의 소스로 사용할 RDS for Db2 DB 인스턴스를 선택합니다.

1. **작업**에서 **읽기 전용 복제본 만들기**를 선택합니다.

1. **복제본 모드**에서 **대기**를 선택합니다.

1. 사용하려는 설정을 선택합니다. **DB 인스턴스 식별자**에 대기 복제본의 이름을 입력합니다. 필요에 따라 다른 설정을 조정합니다.

1. **리전**에서 대기 복제본을 시작할 AWS 리전을 선택합니다.

1. 인스턴스 크기 및 스토리지 유형을 선택합니다. 대기 복제본의 원본 DB 인스턴스와 동일한 DB 인스턴스 클래스와 스토리지 유형을 사용하는 것이 좋습니다.

1. 대기 복제본에 대한 장애 조치 지원을 위해 다른 가용 영역에 대기 복제본을 생성하려면 **다중 AZ 배포**에서 **대기 인스턴스 생성**을 선택합니다.

1. 사용하고자 하는 기타 설정을 선택합니다.

1. **복제본 생성**을 선택합니다.

**데이터베이스** 페이지에서 대기 복제본에는 **복제본** 역할이 있습니다.

## AWS CLI
<a name="db2-read-replicas.creating-in-standby-mode.cli"></a>

Db2 복제본을 대기 모드로 생성하려면 AWS CLI 명령 [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html)에서 `--replica-mode`를 `mounted`로 설정합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-db-instance-read-replica \
    --db-instance-identifier my_standby_replica \
    --source-db-instance-identifier my_db_instance \
    --replica-mode mounted
```
Windows의 경우:  

```
aws rds create-db-instance-read-replica ^
    --db-instance-identifier my_standby_replica ^
    --source-db-instance-identifier my_db_instance ^
    --replica-mode mounted
```

## RDS API
<a name="db2-read-replicas.creating-in-standby-mode.api"></a>

Db2 복제본을 대기 모드로 생성하려면 RDS API 작업 [CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html)에서 `ReplicaMode=mounted`를 지정합니다.

# Amazon RDS for Db2 복제본 모드 수정
<a name="db2-replicas-changing-replica-mode"></a>

기존 Db2 복제본의 복제본 모드를 읽기 전용 모드와 대기 모드 간에 변경할 수 있습니다. 이러한 유연성을 통해 읽기 워크로드 또는 재해 복구 요구 사항에 대한 변화하는 요구 사항에 따라 복제본 구성을 조정할 수 있습니다.

다음 시나리오에서 복제본 모드를 변경할 수 있습니다.
+ **읽기 전용에서 대기로** - 읽기 용량이 더 이상 필요하지 않지만 재해 복구 기능을 유지하려는 경우
+ **대기에서 읽기 전용으로** - 보고 또는 분석 워크로드를 위한 읽기 용량을 추가해야 하는 경우

복제본 모드를 변경하기 전에 다음 조건이 충족되는지 확인합니다.
+ 복제본이 사용 가능한 상태입니다.
+ 복제본에서 실행 중인 활성 유지 관리 작업이 없습니다.
+ DB 인스턴스를 수정하는 데 필요한 권한이 있습니다.

변경 작업은 몇 분 정도 걸릴 수 있습니다. 작업 중에는 DB 인스턴스 상태가 **수정 중**으로 변경됩니다. 상태 변경에 대한 자세한 내용은 [ Amazon RDSDB 인스턴스 상태 보기](accessing-monitoring.md#Overview.DBInstance.Status) 섹션을 참조하세요. 읽기 전용에서 대기 모드로 변경하면 복제본이 모든 활성 연결을 해제합니다.

**중요**  
복제본 모드를 변경하면 서비스가 일시적으로 중단되므로 유지 관리 기간 동안 변경 사항을 계획하여 애플리케이션에 미치는 영향을 최소화합니다.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 복제본 모드를 수정할 수 있습니다.

## 콘솔
<a name="db2-replicas-changing-replica-mode-console"></a>

**Db2 복제본의 복제본 모드 변경**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. 수정하려는 복제본 데이터베이스를 선택합니다.

1. **Modify**(수정)를 선택합니다.

1. **복제본 모드**에서 원하는 모드를 선택합니다.
   + **읽기 전용** - 읽기 워크로드의 경우
   + **대기** - 재해 복구의 경우

1. 사용하려는 기타 설정을 선택합니다.

1. [**Continue**]를 선택합니다.

1. **수정 사항 예약**에 대해 **즉시 적용**을 선택합니다.

1. **DB 인스턴스 수정**을 선택합니다.

1. 수정이 완료되면 **데이터베이스** 페이지에서 복제본 모드 변경 사항을 확인합니다. 변경이 완료되면 복제본 상태가 **사용 가능**으로 표시되어야 합니다.

## AWS CLI
<a name="db2-replicas-changing-replica-mode-cli"></a>

Db2 복제본을 읽기 전용 모드에서 대기 모드로 변경하려면 AWS CLI 명령 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)에서 `--replica-mode`를 `mounted`로 설정합니다. Db2 복제본을 대기 모드에서 읽기 전용 모드로 변경하려면 `--replica-mode`를 `open-read-only`로 설정합니다.

다음 예시에서는 복제본을 읽기 전용 모드에서 대기 모드로 변경합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier my_db2_replica \
    --replica-mode mounted
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db2_replica ^
    --replica-mode mounted
```

다음 예시에서는 복제본을 대기 모드에서 읽기 전용 모드로 변경합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier my_db2_replica \
    --replica-mode open-read-only
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db2_replica ^
    --replica-mode open-read-only
```

## RDS API
<a name="db2-replicas-changing-replica-mode-api"></a>

Db2 복제본을 읽기 전용 모드에서 대기 모드로 변경하려면 [ModifyDBInstance](AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)에서 `ReplicaMode=mounted`를 설정합니다. Db2 복제본을 대기 모드에서 읽기 전용 모드로 변경하려면 `ReplicaMode=open-read-only`를 설정합니다.

다음은 복제본 모드를 읽기 전용에서 대기 모드로 변경하는 API 직접 호출의 예입니다.

```
{
    "DBInstanceIdentifier": "my_db2_replica",
    "ReplicaMode": "mounted",
    "ApplyImmediately": true
}
```

다음은 복제본 모드를 대기 모드에서 읽기 전용으로 변경하는 API 직접 호출의 예입니다.

```
{
    "DBInstanceIdentifier": "my_db2_replica",
    "ReplicaMode": "open-read-only",
    "ApplyImmediately": true
}
```

복제본 모드 간의 차이에 대한 자세한 내용은 [Amazon RDS for Db2의 복제본 작업](db2-replication.md) 섹션을 참조하세요. 복제본 문제 해결은 [RDS for Db2 복제 문제 해결](db2-troubleshooting-replicas.md) 섹션을 참조하세요.

# RDS for Db2 복제본 백업 작업
<a name="db2-read-replicas.backups"></a>

프라이머리 데이터베이스와 마찬가지로 RDS for Db2 복제본의 백업을 만들고 복원할 수 있습니다. 그러나 복제본 백업의 작동 방식, 특히 복원 타이밍 및 백업 보존 설정에는 중요한 차이점이 있습니다.

RDS for Db2는 복제본에 대한 자동 백업과 수동 스냅샷을 모두 지원합니다. RDS for Db2는 특정 시점으로 복원을 지원하지 않습니다. RDS 백업에 대한 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요.

## 복제본 백업의 주요 차이점
<a name="db2-read-replicas-backups-overview"></a>

복제본 백업은 다음과 같은 몇 가지 중요한 측면에서 기본 데이터베이스 백업과 다릅니다.
+ 복제본에는 자동 백업이 기본적으로 활성화되어 있지 않습니다.
+ 복원 작업은 백업 생성 시간 대신 데이터베이스 시간을 사용합니다.
+ 복제본 지연은 복원된 실제 데이터에 영향을 미칠 수 있습니다. 복제본 지연 모니터링에 대한 자세한 내용은 [Db2 복제 지연 모니터링](db2-troubleshooting-replicas.md#db2-troubleshooting-replicas-lag) 섹션을 참조하세요.

## RDS for Db2 복제본에 대한 자동 백업 활성화
<a name="db2-read-replicas.backups.turning-on"></a>

기본 데이터베이스와 달리 RDS for Db2 복제본에는 기본적으로 자동 백업이 활성화되어 있지 않습니다. 자동 백업을 활성화하려면 백업 보존 기간을 수동으로 구성해야 합니다. 백업 보존 기간을 0이 아닌 양수 값으로 설정하여 자동 백업을 활성화합니다.

### 콘솔
<a name="db2-read-replicas.backups.turning-on-console"></a>

**자동 백업을 즉시 활성화**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **백업 보존 기간**으로 0이 아닌 양수 값(예: 3일)을 선택합니다.

1. [**Continue**]를 선택합니다.

1. **즉시 적용**을 선택합니다.

1. **DB 인스턴스 수정**을 선택하여 변경 내용을 저장하고 자동 백업을 활성화합니다.

### AWS CLI
<a name="db2-read-replicas.backups.turning-on-cli"></a>

자동 백업을 활성화하려면 AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 사용합니다.

다음 파라미터를 포함합니다.
+ `--db-instance-identifier`
+ `--backup-retention-period`
+ `--apply-immediately` 또는 `--no-apply-immediately`

다음 예에서는 백업 보존 기간을 3일로 설정하여 자동 백업을 활성화합니다. 변경이 바로 적용됩니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier my_db_instance  \
    --backup-retention-period 3 \
    --apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db_instance  ^
    --backup-retention-period 3 ^
    --apply-immediately
```

### RDS API
<a name="db2-read-replicas.backups.turning-on-api"></a>

자동 백업을 활성화하려면 RDS API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 다음 필수 파라미터와 함께 사용합니다.
+ `DBInstanceIdentifier`
+ `BackupRetentionPeriod`

## RDS for Db2 복제본 백업 복원
<a name="db2-read-replicas.backups.restoring"></a>

기본 데이터베이스의 백업을 복원하는 것과 동일한 방식으로 RDS for Db2 복제본 백업을 복원할 수 있습니다. 자세한 내용은 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 섹션을 참조하세요.

복제본 백업을 복원할 때 가장 중요한 고려 사항은 특히 복제본 지연이 있는 경우 데이터베이스 시간과 백업 생성 시간의 차이를 이해하는 것입니다.

복제 지연을 모니터링하고 백업에 예상 데이터가 포함되어 있는지 확인할 수 있습니다. ReplicaLag 지표에 대한 자세한 내용은 [Amazon RDS에 대한 Amazon CloudWatch 지표](rds-metrics.md) 섹션을 참조하세요.

### 타이밍 차이 이해
<a name="db2-read-replicas-backups-restoring-timing"></a>

복제본 백업을 복원할 때 복원할 시점을 결정해야 합니다. 이 데이터베이스 시간이란 백업에 있는 데이터의 가장 최근에 적용된 트랜잭션 시간입니다. 복제본 백업을 복원할 때는 백업이 완료된 시간이 아니라 데이터베이스 시간으로 복원됩니다. 복제본이 기본 데이터베이스보다 몇 분 또는 몇 시간 정도 지연될 수 있기 때문에 이러한 차이는 상당합니다. 따라서 복제본 백업의 데이터베이스 시간은 스냅샷 생성 시간보다 훨씬 빠를 수 있습니다.

데이터베이스 시간과 생성 시간의 차이를 찾으려면 AWS CLI [describe-db-snapshots](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshots.html) 명령을 실행하거나 RDS API [DescribeDBSnapshots](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshots.html) 작업을 직접 호출합니다. `SnapshotDatabaseTime` 값과 `OriginalSnapshotCreateTime` 값을 비교합니다. `SnapshotDatabaseTime` 값은 복제본 백업의 모든 데이터베이스 중에서 가장 이른 데이터베이스 시간입니다. `OriginalSnapshotCreateTime` 값은 기본 데이터베이스에 적용된 최신 트랜잭션입니다. 복제 지연은 여러 데이터베이스에서 다를 수 있으며 데이터베이스 시간은 이 두 번 사이에 있을 수 있습니다.

다음 AWS CLI 예는 두 시간의 차이를 보여줍니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-snapshots \
    --db-instance-identifier my_db2_replica \
    --db-snapshot-identifier my_replica_snapshot
```

Windows의 경우:

```
aws rds describe-db-snapshots ^
    --db-instance-identifier my_db2_replica ^
    --db-snapshot-identifier my_replica_snapshot
```

다음 예제와 비슷한 출력이 생성됩니다.

```
{
    "DBSnapshots": [
        {
            "DBSnapshotIdentifier": "my_replica_snapshot",
            "DBInstanceIdentifier": "my_db2_replica", 
            "SnapshotDatabaseTime": "2022-07-26T17:49:44Z",
            ...
            "OriginalSnapshotCreateTime": "2021-07-26T19:49:44Z"
        }
    ]
}
```

# RDS for Db2 복제 문제 해결
<a name="db2-troubleshooting-replicas"></a>

이 주제에서는 일반적인 RDS for Db2 복제 문제를 설명하고 읽기 전용 복제본과 대기 복제본 모두에 대한 문제 해결 지침을 제공합니다. 다음 문제 해결 정보를 검토하는 것 외에도 Db2 복제본을 생성하기 전에 [요구 사항 및 고려 사항](db2-read-replicas.limitations.md)을 따르고 [준비 단계](db2-read-replicas.Configuration.md)를 완료했는지 확인합니다.

## 복제본 생성 실패
<a name="db2-troubleshooting-replicas-creation"></a>



복제본 생성은 다음과 같은 여러 가지 이유로 실패할 수 있습니다.
+ **비활성 데이터베이스** - 복제본을 생성하기 전에 소스 DB 인스턴스의 모든 데이터베이스가 활성 상태여야 합니다.

  데이터베이스 활성화에 대한 자세한 내용은 [RDS for Db2용 데이터베이스에 대해 저장된 프로시저](db2-sp-managing-databases.md) 섹션을 참조하세요.
+ **자동 백업 누락** - 소스 DB 인스턴스에 자동 백업이 활성화되어 있어야 합니다.

  백업 활성화에 대한 자세한 내용은 [RDS for Db2 복제본에 대한 자동 백업 활성화](db2-read-replicas.backups.md#db2-read-replicas.backups.turning-on) 섹션을 참조하세요.
+ **파라미터 그룹 문제** - 복제본에는 사용자 지정 파라미터 그룹이 필요합니다. BYOL 라이선스의 경우 파라미터 그룹에 IBM Site ID 및 IBM Customer ID가 포함되어야 합니다.

  자세한 내용은 [Db2용 Bring Your Own License(BYOL)를 위한 IBM ID](db2-licensing.md#db2-prereqs-ibm-info) 섹션을 참조하세요.

## Db2 복제 지연 모니터링
<a name="db2-troubleshooting-replicas-lag"></a>

Amazon CloudWatch에서 복제 지연 시간을 모니터링하려면 Amazon RDS `ReplicaLag` 지표를 확인합니다. 복제본 지연 시간에 대한 자세한 내용은 [읽기 전용 복제본 모니터링](USER_ReadRepl.Monitoring.md) 및 [Amazon RDS에 대한 Amazon CloudWatch 지표](rds-metrics.md) 섹션을 참조하세요. 복제본 지연에 대한 CloudWatch 경보 설정에 대한 자세한 내용은 [Amazon CloudWatch로 Amazon RDS 지표 모니터링](monitoring-cloudwatch.md) 섹션을 참조하세요.

읽기 전용 복제본의 경우 지연 시간이 너무 길면 `MON_GET_HADR` 테이블에 복제본 DB 인스턴스의 상태를 쿼리합니다.

대기 복제본의 경우 지연 시간이 너무 길면 `MON_GET_HADR` 테이블에 소스 DB 인스턴스의 상태를 쿼리합니다. 복제본 DB 인스턴스는 사용자 연결을 허용하지 않으므로 복제본 DB 인스턴스를 쿼리하지 마세요.

복제 지연이 높은 일반적인 원인은 다음과 같습니다.
+ 복제본의 컴퓨팅 리소스 부족
+ 소스와 복제본 간의 네트워크 연결 문제
+ 소스 데이터베이스에서 높은 쓰기 활동
+ 복제본의 스토리지 성능 제한

높은 복제 지연이 지속되면 복제본 리소스의 규모를 조정하는 것이 좋습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Db2 복제 오류
<a name="db2-troubleshooting-replicas-triggers"></a>

Db2 복제는 여러 가지 이유로 오류 상태일 수 있습니다. 다음 조치를 취하세요.
+ 이벤트와 DB 인스턴스 상태를 모니터링하여 DB 인스턴스가 복제 중인지 확인합니다.

  자세한 내용은 [Amazon RDS 이벤트 알림 작업](USER_Events.md) 섹션을 참조하세요.
+ Amazon RDS 콘솔에서 Db2 복제본에 대한 진단 로그를 확인합니다. 로그에서 HADR 메시지의 오류를 찾습니다. 로그 시퀀스 번호와 기본 시퀀스 번호를 비교합니다.

  Db2 진단 로그 액세스 및 해석에 대한 자세한 내용은 [Amazon RDS for Db2 데이터베이스 로그 파일](USER_LogAccess.Concepts.Db2.md) 섹션을 참조하세요. Db2 HADR 구성 및 문제 해결에 대한 자세한 내용은 [Amazon RDS for Db2의 복제본 작업](db2-replication.md) 섹션을 참조하세요.

복제 오류가 지속되면 복제본을 다시 생성해야 할 수 있습니다.

## 연결 문제
<a name="db2-troubleshooting-replicas-connections"></a>

복제본에 연결할 수 없는 경우 복제본 모드에 대한 다음 정보를 검토합니다.
+ **대기 복제본** - 설계상 사용자 연결을 허용하지 않습니다. 읽기 워크로드에는 읽기 전용 복제본을 사용합니다.
+ **읽기 전용 복제본** - 보안 그룹 설정, 네트워크 ACL 및 파라미터 그룹 구성을 확인합니다.

  자세한 내용은 *Amazon VPC 사용 설명서*의 [보안 그룹을 사용하여 AWS 리소스에 대한 트래픽 제어](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html), *Amazon VPC 사용 설명서*의 [네트워크 액세스 제어 목록을 사용하여 서브넷 트래픽 제어](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) 및 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

## 성능 문제
<a name="db2-troubleshooting-replicas-performance"></a>

복제본 성능이 좋지 않은 경우 다음 제안을 검토하세요.
+ 복제본에 적절한 컴퓨팅 및 스토리지 리소스가 있는지 확인합니다.
+ Amazon CloudWatch에서 `ReplicaLag` 지표를 모니터링합니다.
+ 복제본 DB 인스턴스 클래스를 스케일 업하는 것이 좋습니다.

리소스 또는 인스턴스 클래스 수정에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

복제본 지연 모니터링에 대한 자세한 내용은 [복제 모니터링 지연 시간](USER_ReadRepl.Monitoring.md#USER_ReadRepl.Monitoring.Lag) 및 [Amazon RDS에 대한 Amazon CloudWatch 지표](rds-metrics.md) 섹션을 참조하세요. 복제본 지연에 대한 CloudWatch 경보 설정에 대한 자세한 내용은 [Amazon CloudWatch로 Amazon RDS 지표 모니터링](monitoring-cloudwatch.md) 섹션을 참조하세요.

# Amazon RDS for Db2 DB 인스턴스 옵션
<a name="Db2.Options"></a>

다음은 Db2 DB 엔진을 실행하는 Amazon RDS 인스턴스에 사용할 수 있는 옵션 또는 추가 기능을 보여줍니다. 이러한 옵션들을 활성화하려면 먼저 사용자 정의 옵션 그룹에 추가한 다음 옵션 그룹과 DB 인스턴스를 연동시켜야 합니다. 옵션 그룹 작업에 대한 자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 단원을 참조하십시오.

Amazon RDS는 Db2에 대해 다음 옵션을 지원합니다.


| 옵션 | 옵션 ID | 
| --- | --- | 
|  [Db2 감사 로깅](Db2.Options.Audit.md)  |  `DB2_AUDIT`  | 

# Db2 감사 로깅
<a name="Db2.Options.Audit"></a>

Db2 감사 로깅을 사용하면 Amazon RDS는 사용자의 데이터베이스 로그온, 데이터베이스에 대해 실행되는 쿼리 등의 데이터베이스 활동을 기록합니다. RDS는 사용자가 제공한 AWS Identity and Access Management(IAM) 역할을 사용하여 완료된 감사 로그를 Amazon S3 버킷에 업로드합니다.

**Topics**
+ [Db2 감사 로깅 설정](#db2-audit-setting-up)
+ [Db2 감사 로깅 관리](#db2-audit-managing)
+ [감사 로그 보기](#db2-audit-viewing-logs)
+ [Db2 감사 로깅의 문제 해결](#db2-audit-troubleshooting)

## Db2 감사 로깅 설정
<a name="db2-audit-setting-up"></a>

Amazon RDS for Db2 데이터베이스에 대한 감사 로깅을 활성화하려면 RDS for Db2 DB 인스턴스에서 `DB2_AUDIT` 옵션을 활성화합니다. 그런 다음 특정 데이터베이스에 대해 기능을 활성화하도록 감사 정책을 구성합니다. RDS for Db2 DB 인스턴스에서 옵션을 활성화하려면 `DB2_AUDIT` 옵션에 대한 옵션 설정을 구성합니다. Amazon S3 버킷의 Amazon 리소스 이름(ARN)과 버킷에 액세스할 수 있는 권한이 있는 IAM 역할을 제공하면 됩니다.

RDS for Db2 데이터베이스에 대해 Db2 감사 로깅을 설정하려면 다음 단계를 완료합니다.

**Topics**
+ [1단계: Amazon S3 버킷 생성](#db2-audit-create-s3-bucket)
+ [2단계: IAM 정책 생성](#db2-audit-create-iam-policy)
+ [3단계: IAM 역할 생성 및 IAM 정책 연결](#db2-audit-create-iam-role)
+ [4단계: Db2 감사 로깅을 위한 옵션 그룹 구성](#db2-audit-configure-options-group)
+ [5단계: 감사 정책 구성](#db2-audit-configure-audit-policy)
+ [6단계: 감사 구성 확인](#db2-audit-check-config-status)

### 1단계: Amazon S3 버킷 생성
<a name="db2-audit-create-s3-bucket"></a>

아직 생성하지 않은 경우 Amazon RDS에서 RDS for Db2 데이터베이스의 감사 로그 파일을 업로드할 Amazon S3 버킷을 생성합니다. 감사 파일의 대상으로 사용하는 S3 버킷에는 다음 제한이 적용됩니다.
+ RDS for Db2 DB 인스턴스와 동일한 AWS 리전에 있어야 합니다.
+ 대중에게 공개되어서는 안 됩니다.
+ 버킷 소유자는 IAM 역할 소유자여야 합니다.

Amazon S3 버킷을 생성하는 방법을 알아보려면 **Amazon S3 사용 설명서에서 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.

감사 로깅을 활성화하면 Amazon RDS가 자동으로 DB 인스턴스의 로그를 다음 위치로 전송합니다.
+ DB 인스턴스 수준 로그 – `bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/`
+ 데이터베이스 수준 로그 – `bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/db_name/`

버킷에 대한 Amazon 리소스 이름(ARN)을 기록합니다. 이 정보는 후속 단계를 완료하는 데 필요합니다.

### 2단계: IAM 정책 생성
<a name="db2-audit-create-iam-policy"></a>

감사 로그 파일을 DB 인스턴스에서 Amazon S3 버킷으로 전송하는 데 필요한 권한을 가진 IAM 정책을 생성합니다. 이 단계에서는 S3 버킷이 있다고 가정합니다.

정책을 생성하기 전에 다음 정보를 수집합니다.
+ 버킷의 ARN.
+ 버킷이 SSE-KMS 암호화를 사용하는 경우 AWS Key Management Service(AWS KMS) 키의 ARN.

다음 권한을 포함하는 IAM 정책을 생성합니다.

```
"s3:ListBucket",
 "s3:GetBucketAcl",
 "s3:GetBucketLocation",
 "s3:PutObject",
 "s3:ListMultipartUploadParts",
 "s3:AbortMultipartUpload",
 "s3:ListAllMyBuckets"
```

**참고**  
Amazon RDS는 동일한 AWS 계정가 S3 버킷과 RDS for Db2 DB 인스턴스를 모두 소유하고 있는지 확인하기 위해 내부적으로 `s3:ListAllMyBuckets` 작업이 필요합니다.

버킷이 SSE-KMS 암호화를 사용하는 경우 IAM 역할 및 AWS KMS 키에 대해 다음 권한도 포함하세요.

사용자의 IAM 역할에 대한 정책에 다음 권한을 포함합니다.

```
"kms:GenerateDataKey",
 "kms:Decrypt"
```

AWS KMS 키에 대한 키 정책에 다음 권한을 포함합니다. *111122223333*을 계정 번호로*AROA123456789EXAMPLE*을 IAM 역할 이름으로 변경합니다.

```
{
  "Sid": "Allow RDS role to use the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:sts::111122223333:assumed-role/AROA123456789EXAMPLE/RDS-Db2Audit",
      "arn:aws:iam::111122223333:role/AROA123456789EXAMPLE"
    ]
  },
  "Action": [
    "kms:GenerateDataKey",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```

AWS Management Console 또는 AWS Command Line Interface(AWS CLI)를 사용하여 IAM 정책을 생성할 수 있습니다.

#### 콘솔
<a name="db2-audit-create-iam-policy-console"></a>

**Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **정책**을 선택합니다.

1. **정책 생성**을 선택한 다음 **JSON**을 선택합니다.

1. **작업 추가**에서 **S3**를 기준으로 필터링합니다. **ListBucket**, **GetBucketAcl**, **GetBucketLocation** 액세스를 추가합니다.

1. **리소스 추가**에서 **추가**를 선택합니다. **리소스 유형**에서 **버킷**을 선택하고 버킷 이름을 입력합니다. 그런 다음 **리소스 추가**를 선택합니다.

1. **새 문 추가**를 선택합니다.

1. **작업 추가**에서 **S3**를 기준으로 필터링합니다. **PutObject**, **ListMultipartUploadParts**, **AbortMultipartUpload** 액세스를 추가합니다.

1. **리소스 추가**에서 **추가**를 선택합니다. **리소스 유형**에서 **개체**를 선택하고 *버킷 이름/\$1*을 입력합니다. 그런 다음 **리소스 추가**를 선택합니다.

1. **새 문 추가**를 선택합니다.

1. **작업 추가**에서 **S3**를 기준으로 필터링합니다. **ListAllMyBuckets** 액세스를 추가합니다.

1. **리소스 추가**에서 **추가**를 선택합니다. **리소스 유형**에서 **모든 리소스**를 선택합니다. 그런 다음 **리소스 추가**를 선택합니다.

1. 자체 KMS 키를 사용하여 데이터를 암호화하는 경우 다음 단계를 따릅니다.

   1. **새 문 추가**를 선택합니다.

   1. **작업 추가**에서 KMS별로 필터링합니다. **GenerateDataKey** 및 **Decrypt** 액세스를 추가합니다.

   1. **리소스 추가**에서 **추가**를 선택합니다. **리소스 유형**에서 **모든 리소스**를 선택합니다. 그런 다음 **리소스 추가**를 선택합니다.

1. **다음**을 선택합니다.

1. **정책 이름**에 이 정책의 이름을 입력합니다.

1. (선택 사항) **설명**에 이 정책에 대한 설명을 입력합니다.

1. **정책 생성**을 선택합니다.

#### AWS CLI
<a name="db2-audit-create-iam-policy-cli"></a>

**Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면**

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) 명령을 실행합니다. 다음 예제에서는 *iam\$1policy\$1name*과 *amzn-s3-demo-bucket*을 IAM 정책의 이름과 대상 Amazon S3 버킷의 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam create-policy \
       --policy-name iam_policy_name \
       --policy-document '{
           "Version": "2012-10-17",		 	 	 
           "Statement": [
               {
                   "Sid": "Statement1",
                   "Effect": "Allow",
                   "Action": [
                       "s3:ListBucket",
                       "s3:GetBucketAcl",
                       "s3:GetBucketLocation"
                   ],
                   "Resource": [
                       "arn:aws:s3:::amzn-s3-demo-bucket"
                   ]
               },
               {
                   "Sid": "Statement2",
                   "Effect": "Allow",
                   "Action": [
                       "s3:PutObject",
                       "s3:ListMultipartUploadParts",
                       "s3:AbortMultipartUpload"
                   ],
                   "Resource": [
                       "arn:aws:s3:::amzn-s3-demo-bucket/*"
                   ]
               },
               {
                   "Sid": "Statement3",
                   "Effect": "Allow",
                   "Action": [
                       "s3:ListAllMyBuckets"
                   ],
                   "Resource": [
                       "*"
                   ]
               },
               {
                   "Sid": "Statement4",
                   "Effect": "Allow",
                   "Action": [
                       "kms:GenerateDataKey",
                       "kms:Decrypt"
                   ],
                   "Resource": [
                       "*"
                   ]
               }
           ]
     }'
   ```

   Windows의 경우:

   ```
   aws iam create-policy ^
       --policy-name iam_policy_name ^
       --policy-document '{
           "Version": "2012-10-17",		 	 	 
           "Statement": [
               {
                   "Sid": "Statement1",
                   "Effect": "Allow",
                   "Action": [
                       "s3:ListBucket",
                       "s3:GetBucketAcl",
                       "s3:GetBucketLocation"
                   ],
                   "Resource": [
                       "arn:aws:s3:::amzn-s3-demo-bucket"
                   ]
               },
               {
                   "Sid": "Statement2",
                   "Effect": "Allow",
                   "Action": [
                       "s3:PutObject",
                       "s3:ListMultipartUploadParts",
                       "s3:AbortMultipartUpload"
                   ],
                   "Resource": [
                       "arn:aws:s3:::amzn-s3-demo-bucket/*"
                   ]
               },
               {
                   "Sid": "Statement3",
                   "Effect": "Allow",
                   "Action": [
                       "s3:ListAllMyBuckets"
                   ],
                   "Resource": [
                       "*"
                   ]
               },
               {
                   "Sid": "Statement4",
                   "Effect": "Allow",
                   "Action": [
                       "kms:GenerateDataKey",
                       "kms:Decrypt"
                   ],
                   "Resource": [
                       "*"
                   ]
               }
           ]
     }'
   ```

1. 정책이 생성되면 정책의 ARN을 기록해 둡니다. [3단계: IAM 역할 생성 및 IAM 정책 연결](#db2-audit-create-iam-role)에 대한 ARN이 필요합니다.

IAM 정책 생성에 대한 자세한 내용은 IAM 사용 설명서의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

### 3단계: IAM 역할 생성 및 IAM 정책 연결
<a name="db2-audit-create-iam-role"></a>

이 단계에서는 [2단계: IAM 정책 생성](#db2-audit-create-iam-policy)에서 IAM 정책을 생성했다고 가정합니다. 이 단계에서는 RDS for Db2 DB 인스턴스에 대한 IAM 역할을 만든 다음 역할에 IAM 정책을 연결합니다.

콘솔 또는 AWS CLI를 사용하여 DB 인스턴스에 대한 IAM 역할을 만들 수 있습니다.

#### 콘솔
<a name="db2-audit-create-iam-role-console"></a>

**IAM 역할을 생성하여 여기에 IAM 정책을 연결하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. **역할 생성(Create role)**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형**에 **AWS 서비스**를 선택합니다.

1. **서비스 또는 사용 사례**의 경우 **RDS**를 선택한 다음 **RDS – 데이터베이스에 역할 추가**를 선택합니다.

1. **다음**을 선택합니다.

1. **권한 정책**의 경우 생성한 IAM 정책의 이름을 검색하여 선택합니다.

1. **다음**을 선택합니다.

1. **역할 이름(Role name)**에 역할 이름을 입력합니다.

1. (선택 사항)**설명**에 새 역할에 대한 설명을 입력합니다.

1. **역할 생성**을 선택합니다.

#### AWS CLI
<a name="db2-audit-create-iam-role-cli"></a>

**IAM 역할을 생성하여 여기에 IAM 정책을 연결하려면**

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 명령을 실행합니다. 다음 예제에서 *iam\$1role\$1name*을 IAM 역할 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam create-role \
       --role-name iam_role_name \
       --assume-role-policy-document '{
         "Version": "2012-10-17",		 	 	 
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

   Windows의 경우:

   ```
   aws iam create-role ^
       --role-name iam_role_name ^
       --assume-role-policy-document '{
         "Version": "2012-10-17",		 	 	 
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

1. 역할이 생성되면 역할의 ARN을 기록합니다. 다음 [4단계: Db2 감사 로깅을 위한 옵션 그룹 구성](#db2-audit-configure-options-group) 단계에서 이 ARN을 사용합니다.

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html) 명령을 실행합니다. 다음 예제에서 *iam\$1policy\$1arn*을 [2단계: IAM 정책 생성](#db2-audit-create-iam-policy)에서 생성한 IAM 정책의 ARN으로 대체합니다. *iam\$1role\$1name*을 방금 생성한 IAM 역할 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam attach-role-policy \
      --policy-arn iam_policy_arn \
      --role-name iam_role_name
   ```

   Windows의 경우:

   ```
   aws iam attach-role-policy ^
      --policy-arn iam_policy_arn ^
      --role-name iam_role_name
   ```

자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자에게 권한을 위임하기 위한 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)을 참조하십시오.

### 4단계: Db2 감사 로깅을 위한 옵션 그룹 구성
<a name="db2-audit-configure-options-group"></a>

RDS for Db2 DB 인스턴스에 Db2 감사 로깅 옵션을 추가하는 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. 필요한 모든 옵션을 추가하고 구성하십시오.

1. 옵션 그룹을 DB 인스턴스에 연결합니다.

Db2 감사 로깅 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되면 S3 버킷에 감사를 생성하고 감사 로그를 저장할 수 있습니다.

**DB 인스턴스의 옵션 그룹에 Db2 감사 로깅을 추가 및 구성하려면**

1. 다음 중 하나를 선택합니다.
   + 기존 옵션 그룹을 사용합니다.
   + 사용자 지정 DB 옵션 그룹을 생성하고 해당 옵션 그룹을 사용합니다. 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. 옵션 그룹에 **DB2\$1AUDIT** 옵션을 추가하고 옵션 설정을 구성합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.
   + **IAM\$1ROLE\$1ARN**의 경우 [3단계: IAM 역할 생성 및 IAM 정책 연결](#db2-audit-create-iam-role)에서 생성한 IAM 역할의 ARN을 입력합니다.
   + **S3\$1BUCKET\$1ARN**의 경우 Db2 감사 로그에 사용할 S3 버킷의 ARN을 입력합니다. 버킷은 RDS for Db2 DB 인스턴스와 동일한 리전에 있어야 합니다. 입력한 IAM 역할과 관련된 정책은 이 리소스에 필요한 작업을 허용해야 합니다.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다. 다음 중 하나를 선택합니다.
   + 새 DB 인스턴스를 생성하는 경우, 인스턴스를 시작할 때 옵션 그룹을 적용하십시오.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정한 후 새 옵션 그룹을 연결하여 옵션 그룹을 적용하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

### 5단계: 감사 정책 구성
<a name="db2-audit-configure-audit-policy"></a>

RDS for Db2 데이터베이스에 대한 감사 정책을 구성하려면 RDS for Db2 DB 인스턴스에 대한 마스터 사용자 이름 및 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 그런 다음 데이터베이스의 DB 이름과 해당 파라미터 값을 사용하여 `rdsadmin.configure_db_audit` 저장 프로시저를 호출합니다.

다음 예제에서는 데이터베이스에 연결하여 AUDIT, CHECKING, OBJMAINT, SECMAINT, SYSADMIN, VALIDATE 카테고리를 통해 `testdb`에 대한 감사 정책을 구성합니다. `BOTH` 상태 값은 성공과 실패를 모두 로깅하며, `ERROR TYPE`은 기본적으로 `NORMAL`입니다. 이 저장 프로시저를 사용하는 방법에 대한 자세한 내용은 [rdsadmin.configure\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-configure-db-audit) 섹션을 참조하세요.

```
db2 "connect to rdsadmin user master_user using master_password"
db2 "call rdsadmin.configure_db_audit('testdb', 'ALL', 'BOTH', ?)"
```

### 6단계: 감사 구성 확인
<a name="db2-audit-check-config-status"></a>

감사 정책이 올바르게 설정되었는지 확인하려면 감사 구성 상태를 확인합니다.

구성을 확인하려면 RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 그런 다음 데이터베이스의 DB 이름을 사용하여 다음 SQL 문을 실행합니다. 다음 예제에서 DB 이름은 *testdb*입니다.

```
db2 "select task_id, task_type, database_name, lifecycle,
    varchar(bson_to_json(task_input_params), 500) as task_params,
    cast(task_output as varchar(500)) as task_output
    from table(rdsadmin.get_task_status(null,'testdb','CONFIGURE_DB_AUDIT'))"
    
Sample Output
 
TASK_ID              TASK_TYPE            DATABASE_NAME       LIFECYCLE
-------------------- -------------------- --------------- -------------
                   2  CONFIGURE_DB_AUDIT            DB2DB       SUCCESS

... continued ...
TASK_PARAMS                                
-------------------------------------------------------- 
{ "AUDIT_CATEGORY" : "ALL", "CATEGORY_SETTING" : "BOTH" }            

... continued ...
                                        TASK_OUTPUT
---------------------------------------------------
2023-12-22T20:27:03.029Z Task execution has started.

2023-12-22T20:27:04.285Z Task execution has completed successfully.
```

## Db2 감사 로깅 관리
<a name="db2-audit-managing"></a>

Db2 감사 로깅을 설정한 후 특정 데이터베이스의 감사 정책을 수정하거나 데이터베이스 수준 또는 전체 DB 인스턴스에서 감사 로깅을 비활성화할 수 있습니다. 로그 파일이 업로드되는 Amazon S3 버킷을 변경할 수도 있습니다.

**Topics**
+ [Db2 감사 정책 수정](#db2-audit-modifying-policy)
+ [로그 파일 위치 수정](#db2-audit-modifying-location)
+ [Db2 감사 로깅 비활성화](#db2-audit-disabling)

### Db2 감사 정책 수정
<a name="db2-audit-modifying-policy"></a>

특정 RDS for Db2 데이터베이스의 감사 정책을 수정하려면 `rdsadmin.configure_db_audit` 저장 프로시저를 실행합니다. 이 저장 프로시저를 사용하여 감사 정책의 카테고리, 카테고리 설정 및 오류 유형 구성을 변경할 수 있습니다. 자세한 내용은 [rdsadmin.configure\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-configure-db-audit) 섹션을 참조하세요.

### 로그 파일 위치 수정
<a name="db2-audit-modifying-location"></a>

로그 파일이 업로드되는 Amazon S3 버킷을 변경하려면 다음 중 하나를 수행합니다.
+ RDS for Db2 DB 인스턴스에 연결된 현재 옵션 그룹 수정 – `DB2_AUDIT` 옵션이 새 버킷을 가리키도록 `S3_BUCKET_ARN` 설정을 업데이트합니다. 또한 연결된 옵션 그룹의 `IAM_ROLE_ARN` 설정으로 지정된 IAM 역할에 연결된 IAM 정책을 업데이트해야 합니다. 이 IAM 정책은 새 버킷에 필요한 액세스 권한을 제공해야 합니다. IAM 정책에 필요한 권한에 대한 자세한 내용은 [IAM 정책 생성](#db2-audit-create-iam-policy) 섹션을 참조하세요.
+ RDS for Db2 DB 인스턴스를 다른 옵션 그룹에 연결 - DB 인스턴스를 수정하여 연결된 옵션 그룹을 변경합니다. 새 옵션 그룹이 올바른 `S3_BUCKET_ARN` 및 `IAM_ROLE_ARN` 설정으로 구성되었는지 확인합니다. `DB2_AUDIT` 옵션에 대해 이러한 설정을 구성하는 방법에 대한 자세한 내용은 [옵션 그룹 구성](#db2-audit-configure-options-group) 섹션을 참조하세요.

옵션 그룹을 수정하는 경우 변경 사항을 즉시 적용해야 합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

### Db2 감사 로깅 비활성화
<a name="db2-audit-disabling"></a>

Db2 감사 로깅을 비활성화하려면 다음 중 하나를 수행합니다.
+ RDS for Db2 DB 인스턴스에 대한 감사 로깅 비활성화 - DB 인스턴스를 수정하고 `DB2_AUDIT` 옵션이 포함된 옵션 그룹을 제거합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.
+ 특정 데이터베이스에 대한 감사 로깅 비활성화 - 데이터베이스의 DB 이름으로 `rdsadmin.disable_db_audit`를 호출하여 감사 로깅을 중지하고 감사 정책을 제거합니다. 자세한 내용은 [rdsadmin.disable\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-disable-db-audit) 섹션을 참조하세요.

  ```
  db2 "call rdsadmin.disable_db_audit(
      'db_name',
      ?)"
  ```

## 감사 로그 보기
<a name="db2-audit-viewing-logs"></a>

Db2 감사 로깅을 활성화한 후 Amazon S3 버킷의 감사 데이터를 보기 전에 1시간 이상 기다립니다. Amazon RDS는 RDS for Db2 DB 인스턴스의 로그를 다음 위치로 자동 전송합니다.
+ DB 인스턴스 수준 로그 – `bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/`
+ 데이터베이스 수준 로그 – `bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/db_name/`

Amazon S3 콘솔의 다음 예제 스크린샷은 RDS for Db2 DB 인스턴스 수준 로그 파일의 폴더 목록을 보여줍니다.

![\[객체 탭이 선택된 Amazon S3 콘솔에 RDS for Db2 DB 인스턴스 수준 로그 파일의 폴더 목록이 표시되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/db2-instance-level-audit-logs.png)


Amazon S3 콘솔의 다음 예제 스크린샷은 RDS for Db2 DB 인스턴스의 데이터베이스 수준 로그 파일을 보여줍니다.

![\[객체 탭이 선택된 Amazon S3 콘솔에는 RDS for Db2 DB 인스턴스의 데이터베이스 수준 로그 파일이 표시되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/db2-database-level-audit-logs.png)


## Db2 감사 로깅의 문제 해결
<a name="db2-audit-troubleshooting"></a>

다음 정보를 사용하여 Db2 감사 로깅과 관련된 일반적인 문제를 해결합니다.

### 감사 정책을 구성할 수 없음
<a name="db2-audit-troubleshooting-policy-config"></a>

저장 프로시저 `rdsadmin.configure_db_audit`을 호출하면 오류가 반환되는 경우 `DB2_AUDIT` 옵션이 있는 옵션 그룹이 RDS for Db2 DB 인스턴스와 연결되어 있지 않을 수 있습니다. DB 인스턴스를 수정하여 옵션 그룹을 추가한 다음 저장 프로시저를 다시 호출하세요. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

### Amazon S3 버킷에 데이터 없음
<a name="db2-audit-troubleshooting-missing-data"></a>

Amazon S3 버킷에서 로깅 데이터가 누락된 경우 다음을 확인합니다.
+ Amazon S3 버킷은 RDS for Db2 DB 인스턴스와 동일한 리전에 있습니다.
+ `IAM_ROLE_ARN` 옵션 설정에서 지정한 역할은 Amazon S3 버킷에 로그를 업로드하는 데 필요한 권한으로 구성됩니다. 자세한 내용은 [IAM 정책 생성](#db2-audit-create-iam-policy) 섹션을 참조하세요.
+ `IAM_ROLE_ARN` 및 `S3_BUCKET_ARN` 옵션 설정의 ARN은 RDS for Db2 DB 인스턴스와 연결된 옵션 그룹에서 올바르게 표시됩니다. 자세한 내용은 [옵션 그룹 구성](#db2-audit-configure-options-group) 섹션을 참조하세요.

데이터베이스에 연결하고 SQL 문을 실행하여 감사 로깅 구성의 작업 상태를 확인할 수 있습니다. 자세한 내용은 [감사 구성 확인](#db2-audit-check-config-status) 섹션을 참조하세요.

또한 이벤트를 확인하여 로그가 누락될 수 있는 이유에 대해 자세히 알아볼 수 있습니다. 이벤트를 보는 방법에 대한 자세한 내용은 [Amazon RDS 콘솔에서 로그, 이벤트 및 스트림 보기](logs-events-streams-console.md) 섹션을 참조하세요.

# Amazon RDS for Db2를 위한 외부 저장 프로시저
<a name="db2-external-stored-procedures"></a>

외부 루틴을 만들고 이를 Amazon RDS for Db2 데이터베이스에 외부 저장 프로시저로 등록할 수 있습니다. 현재 RDS for Db2는 외부 저장 프로시저에 대해 Java 기반 루틴만 지원합니다.

## Java 기반 외부 저장 프로시저
<a name="db2-external-stored-procedures-java"></a>

Java 기반 외부 저장 프로시저는 RDS for Db2 데이터베이스에 외부 저장 프로시저로 등록하는 외부 Java 루틴입니다.

**Topics**
+ [Java 기반 외부 저장 프로시저의 제한 사항](#db2-external-stored-procedures-java-limitations)
+ [Java 기반 외부 저장 프로시저 구성](#db2-external-stored-procedures-java-configuring)

### Java 기반 외부 저장 프로시저의 제한 사항
<a name="db2-external-stored-procedures-java-limitations"></a>

외부 루틴을 개발하기 전에 다음 제한 사항 및 제약 조건에 유의하세요.

외부 루틴을 만들려면 Db2에서 제공하는 Java 개발 키트(JDK)를 사용해야 합니다. 자세한 내용은 [Java software support for Db2 database products](https://www.ibm.com/docs/en/db2/11.5?topic=servers-java-software-support-db2-database-products)를 참조하세요.

Java 프로그램은 `/tmp` 디렉터리에서만 파일을 생성할 수 있으며, Amazon RDS는 이러한 파일에 대한 실행 파일 또는 Set User ID(SUID) 권한 활성화를 지원하지 않습니다. 또한 Java 프로그램은 소켓 시스템 직접 호출이나 다음 시스템 직접 호출을 사용할 수 없습니다.
+ \$1sysctl
+ acct
+ afs\$1syscall
+ bpf
+ capset
+ chown
+ chroot
+ create\$1module
+ delete\$1module
+ fanotify\$1init
+ fanotify\$1mark
+ finit\$1module
+ fsconfig
+ fsopen
+ fspick
+ get\$1kernel\$1syms
+ getpmsg
+ init\$1module
+ mount
+ move\$1mount
+ nfsservctl
+ open\$1by\$1handle\$1at
+ open\$1tree
+ pivot\$1root
+ putpmsg
+ query\$1module
+ quotactl
+ reboot
+ security
+ setdomainname
+ setfsuid
+ sethostname
+ sysfs
+ tuxcall
+ umount2
+ uselib
+ ustat
+ vhangup
+ vserver

Db2의 외부 루틴에 대한 추가 제약 조건은 IBM Db2 설명서의 [Restrictions on external routines](https://www.ibm.com/docs/en/db2/11.5?topic=routines-restrictions-external)를 참조하세요.

### Java 기반 외부 저장 프로시저 구성
<a name="db2-external-stored-procedures-java-configuring"></a>

외부 저장 프로시저를 구성하려면 외부 루틴으로 .jar 파일을 만들고 RDS for Db2 데이터베이스에 설치한 다음 외부 저장 프로시저로 등록하세요.

**Topics**
+ [1단계: 외부 저장 프로시저 활성화](#db2-external-stored-procedures-java-enable)
+ [2단계: 외부 루틴을 사용하여 .jar 파일 설치](#db2-external-stored-procedures-java-install-jar)
+ [3단계: 외부 저장 프로시저 등록](#db2-external-stored-procedures-java-register)
+ [4단계: 외부 저장 프로시저 검증](#db2-external-stored-procedures-java-validate)

#### 1단계: 외부 저장 프로시저 활성화
<a name="db2-external-stored-procedures-java-enable"></a>

외부 저장 프로시저를 활성화하려면 DB 인스턴스와 연결된 사용자 정의 파라미터 그룹에서 `db2_alternate_authz_behaviour` 파라미터를 다음 값 중 하나로 설정합니다.
+ `EXTERNAL_ROUTINE_DBADM` - `DBADM` 권한이 있는 모든 사용자, 그룹 또는 역할에 암시적으로 `CREATE_EXTERNAL_ROUTINE` 권한을 부여합니다.
+ `EXTERNAL_ROUTINE_DBAUTH` - `DBADM` 권한이 있는 사용자가 모든 사용자, 그룹 또는 역할에 `CREATE_EXTERNAL_ROUTINE` 권한을 부여하도록 허용합니다. 이 경우 `DBADM` 권한이 있는 사용자를 포함하여 모든 사용자, 그룹 또는 역할에 이 권한이 암시적으로 부여되지 않습니다.

이 설정에 대한 자세한 내용은 IBM Db2 설명서의 [GRANT (database authorities) statement](https://www.ibm.com/docs/en/db2/11.5?topic=statements-grant-database-authorities)를 참조하세요.

AWS Management Console, AWS CLI 또는 Amazon RDS API를 통해 사용자 지정 파라미터 그룹을 생성하고 수정할 수 있습니다.

##### 콘솔
<a name="db2-external-stored-procedures-java-enable-console"></a>

**사용자 지정 파라미터 그룹에서 db2\$1alternate\$1authz\$1behaviour 파라미터를 구성하는 방법**

1. DB 인스턴스에서 사용하는 것과 다른 사용자 정의 DB 파라미터 그룹을 사용하려면 새로운 DB 파라미터 그룹을 생성합니다. Bring Your Own License(BYOL) 모델을 사용하는 경우 새 사용자 지정 파라미터 그룹에 IBM ID가 포함되어 있어야 합니다. 이 ID에 대한 자세한 내용은 [Db2용 Bring Your Own License(BYOL)를 위한 IBM ID](db2-licensing.md#db2-prereqs-ibm-info) 섹션을 참조하세요. DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. 사용자 지정 파라미터 그룹에서 `db2_alternate_authz_behaviour` 파라미터 값을 설정합니다. 파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

##### AWS CLI
<a name="db2-external-stored-procedures-java-enable-cli"></a>

**사용자 지정 파라미터 그룹에서 db2\$1alternate\$1authz\$1behaviour 파라미터를 구성하는 방법**

1. DB 인스턴스가 사용하는 것과 다른 사용자 지정 DB 파라미터 그룹을 사용하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 명령을 실행하여 사용자 지정 파라미터 그룹을 생성합니다. Bring Your Own License(BYOL) 모델을 사용하는 경우 새 사용자 지정 파라미터 그룹에 IBM ID가 포함되어 있어야 합니다. 이 ID에 대한 자세한 내용은 [Db2용 Bring Your Own License(BYOL)를 위한 IBM ID](db2-licensing.md#db2-prereqs-ibm-info) 섹션을 참조하세요.

   다음 필수 옵션을 포함합니다.
   + `--db-parameter-group-name` – 생성하려는 파라미터 그룹의 이름입니다.
   + `--db-parameter-group-family` – Db2 엔진 에디션 및 메이저 버전입니다. 유효 값은 `db2-se-11.5` 및 `db2-ae-11.5`입니다.
   + `--description` – 이 파라미터 그룹에 대한 설명입니다.

   DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

   다음 예시는 파라미터 그룹 패밀리 `db2-se-11.5`에 사용자 정의 파라미터 그룹 `MY_EXT_SP_PARAM_GROUP`을 생성하는 방법을 보여줍니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds create-db-parameter-group \
   --region us-east-1 \
   --db-parameter-group-name MY_EXT_SP_PARAM_GROUP \
   --db-parameter-group-family db2-se-11.5 \ 
   --description "test db2 external routines"
   ```

   Windows의 경우:

   ```
   aws rds create-db-parameter-group ^
   --region us-east-1 ^
   --db-parameter-group-name MY_EXT_SP_PARAM_GROUP ^
   --db-parameter-group-family db2-se-11.5 ^ 
   --description "test db2 external routines"
   ```

1. [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 명령을 실행하여 사용자 지정 파라미터 그룹의 `db2_alternate_authz_behaviour` 파라미터를 수정합니다.

   다음 필수 옵션을 포함합니다.
   + `--db-parameter-group-name` – 생성한 파라미터 그룹의 이름입니다.
   + `--parameters` – 파라미터 업데이트를 위한 파라미터 이름, 값, 응용 방법으로 구성된 배열입니다.

   파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

   다음 예시는 `db2_alternate_authz_behaviour`의 값을 `EXTERNAL_ROUTINE_DBADM`으로 설정하여 파라미터 그룹 `MY_EXT_SP_PARAM_GROUP`을 수정하는 방법을 보여줍니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds modify-db-parameter-group \
       --db-parameter-group-name MY_EXT_SP_PARAM_GROUP \
       --parameters "ParameterName='db2_alternate_authz_behaviour',ParameterValue='EXTERNAL_ROUTINE_DBADM',ApplyMethod=immediate"
   ```

   Windows의 경우:

   ```
   aws rds modify-db-parameter-group ^
       --db-parameter-group-name MY_EXT_SP_PARAM_GROUP ^
       --parameters "ParameterName='db2_alternate_authz_behaviour',ParameterValue='EXTERNAL_ROUTINE_DBADM',ApplyMethod=immediate"
   ```

##### RDS API
<a name="db2-external-stored-procedures-java-enable-api"></a>

**사용자 지정 파라미터 그룹에서 db2\$1alternate\$1authz\$1behaviour 파라미터를 구성하는 방법**

1. DB 인스턴스에서 사용하는 것과 다른 사용자 정의 DB 파라미터 그룹을 사용하려면 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html) 작업을 사용하여 새로운 DB 파라미터 그룹을 생성합니다. Bring Your Own License(BYOL) 모델을 사용하는 경우 새 사용자 지정 파라미터 그룹에 IBM Db2 ID가 포함되어 있어야 합니다. 이 ID에 대한 자세한 내용은 [Db2용 Bring Your Own License(BYOL)를 위한 IBM ID](db2-licensing.md#db2-prereqs-ibm-info) 섹션을 참조하세요.

   다음 필수 파라미터를 포함합니다.
   + `DBParameterGroupName`
   + `DBParameterGroupFamily`
   + `Description`

   DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 단원을 참조하십시오.

1. RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html) 작업을 사용하여 생성한 사용자 지정 파라미터 그룹의 `db2_alternate_authz_behaviour` 파라미터를 수정합니다.

   다음 필수 파라미터를 포함합니다.
   + `DBParameterGroupName`
   + `Parameters`

   파라미터 그룹 수정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

#### 2단계: 외부 루틴을 사용하여 .jar 파일 설치
<a name="db2-external-stored-procedures-java-install-jar"></a>

Java 루틴을 만든 후에는 .jar 파일을 만든 다음 `db2 "call sqlj.install_jar('file:file_path',jar_ID)"`를 실행하여 RDS for Db2 데이터베이스에 설치합니다.

다음 예시는 Java 루틴을 만들어 RDS for Db2 데이터베이스에 설치하는 방법을 보여줍니다. 예시에는 프로세스를 테스트하는 데 사용할 수 있는 간단한 루틴에 대한 샘플 코드가 포함되어 있습니다. 이 예에서는 다음을 가정합니다.
+ Java 코드는 Db2가 설치된 서버에서 컴파일됩니다. IBM에서 제공하는 JDK로 컴파일하지 않으면 설명할 수 없는 오류가 발생할 수 있으므로 이 방법이 가장 좋습니다.
+ 서버에는 RDS for Db2 데이터베이스가 로컬로 카탈로그되어 있습니다.

다음 샘플 코드를 사용하여 프로세스를 시험해 보려면 코드를 복사한 다음 `MYJAVASP.java`라는 파일에 저장하세요.

```
import java.sql.*;
public class MYJAVASP
{
public static void my_JAVASP (String inparam) throws SQLException, Exception
{
try
{
// Obtain the calling context's connection details.
Connection myConn = DriverManager.getConnection("jdbc:default:connection");
String myQuery = "INSERT INTO TEST.TEST_TABLE VALUES (?, CURRENT DATE)";
PreparedStatement myStmt = myConn.prepareStatement(myQuery);
myStmt.setString(1, inparam);
myStmt.executeUpdate();
}
catch (SQLException sql_ex)
{
throw sql_ex;
}
catch (Exception ex)
{
throw ex;
}
}
```

다음 명령은 Java 루틴을 컴파일합니다.

```
~/sqllib/java/jdk64/bin/javac MYJAVASP.java
```

다음 명령은 .jar 파일을 생성합니다.

```
~/sqllib/java/jdk64/bin/jar cvf MYJAVASP.jar MYJAVASP.class
```

다음 명령은 이름이 `MY_DB2_DATABASE`인 데이터베이스에 연결하고 .jar 파일을 설치합니다.

```
db2 "connect to MY_DB2_DATABASE user master_username using master_password" 

db2 "call sqlj.install_jar('file:/tmp/MYJAVASP.jar','MYJAVASP')"
db2 "call sqlj.refresh_classes()"
```

#### 3단계: 외부 저장 프로시저 등록
<a name="db2-external-stored-procedures-java-register"></a>

RDS for Db2 데이터베이스에 .jar 파일을 설치한 후 `db2 CREATE PROCEDURE` 또는 `db2 REPLACE PROCEDURE` 명령을 실행하여 저장 프로시저로 등록합니다.

다음 예시는 데이터베이스에 연결하고 이전 단계에서 만든 Java 루틴을 저장 프로시저로 등록하는 방법을 보여줍니다.

```
db2 "connect to MY_DB2_DATABASE user master_username using master_password"

create procedure TESTSP.MYJAVASP (in input char(6))
specific myjavasp
dynamic result sets 0
deterministic
language java
parameter style java
no dbinfo
fenced
threadsafe
modifies sql data
program type sub
external name 'MYJAVASP!my_JAVASP';
```

#### 4단계: 외부 저장 프로시저 검증
<a name="db2-external-stored-procedures-java-validate"></a>

다음 단계를 사용하여 이전 단계에서 등록된 샘플 외부 저장 프로시저를 테스트합니다.

**외부 저장 프로시저를 검증하는 방법**

1. 다음 예시에서처럼 `TEST.TEST_TABLE`과 같은 테이블을 생성합니다.

   ```
   db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
   ```

1. 새로운 외부 저장 프로시저를 직접 호출합니다. 호출 시 `0`의 상태가 반환됩니다.

   ```
   db2 "call TESTSP.MYJAVASP('test')"
   Return Status = 0
   ```

1. 1단계에서 만든 테이블을 쿼리하여 저장 프로시저 호출의 결과를 확인합니다.

   ```
   db2 "SELECT * from TEST.TEST_TABLE"
   ```

   이 쿼리는 다음 예시와 유사한 출력을 반환합니다.

   ```
   C1     C2
   ------ ----------
   test   02/05/2024
   ```

# Amazon RDS for Db2에 대해 알려진 문제 및 제한
<a name="db2-known-issues-limitations"></a>

Amazon RDS for Db2 작업에 대해 알려진 문제 및 제한은 다음과 같습니다.

**Topics**
+ [인증 제한](#db2-known-issues-limitations-authentication-limit)
+ [울타리가 없는 루틴](#db2-known-issues-limitations-non-fenced-routines)
+ [마이그레이션 중 자동이 아닌 스토리지 테이블스페이스](#db2-known-issues-limitations-non-automatic-storage-tablespaces)
+ [db2\$1compatibility\$1vector 파라미터 설정](#db2-known-issues-limitations-db2-compatibility-vector)
+ [INVALID 패키지가 포함된 데이터베이스 마이그레이션](#db2-known-issues-limitations-invalid-packages-migrating)

## 인증 제한
<a name="db2-known-issues-limitations-authentication-limit"></a>

Amazon RDS는 기본적으로 `db2auth`를 `JCC_ENFORCE_SECMEC`로 설정합니다. 그러나 유선을 통해 사용자 ID 및 암호 암호화를 적용하지 않으려면 파라미터 그룹에서 `db2auth` 파라미터를 `CLEAR_TEXT`로 변경하여 이 설정을 재정의할 수 있습니다. 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

## 울타리가 없는 루틴
<a name="db2-known-issues-limitations-non-fenced-routines"></a>

RDS for Db2는 울타리가 없는 루틴 생성과 데이터 백업 및 복원을 통한 해당 루틴의 마이그레이션을 지원하지 않습니다. 데이터베이스에 울타리가 없는 루틴이 포함되어 있는지 확인하려면 다음 SQL 명령을 실행합니다.

```
SELECT 'COUNT:' || count(*) FROM SYSCAT.ROUTINES where fenced='N' and routineschema not in ('SQLJ','SYSCAT','SYSFUN','SYSIBM','SYSIBMADM','SYSPROC','SYSTOOLS')
```

## 마이그레이션 중 자동이 아닌 스토리지 테이블스페이스
<a name="db2-known-issues-limitations-non-automatic-storage-tablespaces"></a>

RDS for Db2는 자동이 아닌 새 스토리지 테이블스페이스 생성을 지원하지 않습니다. 데이터베이스의 일회성 마이그레이션에 기본 복원을 사용하는 경우 RDS for Db2는 자동이 아닌 스토리지 테이블스페이스를 자동 테이블스페이스로 자동 변환한 다음, 데이터베이스를 RDS for Db2로 복원합니다. 일회성 마이그레이션에 대한 자세한 내용은 [Linux에서 Amazon RDS for Db2의 Linux로 마이그레이션](db2-one-time-migration-linux.md) 및 [AIX 또는 Windows에서 Amazon RDS for Db2의 Linux로 마이그레이션](db2-one-time-migration-aix-windows-linux.md) 섹션을 참조하세요.

## db2\$1compatibility\$1vector 파라미터 설정
<a name="db2-known-issues-limitations-db2-compatibility-vector"></a>

Amazon RDS를 사용하면 DB 인스턴스를 만들 때 초기 데이터베이스를 만든 다음 연결된 파라미터 그룹에서 파라미터를 수정할 수 있습니다. 그러나 Db2의 경우 파라미터 그룹에서 `db2_compatibility_vector` 파라미터를 설정하려면 먼저 사용자 지정 파라미터 그룹에서 파라미터를 수정하고 데이터베이스 없이 DB 인스턴스를 만든 다음, `rdsadmin.create_database` 저장 프로시저를 사용하여 데이터베이스를 만들어야 합니다.

**`db2_compatibility_vector` 파라미터를 설정하는 방법**

1. [사용자 지정 DB 파라미터 그룹을 만듭니다](USER_WorkingWithParamGroups.Creating.md). (기본 파라미터 그룹에서는 파라미터를 수정할 수 없습니다.)

1. [파라미터를 수정합니다](USER_WorkingWithParamGroups.Modifying.md).

1. [DB 인스턴스를 만듭니다](USER_CreateDBInstance.md).

1. `rdsadmin.create_database` 저장 프로시저를 사용하여 [데이터베이스를 만듭니다](db2-managing-databases.md#db2-creating-database).

1. 데이터베이스가 포함된 DB 인스턴스와 [파라미터 그룹을 연결](USER_WorkingWithParamGroups.Associating.md)합니다.

## INVALID 패키지가 포함된 데이터베이스 마이그레이션
<a name="db2-known-issues-limitations-invalid-packages-migrating"></a>

`RESTORE` 명령을 사용하여 `INVALID` 패키지가 포함된 Db2 데이터베이스를 RDS for Db2로 마이그레이션하면 데이터베이스 사용을 시작할 때 문제가 발생할 수 있습니다. `INVALID` 패키지는 DB 인스턴스 사용자 `rdsdb`의 권한 부여 설정 및 `PUBLIC`에서 권한 부여 제거로 인해 문제를 일으킬 수 있습니다. `INVALID` 패키지로 인해 다음 명령이 실패합니다.
+ `db2updv115`
+ `db2 "call SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()"`

`RESTORE` 명령을 사용하여 데이터베이스를 마이그레이션하기 전에 다음 명령을 실행하여 데이터베이스에 `INVALID` 패키지가 포함되어 있지 않은지 확인합니다.

```
db2 "SELECT 'COUNT:' || count(*) FROM SYSCAT.INVALIDOBJECTS"
```

명령이 0보다 큰 개수를 반환하는 경우 다음 명령을 직접적으로 호출합니다.

```
db2 "call SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()"
```

그런 다음 이전 명령을 직접적으로 호출하여 데이터베이스에 `INVALID` 패키지가 더 이상 포함되어 있지 않은지 확인합니다.

```
db2 "SELECT 'COUNT:' || count(*) FROM SYSCAT.INVALIDOBJECTS"
```

이제 데이터베이스를 백업하여 RDS for Db2 DB 인스턴스로 복원할 준비가 되었습니다.

# Amazon RDS for Db2 저장 프로시저 참조
<a name="db2-stored-procedures"></a>

기본 제공 저장 프로시저를 직접 호출하여 Db2 엔진을 실행하는 Amazon RDS for Db2 DB 인스턴스를 관리할 수 있습니다.


| 저장 프로시저 | 범주 | 설명 | 
| --- | --- | --- | 
|  [rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database)  |  데이터베이스 수  |  `rdsadmin.activate_database` 저장 프로시저를 사용하여 독립형 RDS for Db2 DB 인스턴스에서 데이터베이스를 활성화합니다.  | 
|  [rdsadmin.add\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups)  |  권한 부여 및 취소  |  `rdsadmin.add_groups` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 사용자에게 하나 이상의 그룹을 추가합니다.  | 
|  [rdsadmin.add\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-add-user)  |  권한 부여 및 취소  |  `rdsadmin.add_user` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 권한 부여 목록에 사용자를 추가합니다.  | 
|  [rdsadmin.alter\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-alter-buffer-pool)  |  버퍼 풀  |  `rdsadmin.alter_bufferpool` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 버퍼 풀을 수정합니다.  | 
|  [rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace)  |  테이블스페이스  |  `rdsadmin.alter_tablespace` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 테이블스페이스를 수정합니다.  | 
|  [rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database)  |  데이터베이스  |  `rdsadmin.backup_database` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스를 Amazon S3 버킷으로 백업합니다. 그런 다음 Amazon S3에서 RDS for Db2 DB 인스턴스 또는 로컬 서버와 같은 다른 위치로 백업을 복원할 수 있습니다.  | 
|  [rdsadmin.catalog\$1storage\$1access](db2-sp-managing-storage-access.md#db2-sp-catalog-storage-access)  |  스토리지 액세스  |  `rdsadmin.catalog_storage_access` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 Db2 데이터 파일이 포함된 Amazon S3 버킷에 액세스하기 위한 스토리지 별칭을 카탈로그화합니다.  | 
|  [rdsadmin.change\$1password](db2-sp-granting-revoking-privileges.md#db2-sp-change-password)  |  권한 부여 및 취소  |  `rdsadmin.change_password` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 사용자 암호를 변경합니다.  | 
|  [rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward)  |  데이터베이스 수  |  `rdsadmin.complete_rollforward` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스를 `ROLL-FORWARD PENDING` 상태에서 온라인 상태로 전환합니다. [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database)를 직접 호출했지만 `complete_rollforward` 파라미터를 `FALSE`로 설정하면 `ROLL-FORWARD PENDING` 상태가 발생합니다.  | 
|  [rdsadmin.configure\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-configure-db-audit)  |  감사 정책  |  `rdsadmin.configure_db_audit` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 감사 정책을 수정합니다. 감사 정책이 없는 경우 이 저장 프로시저를 실행하면 감사 정책이 만들어집니다.  | 
|  [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool)  |  버퍼 풀  |  `rdsadmin.create_bufferpool` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 버퍼 풀을 만듭니다.  | 
|  [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)  |  데이터베이스 수  |  `rdsadmin.create_database` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스를 만듭니다.  | 
|  [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role)  |  권한 부여 및 취소  |  `rdsadmin.create_role` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 연결할 역할을 만듭니다.  | 
|  [rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace)  |  테이블스페이스  |  `rdsadmin.create_tablespace` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 테이블스페이스를 만듭니다.  | 
|  [rdsadmin.db2pd\$1command](db2-sp-managing-databases.md#db2-sp-db2pd-command)  |  데이터베이스 수  |  `rdsadmin.db2pd_command` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대한 정보를 수집합니다. 이 정보는 RDS for Db2 데이터베이스를 모니터링하고 문제를 해결하는 데 도움이 될 수 있습니다.  | 
|  [rdsadmin.db2support\$1command](db2-sp-managing-databases.md#db2-sp-db2support-command)  |  데이터베이스 수  |  `rdsadmin.db2support_command` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대한 진단 정보를 수집하고 Amazon S3 버킷에 업로드합니다.  | 
|  [rdsadmin.dbadm\$1grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant)  |  권한 부여 및 취소  |  `rdsadmin.dbadm_grant` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 하나 이상의 역할, 사용자 또는 그룹에 하나 이상의 권한 부여 유형(`DBADM`, `ACCESSCTRL` 또는 `DATAACCESS`)을 부여합니다.  | 
|  [rdsadmin.dbadm\$1revoke](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-revoke)  |  권한 부여 및 취소  |  `rdsadmin.dbadm_revoke` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 하나 이상의 역할, 사용자 또는 그룹에서 하나 이상의 권한 부여 유형(`DBADM`, `ACCESSCTRL` 또는 `DATAACCESS`)을 취소합니다.  | 
|   [rdsadmin.deactivate\$1database](db2-sp-managing-databases.md#db2-sp-deactivate-database)  |  데이터베이스 수  |  `rdsadmin.deactivate_database` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스를 비활성화합니다. 데이터베이스를 비활성화하여 메모리 리소스를 절약할 수 있습니다.  | 
|  [rdsadmin.disable\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-disable-db-audit)  |  감사 정책  |  `rdsadmin.disable_db_audit` 저장 프로시저를 사용하여 감사 로깅을 중지하고 RDS for Db2 DB 인스턴스의 데이터베이스에서 감사 정책을 제거합니다.  | 
|  [rdsadmin.drop\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-drop-buffer-pool)  |  버퍼 풀  |  `rdsadmin.drop_bufferpool` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에서 버퍼 풀을 삭제합니다.  | 
|  [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database)  |  데이터베이스 수  |  `rdsadmin.drop_database` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스를 삭제합니다.  | 
|  [rdsadmin.drop\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role)  |  권한 부여 및 취소  |  `rdsadmin.drop_role` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에서 역할을 삭제합니다.  | 
|  [rdsadmin.drop\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-drop-tablespace)  |  테이블스페이스  |  `rdsadmin.drop_tablespace` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에서 테이블스페이스를 삭제합니다.  | 
|  [rdsadmin.fgac\$1command](db2-sp-managing-databases.md#db2-sp-fgac-command)  |  데이터베이스 수  |  `rdsadmin.fgac_command` 저장 프로시저를 사용하여 행 또는 열 수준에서 RDS for Db2 DB 인스턴스의 데이터베이스에 있는 테이블 데이터에 대한 액세스를 제어합니다.  | 
|  [rdsadmin.force\$1application](db2-sp-managing-databases.md#db2-sp-force-application)  |  데이터베이스 수  |  유지 관리를 수행하기 위해 `rdsadmin.force_application` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에서 애플리케이션을 강제 종료합니다.  | 
|  [rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role)  |  권한 부여 및 취소  |  `rdsadmin.grant_role` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에서 권한 피부여자 역할, 사용자 또는 그룹에 역할을 할당합니다. 또한 이 저장 프로시저를 사용하여 권한 피부여자에게 역할을 할당할 수 있는 `DBADM` 권한을 부여할 수 있습니다.  | 
|  [rdsadmin.list\$1archive\$1log\$1information](db2-sp-managing-databases.md#db2-sp-list-archive-log-information)  |  데이터베이스 수  |  `rdsadmin.list_archive_log_information` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 아카이브 로그 관련 정보를 반환합니다. 이 정보에는 개별 로그 파일의 크기 및 만든 날짜, 아카이브 로그 파일에 사용되는 총 스토리지와 같은 세부 정보가 포함됩니다.  | 
|  [rdsadmin.list\$1sid\$1group\$1mapping](db2-sp-granting-revoking-privileges.md#db2-sp-list-sid-group-mapping)  |  권한 부여 및 취소  |  `rdsadmin.list_sid_group_mapping` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스에 구성된 모든 보안 ID(SID) 및 Active Directory 그룹 매핑 목록을 반환합니다.  | 
|  [rdsadmin.list\$1users](db2-sp-granting-revoking-privileges.md#db2-sp-list-users)  |  권한 부여 및 취소  |  `rdsadmin.list_users` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 권한 부여 목록에 있는 사용자 목록을 반환합니다.  | 
|  [rdsadmin.reactivate\$1database](db2-sp-managing-databases.md#db2-sp-reactivate-database)  |  데이터베이스 수  |  데이터베이스 구성을 변경한 후 `rdsadmin.reactivate_database` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스에서 데이터베이스를 재활성화합니다. 독립형 DB 인스턴스에 있는 데이터베이스의 경우 이 저장 프로시저 또는 [rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database) 저장 프로시저를 사용할 수 있습니다. 복제본 소스 DB 인스턴스의 데이터베이스의 경우 `rdsadmin.reactivate_database` 저장 프로시저를 사용해야 합니다.  | 
|  [rdsadmin.remove\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-remove-groups)  |  권한 부여 및 취소  |  `rdsadmin.remove_groups` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 사용자로부터 하나 이상의 그룹을 제거합니다.  | 
|  [rdsadmin.remove\$1sid\$1group\$1mapping](db2-sp-granting-revoking-privileges.md#db2-sp-remove-sid-group-mapping)  |  권한 부여 및 취소  |  `rdsadmin.remove_sid_group_mapping` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스에서 보안 ID(SID) 및 해당 Active Directory 그룹 매핑을 제거합니다.  | 
|  [rdsadmin.remove\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-remove-user)  |  권한 부여 및 취소  |  `rdsadmin.remove_user` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 권한 부여 목록에서 사용자를 제거합니다.  | 
|  [rdsadmin.rename\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-rename-tablespace)  |  테이블스페이스  |  `rdsadmin.rename_tablespace` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 테이블스페이스의 이름을 변경합니다.  | 
|  [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database)  |  데이터베이스 수  |  `rdsadmin.restore_database` 저장 프로시저를 사용하여 Amazon S3 버킷에서 RDS for Db2 DB 인스턴스의 데이터베이스를 복원합니다.  | 
|  [rdsadmin.revoke\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role)  |  권한 부여 및 취소  |  `rdsadmin.revoke_role` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에서 권한 피부여자 역할, 사용자 또는 그룹의 역할을 취소합니다.  | 
|  [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database)  |  데이터베이스 수  |  `rdsadmin.rollforward_database` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스를 온라인 상태로 전환하고 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database)를 직접적으로 호출하여 RDS for Db2 DB 인스턴스를 복원한 후 트랜잭션 로그를 적용합니다.  | 
|  [rdsadmin.rollforward\$1status](db2-sp-managing-databases.md#db2-sp-rollforward-status)  |  데이터베이스 수  |  `rdsadmin.rollforward_status` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스에서 [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database) 또는 [rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward) 저장 프로시저를 직접적으로 호출하는 롤포워드 상태를 쿼리합니다.  | 
|  [rdsadmin.set\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-set-archive-log-retention)  |  데이터베이스 수  |  `rdsadmin.set_archive_log_retention` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 아카이브 로그 파일을 보존할 기간을 구성합니다. 이 저장 프로시저를 사용하여 아카이브 로그 보존을 비활성화할 수도 있습니다.  | 
|  [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)  |  데이터베이스 수  |  `rdsadmin.set_configuration` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 특정 설정을 구성합니다.  | 
|  [rdsadmin.set\$1sid\$1group\$1mapping](db2-sp-granting-revoking-privileges.md#db2-sp-set-sid-group-mapping)  |  권한 부여 및 취소  |  `rdsadmin.set_sid_group_mapping` 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스에서 보안 ID(SID)와 해당 Active Directory 그룹 간에 매핑을 만듭니다.  | 
|  [rdsadmin.show\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-show-archive-log-retention)  |  데이터베이스 수  | rdsadmin.show\$1archive\$1log\$1retention 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 현재 아카이브 로그 보존 설정을 반환합니다. | 
|  [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)  |  데이터베이스 수  | rdsadmin.show\$1configuration 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 수정할 수 있는 하나 이상의 설정을 반환합니다. | 
|  [rdsadmin.uncatalog\$1storage\$1access](db2-sp-managing-storage-access.md#db2-sp-uncatalog-storage-access)  |  스토리지 액세스  |  `rdsadmin.uncatalog_storage_access` 저장 프로시저를 사용하여 Db2 데이터 파일이 포함된 Amazon S3 버킷에 액세스하기 위한 스토리지 별칭을 제거합니다.  | 
|  [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param)  |  데이터베이스 수  | rdsadmin.update\$1db\$1param 저장 프로시저를 사용하여 RDS for Db2 DB 인스턴스의 데이터베이스에 대해 데이터베이스 파라미터를 업데이트합니다. | 
|  [rdsadmin.enable\$1archive\$1log\$1copy](db2-sp-managing-databases.md#db2-sp-enable_archive_log_copy)  |  데이터베이스 수  | rdsadmin.enable\$1archive\$1log\$1copy 저장 프로시저를 사용하여 Amazon S3로의 RDS Db2 데이터베이스 아카이브 로그 복사를 활성화합니다. | 
|  [rdsadmin.disable\$1archive\$1log\$1copy](db2-sp-managing-databases.md#db2-sp-disable_archive_log_copy)  |  데이터베이스 수  | rdsadmin.disable\$1archive\$1log\$1copy 저장 프로시저를 사용하여 Amazon S3로의 RDS Db2 데이터베이스 아카이브 로그 복사를 비활성화합니다. | 

**Topics**
+ [Amazon RDS for Db2 저장 프로시저 고려 사항](db2-stored-procedures-considerations.md)
+ [RDS for Db2에 대한 권한 부여 및 취소를 위한 저장된 프로시저](db2-sp-granting-revoking-privileges.md)
+ [RDS for Db2 감사 정책에 대해 저장된 프로시저](db2-sp-managing-audit-policies.md)
+ [RDS for Db2용 버퍼 풀에 대해 저장된 프로시저](db2-sp-managing-buffer-pools.md)
+ [RDS for Db2용 데이터베이스에 대해 저장된 프로시저](db2-sp-managing-databases.md)
+ [RDS for Db2의 스토리지 액세스에 대해 저장된 프로시저](db2-sp-managing-storage-access.md)
+ [RDS for Db2의 테이블스페이스에 대해 저장된 프로시저](db2-sp-managing-tablespaces.md)

# Amazon RDS for Db2 저장 프로시저 고려 사항
<a name="db2-stored-procedures-considerations"></a>

Db2 엔진을 실행하는 RDS for Db2 DB 인스턴스에 Amazon RDS 시스템 저장 프로시저를 사용하기 전에 다음 정보를 검토하세요.
+ 저장 프로시저를 실행하기 전에 RDS for Db2 DB 인스턴스의 마스터 사용자로 `rdsadmin` 데이터베이스에 먼저 연결해야 합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 사용자 자체 정보로 대체합니다.

  ```
  db2 "connect to rdsadmin user master_username using master_password"
  ```
+ 저장 프로시저는 `ERR_MESSAGE` 파라미터를 반환하는데, 이 파라미터는 저장 프로시저가 성공적으로 실행되었는지 여부와 성공적으로 실행되지 않은 이유를 나타냅니다.

  **예제**

  다음 예제는 저장 프로시저가 성공적으로 실행되었음을 나타냅니다.

  ```
  Parameter Name : ERR_MESSAGE
  Parameter Value : -
  Return Status = 0
  ```

  다음 예제는 저장 프로시저에 사용된 Amazon S3 버킷 이름이 유효하지 않아 저장 프로시저가 성공적으로 실행되지 않았음을 나타냅니다.

  ```
  Parameter Name : ERR_MESSAGE
  Parameter Value : Invalid S3 bucket name
  Return Status = -1006
  ```

  저장 프로시저를 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

저장 프로시저의 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

# RDS for Db2에 대한 권한 부여 및 취소를 위한 저장된 프로시저
<a name="db2-sp-granting-revoking-privileges"></a>

이 주제에 설명된 기본 제공 저장 프로시저는 Amazon RDS for Db2 데이터베이스에 대한 사용자, 역할, 그룹 및 권한 부여를 관리합니다. 이 프로시저를 실행하려면 마스터 사용자가 먼저 `rdsadmin` 데이터베이스에 연결되어야 합니다.

이러한 저장 프로시저를 사용하는 작업은 [권한 부여 및 취소](db2-granting-revoking-privileges.md) 및 [Kerberos 인증 설정](db2-kerberos-setting-up.md) 섹션을 참조하세요.

구문, 파라미터, 사용 정보 및 예시에 대한 자세한 내용은 다음 기본 제공 저장 프로시저를 참조하세요.

**Topics**
+ [rdsadmin.create\$1role](#db2-sp-create-role)
+ [rdsadmin.grant\$1role](#db2-sp-grant-role)
+ [rdsadmin.revoke\$1role](#db2-sp-revoke-role)
+ [rdsadmin.drop\$1role](#db2-sp-drop-role)
+ [rdsadmin.add\$1user](#db2-sp-add-user)
+ [rdsadmin.change\$1password](#db2-sp-change-password)
+ [rdsadmin.list\$1users](#db2-sp-list-users)
+ [rdsadmin.remove\$1user](#db2-sp-remove-user)
+ [rdsadmin.add\$1groups](#db2-sp-add-groups)
+ [rdsadmin.remove\$1groups](#db2-sp-remove-groups)
+ [rdsadmin.dbadm\$1grant](#db2-sp-dbadm-grant)
+ [rdsadmin.dbadm\$1revoke](#db2-sp-dbadm-revoke)
+ [rdsadmin.set\$1sid\$1group\$1mapping](#db2-sp-set-sid-group-mapping)
+ [rdsadmin.list\$1sid\$1group\$1mapping](#db2-sp-list-sid-group-mapping)
+ [rdsadmin.remove\$1sid\$1group\$1mapping](#db2-sp-remove-sid-group-mapping)

## rdsadmin.create\$1role
<a name="db2-sp-create-role"></a>

역할을 생성합니다.

### 구문
<a name="db2-sp-create-role-syntax"></a>

```
db2 "call rdsadmin.create_role(
    'database_name',
    'role_name')"
```

### 파라미터
<a name="db2-sp-create-role-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*database\$1name*  
명령이 실행될 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*role\$1name*  
생성할 역할의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-create-role-usage-notes"></a>

역할 생성 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-create-role-examples"></a>

다음 예제에서는 `DB2DB` 데이터베이스에 대해 `MY_ROLE` 역할을 생성합니다.

```
db2 "call rdsadmin.create_role(
    'DB2DB',
    'MY_ROLE')"
```

## rdsadmin.grant\$1role
<a name="db2-sp-grant-role"></a>

역할, 사용자 또는 그룹에 역할을 할당합니다.

### 구문
<a name="db2-sp-grant-role-syntax"></a>

```
db2 "call rdsadmin.grant_role(
    ?,
    'database_name',
    'role_name',
    'grantee',
    'admin_option')"
```

### 파라미터
<a name="db2-sp-grant-role-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
작업의 고유 식별자를 출력하는 파라미터 마커입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
명령이 실행될 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*role\$1name*  
생성할 역할의 이름입니다. 데이터 형식은 `varchar`입니다.

*grantee*  
권한을 받을 역할, 사용자 또는 그룹입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `ROLE`, `USER`, `GROUP`, `PUBLIC`.  
형식은 값 뒤에 이름이 와야 합니다. 값과 이름이 여러 개인 경우 쉼표로 구분합니다. 예: '`USER user1, user2, GROUP group1, group2`'. 이름을 사용자의 정보로 대체합니다.

다음 입력 파라미터는 선택 사항입니다.

*admin\$1option*  
피부여자 `ROLE`에 역할을 할당할 `DBADM` 권한이 있는지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `N`입니다.

### 사용 노트
<a name="db2-sp-grant-role-usage-notes"></a>

역할 할당 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-grant-role-examples"></a>

**예시 1: 역할, 사용자 및 그룹에 역할을 할당하고 권한을 부여함**

다음 예제에서는 데이터베이스 `TESTDB`의 `ROLE_TEST`라는 역할을 `role1`이라는 역할, `user1`이라는 사용자, `group1`이라는 그룹에 할당합니다. `ROLE_TEST`에는 역할을 할당할 수 있는 관리 권한이 부여됩니다.

```
db2 "call rdsadmin.grant_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'ROLE role1, USER user1, GROUP group1',
    'Y')"
```

**예시 2: `PUBLIC`에 역할을 할당하고 권한을 부여하지 않음**

다음 예시에서는 데이터베이스 `TESTDB`의 `ROLE_TEST`라는 역할을 `PUBLIC`에 할당합니다. `ROLE_TEST`에는 역할을 할당할 수 있는 관리 권한이 없습니다.

```
db2 "call rdsadmin.grant_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'PUBLIC')"
```

## rdsadmin.revoke\$1role
<a name="db2-sp-revoke-role"></a>

역할, 사용자 또는 그룹에서 역할을 취소합니다.

### 구문
<a name="db2-sp-revoke-role-syntax"></a>

```
db2 "call rdsadmin.revoke_role(
    ?,
    'database_name',
    'role_name',
    'grantee')"
```

### 파라미터
<a name="db2-sp-revoke-role-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
작업의 고유 식별자를 출력하는 파라미터 마커입니다. 이 파라미터는 ?만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
명령이 실행될 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*role\$1name*  
취소할 역할의 이름입니다. 데이터 형식은 `varchar`입니다.

*grantee*  
권한을 잃을 역할, 사용자 또는 그룹입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `ROLE`, `USER`, `GROUP`, `PUBLIC`.  
형식은 값 뒤에 이름이 와야 합니다. 값과 이름이 여러 개인 경우 쉼표로 구분합니다. 예: '`USER user1, user2, GROUP group1, group2`'. 이름을 사용자의 정보로 대체합니다.

### 사용 노트
<a name="db2-sp-revoke-role-usage-notes"></a>

역할 취소 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-revoke-role-examples"></a>

**예시 1: 역할, 사용자 및 그룹에서 역할 취소**

다음 예제는 `role1`이라는 역할, `user1`이라는 사용자 및 `group1`이라는 그룹에서 `TESTDB` 데이터베이스의 `ROLE_TEST`라는 역할을 취소합니다.

```
db2 "call rdsadmin.revoke_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'ROLE role1, USER user1, GROUP group1')"
```

**예시 2: `PUBLIC`에서 역할 취소**

다음 예제에서는 `PUBLIC`에서 `TESTDB` 데이터베이스의 `ROLE_TEST`라는 역할을 취소합니다.

```
db2 "call rdsadmin.revoke_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'PUBLIC')"
```

## rdsadmin.drop\$1role
<a name="db2-sp-drop-role"></a>

역할을 삭제합니다.

### 구문
<a name="db2-sp-drop-role-syntax"></a>

```
db2 "call rdsadmin.drop_role(
    ?,
    'database_name',
    'role_name')"
```

### 파라미터
<a name="db2-sp-drop-role-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
작업의 고유 식별자를 출력하는 파라미터 마커입니다. 이 파라미터는 ?만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
명령이 실행될 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*role\$1name*  
삭제할 역할의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-drop-role-usage-notes"></a>

역할 삭제 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-drop-role-examples"></a>

다음 예시에서는 `TESTDB` 데이터베이스에 대해 `ROLE_TEST` 역할을 만듭니다.

```
db2 "call rdsadmin.drop_role(
    ?,
    'TESTDB',
    'ROLE_TEST')"
```

## rdsadmin.add\$1user
<a name="db2-sp-add-user"></a>

권한 부여 목록에 사용자를 추가합니다.

### 구문
<a name="db2-sp-add-user-syntax"></a>

```
db2 "call rdsadmin.add_user(
    'username',
    'password',
    'group_name,group_name')"
```

### 파라미터
<a name="db2-sp-add-user-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

* 사용자 이름*  
사용자의 사용자 이름입니다. 데이터 형식은 `varchar`입니다.

*암호*  
사용자의 암호입니다. 데이터 형식은 `varchar`입니다.

다음 파라미터는 선택 사항입니다.

*group\$1name*  
사용자를 추가할 그룹의 이름입니다. 데이터 형식은 `varchar`입니다. 기본값은 빈 문자열 또는 null입니다.

### 사용 노트
<a name="db2-sp-add-user-usage-notes"></a>

그룹 이름을 쉼표로 구분하여 하나 이상의 그룹에 사용자를 추가할 수 있습니다.

새 사용자를 만들거나 [기존 사용자에게 그룹을 추가할 때](db2-granting-revoking-privileges.md#add-group-to-user) 그룹을 만들 수 있습니다. 혼자서 그룹을 만들 수는 없습니다.

**참고**  
`rdsadmin.add_user`를 호출하여 추가할 수 있는 최대 사용자 수는 5,000명입니다.

사용자 추가 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-add-user-examples"></a>

다음 예시에서는 `jorge_souza`라는 사용자를 만들고 해당 사용자를 `sales` 및 `inside_sales`라는 그룹에 할당합니다.

```
db2 "call rdsadmin.add_user(
    'jorge_souza',
    '*******',
    'sales,inside_sales')"
```

## rdsadmin.change\$1password
<a name="db2-sp-change-password"></a>

사용자의 암호를 변경합니다.

### 구문
<a name="db2-sp-change-password-syntax"></a>

```
db2 "call rdsadmin.change_password(
    'username',
    'new_password')"
```

### 파라미터
<a name="db2-sp-change-password-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

* 사용자 이름*  
사용자의 사용자 이름입니다. 데이터 형식은 `varchar`입니다.

*new\$1password*  
사용자의 새 암호입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-change-password-usage-notes"></a>

암호 변경 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-change-password-examples"></a>

다음 예제에서는 `jorge_souza`의 암호를 변경합니다.

```
db2 "call rdsadmin.change_password(
    'jorge_souza',
    '*******')"
```

## rdsadmin.list\$1users
<a name="db2-sp-list-users"></a>

권한 부여 목록에 있는 사용자를 나열합니다.

### 구문
<a name="db2-sp-list-users-syntax"></a>

```
db2 "call rdsadmin.list_users()"
```

### 사용 노트
<a name="db2-sp-list-users-usage-notes"></a>

사용자 나열 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

## rdsadmin.remove\$1user
<a name="db2-sp-remove-user"></a>

권한 목록에서 사용자를 제거합니다.

### 구문
<a name="db2-sp-remove-user-syntax"></a>

```
db2 "call rdsadmin.remove_user('username')"
```

### 파라미터
<a name="db2-sp-remove-user-parameters"></a>

다음 파라미터는 필수입니다.

* 사용자 이름*  
사용자의 사용자 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-remove-user-usage-notes"></a>

사용자 제거 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-remove-user-examples"></a>

다음 예제에서는 RDS for Db2 DB 인스턴스의 데이터베이스에 액세스할 수 없도록 `jorge_souza`를 제거합니다.

```
db2 "call rdsadmin.remove_user('jorge_souza')"
```

## rdsadmin.add\$1groups
<a name="db2-sp-add-groups"></a>

사용자에게 그룹을 추가합니다.

### 구문
<a name="db2-sp-add-groups-syntax"></a>

```
db2 "call rdsadmin.add_groups(
    'username',
    'group_name,group_name')"
```

### 파라미터
<a name="db2-sp-add-groups-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

* 사용자 이름*  
사용자의 사용자 이름입니다. 데이터 형식은 `varchar`입니다.

*group\$1name*  
사용자를 추가할 그룹의 이름입니다. 데이터 형식은 `varchar`입니다. 기본값은 빈 문자열입니다.

### 사용 노트
<a name="db2-sp-add-groups-usage-notes"></a>

그룹 이름을 쉼표로 구분하여 사용자에게 하나 이상의 그룹을 추가할 수 있습니다. 그룹 추가 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-add-groups-examples"></a>

다음 예제에서는 사용자 `jorge_souza`에 `direct_sales` 및 `b2b_sales` 그룹을 추가합니다.

```
db2 "call rdsadmin.add_groups(
    'jorge_souza',
    'direct_sales,b2b_sales')"
```

## rdsadmin.remove\$1groups
<a name="db2-sp-remove-groups"></a>

사용자로부터 그룹을 제거합니다.

### 구문
<a name="db2-sp-remove-groups-syntax"></a>

```
db2 "call rdsadmin.remove_groups(
    'username',
    'group_name,group_name')"
```

### 파라미터
<a name="db2-sp-remove-groups-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

* 사용자 이름*  
사용자의 사용자 이름입니다. 데이터 형식은 `varchar`입니다.

*group\$1name*  
사용자를 제거할 그룹의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-remove-groups-usage-notes"></a>

그룹 이름을 쉼표로 구분하여 사용자로부터 하나 이상의 그룹을 제거할 수 있습니다.

그룹 제거 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-remove-groups-examples"></a>

다음 예제에서는 사용자 `jorge_souza`로부터 `direct_sales` 및 `b2b_sales` 그룹을 제거합니다.

```
db2 "call rdsadmin.remove_groups(
    'jorge_souza',
    'direct_sales,b2b_sales')"
```

## rdsadmin.dbadm\$1grant
<a name="db2-sp-dbadm-grant"></a>

역할, 사용자 또는 그룹에 `DBADM`, `ACCESSCTRL` 또는 `DATAACCESS` 권한을 부여합니다.

### 구문
<a name="db2-sp-dbadm-grant-syntax"></a>

```
db2 "call rdsadmin.dbadm_grant(
    ?,
    'database_name',
    'authorization',
    'grantee')"
```

### 파라미터
<a name="db2-sp-dbadm-grant-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
작업의 고유 식별자를 출력하는 파라미터 마커입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
명령이 실행될 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*권한 부여*  
부여할 권한의 유형입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `DBADM`, `ACCESSCTRL`, `DATAACCESS`.  
유형이 여러 개인 경우 쉼표로 구분합니다.

*grantee*  
권한을 받을 역할, 사용자 또는 그룹입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `ROLE`, `USER`, `GROUP`.  
형식은 값 뒤에 이름이 와야 합니다. 값과 이름이 여러 개인 경우 쉼표로 구분합니다. 예: '`USER user1, user2, GROUP group1, group2`'. 이름을 사용자의 정보로 대체합니다.

### 사용 노트
<a name="db2-sp-dbadm-grant-usage-notes"></a>

액세스 권한을 받을 역할이 존재해야 합니다.

데이터베이스 관리자 액세스 권한 부여의 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-dbadm-grant-examples"></a>

**예시 1: 역할에 데이터베이스 관리자 액세스 권한 부여**

다음 예제에서는 `ROLE_DBA` 역할에 대해 `TESTDB`라는 이름의 데이터베이스에 대한 데이터베이스 관리자 액세스 권한을 부여합니다.

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB',
    'DBADM',
    'ROLE ROLE_DBA')"
```

**예시 2: 사용자 및 그룹에 데이터베이스 관리자 액세스 권한 부여**

다음 예제에서는 `user1` 및 `group1`에 대해 `TESTDB`라는 이름의 데이터베이스에 대한 데이터베이스 관리자 액세스 권한을 부여합니다.

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, GROUP group1')"
```

**예시 3: 여러 사용자 및 그룹에 데이터베이스 관리자 액세스 권한 부여**

다음 예제에서는 `user1`, `user2`, `group1`, `group2`에 대해 `TESTDB`라는 이름의 데이터베이스에 대한 데이터베이스 관리자 액세스 권한을 부여합니다.

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, user2, GROUP group1, group2')"
```

## rdsadmin.dbadm\$1revoke
<a name="db2-sp-dbadm-revoke"></a>

역할, 사용자 또는 그룹에서 `DBADM`, `ACCESSCTRL` 또는 `DATAACCESS` 권한을 취소합니다.

### 구문
<a name="db2-sp-dbadm-revoke-syntax"></a>

```
db2 "call rdsadmin.dbadm_revoke(
    ?,
    'database_name',
    'authorization',
    'grantee')"
```

### 파라미터
<a name="db2-sp-dbadm-revoke-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
작업의 고유 별자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
명령이 실행될 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*권한 부여*  
취소할 권한의 유형입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `DBADM`, `ACCESSCTRL`, `DATAACCESS`.  
유형이 여러 개인 경우 쉼표로 구분합니다.

*grantee*  
권한을 취소할 역할, 사용자 또는 그룹입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `ROLE`, `USER`, `GROUP`.  
형식은 값 뒤에 이름이 와야 합니다. 값과 이름이 여러 개인 경우 쉼표로 구분합니다. 예: '`USER user1, user2, GROUP group1, group2`'. 이름을 사용자의 정보로 대체합니다.

### 사용 노트
<a name="db2-sp-dbadm-revoke-usage-notes"></a>

데이터베이스 관리자 액세스 권한 취소의 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-dbadm-revoke-examples"></a>

**예시 1: 역할에서 데이터베이스 관리자 액세스 취소**

다음 예제에서는 `ROLE_DBA` 역할에 대해 `TESTDB`라는 이름의 데이터베이스에 대한 데이터베이스 관리자 액세스 권한을 취소합니다.

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB',
    'DBADM',
    'ROLE ROLE_DBA')"
```

**예시 2: 사용자 및 그룹에서 데이터베이스 관리자 액세스 취소**

다음 예제에서는 `user1` 및 `group1`에 대해 `TESTDB`라는 이름의 데이터베이스에 대한 데이터베이스 관리자 액세스 권한을 취소합니다.

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, GROUP group1')"
```

**예시 3: 여러 사용자 및 그룹에서 데이터베이스 관리자 액세스 취소**

다음 예제에서는 `user1`, `user2`, `group1`, `group2`에 대해 `TESTDB`라는 이름의 데이터베이스에 대한 데이터베이스 관리자 액세스 권한을 취소합니다.

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, user2, GROUP group1, group2')"
```

## rdsadmin.set\$1sid\$1group\$1mapping
<a name="db2-sp-set-sid-group-mapping"></a>

보안 ID(SID)와 해당 Active Directory 그룹 간의 매핑을 만듭니다.

### 구문
<a name="db2-sp-set-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.set_sid_group_mapping(
    ?,
    'SID',
    'group_name')"
```

### 파라미터
<a name="db2-sp-set-sid-group-mapping-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*SID*()  
보안 ID(SID)입니다. 데이터 형식은 `varchar`입니다.

*group\$1name*  
SID에 매핑할 Active Directory 그룹의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-set-sid-group-mapping-usage-notes"></a>

이 저장 프로시저를 사용하여 Active Directory 그룹에서 Kerberos 인증을 활성화합니다. 매핑에 `SID` 또는 `group_name`이 이미 있는 경우 이 저장 프로시저가 실패합니다.

그룹의 SID를 찾는 방법에 대한 자세한 내용은 [8단계: PowerShell에서 Active Directory 그룹 SID 검색8단계: PowerShell에서 Active Directory 그룹 SID 검색](db2-kerberos-setting-up.md#db2-kerberos-setting-up-retrieve-ad-group-sid) 섹션을 참조하세요.

매핑 만들기 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-set-sid-group-mapping-examples"></a>

다음 예시에서는 SID를 `my_group`이라는 그룹에 매핑합니다.

```
db2 "call rdsadmin.set_sid_group_mapping(
    ?,
    'S-1-5-21-9146495592-531070549-834388463-513',
    'my_group')"
```

## rdsadmin.list\$1sid\$1group\$1mapping
<a name="db2-sp-list-sid-group-mapping"></a>

DB 인스턴스에 구성된 모든 보안 ID(SID) 및 Active Directory 그룹 매핑을 나열합니다.

### 구문
<a name="db2-sp-list-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.list_sid_group_mapping()"
```

### 사용 노트
<a name="db2-sp-list-sid-group-mapping-usage-notes"></a>

매핑 나열 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

## rdsadmin.remove\$1sid\$1group\$1mapping
<a name="db2-sp-remove-sid-group-mapping"></a>

DB 인스턴스에서 보안 ID(SID) 및 해당 Active Directory 그룹 매핑을 제거합니다.

### 구문
<a name="db2-sp-remove-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.remove_sid_group_mapping(
    ?,
    'SID')"
```

### 파라미터
<a name="db2-sp-remove-sid-group-mapping-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*SID*()  
보안 ID(SID)입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-remove-sid-group-mapping-usage-notes"></a>

그룹의 SID를 찾는 방법에 대한 자세한 내용은 [8단계: PowerShell에서 Active Directory 그룹 SID 검색8단계: PowerShell에서 Active Directory 그룹 SID 검색](db2-kerberos-setting-up.md#db2-kerberos-setting-up-retrieve-ad-group-sid) 섹션을 참조하세요.

매핑 제거 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-remove-sid-group-mapping-examples"></a>

다음 예시에서는 매핑된 그룹에서 SID 매핑을 제거합니다.

```
db2 "call rdsadmin.remove_sid_group_mapping(
    ?,
    'S-1-5-21-9146495592-531070549-834388463-513')"
```

# RDS for Db2 감사 정책에 대해 저장된 프로시저
<a name="db2-sp-managing-audit-policies"></a>

이 주제에 설명된 기본 제공 저장 프로시저는 감사 로깅을 사용하는 Amazon RDS for Db2 데이터베이스의 감사 정책을 관리합니다. 자세한 내용은 [Db2 감사 로깅](Db2.Options.Audit.md) 섹션을 참조하세요. 이 프로시저를 실행하려면 마스터 사용자가 먼저 `rdsadmin` 데이터베이스에 연결되어야 합니다.

구문, 파라미터, 사용 정보 및 예시에 대한 자세한 내용은 다음 기본 제공 저장 프로시저를 참조하세요.

**Topics**
+ [rdsadmin.configure\$1db\$1audit](#db2-sp-configure-db-audit)
+ [rdsadmin.disable\$1db\$1audit](#db2-sp-disable-db-audit)

## rdsadmin.configure\$1db\$1audit
<a name="db2-sp-configure-db-audit"></a>

*db\$1name*으로 지정된 RDS for Db2 데이터베이스의 감사 정책을 구성합니다. 구성 중인 정책이 존재하지 않는 경우 이 저장 프로시저를 호출하면 정책이 생성됩니다. 이 정책이 있는 경우 이 저장 프로시저를 호출하면 입력한 파라미터 값으로 해당 저장 프로시저가 수정됩니다.

### 구문
<a name="db2-sp-configure-db-audit-syntax"></a>

```
db2 "call rdsadmin.configure_db_audit(
    'db_name', 
    'category', 
    'category_setting', 
    '?')"
```

### 파라미터
<a name="db2-sp-configure-db-audit-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*db\$1name*  
감사 정책을 구성하는 데 사용할 RDS for Db2 데이터베이스의 DB 이름입니다. 데이터 형식은 `varchar`입니다.

*category*  
감사 정책을 구성할 카테고리의 이름입니다. 데이터 형식은 `varchar`입니다. 이 파라미터에 유효한 값은 다음과 같습니다.  
+ `ALL` – `ALL`을 사용하면 Amazon RDS에는 `CONTEXT`, `EXECUTE` 또는 `ERROR` 카테고리가 포함되지 않습니다.
+ `AUDIT` 
+ `CHECKING` 
+ `CONTEXT` 
+ `ERROR` 
+ `EXECUTE` – 이 카테고리는 데이터를 포함하거나 포함하지 않고 구성할 수 있습니다. 데이터 수단을 사용하면 모든 호스트 변수 및 파라미터 마커에 제공된 입력 데이터 값도 기록할 수 있습니다. 기본값은 데이터 없음입니다. 자세한 내용은 *category\$1setting* 파라미터에 대한 설명 및 [예제](#db2-sp-configure-db-audit-examples) 섹션을 참조하세요.
+ `OBJMAINT` 
+ `SECMAINT` 
+ `SYSADMIN` 
+ `VALIDATE` 
이러한 카테고리에 대한 자세한 내용은 [IBM Db2 설명서](https://www.ibm.com/docs/en/db2/11.1?topic=statements-create-audit-policy)를 참조하세요.

*category\$1setting*  
지정된 감사 카테고리의 설정입니다. 데이터 형식은 `varchar`입니다.  
다음 테이블에는 카테고리별로 유효한 카테고리 설정 값이 나와 있습니다.      
<a name="db2-option-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/db2-sp-managing-audit-policies.html)

### 사용 노트
<a name="db2-sp-configure-db-audit-usage-notes"></a>

`rdsadmin.configure_db_audit`을 호출하기 전에 감사 정책을 구성하는 대상 데이터베이스가 있는 RDS for Db2 DB 인스턴스가 `DB2_AUDIT` 옵션이 있는 옵션 그룹과 연결되어 있는지 확인하세요. 자세한 내용은 [Db2 감사 로깅 설정](Db2.Options.Audit.md#db2-audit-setting-up) 섹션을 참조하세요.

감사 정책을 구성한 후 [감사 구성 확인](Db2.Options.Audit.md#db2-audit-check-config-status)의 단계에 따라 데이터베이스의 감사 구성 상태를 확인할 수 있습니다.

`category` 파라미터에 `ALL`을 지정한 경우 `CONTEXT`, `EXECUTE` 또는 `ERROR` 카테고리는 포함되지 않습니다. 이러한 카테고리를 감사 정책에 추가하려면 추가하려는 각 카테고리에서 `rdsadmin.configure_db_audit`을 개별적으로 호출하세요. 자세한 내용은 [예제](#db2-sp-configure-db-audit-examples) 섹션을 참조하세요.

### 예제
<a name="db2-sp-configure-db-audit-examples"></a>

다음 예제는 `TESTDB`라는 데이터베이스의 감사 정책을 만들거나 수정합니다. 예제 1\$15에서 `ERROR` 카테고리가 이전에 구성되지 않은 경우 이 카테고리는 `NORMAL`(기본값)로 설정됩니다. 해당 설정을 `AUDIT`으로 변경하려면 [Example 6: Specifying the ERROR category](#example-6)을 따르세요.

**예 1: `ALL` 카테고리 지정**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'ALL', 'BOTH', ?)"
```

이 예제에서 호출은 감사 정책의 `AUDIT`, `CHECKING`, `OBJMAINT`, `SECMAINT`, `SYSADMIN`, `VALIDATE` 카테고리를 구성합니다. `BOTH`로 지정하면 각 카테고리에 대해 성공한 이벤트와 실패한 이벤트를 모두 감사합니다.

**예 2: 데이터로 `EXECUTE` 카테고리 지정**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'EXECUTE', 'SUCCESS,WITH', ?)"
```

이 예제에서는 호출이 감사 정책의 `EXECUTE` 카테고리를 구성합니다. `SUCCESS,WITH`로 지정하면, 이 카테고리의 로그에 성공한 이벤트만 포함되고 호스트 변수 및 파라미터 마커에 제공된 입력 데이터 값이 포함됩니다.

**예 3: 데이터 없이 `EXECUTE` 카테고리 지정**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'EXECUTE', 'FAILURE,WITHOUT', ?)"
```

이 예제에서는 호출이 감사 정책의 `EXECUTE` 카테고리를 구성합니다. `FAILURE,WITHOUT`로 지정하면, 이 카테고리의 로그에 실패한 이벤트만 포함되고 호스트 변수 및 파라미터 마커에 제공된 입력 데이터 값이 포함되지 않습니다.

**예 4: 상태 이벤트 없이 `EXECUTE` 카테고리 지정**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'EXECUTE', 'NONE', ?)"
```

이 예제에서는 호출이 감사 정책의 `EXECUTE` 카테고리를 구성합니다. `NONE`으로 지정하면 이 카테고리의 어떤 이벤트도 감사되지 않습니다.

**예 5: `OBJMAINT` 카테고리 지정**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'OBJMAINT', 'NONE', ?)"
```

이 예제에서는 호출이 감사 정책의 `OBJMAINT` 카테고리를 구성합니다. `NONE`으로 지정하면 이 카테고리의 어떤 이벤트도 감사되지 않습니다.

**예 6: `ERROR` 카테고리 지정**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'ERROR', 'AUDIT', ?)"
```

이 예제에서는 호출이 감사 정책의 `ERROR` 카테고리를 구성합니다. `AUDIT`으로 지정하면 감사 로깅 자체에서 발생하는 오류를 포함하여 모든 오류가 로그에 캡처됩니다. 기본 오류 유형은 `NORMAL`입니다. `NORMAL`을 사용하면 감사에서 생성된 오류는 무시되고 수행 중인 작업과 관련된 오류에 대한 `SQLCODE`만 캡처됩니다.

## rdsadmin.disable\$1db\$1audit
<a name="db2-sp-disable-db-audit"></a>

*db\$1name*으로 지정된 RDS for Db2 데이터베이스에 대한 감사 로깅을 중지하고 해당 데이터베이스에 대해 구성된 감사 정책을 제거합니다.

**참고**  
이 저장 프로시저는 [rdsadmin.configure\$1db\$1audit](#db2-sp-configure-db-audit) 호출을 통해 구성된 감사 정책만 제거합니다.

### 구문
<a name="db2-sp-disable-db-audit-syntax"></a>

```
db2 "call rdsadmin.disable_db_audit('db_name', ?)"
```

### 파라미터
<a name="db2-sp-disable-db-audit-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*db\$1name*  
감사 로깅을 비활성화할 RDS for Db2 데이터베이스의 DB 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-disable-db-audit-usage-notes"></a>

`rdsadmin.disable_db_audit`을 호출해도 RDS for Db2 DB 인스턴스에 대한 감사 로깅은 비활성화되지 않습니다. DB 인스턴스 수준에서 감사 로깅을 비활성화하려면 DB 인스턴스에서 옵션 그룹을 제거하세요. 자세한 내용은 [Db2 감사 로깅 비활성화](Db2.Options.Audit.md#db2-audit-disabling) 섹션을 참조하세요.

### 예제
<a name="db2-sp-disable-db-audit-examples"></a>

다음 예제는 `TESTDB` 이름이 지정된 데이터베이스에 대한 감사 로깅을 비활성화합니다.

```
db2 "call rdsadmin.disable_db_audit('TESTDB', ?)"
```

# RDS for Db2용 버퍼 풀에 대해 저장된 프로시저
<a name="db2-sp-managing-buffer-pools"></a>

이 주제에 설명된 기본 제공 저장 프로시저는 Amazon RDS for Db2 데이터베이스의 버퍼 풀을 관리합니다. 이 프로시저를 실행하려면 마스터 사용자가 먼저 `rdsadmin` 데이터베이스에 연결되어야 합니다.

이러한 저장 프로시저는 다양한 작업에 사용됩니다. 단, 이 목록이 전부는 아닙니다.
+ [버퍼 풀의 일반적인 작업](db2-managing-buffer-pools.md)
+ [성능 보고서 생성](db2-managing-databases.md#db2-generating-performance-reports)
+ [db2look을 사용하여 데이터베이스 메타데이터 복사](db2-native-db2-tools-db2look.md)
+ [IBM Db2 Data Management Console을 위한 리포지토리 데이터베이스 만들기](db2-connecting-with-ibm-data-management-console.md#db2-creating-repo-db-monitoring-dmc)

구문, 파라미터, 사용 정보 및 예시에 대한 자세한 내용은 다음 기본 제공 저장 프로시저를 참조하세요.

**Topics**
+ [rdsadmin.create\$1bufferpool](#db2-sp-create-buffer-pool)
+ [rdsadmin.alter\$1bufferpool](#db2-sp-alter-buffer-pool)
+ [rdsadmin.drop\$1bufferpool](#db2-sp-drop-buffer-pool)

## rdsadmin.create\$1bufferpool
<a name="db2-sp-create-buffer-pool"></a>

버퍼 풀을 생성합니다.

### 구문
<a name="db2-sp-create-buffer-pool-syntax"></a>

```
db2 "call rdsadmin.create_bufferpool(
    'database_name', 
    'buffer_pool_name', 
    buffer_pool_size, 
    'immediate', 
    'automatic', 
    page_size, 
    number_block_pages, 
    block_size)"
```

### 파라미터
<a name="db2-sp-create-buffer-pool-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*database\$1name*  
명령이 실행될 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*buffer\$1pool\$1name*  
생성할 버퍼 풀의 이름입니다. 데이터 형식은 `varchar`입니다.

다음 파라미터는 선택적입니다.

*buffer\$1pool\$1size*  
버퍼 풀의 크기입니다(페이지 수). 데이터 형식은 `integer`입니다. 기본값은 `-1`입니다.

*immediate*  
명령을 즉시 실행할지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `Y`입니다.

*automatic*  
버퍼 풀을 자동으로 설정할지를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `Y`입니다.

*page\$1size*  
버퍼 풀의 페이지 크기입니다. 데이터 형식은 `integer`입니다. 유효한 값: `4096`, `8192`, `16384`, `32768`. 기본값은 `8192`입니다.

*number\$1block\$1pages*  
버퍼 풀의 블록 페이지 수입니다. 데이터 형식은 `integer`입니다. 기본값은 `0`입니다.

*block\$1size*  
블록 페이지의 블록 크기입니다. 데이터 형식은 `integer`입니다. 유효한 값: `2` \$1 `256`. 기본값은 `32`입니다.

### 사용 노트
<a name="db2-sp-create-buffer-pool-usage-notes"></a>

버퍼 풀 생성 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-create-buffer-pool-examples"></a>

**예시 1: 기본 파라미터를 사용하여 버퍼 풀 만들기**

다음 예제에서는 기본 파라미터를 사용하는 `TESTDB` 데이터베이스에 대해 버퍼 풀 `BP8`을 생성하므로, 버퍼 풀은 8KB 페이지 크기를 사용합니다.

```
db2 "call rdsadmin.create_bufferpool(
    'TESTDB', 
    'BP8')"
```

**예시 2: 자동 할당으로 즉시 실행할 버퍼 풀 만들기**

다음 예시에서는 초기 페이지 수가 1,000인 16KB 페이지 크기를 사용하고 자동으로 설정되는 `TESTDB` 데이터베이스에 대해 버퍼 풀 `BP16`을 생성합니다. Db2는 명령을 즉시 실행합니다. 초기 페이지 수를 -1로 사용하는 경우 Db2는 페이지 자동 할당을 사용합니다.

```
db2 "call rdsadmin.create_bufferpool(
    'TESTDB', 
    'BP16', 
    1000, 
    'Y', 
    'Y', 
    16384)"
```

**예시 3: 블록 페이지를 사용하여 즉시 실행할 버퍼 풀 만들기**

다음 예시에서는 `TESTDB`라는 데이터베이스에 대한 `BP16`이라는 버퍼 풀을 생성합니다. 이 버퍼 풀의 페이지 크기는 16KB이고 초기 페이지 수는 10,000입니다. Db2는 블록 크기가 512인 블록 500페이지를 사용하여 명령을 즉시 실행합니다.

```
db2 "call rdsadmin.create_bufferpool(
    'TESTDB', 
    'BP16',
    10000, 
    'Y', 
    'Y', 
    16384, 
    500, 
    512)"
```

## rdsadmin.alter\$1bufferpool
<a name="db2-sp-alter-buffer-pool"></a>

버퍼 풀을 변경합니다.

### 구문
<a name="db2-sp-alter-buffer-pool-syntax"></a>

```
db2 "call rdsadmin.alter_bufferpool(
    'database_name', 
    'buffer_pool_name', 
    buffer_pool_size, 
    'immediate', 
    'automatic', 
    change_number_blocks, 
    number_block_pages, 
    block_size)"
```

### 파라미터
<a name="db2-sp-alter-buffer-pool-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*database\$1name*  
명령이 실행될 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*buffer\$1pool\$1name*  
변경할 버퍼 풀의 이름입니다. 데이터 형식은 `varchar`입니다.

*buffer\$1pool\$1size*  
버퍼 풀의 크기입니다(페이지 수). 데이터 형식은 `integer`입니다.

다음 파라미터는 선택적입니다.

*immediate*  
명령을 즉시 실행할지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `Y`입니다.

*automatic*  
버퍼 풀을 자동으로 설정할지를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `N`입니다.

*change\$1number\$1blocks*  
버퍼 풀의 블록 페이지 수가 변경되었는지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `N`입니다.

*number\$1block\$1pages*  
버퍼 풀의 블록 페이지 수입니다. 데이터 형식은 `integer`입니다. 기본값은 `0`입니다.

*block\$1size*  
블록 페이지의 블록 크기입니다. 데이터 형식은 `integer`입니다. 유효한 값: `2` \$1 `256`. 기본값은 `32`입니다.

### 사용 노트
<a name="db2-sp-alter-buffer-pool-usage-notes"></a>

버퍼 풀 변경 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-alter-buffer-pool-examples"></a>

다음 예시에서는 `TESTDB` 데이터베이스의 버퍼 풀 `BP16`을 비자동으로 변경하고 크기를 10,000페이지로 변경합니다. Db2는 이 명령을 즉시 실행합니다.

```
db2 "call rdsadmin.alter_bufferpool(
    'TESTDB',
    'BP16', 
    10000, 
    'Y', 
    'N')"
```

## rdsadmin.drop\$1bufferpool
<a name="db2-sp-drop-buffer-pool"></a>

버퍼 풀을 삭제합니다.

### 구문
<a name="db2-sp-drop-buffer-pool-syntax"></a>

```
db2 "call rdsadmin.drop_bufferpool(
    'database_name', 
    'buffer_pool_name'"
```

### 파라미터
<a name="db2-sp-drop-buffer-pool-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*database\$1name*  
버퍼 풀이 속한 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*buffer\$1pool\$1name*  
삭제할 버퍼 풀의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-drop-buffer-pool-usage-notes"></a>

버퍼 풀 삭제 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-drop-buffer-pool-examples"></a>

다음 예제에서는 `TESTDB`라는 데이터베이스에 대해 호출된 `BP16` 버퍼 풀을 삭제합니다.

```
db2 "call rdsadmin.drop_bufferpool(
    'TESTDB',
    'BP16')"
```

# RDS for Db2용 데이터베이스에 대해 저장된 프로시저
<a name="db2-sp-managing-databases"></a>

이 주제에 설명된 기본 제공 저장 프로시저는 Amazon RDS for Db2의 데이터베이스를 관리합니다. 이 프로시저를 실행하려면 마스터 사용자가 먼저 `rdsadmin` 데이터베이스에 연결되어야 합니다.

이러한 저장 프로시저는 다양한 작업에 사용됩니다. 단, 이 목록이 전부는 아닙니다.
+ [공통 데이터베이스 작업](db2-managing-databases.md)
+ [EBCDIC 데이터 정리를 사용하여 데이터베이스 만들기](db2-ebcdic.md)
+ [데이터베이스에 대한 정보 수집](db2-supported-parameters.md#db2-modifying-parameters-db2-commands)
+ [데이터베이스 구성 파라미터 수정](db2-supported-parameters.md#db2-modifying-parameters-db2-commands)
+ [Linux에서 Linux로 마이그레이션](db2-one-time-migration-linux.md)
+ [가동 중지 시간이 거의 없이 Linux에서 Linux로 마이그레이션](db2-near-zero-downtime-migration.md)

구문, 파라미터, 사용 정보 및 예시에 대한 자세한 내용은 다음 기본 제공 저장 프로시저를 참조하세요.

**Topics**
+ [rdsadmin.create\$1database](#db2-sp-create-database)
+ [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database)
+ [rdsadmin.activate\$1database](#db2-sp-activate-database)
+ [rdsadmin.reactivate\$1database](#db2-sp-reactivate-database)
+ [rdsadmin.drop\$1database](#db2-sp-drop-database)
+ [rdsadmin.update\$1db\$1param](#db2-sp-update-db-param)
+ [rdsadmin.set\$1configuration](#db2-sp-set-configuration)
+ [rdsadmin.show\$1configuration](#db2-sp-show-configuration)
+ [rdsadmin.backup\$1database](#db2-sp-backup-database)
+ [rdsadmin.restore\$1database](#db2-sp-restore-database)
+ [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database)
+ [rdsadmin.rollforward\$1status](#db2-sp-rollforward-status)
+ [rdsadmin.complete\$1rollforward](#db2-sp-complete-rollforward)
+ [rdsadmin.db2pd\$1command](#db2-sp-db2pd-command)
+ [rdsadmin.force\$1application](#db2-sp-force-application)
+ [rdsadmin.set\$1archive\$1log\$1retention](#db2-sp-set-archive-log-retention)
+ [rdsadmin.show\$1archive\$1log\$1retention](#db2-sp-show-archive-log-retention)
+ [rdsadmin.list\$1archive\$1log\$1information](#db2-sp-list-archive-log-information)
+ [rdsadmin.enable\$1archive\$1log\$1copy](#db2-sp-enable_archive_log_copy)
+ [rdsadmin.disable\$1archive\$1log\$1copy](#db2-sp-disable_archive_log_copy)
+ [rdsadmin.fgac\$1command](#db2-sp-fgac-command)
+ [rdsadmin.db2support\$1command](#db2-sp-db2support-command)

## rdsadmin.create\$1database
<a name="db2-sp-create-database"></a>

데이터베이스를 생성합니다.

### 구문
<a name="db2-sp-create-database-syntax"></a>

```
db2 "call rdsadmin.create_database(
    'database_name',
    'database_page_size',
    'database_code_set',
    'database_territory',
    'database_collation',
    'database_autoconfigure_str',
    'database_non-restrictive')"
```

### 파라미터
<a name="db2-sp-create-database-parameters"></a>

**참고**  
이 저장 프로시저는 필수 파라미터의 조합을 검증하지 않습니다. [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)를 직접적으로 호출하면 `database_codeset`, `database_territory`, `database_collation`의 유효하지 않은 조합으로 인해 사용자 정의 함수가 오류를 반환할 수 있습니다. 자세한 내용은 IBM Db2 설명서에서 [데이터베이스의 코드 페이지, 지역 및 데이터 정렬 선택](https://www.ibm.com/docs/en/db2/11.5?topic=support-choosing-code-page-territory-collation-your-database)을 참조하세요.

다음 파라미터는 필수입니다.

*database\$1name*  
생성할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

다음 파라미터는 선택적입니다.

*database\$1page\$1size*  
데이터베이스의 기본 페이지 크기입니다. 유효한 값: `4096`, `8192`, `16384`, `32768`. 데이터 형식은 `integer`입니다. 기본값은 `8192`입니다.  
Amazon RDS는 4KiB, 8KiB 및 16KiB 페이지에 대한 쓰기 원자성을 지원합니다. 반면 32KiB 페이지는 *쓰기가 끊기거나* 디스크에 데이터가 일부만 기록될 위험이 있습니다. 32KiB 페이지를 사용하는 경우 시점 복구와 자동 백업을 활성화하는 것이 좋습니다. 그렇지 않으면 찢긴 페이지를 복구하지 못할 위험이 있습니다. 자세한 내용은 [백업 소개](USER_WorkingWithAutomatedBackups.md) 및 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md)(을)를 참조하세요.

*database\$1code\$1set*  
데이터베이스의 코드 집합입니다. 데이터 형식은 `varchar`입니다. 기본값은 `UTF-8`입니다.

*database\$1territory*  
데이터베이스의 두 문자 국가 코드입니다. 데이터 형식은 `varchar`입니다. 기본값은 `US`입니다.

*database\$1collation*  
데이터베이스에 저장된 문자열을 정렬하고 비교하는 방법을 결정하는 데이터 정렬 순서입니다. 데이터 형식은 `varchar`입니다.  
유효한 값:   
+ `COMPATIBILITY` - IBM Db2 버전 2 데이터 정렬 시퀀스.
+ `EBCDIC_819_037` - ISO 라틴 코드 페이지, 데이터 정렬, CCSID 037(EBCDIC 미국 영어).
+ `EBCDIC_819_500` - ISO 라틴 코드 페이지, 데이터 정렬, CCSID 500(EBCDIC 인터내셔널).
+ `EBCDIC_850_037` - ASCII 라틴 코드 페이지, 데이터 정렬, CCSID 037(EBCDIC 미국 영어).
+ `EBCDIC_850_500` - ASCII 라틴 코드 페이지, 데이터 정렬, CCSID 500(EBCDIC 인터내셔널).
+ `EBCDIC_932_5026` - ASCII 일본어 코드 페이지, 데이터 정렬, CCSID 5026(EBCDIC 미국 영어).
+ `EBCDIC_932_5035` - ASCII 일본어 코드 페이지, 데이터 정렬, CCSID 5035(EBCDIC 인터내셔널).
+ `EBCDIC_1252_037` - Windows 라틴 코드 페이지, 데이터 정렬, CCSID 037(EBCDIC 미국 영어).
+ `EBCDIC_1252_500` - Windows 라틴 코드 페이지, 데이터 정렬, CCSID 500(EBCDIC 인터내셔널).
+ `IDENTITY` - 기본 데이터 정렬. 문자열은 바이트 단위로 비교됩니다.
+ `IDENTITY_16BIT` - UTF-16 호환성 인코딩 스키마: 8비트(CESU-8) 데이터 정렬 시퀀스. 자세한 내용은 유니코드 컨소시엄 웹 사이트의 [유니코드 기술 보고서 \$126](https://www.unicode.org/reports/tr26/tr26-4.html)을 참조하세요.
+ `NLSCHAR` - 태국 코드 페이지(CP874)에서만 사용할 수 있습니다.
+ `SYSTEM` - `SYSTEM`을 사용하는 경우 데이터베이스는 `database_codeset` 및 `database_territory`의 데이터 정렬 시퀀스를 자동으로 사용합니다.
기본값은 `IDENTITY`입니다.  
또한 RDS for Db2는 `language-aware-collation` 및 `locale-sensitive-collation` 데이터 정렬 그룹을 지원합니다. 자세한 내용은 IBM Db2 설명서의 [유니코드 데이터베이스의 데이터 정렬 선택](https://www.ibm.com/docs/en/db2/11.5?topic=collation-choosing-unicode-database)을 참조하세요.

*database\$1autoconfigure\$1str*  
`AUTOCONFIGURE` 명령 구문입니다(예: `'AUTOCONFIGURE APPLY DB'`). 데이터 형식은 `varchar`입니다. 기본값은 빈 문자열 또는 null입니다.  
자세한 내용은 IBM Db2 설명서의 [AUTOCONFIGURE 명령](https://www.ibm.com/docs/en/db2/11.5?topic=cc-autoconfigure)을 참조하세요.

*database\$1non-restrictive*  
데이터베이스 내에서 기본 권한 및 권한 부여. 데이터 형식은 `varchar`입니다. 기본값은 `N`입니다.  
유효한 값:  
+ `N` - 생성된 데이터베이스는 제한적이며 권한 또는 권한을 부여하지 않습니다.
+ `Y` - 생성된 데이터베이스는 비제한적이며 특수 그룹 `PUBLIC`에 일련의 권한을 부여합니다. 자세한 내용은 IBM Db2 설명서의 [데이터베이스 생성 시 부여된 기본 권한](https://www.ibm.com/docs/en/db2/11.5.x?topic=ownership-default-privileges-granted-creating-database)을 참조하세요.

### 사용 노트
<a name="db2-sp-create-database-usage-notes"></a>

`db2_compatibility_vector` 파라미터를 수정하려는 경우 데이터베이스를 만들기 전에 파라미터를 수정합니다. 자세한 내용은 [db2\$1compatibility\$1vector 파라미터 설정](db2-known-issues-limitations.md#db2-known-issues-limitations-db2-compatibility-vector) 섹션을 참조하세요.

특별 고려 사항:
+ Db2 인스턴스로 전송된 `CREATE DATABASE` 명령은 `RESTRICTIVE` 옵션을 사용합니다.
+ RDS for Db2는 `AUTOMATIC STORAGE` 테이블스페이스만 사용합니다.
+ RDS for Db2는 `NUMSEGS` 및 `DFT_EXTENT_SZ`의 기본값을 사용합니다.
+ RDS for Db2는 스토리지 암호화를 사용하며 데이터베이스 암호화를 지원하지 않습니다.

이러한 고려 사항에 대한 자세한 내용은 IBM Db2 설명서의 [CREATE DATABASE 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-create-database#:~:text=in%20the%20database.-,RESTRICTIVE,-If%20the%20RESTRICTIVE)을 참조하세요.

`rdsadmin.create_database`를 호출하기 전에 `rdsadmin` 데이터베이스에 연결해야 합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 RDS for Db2 DB 인스턴스의 정보로 대체합니다.

```
db2 connect to rdsadmin user master_username using master_password
```

데이터베이스 생성 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin.create_database`를 직접 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-create-database-examples"></a>

다음 예제에서는 일본에 대한 *database\$1code\$1set*, *database\$1territory*, *database\$1collation* 파라미터의 올바른 조합을 사용하여 `TESTJP`라는 데이터베이스를 생성합니다.

```
db2 "call rdsadmin.create_database('TESTJP', 4096, 'IBM-437', 'JP', 'SYSTEM')"
```

## rdsadmin.deactivate\$1database
<a name="db2-sp-deactivate-database"></a>

데이터베이스를 비활성화합니다.

### 구문
<a name="db2-sp-deactivate-database-syntax"></a>

```
db2 "call rdsadmin.deactivate_database(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-deactivate-database-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
비활성화할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-deactivate-database-usage-notes"></a>

데이터베이스를 비활성화하여 메모리 리소스를 절약하거나 다른 데이터베이스 구성을 변경할 수 있습니다. 비활성화된 데이터베이스를 다시 온라인 상태로 전환하려면 [rdsadmin.activate\$1database](#db2-sp-activate-database) 저장 프로시저를 직접적으로 호출합니다.

복제 중에 `rdsadmin.deactivate_database` 저장 프로시저를 직접적으로 호출하여 소스 DB 인스턴스에서 데이터베이스를 비활성화할 수 없습니다.

데이터베이스 비활성화 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin.deactivate_database`를 직접 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-deactivate-database-examples"></a>

다음 예시에서는 `TESTDB`라는 데이터베이스를 비활성화합니다.

```
db2 "call rdsadmin.deactivate_database(?, 'TESTDB')"
```

## rdsadmin.activate\$1database
<a name="db2-sp-activate-database"></a>

데이터베이스를 활성화합니다.

[rdsadmin.reactivate\$1database](#db2-sp-reactivate-database)와 `rdsadmin.activate_database`의 차이에 대한 자세한 내용은 [사용 노트](#db2-sp-activate-database-usage-notes) 섹션을 참조하세요.

### 구문
<a name="db2-sp-activate-database-syntax"></a>

```
db2 "call rdsadmin.activate_database(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-activate-database-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
활성화할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-activate-database-usage-notes"></a>

모든 데이터베이스는 만들어질 때 기본적으로 활성화됩니다. 독립형 DB 인스턴스에서 데이터베이스를 [비활성화]()하여 메모리 리소스를 절약하거나, 다른 데이터베이스 구성을 변경하려는 경우 `rdsadmin.activate_database` 저장 프로시저를 직접적으로 호출하여 데이터베이스를 다시 활성화합니다.

이 저장 프로시저는 독립형 DB 인스턴스에 있고 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 저장 프로시저를 직접적으로 호출하여 비활성화된 데이터베이스만 활성화합니다. 복제본 소스 DB 인스턴스에서 데이터베이스를 활성화하려면 [rdsadmin.reactivate\$1database](#db2-sp-reactivate-database) 저장 프로시저를 직접적으로 호출해야 합니다.

데이터베이스 활성화 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin.activate_database`를 직접 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-activate-database-examples"></a>

다음 예시에서는 `TESTDB`라는 데이터베이스를 활성화합니다.

```
db2 "call rdsadmin.activate_database(?, 'TESTDB')"
```

## rdsadmin.reactivate\$1database
<a name="db2-sp-reactivate-database"></a>

데이터베이스를 재활성화합니다.

[rdsadmin.activate\$1database](#db2-sp-activate-database)와 `rdsadmin.reactivate_database`의 차이에 대한 자세한 내용은 [사용 노트](#db2-sp-reactivate-database-usage-notes) 섹션을 참조하세요.

### 구문
<a name="db2-sp-reactivate-database-syntax"></a>

```
db2 "call rdsadmin.reactivate_database(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-reactivate-database-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
재활성화할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-reactivate-database-usage-notes"></a>

`rdsadmin.reactivate_database` 저장 프로시저를 직접적으로 호출하면 저장 프로시저가 먼저 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 저장 프로시저를 직접적으로 호출하여 데이터베이스를 비활성화한 다음 [rdsadmin.activate\$1database](#db2-sp-activate-database) 저장 프로시저를 직접적으로 호출하여 데이터베이스를 활성화합니다.

데이터베이스 구성을 변경한 후 RDS for Db2 DB 인스턴스에서 데이터베이스를 재활성화해야 할 수 있습니다. 데이터베이스를 재활성화해야 하는지 확인하려면 데이터베이스에 연결하고 `db2 get db cfg show detail`을 실행합니다.

독립형 DB 인스턴스에 있는 데이터베이스의 경우 `rdsadmin.reactivate_database` 저장 프로시저를 사용하여 데이터베이스를 재활성화할 수 있습니다. 또는 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 저장 프로시저를 이미 직접적으로 호출한 경우 [rdsadmin.activate\$1database](#db2-sp-activate-database) 저장 프로시저를 대신 호출할 수 있습니다.

복제본 소스 DB 인스턴스에 있는 데이터베이스의 경우 `rdsadmin.reactivate_database` 저장 프로시저를 사용하여 데이터베이스를 재활성화해야 합니다.

데이터베이스 활성화 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin.reactivate_database`를 직접 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-reactivate-database-examples"></a>

다음 예시에서는 `TESTDB`라는 데이터베이스를 재활성화합니다.

```
db2 "call rdsadmin.reactivate_database(?, 'TESTDB')"
```

## rdsadmin.drop\$1database
<a name="db2-sp-drop-database"></a>

데이터베이스를 삭제합니다.

### 구문
<a name="db2-sp-drop-database-syntax"></a>

```
db2 "call rdsadmin.drop_database('database_name')"
```

### 파라미터
<a name="db2-sp-drop-database-parameters"></a>

다음 파라미터는 필수입니다.

*database\$1name*  
삭제할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-drop-database-usage-notes"></a>

다음 조건이 충족되면 `rdsadmin.drop_database`만 직접 호출하여 데이터베이스를 삭제할 수 있습니다.
+ Amazon RDS 콘솔 또는 AWS CLI를 사용하여 RDS for Db2 DB 인스턴스를 만들 때 데이터베이스 이름을 지정하지 않았습니다. 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 섹션을 참조하세요.
+ [rdsadmin.create\$1database](#db2-sp-create-database) 저장 프로시저를 호출하여 데이터베이스를 만들었습니다.
+ [rdsadmin.restore\$1database](#db2-sp-restore-database) 저장 프로시저를 호출하여 오프라인 또는 백업 이미지에서 데이터베이스를 복원했습니다.

`rdsadmin.drop_database`를 호출하기 전에 `rdsadmin` 데이터베이스에 연결해야 합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 RDS for Db2 DB 인스턴스의 정보로 대체합니다.

```
db2 connect to rdsadmin user master_username using master_password
```

데이터베이스 삭제 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin.drop_database`를 직접 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-drop-database-examples"></a>

다음 예제에서는 `TESTDB`라는 데이터베이스를 삭제합니다.

```
db2 "call rdsadmin.drop_database('TESTDB')"
```

## rdsadmin.update\$1db\$1param
<a name="db2-sp-update-db-param"></a>

데이터베이스 파라미터를 업데이트합니다.

### 구문
<a name="db2-sp-update-db-param-syntax"></a>

```
db2 "call rdsadmin.update_db_param(
    'database_name', 
    'parameter_to_modify', 
    'changed_value',
    'restart_database')"
```

### 파라미터
<a name="db2-sp-update-db-param-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*database\$1name*  
작업을 실행할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*parameter\$1to\$1modify*  
수정할 파라미터의 이름입니다. 데이터 형식은 `varchar`입니다. 자세한 내용은 [Amazon RDS for Db2 파라미터](db2-supported-parameters.md) 섹션을 참조하세요.

*changed\$1value*  
파라미터 값을 변경할 값입니다. 데이터 형식은 `varchar`입니다.

다음 파라미터는 선택 사항입니다.

*restart\$1database*  
재시작이 필요한 경우 RDS가 데이터베이스를 재시작할지 여부를 지정합니다. 데이터 형식은 `varchar`입니다. `logprimary` 및 `logfilsiz`를 수정하려면 이 파라미터를 `'YES'`로 설정합니다.

### 사용 노트
<a name="db2-sp-update-db-param-usage-notes"></a>

데이터베이스 파라미터 업데이트 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin.update_db_param`를 직접 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-update-db-param-examples"></a>

**예시 1: 파라미터 업데이트**

다음 예제에서는 `TESTDB`라는 데이터베이스의 `archretrydelay` 파라미터를 `100`으로 업데이트합니다.

```
db2 "call rdsadmin.update_db_param(
    'TESTDB', 
    'archretrydelay', 
    '100')"
```

**예시 2: 객체 검증 연기**

다음 예제에서는 종속성 검사를 피하기 위해 `TESTDB`라는 데이터베이스에서 생성된 객체의 검증을 연기합니다.

```
db2 "call rdsadmin.update_db_param(
    'TESTDB', 
    'auto_reval', 
    'deferred_force')"
```

## rdsadmin.set\$1configuration
<a name="db2-sp-set-configuration"></a>

데이터베이스의 특정 설정을 구성합니다.

### 구문
<a name="db2-sp-set-configuration-syntax"></a>

```
db2 "call rdsadmin.set_configuration(
    'name',  
    'value')"
```

### 파라미터
<a name="db2-sp-set-configuration-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

* 이름*  
구성 설정의 이름입니다. 데이터 형식은 `varchar`입니다.

* 값*  
구성 설정 값입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-set-configuration-usage-notes"></a>

다음 테이블에는 `rdsadmin.set_configuration`으로 제어할 수 있는 구성 설정이 나와 있습니다.


| 이름 | 설명 | 
| --- | --- | 
|  `RESTORE_DATABASE_NUM_BUFFERS`  |  복원 작업 중에 생성할 버퍼 개수입니다. 이 값은 DB 인스턴스 클래스의 총 메모리 크기보다 작아야 합니다. 이 설정이 구성되지 않은 경우 Db2는 복원 작업 중에 사용할 값을 결정합니다. 자세한 내용은 IBM Db2 설명서의 [RESTORE DATABASE](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database) 명령을 참조하세요.  | 
|  `RESTORE_DATABASE_PARALLELISM`  |  복원 작업 중에 생성할 버퍼 조작기 개수입니다. 이 값은 DB 인스턴스의 vCPU 개수보다 두 배 미만이어야 합니다. 이 설정이 구성되지 않은 경우 Db2는 복원 작업 중에 사용할 값을 결정합니다. 자세한 내용은 IBM Db2 설명서의 [RESTORE DATABASE](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database) 명령을 참조하세요.  | 
|  `RESTORE_DATABASE_NUM_MULTI_PATHS`  |  Amazon S3 작업에서 복원하는 동안 사용할 경로(또는 I/O 스트림) 수입니다. 이 구성 설정을 사용하려면 백업 파일이 여러 개 있어야 합니다. 이 값은 여러 데이터베이스 백업 파일을 병렬로 복원하므로 대용량 데이터로 데이터베이스를 복원할 때 성능을 향상시킬 수 있습니다. 데이터베이스 백업 파일 수와 일치하도록이 값을 설정하는 것이 좋습니다. 자세한 내용은 IBM Db2 설명서의 [BACKUP DATABASE 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-backup-database)을 참조하세요.  | 
|  `USE_STREAMING_RESTORE`  |  먼저 전체 백업을 RDS for Db2 DB 인스턴스에 다운로드한 다음 추출하는 대신 복원 중에 백업 데이터를 직접 스트리밍할지 여부를 지정합니다. `USE_STREAMING_RESTORE`를 `TRUE`로 설정하면 스토리지 요구 사항이 크게 줄어들고 복원 성능이 향상될 수 있습니다. 이 설정을 사용하려면 IBM Db2 엔진 버전 11.5.9.0.sb00063198.r1 이상과 데이터베이스의 탄력적 네트워크 인터페이스(ENI)를 통한 Amazon S3 연결이 필요합니다. 자세한 내용을 알아보려면 IBM Db2 설명서의 [원격 스토리지](https://www.ibm.com/docs/en/db2/11.5.x?topic=databases-remote-storage)를 참조하세요.  | 

### 예제
<a name="db2-sp-set-configuration-examples"></a>

**예시 1: 만들 버퍼 수 지정**

다음 예제에서는 `RESTORE_DATABASE_NUM_BUFFERS` 구성을 `150`으로 설정합니다.

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_NUM_BUFFERS', 
    '150')"
```

**예시 2: 만들 버퍼 조작기 수 지정**

다음 예제에서는 `RESTORE_DATABASE_PARALLELISM` 구성을 `8`로 설정합니다.

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_PARALLELISM', 
    '8')"
```

**예제 3: 복원 중에 사용할 경로 또는 I/O 스트림 수 지정**

다음 예제에서는 `RESTORE_DATABASE_NUM_MULTI_PATHS` 구성을 `5`로 설정합니다.

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_NUM_MULTI_PATHS', 
    '5')"
```

**예제 4: 백업 데이터를 스트리밍하도록 복원 설정**

다음 예제에서는 `USE_STREAMING_RESTORE` 구성을 `TRUE`으로 설정합니다.

```
db2 "call rdsadmin.set_configuration(
    'USE_STREAMING_RESTORE', 
    'TRUE')"
```

## rdsadmin.show\$1configuration
<a name="db2-sp-show-configuration"></a>

저장 프로시저 `rdsadmin.set_configuration`을 사용하여 설정할 수 있는 현재 설정을 반환합니다.

### 구문
<a name="db2-sp-show-configuration-syntax"></a>

```
db2 "call rdsadmin.show_configuration(
    'name')"
```

### 파라미터
<a name="db2-sp-show-configuration-parameters"></a>

다음 파라미터는 선택 사항입니다.

* 이름*  
정보를 반환할 구성 설정의 이름입니다. 데이터 형식은 `varchar`입니다.  
유효한 구성 이름은 다음과 같습니다.  
+ `RESTORE_DATABASE_NUM_BUFFERS` – 복원 작업 중에 생성할 버퍼 개수입니다.
+ `RESTORE_DATABASE_PARALLELISM` – 복원 작업 중에 생성할 버퍼 조작기 개수입니다.
+ `RESTORE_DATABASE_NUM_MULTI_PATHS` - Amazon S3 작업에서 복원하는 동안 사용할 경로(또는 I/O 스트림) 수입니다.
+ `USE_STREAMING_RESTORE` - 먼저 전체 백업 데이터를 RDS for Db2 DB 인스턴스에 다운로드한 다음 추출하는 대신 복원 중에 백업 데이터를 직접 스트리밍할지 여부를 지정합니다.

### 사용 노트
<a name="db2-sp-show-configuration-usage-notes"></a>

구성 설정의 이름을 지정하지 않으면 `rdsadmin.show_configuration`이 저장 프로시저 `rdsadmin.set_configuration`을 사용하여 설정할 수 있는 모든 구성 설정에 대한 정보를 반환합니다.

### 예제
<a name="db2-sp-show-configuration-examples"></a>

다음 예제는 현재 `RESTORE_DATABASE_PARALLELISM` 구성에 관한 정보를 반환합니다.

```
db2 "call rdsadmin.show_configuration(
    'RESTORE_DATABASE_PARALLELISM')"
```

## rdsadmin.backup\$1database
<a name="db2-sp-backup-database"></a>

RDS for Db2 DB 인스턴스에서 Amazon S3 버킷으로 데이터베이스를 백업합니다.

### 구문
<a name="db2-sp-backup-database-syntax"></a>

```
db2 "call rdsadmin.backup_database(
    ?,
    'database_name', 
    's3_bucket_name', 
    's3_prefix', 
    'backup_type',
    'compression_option',
    'util_impact_priority', 
    'num_files',
    'parallelism',
    'num_buffers')"
```

### 파라미터
<a name="db2-sp-backup-database-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
백업할 RDS for Db2 DB 인스턴스의 대상 데이터베이스 이름입니다. 데이터 형식은 `varchar`입니다.  
데이터베이스는 DB 인스턴스에 있어야 합니다. `rdsadmin` 데이터베이스를 백업할 수 없습니다.

*s3\$1bucket\$1name*  
백업이 상주할 Amazon S3 버킷의 이름입니다. 데이터 형식은 `varchar`입니다.  
`rdsadmin.backup_database`를 직접적으로 호출하기 전에 S3 버킷이 존재하고, 백업하려는 RDS for Db2 DB 인스턴스의 대상 데이터베이스와 동일한 AWS 리전에 있어야 하며, DB 인스턴스에 연결된 IAM 역할을 통해 액세스할 수 있어야 합니다.

*s3\$1prefix*  
RDS for Db2가 백업 파일을 업로드하는 Amazon S3 경로의 접두사입니다. 데이터 형식은 `varchar`입니다.  
접두사는 1,024자로 제한됩니다. 선행 또는 후행 슬래시(/)를 포함하면 안 됩니다. Amazon S3로의 IBM  스트리밍 제한으로 인해 접두사에 하위 디렉터리가 포함되는 것이 좋습니다.  
파일 관리를 개선하기 위해 RDS for Db2는 *s3\$1prefix* 이후에 추가 디렉터리를 생성합니다. RDS for Db2는 모든 백업 파일을 *s3\$1prefix/dbi\$1resource\$1id/db\$1name*에 업로드합니다. *num\$1files*를 `1`보다 높게 설정하면 *db\$1name* 디렉터리에 백업 파일이 두 개 이상 포함됩니다.  
다음은 백업 파일의 Amazon S3 위치 예입니다. 이 예제에서 `backups/daily`는 *s3\$1prefix* 파라미터에 설정된 값입니다.  

```
backups/daily/db-5N7FXOY4GDP7RG2NSH2ZTAI2W4/SAMPLEDB
```

*backup\$1type*  
백업 중에 데이터베이스를 계속 사용할 수 있는지 여부를 결정하는 백업 유형입니다. 데이터 형식은 `varchar`입니다.  
유효한 값:  
+ `OFFLINE` - 백업 중에는 데이터베이스를 사용할 수 없습니다. 이 유형은 더 빠르지만 가동 중지 시간이 발생합니다.
+ `ONLINE` - 백업 중에 데이터베이스를 계속 사용할 수 있습니다. 기본적으로 `ONLINE`는 `INCLUDE LOGS`로 설정됩니다.

다음 파라미터는 선택적입니다.

*compression\$1option*  
백업 시간, CPU 사용량 및 스토리지 비용에 영향을 미치는 사용되는 압축 알고리즘의 유형입니다. 데이터 형식은 `varchar`입니다. 기본값은 `NONE`입니다.  
유효한 값:  
+ `NONE` - 파일 크기가 가장 크고 CPU 사용량이 가장 적으며 스토리지 비용이 가장 저렴합니다.
+ `STANDARD` - 표준 Db2 압축입니다. `libdb2compr.so`를 사용합니다.
+ `ZLIB` – 향상된 Db2 압축입니다. `libdb2zcompr.so`를 사용하지만 CPU 집약적이고 가장 비용이 많이 드는 스토리지 비용입니다.

*util\$1impact\$1priority*  
백업이 시스템 리소스에 미치는 영향을 제어하는 설정입니다. 데이터 형식은 `integer`입니다. 유효한 값: `1`\$1`100`(낮음에서 높음 순) 기본값은 `50`입니다.  
값이 낮을수록 백업이 시스템 리소스에 미치는 영향이 줄어들지만, 데이터베이스를 백업하는 데 걸리는 시간이 늘어날 수 있습니다. 값이 높을수록 데이터베이스 백업이 더 빨리 완료될 수 있지만, 다른 작업에 영향을 미칠 수 있습니다. 실제 영향은 전체 시스템 사용률 및 `util_impact_lim` 설정에 따라 달라집니다. 파라미터 그룹에서 `util_impact_lim` 설정을 보고 수정할 수 있습니다. 자세한 내용은 [Amazon RDS for Db2 파라미터](db2-supported-parameters.md) 섹션을 참조하세요.

*num\$1files*  
Amazon S3에 대한 병렬 업로드 스트림 수입니다. 데이터 형식은 `integer`입니다. 유효한 값은 `1`\$1`256`입니다.  
Amazon RDS가 자동으로 계산하는 기본값으로, 백업 성능을 관찰한 후에만 이 파라미터를 설정하는 것이 좋습니다. 값이 높을수록 대규모 백업, 특히 고대역폭 연결의 성능이 향상될 수 있지만, 특정 시점에서 값이 높을수록 성능이 저하됩니다. 또한 사용 가능한 시스템 리소스와 네트워크 용량을 고려해야 합니다.

*parallelism*  
백업 유틸리티가 병렬로 읽을 수 있는 테이블스페이스 수입니다. 데이터 형식은 `integer`입니다. 유효한 값은 `1`\$1`256`입니다.  
Db2 엔진이 자동으로 최적의 값으로 계산하는 기본값으로, 백업 성능을 관찰한 후에만이 파라미터를 설정하는 것이 좋습니다. 이 파라미터를 설정하면 Amazon RDS는 사용 가능한 프로세서에 대해 검증하고, 처리 능력이 충분하지 않은 경우 백업 요청을 실행하지 않습니다.

*num\$1buffers*  
사용할 버퍼 수입니다. 데이터 형식은 `integer`입니다. 유효한 값은 `1`\$1`268435456`입니다.  
Amazon RDS가 메모리를 기반으로 자동으로 계산하는 기본값으로, 백업 성능을 관찰한 후에만이 파라미터를 설정하는 것이 좋습니다. 이 파라미터를 설정하면 Amazon RDS는 사용 가능한 메모리에 대해 검증하고 사용 가능한 메모리가 충분하지 않은 경우 백업 요청을 실행하지 않습니다. 여러 위치로 백업하는 경우(`num_files`가 `1` 이상으로 설정됨) 버퍼 수가 많을수록 성능이 향상될 수 있습니다. `compression_option`을 `NONE`으로 설정하지 않으면 `num_buffers` 및 `parallelism`을 늘려 성능을 개선할 수 있습니다.

### 사용 노트
<a name="db2-sp-backup-database-usage-notes"></a>

이 저장 프로시저는 Amazon S3 통합을 사용하여 데이터베이스 백업을 Amazon S3 버킷으로 직접 스트리밍하는 비동기 백업 작업을 생성합니다. 로컬 서버나 RDS for Db2 DB 인스턴스에서 백업을 만들고, 이를 Amazon S3로 스트리밍한 다음 원하는 곳 어디에서나 복원할 수 있습니다. RDS for Db2 DB 인스턴스로 데이터베이스를 복원하는 것에 대한 자세한 내용은 [rdsadmin.restore\$1database](#db2-sp-restore-database) 섹션을 참조하세요.

저장된 프로시저를 직접적으로 호출하기 전에 다음 고려 사항을 검토하세요.
+ 한 번에 하나의 데이터베이스만 백업할 수 있습니다.
+ DB 인스턴스에서는 백업과 복원을 함께 수행할 수 없습니다.
+ AWS KMS를 사용한 Amazon S3 서버 측 암호화(SSE-KMS)는 지원되지 않습니다. S3 버킷이 SSE-KMS로 설정되어 있더라도 S3 버킷에 업로드된 파일은 SSE-KMS 암호화를 사용하지 않습니다.
+ 백업 파일을 Amazon S3로 스트리밍하려면 통합을 이미 구성했어야 합니다. 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md) 섹션을 참조하세요.
+ RDS for Db2 DB 인스턴스가 Amazon S3와 상호 작용하려면 프라이빗 서브넷을 사용할 수 있는 VPC와 Amazon S3 게이트웨이 엔드포인트가 있어야 합니다. 자세한 내용은 [1단계: Amazon S3에 대한 VPC 게이트웨이 엔드포인트 생성](db2-troubleshooting.md#db2-creating-endpoint) 및 [2단계: Amazon S3용 VPC 게이트웨이 엔드포인트가 존재하는지 확인](db2-troubleshooting.md#db2-confirming-endpoint)(을)를 참조하세요.

`rdsadmin.backup_database`를 호출하기 전에 `rdsadmin` 데이터베이스에 연결해야 합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 RDS for Db2 DB 인스턴스의 정보로 대체합니다.

```
db2 connect to rdsadmin user master_username using master_password
```

데이터베이스를 백업한 후 연결을 종료해야 합니다.

```
terminate
```

데이터베이스 백업 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin.backup_database`를 직접 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-backup-database-examples"></a>

모든 예제는 `MYDB`라는 데이터베이스를 `amzn-s3-demo-bucket`이라는 Amazon S3 버킷에 백업하고 *s3\$1prefix*를 `backups/daily`로 설정합니다.

**예제 \$11: 사용률 중앙값과 단일 업로드 스트림으로 데이터베이스를 오프라인으로 지정하고 사용할 수 없음**

다음 예제에서는 데이터베이스가 오프라인 상태이므로 더 빠르지만 백업 중에 데이터베이스를 사용할 수 없습니다. 이 예제에서는 파일 압축을 수행하지 않고, 시스템 리소스에 중간 영향을 미치며, Amazon S3에 대한 단일 업로드 스트림을 사용합니다.

```
db2 call "rdsadmin.backup_database(
    ?, 
    'MYDB',
    'amzn-s3-demo-bucket', 
    'backups/daily',
    'OFFLINE',
    'NONE', 
    50, 
    1)"
```

**예제 \$12: 향상된 압축, 중간 사용률 및 소수의 병렬 업로드 스트림으로 온라인 및 사용 가능한 데이터베이스 지정**

다음 예제에서 데이터베이스는 온라인 상태이며 백업 중에 사용할 수 있습니다. 이 예제에서는 향상된 압축을 수행하므로 파일 크기가 작지만 CPU 집약적입니다. 시스템 리소스에 미치는 영향의 중앙값보다 약간 높으며, Amazon S3에 5개의 업로드 스트림을 사용합니다.

```
db2 call "rdsadmin.backup_database(
    ?, 
    'MYDB',
    'amzn-s3-demo-bucket', 
    'backups/daily',
    'ONLINE',
    'ZLIB', 
    60, 
    5)"
```

**예제 \$13: 데이터베이스를 오프라인으로 지정하고 기본값 및 시스템 계산에서 사용할 수 없음**

다음 예제에서는 데이터베이스가 오프라인 상태이므로 더 빠르지만 백업 중에 데이터베이스를 사용할 수 없습니다. 이 예제에서는 파일의 기본 압축을 사용하고 시스템 리소스에 영향을 미칩니다. 또한 RDS for Db2는 Amazon S3에 대한 병렬 업로드 스트림 수, 병렬로 읽을 테이블스페이스 및 사용할 버퍼를 계산할 수 있습니다.

```
db2 "call rdsadmin.backup_database(
    ?, 
    'MYDB', 
    'amzn-s3-demo-bucket',
    'backups/daily', 
    'OFFLINE')"
```

**예제 \$14: 압축 없이 데이터베이스를 오프라인으로 지정하고 사용할 수 없음, 높은 사용률 및 사용자 지정 계산**

다음 예제에서는 데이터베이스가 오프라인 상태이므로 더 빠르지만 백업 중에 데이터베이스를 사용할 수 없습니다. 이 예제에서는 파일 압축을 수행하지 않고, 시스템 리소스에 큰 영향을 미치며, Amazon S3에 20개의 업로드 스트림을 사용합니다. 병렬로 읽을 최대 테이블스페이스 수를 설정하므로 처리 능력이 충분하지 않으면 백업 요청이 실패할 수 있습니다. 또한 사용할 최대 버퍼 수를 설정하여 메모리가 부족할 경우 백업 요청이 실패할 수 있습니다.

```
db2 "call rdsadmin.backup_database(
    ?, 
    'MYDB', 
    'amzn-s3-demo-bucket', 
    'backups/daily', 
    'OFFLINE', 
    'NONE', 
    90, 
    20, 
    256, 
    268435456)"
```

## rdsadmin.restore\$1database
<a name="db2-sp-restore-database"></a>

Amazon S3 버킷에서 RDS for Db2 DB 인스턴스로 데이터베이스를 복원합니다.

### 구문
<a name="db2-sp-restore-database-syntax"></a>

```
db2 "call rdsadmin.restore_database(
    ?,
    'database_name', 
    's3_bucket_name', 
    's3_prefix', 
    restore_timestamp, 
    'backup_type')"
```

### 파라미터
<a name="db2-sp-restore-database-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
RDS for Db2에서 복원할 대상 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.  
예를 들어 소스 데이터베이스 이름이 `TESTDB`이고 *database\$1name*을 `NEWDB`로 설정하면 Amazon RDS가 `NEWDB`를 소스 데이터베이스로 복원합니다.

*s3\$1bucket\$1name*  
백업이 있는 Amazon S3 버킷의 이름입니다. 데이터 형식은 `varchar`입니다.

*s3\$1prefix*  
다운로드 중 파일 일치 작업에 사용할 접두사입니다. 데이터 형식은 `varchar`입니다.  
이 파라미터가 비어 있는 경우 Amazon S3 버킷의 모든 파일이 처리됩니다. 다음은 접두사의 예제입니다.  

```
backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101
```

*restore\$1timestamp*  
데이터베이스 백업 이미지의 타임스탬프입니다. 데이터 형식은 `varchar`입니다.  
타임스탬프는 백업 파일 이름에 포함됩니다. 예를 들어, `20230615010101`은 파일 이름 `SAMPLE.0.rdsdb.DBPART000.20230615010101.001`의 타임스탬프입니다.

*backup\$1type*  
백업 유형입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `OFFLINE`, `ONLINE`.  
가동 중지 시간이 거의 없는 마이그레이션에는 `ONLINE`을 사용합니다. 자세한 내용은 [Linux에서 Amazon RDS for Db2의 가동 중지 시간이 거의 없는 Linux로 마이그레이션](db2-near-zero-downtime-migration.md) 섹션을 참조하세요.

### 사용 노트
<a name="db2-sp-restore-database-usage-notes"></a>

이 저장 프로시저를 사용하여 Db2 데이터베이스를 RDS for Db2 DB 인스턴스로 마이그레이션할 수 있습니다. 자세한 내용은 [AWS 서비스를 사용하여 Db2에서 Amazon RDS for Db2로 데이터 마이그레이션](db2-migration-approaches.md) 섹션을 참조하세요. 또한 이 저장 프로시저를 사용하여 동일한 복원 이미지를 사용하는 동일한 데이터베이스의 여러 복사본을 서로 다른 데이터베이스 이름으로 생성할 수 있습니다.

저장된 프로시저를 직접적으로 호출하기 전에 다음 고려 사항을 검토하세요.
+ 데이터베이스를 복원하기 전에 디스크에 있는 원래 Db2 데이터베이스보다 큰 RDS for Db2 DB 인스턴스용 저장 공간을 프로비저닝해야 합니다. `USE_STREAMING_RESTORE`를 활성화한 경우 백업을 복원하면 Amazon RDS는 백업 파일을 S3 버킷에서 RDS for Db2 DB 인스턴스로 직접 스트리밍합니다. `USE_STREAMING_RESTORE`를 활성화하지 않으면 RDS for Db2 DB 인스턴스의 스토리지 공간을 백업 크기와 디스크의 원래 Db2 데이터베이스 크기의 합 이상으로 프로비저닝해야 합니다. 자세한 내용은 [Insufficient disk space](db2-troubleshooting.md#restore-database-sp-insufficient-disk-space) 섹션을 참조하세요.
+ 백업을 복원할 때 Amazon RDS는 RDS for Db2 DB 인스턴스에서 백업 파일을 추출합니다. 각 백업 파일은 5TB 이하여야 합니다. 백업 파일이 5TB를 초과하면 해당 백업 파일을 더 작은 크기의 파일들로 나누어야 합니다.
+ `rdsadmin.restore_database` 저장 프로시저를 사용해 모든 파일을 복원하도록 하려면 파일 이름의 타임스탬프 뒤에 파일 번호 접미사를 포함하지 않습니다. 예를 들어, *s3\$1prefix* `backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101`은 다음 파일을 복원합니다.

  ```
  SAMPLE.0.rdsdb.DBPART000.20230615010101.001
  SAMPLE.0.rdsdb.DBPART000.20230615010101.002
  SAMPLE.0.rdsdb.DBPART000.20230615010101.003
  SAMPLE.0.rdsdb.DBPART000.20230615010101.004
  SAMPLE.0.rdsdb.DBPART000.20230615010101.005
  ```
+ RDS for Db2는 비자동 스토리지를 지원하지 않습니다. 자세한 내용은 [Tablespaces not restored](db2-troubleshooting.md#restore-database-sp-tablespaces-not-restored) 섹션을 참조하세요.
+ RDS for Db2는 격리되지 않은 루틴 생성을 지원하지 않습니다. 자세한 내용은 [Non-fenced routines not allowed](db2-troubleshooting.md#restore-database-sp-non-fenced-routines) 섹션을 참조하세요.
+ 데이터베이스 복구 작업의 성능을 개선하기 위해 RDS에서 사용할 버퍼 수, 버퍼 조작자, 여러 백업 경로 수를 구성할 수 있습니다. 스토리지 사용량을 최적화하고 잠재적으로 성능을 개선하기 위해 Amazon S3에서 백업을 직접 스트리밍할 수도 있습니다. 현재 구성을 확인하려면 [rdsadmin.show\$1configuration](#db2-sp-show-configuration)을 사용합니다. 구성을 변경하려면 [rdsadmin.set\$1configuration](#db2-sp-set-configuration)을 사용합니다.

데이터베이스를 복원한 후 데이터베이스를 온라인 상태로 전환하고 추가 트랜잭션 로그를 적용하려면 [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database) 섹션을 참조하세요.

데이터베이스 복원 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin.restore_database`를 직접 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-restore-database-examples"></a>

다음 예제에서는 *s3\$1prefix* `backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101`이 있는 단일 파일 또는 여러 파일을 사용하여 오프라인 백업을 복원합니다.

```
db2 "call rdsadmin.restore_database(
    ?,
    'SAMPLE',
    'amzn-s3-demo-bucket',
    'backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101',
    20230615010101,
    'OFFLINE')"
```

## rdsadmin.rollforward\$1database
<a name="db2-sp-rollforward-database"></a>

[rdsadmin.restore\$1database](#db2-sp-restore-database)를 호출하여 데이터베이스를 복원한 후 데이터베이스를 온라인 상태로 만들고 추가 트랜잭션 로그를 적용합니다.

### 구문
<a name="db2-sp-rollforward-database-syntax"></a>

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'database_name',
    's3_bucket_name', 
    s3_prefix, 
    'rollforward_to_option', 
    'complete_rollforward')"
```

### 파라미터
<a name="db2-sp-rollforward-database-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
작업을 수행할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*s3\$1bucket\$1name*  
백업이 있는 Amazon S3 버킷의 이름입니다. 데이터 형식은 `varchar`입니다.

*s3\$1prefix*  
다운로드 중 파일 일치 작업에 사용할 접두사입니다. 데이터 형식은 `varchar`입니다.  
이 파라미터가 비어 있는 경우 S3 버킷의 모든 파일이 다운로드됩니다. 다음은 접두사 예제입니다.  

```
backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101
```

입력 다음 파라미터는 선택적입니다.

*rollforward\$1to\$1option*  
롤포워드하려는 지점입니다. 데이터 형식은 `varchar`입니다. 유효한 값: 타임스탬프가 `YYYY-MM-DD-HH.MM.SS` 형식인 `END_OF_LOGS`, `END_OF_BACKUP`. 기본값은 `END_OF_LOGS`입니다.

*complete\$1rollforward*  
롤포워드 프로세스를 완료할지 여부를 지정합니다. 데이터 형식은 `varchar`입니다. 기본값은 `TRUE`입니다.  
`TRUE`인 경우 완료 후 데이터베이스가 온라인 상태이고 액세스할 수 있습니다. `FALSE`인 경우 데이터베이스는 `ROLL-FORWARD PENDING` 상태가 유지됩니다.

### 사용 노트
<a name="db2-sp-rollforward-database-usage-notes"></a>

다양한 시나리오에서 온프레미스로 생성되는 로그를 포함하는 온라인 백업에 `rds.rollforward_database`를 사용할 수 있습니다.

**시나리오 1: 데이터베이스 복원, 포함된 로그를 롤포워드, 데이터베이스를 온라인 상태로 전환**

`rdsadmin.restore_database()`가 완료되면 [예제 1](#db2-sp-rollforward-database-examples)의 구문을 사용하여 트랜잭션 로그가 있는 데이터베이스를 온라인 상태로 전환합니다.

**시나리오 2: 데이터베이스를 온라인 상태로 전환하지만 포함된 로그를 롤포워드하지 않음 **

`rdsadmin.restore_database()`가 완료되면 [예제 2](#db2-sp-rollforward-database-examples)의 구문을 사용하여 트랜잭션 로그가 없는 데이터베이스를 온라인 상태로 전환합니다.

**시나리오 3: 백업에 포함된 로그를 앞 버전으로 이동하고 온프레미스에서 생성되는 추가 트랜잭션 로그 적용**

`rdsadmin.restore_database()`가 완료되면 [예제 3 또는 예제 4](#db2-sp-rollforward-database-examples)의 구문을 사용하여 데이터베이스를 온라인 상태로 전환하지 않고 로그를 롤포워드합니다.

`complete_rollforward`를 `FALSE`로 설정하면 데이터베이스가 `ROLL-FORWARD PENDING` 상태이고 오프라인 상태입니다. 데이터베이스를 온라인 상태로 만들려면 [rdsadmin.complete\$1rollforward](#db2-sp-complete-rollforward)를 직접 호출해야 합니다.

데이터베이스의 롤포워드 상태 점검에 대한 자세한 내용은 [rdsadmin.rollforward\$1status](#db2-sp-rollforward-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-rollforward-database-examples"></a>

**예제 1: 트랜잭션 로그가 있는 데이터베이스를 온라인 상태로 전환**

다음 예제에서는 트랜잭션 로그가 있는 데이터베이스의 온라인 백업으로 롤포워드한 다음 데이터베이스를 온라인 상태로 만듭니다.

```
db2 "call rdsadmin.rollforward_database(
    ?,
    null,
    null,
    'END_OF_LOGS',
    'TRUE')"
```

**예시 2: 트랜잭션 로그가 없는 데이터베이스를 온라인으로 가져오기 **

다음 예제에서는 트랜잭션 로그가 없는 데이터베이스의 온라인 백업으로 롤포워드한 다음 데이터베이스를 온라인 상태로 만듭니다.

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'logsfolder/,
    'END_OF_BACKUP',
    'TRUE')"
```

**예시 3: 트랜잭션 로그가 있는 데이터베이스를 온라인으로 가져오지 않기 **

다음 예제에서는 트랜잭션 로그가 있는 데이터베이스의 온라인 백업으로 롤포워드한 다음 데이터베이스를 온라인 상태로 만들지 않습니다.

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    null,
    'onlinebackup/TESTDB',
    'END_OF_LOGS',
    'FALSE')"
```

**예시 4: 추가 트랜잭션 로그가 있는 데이터베이스를 온라인으로 가져오지 않기 **

다음 예제에서는 추가 트랜잭션 로그가 있는 데이터베이스의 온라인 백업으로 롤포워드한 다음 데이터베이스를 온라인 상태로 만들지 않습니다.

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'logsfolder/S0000155.LOG',
    'END_OF_LOGS',
    'FALSE')"
```

## rdsadmin.rollforward\$1status
<a name="db2-sp-rollforward-status"></a>

`ROLLFORWARD DATABASE database_name QUERY STATUS`의 출력을 반환합니다.

### 구문
<a name="db2-sp-rollforward-status-syntax"></a>

```
db2 "call rdsadmin.rollforward_status(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-rollforward-status-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
작업을 수행할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-rollforward-status-usage-notes"></a>

[rdsadmin.rollforward\$1database](#db2-sp-rollforward-database)를 직접적으로 호출한 후 `rdsadmin.rollforward_status`를 직접적으로 호출하여 데이터베이스의 롤포워드 상태를 확인할 수 있습니다.

이 저장 프로시저의 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

## rdsadmin.complete\$1rollforward
<a name="db2-sp-complete-rollforward"></a>

데이터베이스를 `ROLL-FORWARD PENDING` 상태에서 온라인 상태로 만듭니다.

### 구문
<a name="db2-sp-complete-rollforward-syntax"></a>

```
db2 "call rdsadmin.complete_rollforward(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-complete-rollforward-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
온라인으로 가져올 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-complete-rollforward-usage-notes"></a>

`complete_rollforward`가 `FALSE`로 설정된 상태로 [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database)를 호출한 경우 데이터베이스는 `ROLL-FORWARD PENDING` 상태이며 오프라인 상태입니다. 롤포워드 프로세스를 완료하고 데이터베이스를 온라인 상태로 전환하려면 `rdsadmin.complete_rollforward`를 호출하세요.

롤포워드 프로세스 완료 상태 점검에 대한 자세한 내용은 [rdsadmin.rollforward\$1status](#db2-sp-rollforward-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-complete-rollforward-examples"></a>

다음 예제에서는 TESTDB 데이터베이스를 온라인 상태로 전환합니다.

```
db2 "call rdsadmin.complete_rollforward(
    ?,
    'TESTDB')"
```

## rdsadmin.db2pd\$1command
<a name="db2-sp-db2pd-command"></a>

RDS for Db2 데이터베이스 정보를 수집합니다.

### 구문
<a name="db2-sp-db2pd-command-syntax"></a>

```
db2 "call rdsadmin.db2pd_command('db2pd_cmd')"
```

### 파라미터
<a name="db2-sp-db2pd-command-parameters"></a>

다음 입력 파라미터는 필수입니다.

*db2pd\$1cmd*  
실행하려는 `db2pd` 명령의 이름입니다. 데이터 형식은 `varchar`입니다.  
파라미터는 하이픈으로 시작되어야 합니다. 파라미터 목록을 알아보려면 IBM Db2 설명서의 [db2pd - Db2 데이터베이스 명령 모니터링 및 문제 해결](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2pd-monitor-troubleshoot-db2-engine-activities)을 참조하세요.  
다음 옵션은 JSON에서 지원되지 않습니다.  
+ `-addnode`
+ `-alldatabases`
+ `-alldbp`
+ `-alldbs`
+ `-allmembers`
+ `-alm_in_memory`
+ `-cfinfo`
+ `-cfpool`
+ `-command`
+ `-dbpartitionnum`
+ `-debug`
+ `-dump`
+ `-everything`
+ `-file | -o`
+ `-ha`
+ `-interactive`
+ `-member`
+ `-pages`
**참고**  
`-pages summary`을(를) 지원합니다.
+ `-pdcollection`
+ `-repeat`
+ `-stack`
+ `-totalmem`
`file` 하위 옵션은 지원되지 않습니다(예: `db2pd -db testdb -tcbstats file=tcbstat.out`).  
`stacks` 옵션 사용은 지원되지 않습니다(예: `db2pd -edus interval=5 top=10 stacks`).

### 사용 노트
<a name="db2-sp-db2pd-command-usage-notes"></a>

이 저장 프로시저는 RDS for Db2 데이터베이스를 모니터링하고 문제를 해결하는 데 도움이 되는 정보를 수집합니다.

저장 프로시저는 IBM `db2pd` 유틸리티를 사용하여 다양한 명령을 실행합니다. `db2pd` 유틸리티를 사용하려면 RDS for Db2 마스터 사용자에게는 없는 `SYSADM` 인증이 필요합니다. 하지만 Amazon RDS 저장 프로시저를 사용하면 마스터 사용자가 유틸리티를 사용하여 다양한 명령을 실행할 수 있습니다. 유틸리티에 대한 자세한 내용은 IBM Db2 설명서의 [db2pd - Db2 데이터베이스 명령 모니터링 및 문제 해결](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2pd-monitor-troubleshoot-db2-engine-activities)을 참조하세요.

출력은 최대 2GB로 제한됩니다.

데이터베이스의 정보 수집 상태 점검에 대해 알아보려면 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-db2pd-command-examples"></a>

**예시 1: DB 인스턴스의 가동 시간 반환**

다음 예제는 RDS for Db2 DB 인스턴스의 가동 시간을 반환합니다.

```
db2 "call rdsadmin.db2pd_command('-')"
```

**예시 2: 데이터베이스의 가동 시간 반환**

다음 예제는 `TESTDB`라는 데이터베이스의 가동 시간을 반환합니다.

```
db2 "call rdsadmin.db2pd_command('-db TESTDB -')"
```

**예시 3: DB 인스턴스의 메모리 사용량 반환**

다음 예제는 RDS for Db2 DB 인스턴스의 메모리 사용량을 반환합니다.

```
db2 "call rdsadmin.db2pd_command('-dbptnmem')"
```

**예시 4: DB 인스턴스 및 데이터베이스의 메모리 세트 반환**

다음 예제는 RDS for Db2 DB 인스턴스 및 `TESTDB`라는 데이터베이스의 메모리 집합을 반환합니다.

```
db2 "call rdsadmin.db2pd_command('-inst -db TESTDB -memsets')"
```

## rdsadmin.force\$1application
<a name="db2-sp-force-application"></a>

RDS for Db2 데이터베이스의 애플리케이션을 강제 종료합니다.

### 구문
<a name="db2-sp-force-application-syntax"></a>

```
db2 "call rdsadmin.force_application(
    ?,
    'applications')"
```

### 파라미터
<a name="db2-sp-force-application-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

* 애플리케이션*  
RDS for Db2 데이터베이스를 강제 종료하려는 애플리케이션입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `ALL` 또는 *application\$1handle*.  
여러 애플리케이션의 이름을 쉼표로 구분합니다. 예제: ‘*application\$1handle\$11*, *application\$1handle\$12*’

### 사용 노트
<a name="db2-sp-force-application-usage-notes"></a>

이 저장 프로시저는 데이터베이스에서 모든 애플리케이션을 강제로 종료하므로 유지 관리를 수행할 수 있습니다.

저장 프로시저는 IBM `FORCE APPLICATION` 명령을 사용합니다. `FORCE APPLICATION` 명령을 사용하려면 RDS for Db2 마스터 사용자에게는 없는 `SYSADM`, `SYSMAINT`, `SYSCTRL` 인증이 필요합니다. 하지만 Amazon RDS 저장 프로시저를 사용하면 마스터 사용자가 명령을 사용할 수 있습니다. 자세한 내용은 IBM Db2 설명서의 [FORCE APPLICATION 명령](https://www.ibm.com/docs/en/db2/11.1?topic=commands-force-application)을 참조하세요.

데이터베이스의 애플리케이션 종료 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-force-application-examples"></a>

**예시 1: 모든 애플리케이션 지정**

다음 예제에서는 RDS for Db2 데이터베이스의 모든 애플리케이션을 강제 종료합니다.

```
db2 "call rdsadmin.force_application(
    ?,
    'ALL')"
```

**예시 2: 여러 애플리케이션 지정**

다음 예제에서는 RDS for Db2 데이터베이스의 `9991`, `8891`, `1192` 애플리케이션 핸들을 강제 종료합니다.

```
db2 "call rdsadmin.force_application(
    ?,
    '9991, 8891, 1192')"
```

## rdsadmin.set\$1archive\$1log\$1retention
<a name="db2-sp-set-archive-log-retention"></a>

일부 RDS for Db2 데이터베이스의 아카이브 로그 파일을 보관하는 시간(시간 기준)을 구성합니다.

### 구문
<a name="db2-sp-set-archive-log-retention-syntax"></a>

```
db2 "call rdsadmin.set_archive_log_retention(
    ?,            
    'database_name',  
    'archive_log_retention_hours')"
```

### 파라미터
<a name="db2-sp-set-archive-log-retention-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
아카이브 로그 보존을 구성할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*archive\$1log\$1retention\$1hours*  
아카이브 로그 파일을 유지하는 데 걸리는 시간입니다. 데이터 형식은 `smallint`입니다. 기본값은 `0`이고 최댓값은 `840`(35일)입니다.  
값이 `0`인 경우 Amazon RDS는 아카이브 로그 파일을 유지하지 않습니다.

### 사용 노트
<a name="db2-sp-set-archive-log-retention-usage-notes"></a>

기본적으로 RDS for Db2는 로그를 5분 동안 보존합니다. 변경 데이터 캡처(CDC) 또는 IBM Q Replication에 AWS DMS 등의 복제 도구를 사용하는 경우 도구에 로그 보존을 5분 이상으로 설정하는 것이 좋습니다.

[rdsadmin.show\$1archive\$1log\$1retention](#db2-sp-show-archive-log-retention)을 직접적으로 호출하여 현재 아카이브 로그 보존 설정을 볼 수 있습니다.

`rdsadmin` 데이터베이스에서는 아카이브 로그 보존 설정을 구성할 수 없습니다.

### 예제
<a name="db2-sp-set-archive-log-retention-examples"></a>

**예시 1: 보존 시간 설정**

다음 예제에서는 `TESTDB`라는 데이터베이스의 아카이브 로그 보존 시간을 24시간으로 설정합니다.

```
db2 "call rdsadmin.set_archive_log_retention(
    ?,
    'TESTDB', 
    '24')"
```

**예시 2: 보존 시간 비활성화**

다음 예제에서는 `TESTDB`라는 데이터베이스의 아카이브 로그 보존을 비활성화합니다.

```
db2 "call rdsadmin.set_archive_log_retention(
    ?,
    'TESTDB', 
    '0')"
```

## rdsadmin.show\$1archive\$1log\$1retention
<a name="db2-sp-show-archive-log-retention"></a>

일부 데이터베이스의 현재 아카이브 로그 보존 설정을 반환합니다.

### 구문
<a name="db2-sp-show-archive-log-retention-syntax"></a>

```
db2 "call rdsadmin.show_archive_log_retention(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-show-archive-log-retention-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
아카이브 로그 보존 설정을 보여주는 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 예제
<a name="db2-sp-show-archive-log-retention-examples"></a>

다음 예제에서는 `TESTDB`라는 데이터베이스의 아카이브 로그 보존 설정을 보여줍니다.

```
db2 "call rdsadmin.show_archive_log_retention(?,'TESTDB')"
```

## rdsadmin.list\$1archive\$1log\$1information
<a name="db2-sp-list-archive-log-information"></a>

크기, 만든 날짜 및 시간, 지정된 데이터베이스의 개별 로그 파일 이름 등 아카이브 로그 파일에 대한 세부 정보를 반환합니다. 또한 데이터베이스의 로그 파일에 따라 사용된 총 스토리지 양도 반환합니다.

### 구문
<a name="db2-sp-list-archive-log-information-syntax"></a>

```
db2 "call rdsadmin.list_archive_log_information(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-list-archive-log-information-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
아카이브 로그 정보를 나열할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 예제
<a name="db2-sp-list-archive-log-information-examples"></a>

다음 예제에서는 `TESTDB`라는 데이터베이스의 아카이브 로그 보존을 반환합니다.

```
db2 "call rdsadmin.list_archive_log_information(
    ?,
    'TESTDB')"
```

## rdsadmin.enable\$1archive\$1log\$1copy
<a name="db2-sp-enable_archive_log_copy"></a>

Amazon S3로의 RDS Db2 데이터베이스 아카이브 로그 복사를 활성화합니다.

### 구문
<a name="db2-sp-enable_archive_log_copy-syntax"></a>

```
db2 "call rdsadmin.enable_archive_log_copy(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-enable_archive_log_copy-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
Amazon S3로의 아카이브 로그 복사를 활성화할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 예제
<a name="db2-sp-enable_archive_log_copy-examples"></a>

다음 예제에서는 `TESTDB`라는 데이터베이스의 아카이브 로그 복사를 활성화합니다.

```
db2 "call rdsadmin.enable_archive_log_copy(
    ?,
    'TESTDB')"
```

## rdsadmin.disable\$1archive\$1log\$1copy
<a name="db2-sp-disable_archive_log_copy"></a>

Amazon S3로의 RDS Db2 데이터베이스 아카이브 로그 복사를 비활성화합니다.

### 구문
<a name="db2-sp-disable_archive_log_copy-syntax"></a>

```
db2 "call rdsadmin.disable_archive_log_copy(
    ?,
    'database_name')"
```

### 파라미터
<a name="db2-sp-disable_archive_log_copy-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
Amazon S3로의 아카이브 로그 복사를 비활성화할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 예제
<a name="db2-sp-disable_archive_log_copy-examples"></a>

다음 예제에서는 `TESTDB`라는 데이터베이스의 아카이브 로그 복사를 비활성화합니다.

```
db2 "call rdsadmin.disable_archive_log_copy(
    ?,
    'TESTDB')"
```

## rdsadmin.fgac\$1command
<a name="db2-sp-fgac-command"></a>

세분화된 액세스 제어(FGAC) 명령을 실행합니다.

### 구문
<a name="db2-sp-fgac-command-syntax"></a>

```
db2 "call rdsadmin.fgac_command(
    ?,
    'database_name',
    'fgac_cmd')"
```

### 파라미터
<a name="db2-sp-fgac-command-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
FGAC 명령을 실행하려는 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*fgac\$1cmd*  
실행하려는 세분화된 액세스 제어 명령입니다. 데이터 형식은 `varchar`입니다.  
다음 명령이 유효합니다.  
+ `ALTER MASK` - 행 및 열 액세스 제어(RCAC)에서 기존 열 마스크를 변경합니다.
+ `ALTER PERMISSION` - RCAC에서 기존 행 권한의 속성을 변경합니다.
+ `ALTER SECURITY POLICY` - RCAC에 대한 기존 보안 정책을 변경합니다.
+ `ALTER SECURITY LABEL` - 레이블 기반 액세스 제어(LBAC)에서 기존 보안 레이블의 속성을 변경합니다.
+ `ALTER TABLE` - RCAC 또는 LBAC 컨트롤 추가를 포함하여 테이블 구조를 변경합니다.
+ `CREATE MASK` - RCAC용 새 열 마스크를 생성합니다.
+ `CREATE PERMISSION` - RCAC에 대한 새 행 권한을 생성합니다.
+ `CREATE SECURITY LABEL` - LBAC에 대한 새 보안 레이블을 생성합니다.
+ `CREATE SECURITY POLICY` - RCAC에 대한 새 보안 정책을 생성합니다.
+ `DROP MASK` - 기존 열 마스크를 삭제합니다.
+ `DROP PERMISSION` - 기존 행 권한을 삭제합니다.
+ `DROP SECURITY LABEL` - LBAC에서 보안 레이블을 삭제합니다.
+ `DROP SECURITY POLICY` - 기존 RCAC 보안 정책을 삭제합니다.
+ `GRANT EXEMPTION ON RULE` - 사용자가 특정 LBAC 규칙을 우회하도록 허용합니다.
+ `GRANT SECURITY LABEL` - 사용자에게 LBAC 보안 레이블을 할당합니다.
+ `REVOKE EXEMPTION ON RULE` - LBAC 규칙에서 사용자의 공제를 제거합니다.
+ `REVOKE SECURITY LABEL` - 사용자로부터 LBAC 보안 레이블을 제거합니다.

### 사용 노트
<a name="db2-sp-fgac-command-usage-notes"></a>

이 저장 프로시저는 행 또는 열 수준에서 RDS for Db2 DB 인스턴스의 데이터베이스에 있는 테이블 데이터에 대한 액세스를 제어합니다. RDS for Db2는 데이터베이스에서 두 가지 유형의 FGAC를 지원합니다.
+ 레이블 기반 액세스 제어(LBAC)
+ 행 및 열 액세스 제어(RCAC)

저장된 프로시저를 직접적으로 호출하기 전에 다음 고려 사항을 검토하세요.
+ 작은따옴표(')를 이스케이프하려면 추가로 작은 따옴표를 사용합니다. 다음 예제에서는 `'apple'`, `'banana'` 및 `'fruit'`를 이스케이프하는 방법을 보여 줍니다.

  ```
  db2 "call rdsadmin.fgac_command(
      ?,
      'testdb',
      'CREATE SECURITY LABEL COMPONENT FRUITSET SET{''apple'',''banana''}')"
  ```

  ```
  db2 "call rdsadmin.fgac_command(
      ?, 
      'testdb', 
      'CREATE SECURITY LABEL COMPONENT FRUITTREE TREE(''fruit'' ROOT, ''apple'' UNDER ''fruit'', ''banana'' UNDER ''fruit'')')"
  ```
+ 대괄호([ ])를 이스케이프 처리하려면 백슬래시(\$1)를 사용합니다. 다음 예에는 `[''apple'',''banana'']`를 이스케이프하는 방법이 나와 있습니다.

  ```
  db2 "call rdsadmin.fgac_command(
      ?, '
      testdb', 
      'CREATE SECURITY LABEL COMPONENT FRUITARRAY ARRAY\[''apple'',''banana''\]')"
  ```

### 예제
<a name="db2-sp-fgac-command-examples"></a>

다음 예제에서는 모두 `testdb`라는 데이터베이스에서 FGAC 명령을 실행합니다.

**예제 1: `FRUITSET`라는 새 보안 레이블 생성** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE SECURITY LABEL COMPONENT FRUITSET SET{''apple'',''banana''}')"
```

**예제 2: `EMP_ID`가 3 미만으로 설정된 경우 활성화된 `EMP_ID` 열에 대한 새 마스크 생성**

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE MASK id_MASK ON EMPLOYEE FOR COLUMN EMP_ID RETURN CASE WHEN (EMP_ID < 3) THEN EMP_ID ELSE NULL END ENABLE')"
```

**예제 3: `SESSION_USER`가 `security_user`로 설정된 경우 활성화된 `DEPARTMENT` 열에 대한 새 마스크 생성** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE MASK DEPARTMENT_MASK ON EMPLOYEE FOR COLUMN DEPARTMENT RETURN CASE  WHEN SESSION_USER = ''security_user'' THEN DEPARTMENT ELSE NULL END ENABLE')"
```

**예제 4: `treelabel`라는 새 보안 레이블 생성** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE SECURITY LABEL COMPONENT treelabel  TREE(''COMPANY'' ROOT, ''HR'' UNDER ''COMPANY'', ''FINANCE'' UNDER ''COMPANY'', ''IT'' UNDER ''COMPANY'')')"
```

## rdsadmin.db2support\$1command
<a name="db2-sp-db2support-command"></a>

RDS for Db2 데이터베이스에 대한 진단 정보를 수집하여 Amazon S3 버킷에 업로드합니다.

### 구문
<a name="db2-sp-db2support-command-syntax"></a>

```
db2 "call rdsadmin.db2support_command(
    ?,
    'database_name',
    's3_bucket_name',
    's3_prefix')"
```

### 파라미터
<a name="db2-sp-db2support-command-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 `?`만 허용합니다.

다음 입력 파라미터는 필수입니다.

*database\$1name*  
진단 정보를 수집할 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*s3\$1bucket\$1name*  
진단 정보를 업로드할 Amazon S3 버킷의 이름입니다. 데이터 형식은 `varchar`입니다.

*s3\$1prefix*  
RDS for Db2가 진단 파일을 업로드하는 Amazon S3 경로의 접두사입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-db2support-command-usage-notes"></a>

이 저장 프로시저는 RDS for Db2 데이터베이스 문제 해결에 도움이 될 수 있는 진단 정보를 수집하여 Amazon S3 버킷에 업로드합니다.

저장 프로시저는 진단 데이터를 수집하는 데 IBM `db2support` 유틸리티를 사용합니다. 이 유틸리티에 대한 자세한 내용은 IBM Db2 설명서의 [db2support - 문제 분석 및 환경 수집 도구 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2support-problem-analysis-environment-collection-tool)을 참조하세요.

저장된 프로시저를 직접적으로 호출하기 전에 다음 고려 사항을 검토하세요.
+ 진단 파일을 Amazon S3에 업로드하려면 통합 설정이 이미 완료되어 있어야 합니다. 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md) 섹션을 참조하세요.
+ RDS for Db2 DB 인스턴스가 Amazon S3와 상호 작용하려면 프라이빗 서브넷을 사용할 수 있는 VPC와 Amazon S3 게이트웨이 엔드포인트가 있어야 합니다. 자세한 내용은 [1단계: Amazon S3에 대한 VPC 게이트웨이 엔드포인트 생성](db2-troubleshooting.md#db2-creating-endpoint) 및 [2단계: Amazon S3용 VPC 게이트웨이 엔드포인트가 존재하는지 확인](db2-troubleshooting.md#db2-confirming-endpoint)(을)를 참조하세요.

`rdsadmin.db2support_command`를 호출하기 전에 `rdsadmin` 데이터베이스에 연결해야 합니다. 다음 예제에서 *master\$1username* 및 *master\$1password*를 RDS for Db2 DB 인스턴스의 정보로 대체합니다.

```
db2 connect to rdsadmin user master_username using master_password
```

진단 정보 수집 상태 점검에 대해 알아보려면 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-db2support-command-examples"></a>

**예제 1: 데이터베이스에 대한 진단 정보 수집**

다음 예제에서는 `TESTDB`라는 데이터베이스에 대한 진단 정보를 수집하여 접두사 `diagnostics/testdb`를 사용해 Amazon S3 버킷 `amzn-s3-demo-bucket`에 업로드합니다.

```
db2 "call rdsadmin.db2support_command(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'diagnostics/testdb')"
```

**예제 2: 날짜 기반 접두사를 사용하여 진단 정보 수집**

다음 예제에서는 `MYDB`라는 데이터베이스에 대한 진단 정보를 수집하여 날자 기반 접두사를 사용해 Amazon S3 버킷 `amzn-s3-demo-bucket`에 업로드합니다.

```
db2 "call rdsadmin.db2support_command(
    ?,
    'MYDB',
    'amzn-s3-demo-bucket',
    'support/2024/01/15')"
```

# RDS for Db2의 스토리지 액세스에 대해 저장된 프로시저
<a name="db2-sp-managing-storage-access"></a>

이 주제에 설명된 기본 제공 저장 프로시저는 Amazon S3를 사용하여 데이터를 마이그레이션하는 RDS for Db2 데이터베이스에 대한 스토리지 액세스를 관리합니다. 자세한 내용은 [Amazon S3를 통해 Amazon RDS for Db2로 Db2 데이터 마이그레이션](db2-migration-load-from-s3.md) 단원을 참조하십시오.

구문, 파라미터, 사용 정보 및 예시에 대한 자세한 내용은 다음 기본 제공 저장 프로시저를 참조하세요.

**Topics**
+ [rdsadmin.catalog\$1storage\$1access](#db2-sp-catalog-storage-access)
+ [rdsadmin.uncatalog\$1storage\$1access](#db2-sp-uncatalog-storage-access)

## rdsadmin.catalog\$1storage\$1access
<a name="db2-sp-catalog-storage-access"></a>

Db2 데이터 파일이 있는 Amazon S3 버킷에 액세스하기 위한 스토리지 별칭을 카탈로그화합니다.

### 구문
<a name="db2-sp-catalog-storage-access-syntax"></a>

```
db2 "call rdsadmin.catalog_storage_access(
    ?,
    'alias',
    's3_bucket_name',
    'grantee_type',
    'grantee'
    )"
```

### 파라미터
<a name="db2-sp-catalog-storage-access-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 데이터 유형은 `varchar`입니다.

다음 입력 파라미터는 필수입니다.

*별칭*  
Amazon S3 버킷의 원격 스토리지에 액세스하기 위한 별칭 이름입니다. 데이터 유형은 `varchar`입니다.

*s3\$1bucket\$1name*  
데이터가 있는 Amazon S3 버킷의 이름입니다. 데이터 형식은 `varchar`입니다.

*grantee\$1type*  
권한을 받을 피부여자 유형입니다. 데이터 형식은 `varchar`입니다. 유효한 값: `USER`, `GROUP`.

*grantee*  
권한을 받을 사용자 또는 그룹입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-catalog-storage-access-usage-notes"></a>

Amazon RDS에서는 RDS for Db2 DB 인스턴스에 추가한 IAM 역할에 카탈로그화된 별칭이 포함되어 있습니다. DB 인스턴스에서 IAM 역할을 제거하면 Amazon RDS가 별칭을 삭제합니다. 자세한 내용은 [Amazon S3를 통해 Amazon RDS for Db2로 Db2 데이터 마이그레이션](db2-migration-load-from-s3.md) 단원을 참조하십시오.

별칭 카탈로그화 상태 확인에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 단원을 참조하세요.

### 예시
<a name="db2-sp-catalog-storage-access-examples"></a>

다음 예제에서는 `SAMPLE`이라는 별칭이 등록됩니다. 사용자 `jorge_souza`에게 `amzn-s3-demo-bucket`이라는 Amazon S3 버킷에 대한 액세스가 부여됩니다.

```
db2 "call rdsadmin.catalog_storage_access(
    ?,
    'SAMPLE', 
    'amzn-s3-demo-bucket', 
    'USER', 
    'jorge_souza')"
```

## rdsadmin.uncatalog\$1storage\$1access
<a name="db2-sp-uncatalog-storage-access"></a>

스토리지 액세스 별칭을 제거합니다.

### 구문
<a name="db2-sp-uncatalog-storage-access-syntax"></a>

```
db2 "call rdsadmin.uncatalog_storage_access(
    ?,
    'alias')"
```

### 파라미터
<a name="db2-sp-uncatalog-storage-access-parameters"></a>

다음 출력 파라미터는 필수입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 데이터 유형은 `varchar`입니다.

다음 입력 파라미터는 필수입니다.

*별칭*  
제거할 스토리지 별칭의 이름입니다. 데이터 유형은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-uncatalog-storage-access-usage-notes"></a>

별칭 제거 상태 확인에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 단원을 참조하세요.

### 예시
<a name="db2-sp-uncatalog-storage-access-examples"></a>

다음 예제에서는 `SAMPLE`이라는 별칭이 제거됩니다. 이 별칭은 연결된 Amazon S3 버킷에 대한 액세스를 더 이상 제공하지 않습니다.

```
db2 "call rdsadmin.uncatalog_storage_access(
    ?,
    'SAMPLE')"
```

# RDS for Db2의 테이블스페이스에 대해 저장된 프로시저
<a name="db2-sp-managing-tablespaces"></a>

이 주제에서 설명하는 기본 제공 저장 프로시저는 Amazon RDS for Db2 데이터베이스의 테이블스페이스를 관리합니다. 이 프로시저를 실행하려면 마스터 사용자가 먼저 `rdsadmin` 데이터베이스에 연결되어야 합니다.

이러한 저장 프로시저는 다양한 작업에 사용됩니다. 단, 이 목록이 전부는 아닙니다.
+ [테이블스페이스의 일반적인 작업](db2-managing-tablespaces.md)
+ [성능 보고서 생성](db2-managing-databases.md#db2-generating-performance-reports)
+ [db2look을 사용하여 데이터베이스 메타데이터 복사](db2-native-db2-tools-db2look.md)
+ [IBM Db2 Data Management Console을 위한 리포지토리 데이터베이스 만들기](db2-connecting-with-ibm-data-management-console.md#db2-creating-repo-db-monitoring-dmc)

구문, 파라미터, 사용 정보 및 예시에 대한 자세한 내용은 다음 기본 제공 저장 프로시저를 참조하세요.

**Topics**
+ [rdsadmin.create\$1tablespace](#db2-sp-create-tablespace)
+ [rdsadmin.alter\$1tablespace](#db2-sp-alter-tablespace)
+ [rdsadmin.rename\$1tablespace](#db2-sp-rename-tablespace)
+ [rdsadmin.drop\$1tablespace](#db2-sp-drop-tablespace)

## rdsadmin.create\$1tablespace
<a name="db2-sp-create-tablespace"></a>

테이블스페이스를 생성합니다.

### 구문
<a name="db2-sp-create-tablespace-syntax"></a>

```
db2 "call rdsadmin.create_tablespace(
    'database_name', 
    'tablespace_name',
    'buffer_pool_name', 
    tablespace_page_size,
    tablespace_initial_size, 
    tablespace_increase_size, 
    'tablespace_type',
    'tablespace_prefetch_size')"
```

### 파라미터
<a name="db2-sp-create-tablespace.parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*database\$1name*  
테이블스페이스를 만들 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*tablespace\$1name*  
생성할 테이블 이름입니다. 데이터 형식은 `varchar`입니다.  
테이블스페이스 이름에는 다음과 같은 제한 사항이 있습니다.  
+ 이 데이터베이스에 있는 기존 테이블스페이스의 이름과 같으면 안 됩니다.
+ `_$#@a-zA-Z0-9`만 포함할 수 있습니다.
+ `_` 또는 `$` 기호로 시작할 수 없습니다.
+ `SYS`로 시작할 수 없습니다.

다음 파라미터는 선택적입니다.

*buffer\$1pool\$1name*  
테이블스페이스를 할당할 버퍼 풀의 이름입니다. 데이터 형식은 `varchar`입니다. 기본값은 빈 문자열입니다.  
테이블스페이스와 연결하려면 페이지 크기가 같은 버퍼 풀이 이미 있어야 합니다.

*tablespace\$1page\$1size*  
테이블스페이스의 페이지 크기(바이트)입니다. 데이터 형식은 `integer`입니다. 유효한 값: `4096`, `8192`, `16384`, `32768`. 기본값은 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)를 직접 호출하여 데이터베이스를 만들 때 사용된 페이지 크기입니다.  
Amazon RDS는 4KiB, 8KiB 및 16KiB 페이지에 대한 쓰기 원자성을 지원합니다. 반면 32KiB 페이지는 쓰기가 찢기거나 데스크에 데이터가 일부만 기록될 위험이 있습니다. 32KiB 페이지를 사용하는 경우 시점 복구와 자동 백업을 활성화하는 것이 좋습니다. 그렇지 않으면 찢긴 페이지를 복구하지 못할 위험이 있습니다. 자세한 내용은 [백업 소개](USER_WorkingWithAutomatedBackups.md) 및 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md)(을)를 참조하세요.

*tablespace\$1initial\$1size*  
테이블스페이스의 초기 크기로, 킬로바이트 단위(KB)입니다. 데이터 형식은 `integer`입니다. 유효한 값: `48` 이상. 기본값은 null입니다.  
값을 설정하지 않으면 Db2가 적절한 값을 설정합니다.  
임시 테이블스페이스는 시스템에서 관리되므로, 이 파라미터는 임시 테이블스페이스에 적용할 수 없습니다.

*tablespace\$1increase\$1size*  
테이블스페이스가 가득 찼을 때 테이블스페이스를 늘릴 비율입니다. 데이터 형식은 `integer`입니다. 유효한 값은 `1`\$1`100`입니다. 기본값은 null입니다.  
값을 설정하지 않으면 Db2가 적절한 값을 설정합니다.  
임시 테이블스페이스는 시스템에서 관리되므로, 이 파라미터는 임시 테이블스페이스에 적용할 수 없습니다.

*tablespace\$1type*  
테이블스페이스의 유형입니다. 데이터 형식은 `char`입니다. 유효한 값: `U`(사용자 데이터용), `T`(사용자 임시 데이터용) 또는 `S`(시스템 임시 데이터용) 기본값은 `U`입니다.

*tablespace\$1prefetch\$1size*  
테이블스페이스의 프리페치 페이지 크기입니다. 데이터 형식은 `char`입니다. 유효한 값: `AUTOMATIC`(대소문자를 구분하지 않음) 또는 0이 아닌 32,767 이하의 양의 정수

### 사용 노트
<a name="db2-sp-create-tablespace-usage-notes"></a>

RDS for Db2는 항상 데이터를 위한 대규모 데이터베이스를 만듭니다.

테이블스페이스 생성 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-create-tablespace-examples"></a>

**예시 1: 테이블스페이스 만들기 및 버퍼 풀 할당**

다음 예제에서는 `SP8`이라는 테이블스페이스를 생성하고 `TESTDB`라는 데이터베이스에 `BP8`이라는 버퍼 풀을 할당합니다. 테이블스페이스의 초기 테이블스페이스 페이지 크기는 4,096바이트이고 초기 테이블스페이스가 1,000KB이며 테이블 크기 증가가 50%로 설정되어 있습니다.

```
db2 "call rdsadmin.create_tablespace(
    'TESTDB',
    'SP8',
    'BP8',
    4096,
    1000,
    50)"
```

**예시 2: 임시 테이블스페이스 만들기 및 버퍼 풀 할당**

다음은 `SP8`이라는 이름의 임시 테이블스페이스를 생성하는 예시입니다. `TESTDB`라는 데이터베이스에 크기가 8KiB인 `BP8` 버퍼 풀을 할당합니다.

```
db2 "call rdsadmin.create_tablespace(
    'TESTDB',
    'SP8',
    'BP8', 
    8192, 
    NULL, 
    NULL, 
    'T')"
```

**예시 3: 테이블스페이스 생성 및 프리페치 페이지 크기 할당**

다음 예시에서는 `TESTDB`라는 데이터베이스에 대해 `SP8`이라는 테이블스페이스를 생성합니다. 테이블스페이스의 초기 테이블스페이스 증가 크기는 `50`이고 프리페치 페이지 크기는 `800`입니다.

```
db2 "call rdsadmin.create_tablespace(
    'TESTDB',
    'SP8',
    NULL,
    NULL,
    NULL,
    50,
    NULL,
    '800')"
```

## rdsadmin.alter\$1tablespace
<a name="db2-sp-alter-tablespace"></a>

테이블스페이스를 변경합니다.

### 구문
<a name="db2-sp-alter-tablespace-syntax"></a>

```
db2 "call rdsadmin.alter_tablespace(
    'database_name', 
    'tablespace_name', 
    'buffer_pool_name', 
    tablespace_increase_size, 
    'max_size', 
    'reduce_max', 
    'reduce_stop', 
    'reduce_value', 
    'lower_high_water', 
    'lower_high_water_stop', 
    'switch_online',
    'tablespace_prefetch_size')"
```

### 파라미터
<a name="db2-sp-alter-tablespace-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*database\$1name*  
테이블스페이스를 사용하는 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*tablespace\$1name*  
수정할 테이블스페이스의 이름입니다. 데이터 형식은 `varchar`입니다.

다음 파라미터는 선택적입니다.

*buffer\$1pool\$1name*   
테이블스페이스를 할당할 버퍼 풀의 이름입니다. 데이터 형식은 `varchar`입니다. 기본값은 빈 문자열입니다.  
테이블스페이스와 연결하려면 페이지 크기가 같은 버퍼 풀이 이미 있어야 합니다.

*tablespace\$1increase\$1size*  
테이블스페이스가 가득 찼을 때 테이블스페이스를 늘릴 비율입니다. 데이터 형식은 `integer`입니다. 유효한 값은 `1`\$1`100`입니다. 기본값은 `0`입니다.

*max\$1size*  
테이블스페이스의 최대 크기입니다. 데이터 형식은 `varchar`입니다. 유효한 값은 *정수* `K` \$1 `M` \$1 `G` 또는 `NONE`입니다. 기본값은 `NONE`입니다.

*reduce\$1max*  
하이 워터 마크를 최대 한도까지 줄일지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `N`입니다.

*reduce\$1stop*  
이전 `reduce_max` 또는 `reduce_value` 명령을 중단할지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `N`입니다.

*reduce\$1value*  
테이블스페이스 하이 워터 마크를 줄이는 데 사용할 백분율 값입니다. 데이터 형식은 `varchar`입니다. 유효한 값은 *정수* `K` \$1 `M` \$1 `G` 또는 `1`\$1`100`입니다. 기본값은 `N`입니다.

*lower\$1high\$1water*  
`ALTER TABLESPACE LOWER HIGH WATER MARK` 명령을 실행할지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `N`입니다.

*lower\$1high\$1water\$1stop*  
`ALTER TABLESPACE LOWER HIGH WATER MARK STOP` 명령을 실행할지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `N`입니다.

*switch\$1online*  
`ALTER TABLESPACE SWITCH ONLINE` 명령을 실행할지 여부를 지정합니다. 데이터 형식은 `char`입니다. 기본값은 `N`입니다.

*tablespace\$1prefetch\$1size*  
테이블스페이스의 프리페치 페이지 크기입니다. 데이터 형식은 `char`입니다. 유효한 값: `AUTOMATIC`(대소문자를 구분하지 않음) 또는 0이 아닌 32,767 이하의 양의 정수  
이 파라미터는 `buffer_pool_name`, `table_increase_size`, `max_size`, `switch_online`과 함께만 작동합니다. `reduce_max`, `reduce_stop`, `reduce_value`, `lower_high_water`, `lower_high_water_stop`과 함께는 작동하지 않습니다.

### 사용 노트
<a name="db2-sp-alter-tablespace-usage-notes"></a>

저장된 프로시저를 직접적으로 호출하기 전에 다음 고려 사항을 검토하세요.
+ `rdsadmin.alter_tablespace` 저장 프로시저는 사용자 임시 데이터의 `tablespace_type`이 `T`로 설정된 테이블스페이스에서는 작동하지 않습니다.
+ 선택적 파라미터인 `reduce_max`, `reduce_stop`, `reduce_value`, `lower_high_water`, `lower_high_water_stop`, `switch_online` 파라미터는 함께 사용할 수 없습니다. `rdsadmin.alter_tablespace` 명령에서 다른 선택적 파라미터(예: `buffer_pool_name`)와 조합할 수 없습니다. 자세한 내용은 [Statement not valid](db2-troubleshooting.md#alter-tablespace-sp-statement-not-valid) 섹션을 참조하세요.

테이블스페이스 변경 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

저장 프로시저를 호출할 때 반환되는 오류 메시지는 [저장된 프로시저 오류](db2-troubleshooting.md#db2-troubleshooting-stored-procedures) 섹션을 참조하세요.

### 예제
<a name="db2-sp-alter-tablespace-examples"></a>

**예시 1: 높은 워터마크 낮추기**

다음 예제에서는 `SP8`이라는 테이블스페이스를 변경하고 `TESTDB`라는 데이터베이스에 `BP8`이라는 버퍼 풀을 할당하여 하이 워터 마크를 낮춥니다.

```
db2 "call rdsadmin.alter_tablespace(
    'TESTDB',
    'SP8',
    'BP8', 
    NULL, 
    NULL, 
    'Y')"
```

**예시 2: 높은 워터마크 줄이기**

다음 예시는 `TESTDB` 데이터베이스의 `TBSP_TEST`라는 테이블스페이스에서 `REDUCE MAX` 명령을 실행합니다.

```
db2 "call rdsadmin.alter_tablespace(
    'TESTDB',
    'TBSP_TEST',
    NULL,
    NULL,
    NULL,
    'Y')"
```

**예시 3: 높은 워터마크를 줄이기 위한 명령 중단**

다음 예시는 `TESTDB` 데이터베이스의 `TBSP_TEST`라는 테이블스페이스에서 `REDUCE STOP` 명령을 실행합니다.

```
db2 "call rdsadmin.alter_tablespace(
    'TESTDB',
    'TBSP_TEST',
    NULL,
    NULL,
    NULL,
    NULL,
    'Y')"
```

**예시 4: 기존 프리페치 페이지 크기 변경**

다음 예시에서는 `TSBP_TEST`라는 테이블스페이스에서 `ALTER TABLESPACE SWITCH ONLINE` 명령을 실행하고 기존 프리페치 페이지 크기를 `64`로 변경합니다.

```
db2 "call rdsadmin.alter_tablespace(
    'TESTDB',
    'TBSP_TEST',
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    ‘Y’,
    ‘64’)"
```

## rdsadmin.rename\$1tablespace
<a name="db2-sp-rename-tablespace"></a>

테이블스페이스 이름을 변경합니다.

### 구문
<a name="db2-sp-rename-tablespace-syntax"></a>

```
db2 "call rdsadmin.rename_tablespace(
    ?,
    'database_name', 
    'source_tablespace_name',
    'target_tablespace_name')"
```

### 파라미터
<a name="db2-sp-rename-tablespace-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

?  
오류 메시지를 출력하는 파라미터 표시자입니다. 이 파라미터는 ?만 허용합니다.

*database\$1name*  
테이블스페이스가 속한 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*source\$1tablespace\$1name*  
이름을 변경할 테이블스페이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*target\$1tablespace\$1name*  
테이블스페이스의 새로운 이름입니다. 데이터 형식은 `varchar`입니다.  
새로운 이름에는 다음과 같은 제한 사항이 있습니다.  
+ 기존 테이블스페이스의 이름과 같으면 안 됩니다.
+ `_$#@a-zA-Z0-9`만 포함할 수 있습니다.
+ `_` 또는 `$` 기호로 시작할 수 없습니다.
+ `SYS`로 시작할 수 없습니다.

### 사용 노트
<a name="db2-sp-rename-tablespace-usage-notes"></a>

테이블스페이스 이름 변경 상태 확인에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

`rdsadmin` 데이터베이스에 속하는 테이블스페이스의 이름은 변경할 수 없습니다.

### 예제
<a name="db2-sp-rename-tablespace-examples"></a>

다음 예시에서는 `TESTDB`라는 데이터베이스에서 `SP8`이라는 테이블스페이스를 `SP9`로 변경합니다.

```
db2 "call rdsadmin.rename_tablespace(
    ?,
    'TESTDB',
    'SP8',
    'SP9')"
```

## rdsadmin.drop\$1tablespace
<a name="db2-sp-drop-tablespace"></a>

테이블스페이스를 삭제합니다.

### 구문
<a name="db2-sp-drop-tablespace-syntax"></a>

```
db2 "call rdsadmin.drop_tablespace(
    'database_name', 
    'tablespace_name')"
```

### 파라미터
<a name="db2-sp-drop-tablespace-parameters"></a>

다음 파라미터는 필수 파라미터입니다.

*database\$1name*  
테이블스페이스가 속한 데이터베이스의 이름입니다. 데이터 형식은 `varchar`입니다.

*tablespace\$1name*  
삭제할 테이블스페이스의 이름입니다. 데이터 형식은 `varchar`입니다.

### 사용 노트
<a name="db2-sp-drop-tablespace-usage-notes"></a>

테이블스페이스 삭제 상태 점검에 대한 자세한 내용은 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 섹션을 참조하세요.

### 예제
<a name="db2-sp-drop-tablespace-examples"></a>

다음 예시에서는 `TESTDB`라는 데이터베이스에서 `SP8`이라는 테이블스페이스를 삭제합니다.

```
db2 "call rdsadmin.drop_tablespace(
    'TESTDB',
    'SP8')"
```

# Amazon RDS for Db2 사용자 정의 함수 참조
<a name="db2-user-defined-functions"></a>

Db2 엔진을 실행 중인 Amazon RDS DB 인스턴스에 사용할 수 있는 사용자 정의 함수는 다음과 같습니다.

**Topics**
+ [rdsadmin.get\$1task\$1status](#db2-udf-get-task-status)
+ [rdsadmin.list\$1databases](#db2-udf-list-databases)
+ [rdsadmin.list\$1modifiable\$1db\$1params](#db2-udf-list-modi-db-params)

## rdsadmin.get\$1task\$1status
<a name="db2-udf-get-task-status"></a>

작업의 상태를 반환합니다.

### 구문
<a name="db2-udf-get-task-status-syntax"></a>

```
db2 "select task_id, task_type, database_name, lifecycle,
    varchar(bson_to_json(task_input_params), 500) as task_params,
    cast(task_output as varchar(500)) as task_output
    from table(rdsadmin.get_task_status(task_id,'database_name','task_type'))"
```

### 파라미터
<a name="db2-udf-get-task-status-parameters"></a>

다음 파라미터는 선택 사항입니다. 파라미터를 제공하지 않으면 사용자 정의 함수는 모든 데이터베이스의 모든 작업 상태를 반환합니다. Amazon RDS는 35일 동안 작업 기록을 유지합니다.

*task\$1id*  
실행 중인 작업의 ID입니다. 이 ID는 작업을 실행할 때 반환됩니다. 기본값: `0`.

*database\$1name*  
작업이 실행되고 있는 데이터베이스의 이름입니다.

*task\$1type*  
쿼리할 작업의 유형입니다. 유효한 값은 `ADD_GROUPS`, `ADD_USER`, `ALTER_BUFFERPOOL`, `ALTER_TABLESPACE`, `CHANGE_PASSWORD`, `COMPLETE_ROLLFORWARD`, `CREATE_BUFFERPOOL`, `CREATE_DATABASE`, `CREATE_ROLE`, `CREATE_TABLESPACE`, `DROP_BUFFERPOOL`, `DROP_DATABASE`, `DROP_TABLESPACE`, `LIST_USERS`, `REMOVE_GROUPS`, `REMOVE_USER`, `RESTORE_DB`, `ROLLFORWARD_DB_LOG`, `ROLLFORWARD_STATUS`, `UPDATE_DB_PARAM`입니다.

### 사용 노트
<a name="db2-udf-get-task-status-usage-notes"></a>

`rdsadmin.get_task_status` 사용자 정의 함수를 사용하여 다음 Amazon RDS for Db2 작업의 상태를 확인할 수 있습니다. 단, 이 목록이 전부는 아닙니다.
+ 버퍼 풀 생성, 변경 또는 삭제
+ 테이블스페이스 생성, 변경 또는 삭제
+ 데이터베이스 생성 또는 삭제
+ Amazon S3에서 데이터베이스 백업 복원
+ Amazon S3에서 데이터베이스 로그 롤포워딩

### 예제
<a name="db2-udf-get-task-status-examples"></a>

다음 예제에서는 `rdsadmin.get_task_status`가 호출될 때 반환된 열을 표시합니다.

```
db2 "describe select * from table(rdsadmin.get_task_status())"
```

다음 예제에서는 모든 작업의 상태를 나열합니다.

```
db2 "select task_id, task_type, database_name, lifecycle, 
    varchar(bson_to_json(task_input_params), 500) as task_params, 
    cast(task_output as varchar(500)) as task_output 
    from table(rdsadmin.get_task_status(null,null,null))"
```

다음 예제에서는 특정 작업의 상태를 나열합니다.

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(1,null,null))"
```

다음 예제에서는 특정 작업 및 데이터베이스의 상태를 나열합니다.

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(2,'SAMPLE',null))"
```

다음 예제에서는 모든 `ADD_GROUPS` 작업의 상태를 나열합니다.

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(null,null,'add_groups'))"
```

다음 예제에서는 특정 데이터베이스의 모든 작업 상태를 나열합니다.

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(null,'testdb', null))"
```

다음 예제는 JSON 값을 열로 출력합니다.

```
db2 "select varchar(r.task_type,25) as task_type, varchar(r.lifecycle,10) as lifecycle, r.created_at, u.* from 
    table(rdsadmin.get_task_status(null,null,'restore_db')) as r, json_table(r.task_input_params, 'strict $' columns(s3_prefix varchar(500) 
    null on empty, s3_bucket_name varchar(500) null on empty) error on error ) as U"
```

### 응답
<a name="db2-udf-get-task-status-response"></a>

`rdsadmin.get_task_status` 사용자 정의 함수는 다음 열을 반환합니다.

`TASK_ID`  
작업의 ID입니다.

`TASK_TYPE`  
입력 파라미터에 따라 다릅니다.  
+ `ADD_GROUPS` – 그룹을 추가합니다.
+ `ADD_USER` – 사용자를 추가합니다.
+ `ALTER_BUFFERPOOL` – 버퍼 풀을 변경합니다.
+ `ALTER_TABLESPACE` – 테이블스페이스를 변경합니다.
+ `CHANGE_PASSWORD ` – 사용자의 암호를 변경합니다.
+ `COMPLETE_ROLLFORWARD` – `rdsadmin.rollforward_database` 작업을 완료하고 데이터베이스를 활성화합니다.
+ `CREATE_BUFFERPOOL` – 버퍼 풀을 생성합니다.
+ `CREATE_DATABASE` – 데이터베이스를 생성합니다.
+ `CREATE_ROLE` – 사용자의 Db2 역할을 생성합니다.
+ `CREATE_TABLESPACE` – 테이블스페이스를 생성합니다.
+ `DROP_BUFFERPOOL` – 버퍼 풀을 삭제합니다.
+ `DROP_DATABASE` – 데이터베이스를 삭제합니다.
+ `DROP_TABLESPACE` – 테이블스페이스를 삭제합니다.
+ `LIST_USERS` – 모든 사용자를 나열합니다.
+ `REMOVE_GROUPS` – 그룹을 제거합니다.
+ `REMOVE_USER` – 사용자를 제거합니다.
+ `RESTORE_DB` – 전체 데이터베이스를 복원합니다.
+ `ROLLFORWARD_DB_LOG` – 데이터베이스 로그에 대한 `rdsadmin.rollforward_database` 작업을 수행합니다.
+ `ROLLFORWARD_STATUS ` – `rdsadmin.rollforward_database` 작업 상태를 반환합니다.
+ `UPDATE_DB_PARAM` – 데이터 파라미터를 업데이트합니다.

`DATABASE_NAME`  
작업이 연결되어 있는 데이터베이스의 이름입니다.

`COMPLETED_WORK_BYTES`  
작업이 복원한 바이트 수입니다.

`DURATION_MINS`  
작업을 완료하는 데 걸린 시간입니다.

`LIFECYCLE`  
작업의 상태입니다. 가능한 상태:  
+ `CREATED` – Amazon RDS에 작업을 제출한 후 Amazon RDS는 상태를 `CREATED`로 설정합니다.
+ `IN_PROGRESS` – 작업이 시작되면 Amazon RDS는 상태를 `IN_PROGRESS`로 설정합니다. `CREATED`에서 `IN_PROGRESS`로 상태가 변경되려면 최대 5분이 걸릴 수 있습니다.
+ `SUCCESS` – 작업이 완료되면 Amazon RDS는 상태를 `SUCCESS`로 설정합니다.
+ `ERROR` – 복원 작업이 실패할 경우 Amazon RDS는 상태를 `ERROR`로 설정합니다. 오류에 대한 자세한 내용은 `TASK_OUPUT` 섹션을 참조하세요.

`CREATED_BY`  
명령을 생성한 `authid`입니다.

`CREATED_AT`  
작업을 생성한 날짜와 시간입니다.

`LAST_UPDATED_AT`  
작업이 마지막으로 업데이트된 날짜와 시간입니다.

`TASK_INPUT_PARAMS`  
파라미터는 작업 유형에 따라 다릅니다. 모든 입력 파라미터는 JSON 객체로 표시됩니다. 예를 들어, `RESTORE_DB` 작업의 JSON 키는 다음과 같습니다.  
+ `DBNAME`
+ `RESTORE_TIMESTAMP`
+ `S3_BUCKET_NAME`
+ `S3_PREFIX`

`TASK_OUTPUT`  
작업에 대한 추가 정보입니다. 기본 복원 중에 오류가 발생하면 이 열에 오류에 대한 정보가 포함됩니다.

### 응답 예제
<a name="db2-udf-get-task-status-response-examples"></a>

다음 응답 예제는 `TESTJP`라는 데이터베이스가 성공적으로 생성되었음을 보여줍니다. 자세한 내용은 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 저장 프로시저를 참조하세요.

```
`1 SUCCESS CREATE_DATABASE RDSDB 2023-10-24-18.32.44.962689 2023-10-24-18.34.50.038523 1 TESTJP { "CODESET" : "IBM-437", "TERRITORY" : "JP", "COLLATION" : "SYSTEM", "AUTOCONFIGURE_CMD" : "", "PAGESIZE" : 4096 } 
2023-10-24-18.33.30.079048 Task execution has started.

2023-10-24-18.34.50.038523 Task execution has completed successfully`.
```

다음 응답 예제는 데이터베이스 삭제가 실패한 이유를 설명합니다. 자세한 내용은 [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 저장 프로시저를 참조하세요.

```
1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started.
2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. 
Reason Dropping database created via rds CreateDBInstance api is not allowed. 
Only database created using rdsadmin.create_database can be dropped
```

다음 응답 예제는 데이터베이스의 성공적인 복원을 보여줍니다. 자세한 내용은 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 저장 프로시저를 참조하세요.

```
1 RESTORE_DB  SAMPLE  SUCCESS   
                                         
{ "S3_BUCKET_NAME" : "amzn-s3-demo-bucket", "S3_PREFIX" : "SAMPLE.0.rdsdb3.DBPART000.20230413183211.001", "RESTORE_TIMESTAMP" : "20230413183211", "BACKUP_TYPE" : "offline" }                                                                                                                                                                                                                                                                                                                                                   

2023-11-06-18.31.03.115795 Task execution has started.
2023-11-06-18.31.04.300231 Preparing to download
2023-11-06-18.31.08.368827 Download complete. Starting Restore
2023-11-06-18.33.13.891356 Task Completed Successfully
```

## rdsadmin.list\$1databases
<a name="db2-udf-list-databases"></a>

RDS for Db2 DB 인스턴스에서 실행되는 모든 데이터베이스 목록을 반환합니다.

### 구문
<a name="db2-udf-list-databases-syntax"></a>

```
db2 "select * from table(rdsadmin.list_databases())"
```

### 사용 노트
<a name="db2-udf-list-databases-usage-notes"></a>

이 사용자 정의 함수는 데이터베이스가 활성화된 상태인지 비활성화된 상태인지 지정하지 않습니다.

목록에 데이터베이스가 표시되지 않으면 [rdsadmin.get\$1task\$1status](#db2-udf-get-task-status) 사용자 정의 함수를 직접 호출하고 오류 메시지를 찾습니다.

### 응답
<a name="db2-udf-list-databases-response"></a>

`rdsadmin.list_databases` 사용자 정의 함수는 다음 열을 반환합니다.

`DATABASE_NAME`  
데이터베이스의 이름입니다.

`CREATE_TIME`  
데이터베이스가 만들어진 날짜와 시간입니다.

`DATABASE_UNIQUE_ID`  
Db2 데이터베이스를 고유하게 식별하기 위해 RDS에서 생성된 GUID입니다.

`ARCHIVE_LOG_RETENTION_HOUR`  
아카이브 로그 파일을 유지하는 데 걸리는 시간입니다.

`ARCHIVE_LOG_COPY`  
데이터베이스에 대해 해당 기능이 활성화되었는지 비활성화되었는지를 표시합니다.

`ARCHIVE_LOG_LAST_UPLOAD_FILE `  
S3에 업로드된 마지막 아카이브 로그를 나타냅니다.

`ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME`  
로그 파일이 아카이빙된 시간을 나타냅니다.

`ARCHIVE_LOG_COPY_STATUS`  
아카이브 로그 복사본의 상태를 표시합니다.  
UPLOADING: 아카이브 로그 파일이 S3에 업로드되고 있음을 나타냅니다.  
CONFIGURATION\$1ERROR: 주의가 필요한 구성 문제가 있음을 나타냅니다.  
자세한 오류를 보려면 Db 인스턴스에 대한 RDS 이벤트 메시지를 확인하세요. 이벤트 메시지는 [Amazon RDS 이벤트 보기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ListEvents.html)에서 볼 수 있습니다.

### 응답 예제
<a name="db2-udf-list-databases-response-examples"></a>

다음 응답 예시는 데이터베이스 목록과 데이터베이스가 만들어진 시간을 보여줍니다. `rdsadmin`은 Amazon RDS가 관리하고 출력에 항상 표시되는 데이터베이스입니다.

```
DATABASE_NAME   CREATE_TIME                DATABASE_UNIQUE_ID                                 ARCHIVE_LOG_RETENTION_HOURS ARCHIVE_LOG_COPY ARCHIVE_LOG_LAST_UPLOAD_FILE ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME ARCHIVE_LOG_COPY_STATUS
--------------- -------------------------- -------------------------------------------------- --------------------------- ---------------- ---------------------------- --------------------------------- ------------------------------
RDSADMIN        2026-01-06-02.03.42.569069 RDSADMIN                                                                     0 DISABLED         -                            -                                 -
FOO             2026-01-06-02.13.42.885650 F0D81C7E-7213-4565-B376-4F33FCF420E3                                         0 ENABLED          S0006536.LOG                 2026-01-28-19.15.10.000000        UPLOADING
CODEP           2026-01-14-19.42.42.508476 106EEF95-6E30-4FFF-85AE-B044352DF095                                         0 DISABLED         -                            -                                 -
...
```

## rdsadmin.list\$1modifiable\$1db\$1params
<a name="db2-udf-list-modi-db-params"></a>

수정 가능한 모든 데이터베이스 구성 파라미터의 목록을 반환합니다.

### 구문
<a name="db2-udf-list-modi-db-params-syntax"></a>

```
db2 "select * from table(rdsadmin.list_modifiable_db_params())"
```

### 사용 노트
<a name="db2-udf-list-modi-db-params-usage-notes"></a>

이 사용자 정의 함수는 수정 가능한 데이터베이스 파라미터의 선택된 목록을 표시합니다. 이러한 파라미터는 저장 프로시저 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param)을 사용하여 업데이트할 수 있습니다.

이 목록에 포함되지 않은 데이터베이스 파라미터는 제한되어 있으며 수정할 수 없습니다.

### 응답
<a name="db2-udf-list-modi-db-params-response"></a>

`rdsadmin.list_modifiable_db_params` 사용자 정의 함수는 다음 열을 반환합니다.

`PARAM_NAME`  
수정할 수 있는 파라미터의 이름입니다.

`DEFAULT_VALUE`  
데이터베이스 생성 시 기본 파라미터 값입니다.

`RESTART_REQUIRED`  
데이터베이스 재시작이 필요한지 여부입니다.  
 Y = 예, 데이터베이스 재시작이 필요합니다.  
 N = 아니요, 데이터베이스 재시작이 필요 없습니다.

### 응답 예제
<a name="db2-udf-list-modi-db-params-response-examples"></a>

다음은 예상 출력의 샘플(일부 발췌) 목록입니다.

```
PARAM_NAME             DEFAULT_VALUE RESTART_REQUIRED
---------------------- ------------- ----------------
ACT_SORTMEM_LIMIT      NONE          N
ARCHRETRYDELAY         20            N
AUTHN_CACHE_DURATION   3             N
AUTHN_CACHE_USERS      0             N
AUTO_CG_STATS          OFF           N
...
```

# Amazon RDS for Db2 문제 해결
<a name="db2-troubleshooting"></a>

다음 콘텐츠는 RDS for Db2에 발생할 수 있는 문제를 해결하는 데 도움이 될 수 있습니다.

일반적인 Amazon RDS 문제 해결에 대한 자세한 내용은 [Amazon RDS 문제 해결](CHAP_Troubleshooting.md) 섹션을 참조하세요.

**Topics**
+ [데이터베이스 연결 오류](#db2-database-connection-error)
+ [파일 I/O 오류](#db2-file-input-output-error)
+ [저장된 프로시저 오류](#db2-troubleshooting-stored-procedures)

## 데이터베이스 연결 오류
<a name="db2-database-connection-error"></a>

다음 오류 메시지는 서버에 메모리가 충분하지 않아 데이터베이스가 연결되지 않았음을 나타냅니다.

```
SQL1643C The database manager failed to allocate shared memory because the
database manager instance memory limit has been reached.
```

DB 인스턴스의 메모리를 늘린 다음 데이터베이스에 다시 연결해 보세요. 메모리 사용량 및 데이터베이스 권장 사항에 대한 자세한 내용은 [단일 Amazon RDS for Db2 DB 인스턴스의 여러 데이터베이스](db2-multiple-databases.md) 섹션을 참조하세요. RDS for Db2 데이터베이스의 메모리를 업데이트하는 방법에 대한 자세한 내용은 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 섹션을 참조하세요.

## 파일 I/O 오류
<a name="db2-file-input-output-error"></a>

`LOAD` 명령을 사용하거나 `rdsadmin.restore_database` 저장 프로시저를 직접 호출할 때 등 다양한 이유로 파일 I/O 오류가 발생할 수 있습니다.

이 예에서는 다음 `LOAD` 명령을 실행할 수 있습니다.

```
db2 "call sysproc.admin_cmd('load from "DB2REMOTE://s3test//public/datapump/t6.del" of del lobs from "DB2REMOTE://s3test/public/datapump/" modified by lobsinfile MESSAGES ON SERVER insert INTO RDSDB.t6 nonrecoverable ')"
```

`LOAD` 명령은 다음 메시지를 반환합니다.

```
  Result set 1
  --------------

  ROWS_READ            ROWS_SKIPPED         ROWS_LOADED          ROWS_REJECTED        ROWS_DELETED         ROWS_COMMITTED       ROWS_PARTITIONED     NUM_AGENTINFO_ENTRIES MSG_RETRIEVAL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    MSG_REMOVAL
  -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                     -                    -                    -                    -                    -                    -                    -                     - SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSG                                                                                                                                                                                                                                                                                                                                                                                                                                            CALL SYSPROC.ADMIN_REMOVE_MSGS('1594987316_285548770')

  1 record(s) selected.

  Return Status = 0

SQL20397W  Routine "SYSPROC.ADMIN_CMD" execution has completed, but at least
one error, "SQL1652", was encountered during the execution. More information
is available.  SQLSTATE=01H52
```

오류 메시지를 보려면 이전 응답에서 제안한 대로 SQL 명령을 실행합니다. `SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSG`는 다음 메시지를 반환합니다.

```
SQLCODE   MSG
--------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL2025N  An I/O error occurred. Error code “438”. Media on which this error occurred: “DB2REMOTE://s3test//public/datapump/t6.del”

SQL3500W The utility is beginning the LOAD phase at time “07/05/2024 21:21:48.082954”

SQL1652N File I/O error occurred
```

Db2 진단 로그에는 다음과 유사한 로그 파일이 포함되어 있습니다.

```
2024-07-05-21.20.09.440609+000 I1191321E864          LEVEL: Error
PID     : 2710                 TID : 139619509200640 PROC : db2sysc 0
INSTANCE: rdsdb                NODE : 000            DB   : NTP
APPHDL  : 0-12180              APPID: xxx.xx.x.xxx.xxxxx.xxxxxxxxxxxx
UOWID   : 5                    ACTID: 1
AUTHID  : ADMIN                HOSTNAME: ip-xx-xx-x-xx
EDUID   : 147                  EDUNAME: db2lmr 0
FUNCTION: DB2 UDB, oper system services, sqloS3Client_GetObjectInfo, probe:219
MESSAGE : ZRC=0x870F01B6=-2029059658=SQLO_FAILED
          "An unexpected error is encountered"
DATA #1 : String, 29 bytes
S3:HeadObject request failed.
DATA #2 : signed integer, 4 bytes
99
DATA #3 : String, 0 bytes
Object not dumped: Address: 0x00007EFC08A9AE38 Size: 0 Reason: Zero-length data
DATA #4 : String, 33 bytes
curlCode: 28, Timeout was reached
```

이 파일 I/O 오류는 다양한 시나리오로 인해 발생할 수 있습니다. 예를 들어 RDS for Db2 DB 인스턴스를 만드는 데 사용되는 보안 그룹과 연결된 VPC에 Amazon S3 게이트웨이 엔드포인트가 없을 수 있습니다. 이 엔드포인트는 RDS for Db2가 Amazon S3에 액세스할 수 있도록 하는 데 필수적입니다. RDS for Db2 DB 인스턴스가 프라이빗 서브넷에 있는 경우 Amazon S3 게이트웨이 엔드포인트가 필요합니다. Amazon RDS 서브넷 그룹을 구성하여 DB 인스턴스가 프라이빗 서브넷을 사용하는지 아니면 퍼블릭 서브넷을 사용하는지 지정할 수 있습니다. 자세한 내용은 [DB 서브넷 그룹을 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.Subnets) 섹션을 참조하세요.

**Topics**
+ [1단계: Amazon S3에 대한 VPC 게이트웨이 엔드포인트 생성](#db2-creating-endpoint)
+ [2단계: Amazon S3용 VPC 게이트웨이 엔드포인트가 존재하는지 확인](#db2-confirming-endpoint)

### 1단계: Amazon S3에 대한 VPC 게이트웨이 엔드포인트 생성
<a name="db2-creating-endpoint"></a>

RDS for Db2 DB 인스턴스가 Amazon S3와 상호 작용하려면 프라이빗 서브넷에서 사용할 VPC와 Amazon S3 게이트웨이 엔드포인트를 만듭니다.

**S3에 대한 VPC 게이트웨이 엔드포인트를 만드는 방법**

1. VPC를 생성합니다. 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [VPC 생성](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)을 참조하세요.

1. 프라이빗 서브넷에서 사용할 Amazon S3 게이트웨이 엔드포인트를 만듭니다. 자세한 내용은 *AWS PrivateLink 안내서*의 [Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)를 참조하세요.

### 2단계: Amazon S3용 VPC 게이트웨이 엔드포인트가 존재하는지 확인
<a name="db2-confirming-endpoint"></a>

AWS Management Console 또는 AWS CLI를 사용하여 Amazon S3 게이트웨이 엔드포인트를 성공적으로 만들었는지 확인합니다.

#### 콘솔
<a name="db2-confirming-endpoing-console"></a>

**Amazon S3 게이트웨이 엔드포인트를 확인하는 방법**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/vpc](https://console.aws.amazon.com/vpc)에서 Amazon VPC 콘솔을 엽니다.

1.  콘솔의 오른쪽 상단에서 VPC의 AWS 리전을 선택합니다.

1. 만든 VPC를 선택합니다.

1. **리소스 맵** 탭의 **네트워크 연결**에서 Amazon S3 게이트웨이 엔드포인트가 나열되었는지 확인합니다.

#### AWS CLI
<a name="db2-confirming-endpoint-cli"></a>

Amazon S3 게이트웨이 엔드포인트를 확인하려면 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html) 명령을 실행합니다. 다음 예시에서 *vpc\$1id*를 VPC ID로, *region*을 AWS 리전로, *profile*을 프로필 이름으로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
aws ec2 describe-vpc-endpoints \
    --filters "Name=vpc-id,Values=$vpc_id" \
    "Name=service-name,\
    Values=com.amazonaws.${region}.s3" \
    --region $region --profile=$profile \
    --query "VpcEndpoints[*].VpcEndpointId" --output text
```

Windows의 경우:

```
aws ec2 describe-vpc-endpoints ^
    --filters "Name=vpc-id,Values=$vpc_id" ^
    "Name=service-name,^
    Values=com.amazonaws.${region}.s3" ^
    --region $region --profile=$profile ^
    --query "VpcEndpoints[*].VpcEndpointId" --output text
```

이 명령은 Amazon S3 게이트웨이 엔드포인트가 있는 경우 다음 예시와 유사한 출력을 생성합니다.

```
[
    "vpce-0ea810434ff0b97e4"
]
```

이 명령은 Amazon S3 게이트웨이 엔드포인트가 없는 경우 다음 예시와 유사한 출력을 생성합니다.

```
[]
```

Amazon S3 게이트웨이 엔드포인트가 나열되지 않았으면 [1단계: Amazon S3에 대한 VPC 게이트웨이 엔드포인트 생성](#db2-creating-endpoint)를 실행합니다.

## 저장된 프로시저 오류
<a name="db2-troubleshooting-stored-procedures"></a>

이 섹션에서는 저장 프로시저를 직접적으로 호출할 때 반환되는 다양한 오류와 이를 해결하는 방법을 설명합니다.


| 카테고리 | 저장된 프로시저 오류 | 
| --- | --- | 
|  데이터베이스 수  |  [rdsadmin.activate\$1database 오류](#db2-troubleshooting-activate-database-sp-errors)  | 
|  데이터베이스 수  |  [rdsadmin.backup\$1database 오류](#db2-troubleshooting-backup-database-sp-errors)  | 
|  데이터베이스 수  |  [rdsadmin.create\$1database 오류](#db2-troubleshooting-create-database-sp-errors)  | 
|  데이터베이스 수  |  [rdsadmin.deactivate\$1database 오류](#db2-troubleshooting-deactivate-database-sp-errors)  | 
|  데이터베이스 수  |  [rdsadmin.drop\$1database 오류](#db2-troubleshooting-drop-database-sp-errors)  | 
|  데이터베이스 수  |  [rdsadmin.reactivate\$1database 오류](#db2-troubleshooting-reactivate-database-sp-errors)  | 
|  데이터베이스 수  |  [rdsadmin.restore\$1database 오류](#db2-troubleshooting-restore-database-sp-errors)  | 
|  데이터베이스 수  |  [rdsadmin.update\$1db\$1param 오류](#db2-troubleshooting-update-db-param-sp-errors)  | 
|  테이블스페이스  |  [rdsadmin.alter\$1tablespace 오류](#db2-troubleshooting-alter-tablespace-sp-errors)  | 

### rdsadmin.activate\$1database 오류
<a name="db2-troubleshooting-activate-database-sp-errors"></a>

[rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Failed to allocate shared memory](#activate-database-sp-failed-to-allocate-shared-memory)  |  `SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.`  | 
|  [Unable to activate because of running processes](#activate-database-sp-unable-to-activate-processes)  |  `The database can’t be activated because it's in the process of being created or restored.`  | 

**공유 메모리 할당 실패**

다음 오류 메시지는 DB 인스턴스에 메모리가 충분하지 않아 저장 프로시저가 데이터베이스를 활성화하지 못했음을 나타냅니다.

```
SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.
```

DB 인스턴스의 메모리를 늘린 다음 `rdsadmin.activate_database` 저장 프로시저를 다시 직접 호출합니다. 메모리 사용량 및 데이터베이스 권장 사항에 대한 자세한 내용은 [단일 Amazon RDS for Db2 DB 인스턴스의 여러 데이터베이스](db2-multiple-databases.md) 섹션을 참조하세요.

**실행 중인 프로세스로 인해 활성화할 수 없음**

다음 오류 메시지는 `rdsadmin.create_database` 또는 `rdsadmin.restore_database` 저장 프로시저가 실행 중이므로 저장 프로시저가 데이터베이스를 활성화할 수 없음을 나타냅니다.

```
The database can’t be activated because it's in the process of being created or restored.
```

몇 분 기다린 후 `rdsadmin.activate_database` 저장 프로시저를 다시 직접적으로 호출합니다.

### rdsadmin.alter\$1tablespace 오류
<a name="db2-troubleshooting-alter-tablespace-sp-errors"></a>

[rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Statement not valid](#alter-tablespace-sp-statement-not-valid)  |  `DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: ` `SQL1763N Invalid ALTER TABLESPACE statement for table space "TBSP_TEST" due to reason "12"`  | 
|  [tablespace_prefetch_size value not valid](#alter-tablespace-sp-prefetch-value-not-valid)  |  `Invalid tablespace_prefetch_size. Set value to AUTOMATIC or to a non-zero positive numerical value.`  | 
|  [tablespace_prefetch_size numerical value not valid](#alter-tablespace-sp-prefetch-numerical-value-not-valid)  |  `Invalid tablespace_prefetch_size. The number of pages can't be greater than 32767.`  | 
|  [Parameter can't be used with tablespace_prefetch_size](#alter-tablespace-sp-prefetch-incompatible-parameter)  |  `You can't use tablespace_prefetch_size with {parameter}.`  | 
|  [Tablespace change failed](#alter-tablespace-sp-tablespace-change-failed)  |  `The change to tablespace {tablespace_name} failed because you can only alter LARGE or REGULAR tablespaces.`  | 

**문이 유효하지 않음**

다음 오류 메시지는 저장 프로시저가 상호 배타적인 선택적 파라미터를 다른 선택적 파라미터와 결합했음을 나타냅니다. `rdsadmin.alter_tablespace` 저장 프로시저의 선택적 파라미터인 `reduce_max, reduce_stop`, `reduce_value`, `lower_high_water`, `lower_high_water_stop`, `switch_online` 파라미터는 함께 사용할 수 없습니다. `rdsadmin.alter_tablespace` 저장 프로시저에서 다른 선택적 파라미터(예: `buffer_pool_name`)와 조합할 수 없습니다. 이를 결합하면 `rdsadmin.get_task_status` 사용자 정의 함수를 호출할 때 Db2가 이 오류 메시지를 반환합니다.

```
DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: 
SQL1763N Invalid ALTER TABLESPACE statement for table space "TBSP_TEST" due to reason "12"
```

상호 배타적인 선택적 파라미터를 다른 선택적 파라미터와 결합하지 않고 `rdsadmin.alter_tablespace` 저장 프로시저를 다시 호출합니다. 그런 다음 `rdsadmin.get_task_status` 사용자 정의 함수를 호출합니다. 자세한 내용은 [rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace) 및 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)를 참조하세요.

**tablespace\$1prefetch\$1size 값이 유효하지 않음**

다음 오류 메시지는 `tablespace_prefetch_size`를 `AUTOMATIC` 또는 0이 아닌 양수 값으로 설정하지 않았음을 나타냅니다. 예를 들어 `testinput`으로 설정하려고 했습니다.

```
Invalid tablespace_prefetch_size. Set value to AUTOMATIC or to a non-zero positive numerical value.
```

`rdsadmin.alter_tablespace` 저장 프로시저를 다시 직접적으로 호출하고 `tablespace_prefetch_size`를 `AUTOMATIC` 또는 0이 아닌 양수 값으로 설정합니다.

**tablespace\$1prefetch\$1size 숫자 값이 유효하지 않음**

다음 오류 메시지는 `tablespace_prefetch_size`를 32,767보다 큰 숫자 값으로 설정했음을 나타냅니다.

```
Invalid tablespace_prefetch_size. The number of pages can't be greater than 32767.
```

`rdsadmin.alter_tablespace` 저장 프로시저를 다시 직접적으로 호출하고 `tablespace_prefetch_size`를 32,767 이하의 0이 아닌 양수 값으로 설정합니다.

**파라미터를 tablespace\$1prefetch\$1size와 함께 사용할 수 없음**

다음 오류 메시지는 `tablespace_prefetch_size`에 호환되지 않는 파라미터를 사용하려고 했음을 나타냅니다.

```
You can't use tablespace_prefetch_size with {parameter}.
```

`rdsadmin.alter_tablespace` 저장 프로시저를 다시 직접적으로 호출하고 `tablespace_prefetch_size`에 호환되는 파라미터만 사용합니다. `tablespace_prefetch_size`에 사용할 수 있는 파라미터에 대한 자세한 내용은 [rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace) 섹션을 참조하세요.

**테이블스페이스 변경 실패**

다음 오류 메시지는 테이블스페이스를 변경하려고 했음을 나타냅니다.

```
The change to tablespace {tablespace_name} failed because you can only alter LARGE or REGULAR tablespaces.
```

### rdsadmin.backup\$1database 오류
<a name="db2-troubleshooting-backup-database-sp-errors"></a>

[rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Insufficient disk space](#backup-database-sp-insufficient-disk-space)  |  `Aborting task. Reason Backing up your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.backup_database stored procedure.`  | 
|  [Internal error](#backup-database-sp-internal-error)  |  `Caught exception during executing task id 104, Aborting task. Reason Internal Error`  | 

**디스크 공간 부족**

다음 오류 메시지는 DB 인스턴스의 디스크 공간이 부족하여 데이터베이스를 백업할 수 없음을 나타냅니다.

```
Aborting task. Reason Backing up your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.backup_database stored procedure.
```

데이터베이스를 원격 스토리지에 백업할 때 백업 세션과 작업 파일을 위한 여유 디스크 공간이 충분한지 확인합니다. 각 백업 세션은 최대 5GB의 데이터를 처리하지만 트랜잭션 로그, 임시 파일 및 지속적인 데이터베이스 작업에 추가 공간이 필요합니다.

데이터베이스 크기에 따라 백업을 위해 다음과 같은 여유 디스크 공간을 확보하는 것이 좋습니다.
+ 5GB 미만의 데이터베이스의 경우 - 데이터베이스 크기 \$1 3GB 버퍼
+ 데이터베이스 5GB 이상 - 최소 10GB의 여유 공간

이 양의 여유 디스크 공간은 백업 세션 처리, 백업 중 트랜잭션 로그 누적, 임시 작업 파일 및 구성된 경우 병렬 백업 스트림을 고려합니다. 자세한 내용은 [DB 인스턴스 스토리지 용량 증가](USER_PIOPS.ModifyingExisting.md) 섹션을 참조하세요.

디스크 공간을 늘리고 [rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database) 저장 프로시저를 다시 직접 호출합니다. 데이터베이스가 올바르게 백업되었는지 확인하려면 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)를 사용하여 작업 상태를 확인합니다. *s3\$1prefix/dbi\$1resource\$1id/db\$1name*으로 Amazon S3 버킷에 백업 파일이 있는지 확인할 수도 있습니다.

**내부 오류**

다음 오류 메시지는 저장된 프로시저에 내부 오류가 발생했음을 나타냅니다.

```
Caught exception during executing task id 104, Aborting task. Reason Internal Error
```

[AWS Support](https://aws.amazon.com/premiumsupport/)에 문의하세요.

### rdsadmin.create\$1database 오류
<a name="db2-troubleshooting-create-database-sp-errors"></a>

[rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Failed to allocate shared memory](#create-database-sp-failed-to-allocate-shared-memory)  |  `SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.`  | 

**공유 메모리 할당 실패**

다음 오류 메시지는 DB 인스턴스에 메모리가 충분하지 않아 저장 프로시저가 데이터베이스를 만들지 못했음을 나타냅니다.

```
SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.
```

DB 인스턴스의 메모리를 늘린 다음 `rdsadmin.create_database` 저장 프로시저를 다시 직접 호출합니다. 메모리 사용량 및 데이터베이스 권장 사항에 대한 자세한 내용은 [단일 Amazon RDS for Db2 DB 인스턴스의 여러 데이터베이스](db2-multiple-databases.md) 섹션을 참조하세요.

데이터베이스가 만들어졌는지 확인하려면 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 사용자 정의 함수를 직접 호출하고 새 데이터베이스가 나열되었는지 확인합니다.

### rdsadmin.deactivate\$1database 오류
<a name="db2-troubleshooting-deactivate-database-sp-errors"></a>

[rdsadmin.deactivate\$1database](db2-sp-managing-databases.md#db2-sp-deactivate-database) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Unable to deactivate because of running processes](#deactivate-database-sp-unable-to-deactivate-processes)  |  `The database can’t be deactivated because it's in the process of being created or restored.`  | 

**실행 중인 프로세스로 인해 비활성화할 수 없음**

다음 오류 메시지는 `rdsadmin.create_database` 또는 `rdsadmin.restore_database` 저장 프로시저가 실행 중이므로 저장 프로시저가 데이터베이스를 비활성화할 수 없음을 나타냅니다.

```
The database can’t be deactivated because it's in the process of being created or restored.
```

몇 분 기다린 후 `rdsadmin.deactivate_database` 저장 프로시저를 다시 직접적으로 호출합니다.

### rdsadmin.drop\$1database 오류
<a name="db2-troubleshooting-drop-database-sp-errors"></a>

[rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Database name doesn't exist](#drop-database-sp-database-name-not-exist)  |  `SQL0438N Application raised error or warning with diagnostic text: "Cannot drop database. Database with provided name does not exist". SQLSTATE=99993`  | 
|  [Return status = 0](#drop-database-sp-return-status-zero)  |  `Return Status = 0`  | 
|  [Dropping database not allowed](#drop-database-sp-not-allowed)  |  `1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started. 2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. Reason Dropping database created via rds CreateDBInstance api is not allowed. Only database created using rdsadmin.create_database can be dropped`  | 

**데이터베이스 이름이 존재하지 않음**

다음 오류 메시지는 `rdsadmin.drop_database` 저장 프로시저에서 잘못된 데이터베이스 이름을 전달했음을 나타냅니다.

```
SQL0438N Application raised error or warning with diagnostic text: "Cannot
drop database. Database with provided name does not exist". SQLSTATE=99993
```

올바른 데이터베이스 이름으로 `rdsadmin.drop_database` 저장 프로시저를 다시 호출합니다. 데이터베이스가 삭제되었는지 확인하려면 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 사용자 정의 함수를 직접 호출하고 삭제된 데이터베이스가 나열되지 않았는지 확인합니다.

**반품 상태 = 0**

다음 오류 메시지는 저장된 프로시저를 완료할 수 없음을 나타냅니다.

```
Return Status = 0
```

`Return Status = 0`을 수신한 후 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 사용자 정의 함수를 호출합니다.

**데이터베이스 삭제가 허용되지 않음**

다음 오류 메시지는 Amazon RDS 콘솔 또는 AWS CLI를 사용하여 데이터베이스를 생성했음을 나타냅니다. `rdsadmin.drop_database` 저장 프로시저를 호출하여 데이터베이스를 생성한 경우에만 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 저장 프로시저를 사용할 수 있습니다.

```
1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started.
2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. 
Reason Dropping database created via rds CreateDBInstance api is not allowed. 
Only database created using rdsadmin.create_database can be dropped
```

Amazon RDS 콘솔 또는 AWS CLI를 사용하여 생성한 데이터베이스를 삭제하려면 클라이언트를 사용하여 데이터베이스에 연결한 다음 적절한 명령을 실행합니다.

### rdsadmin.reactivate\$1database 오류
<a name="db2-troubleshooting-reactivate-database-sp-errors"></a>

[rdsadmin.reactivate\$1database](db2-sp-managing-databases.md#db2-sp-reactivate-database) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Failed to allocate shared memory](#reactivate-database-sp-failed-to-allocate-shared-memory)  |  `SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.`  | 
|  [Unable to reactivate because of running processes](#reactivate-database-sp-unable-to-reactivate-processes)  |  `The database can’t be reactivated because it's in the process of being created or restored.`  | 

**공유 메모리 할당 실패**

다음 오류 메시지는 DB 인스턴스에 메모리가 충분하지 않아 저장 프로시저가 데이터베이스를 활성화하지 못했음을 나타냅니다.

```
SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.
```

DB 인스턴스의 메모리를 늘린 다음 `rdsadmin.activate_database` 저장 프로시저를 다시 직접 호출합니다. 메모리 사용량 및 데이터베이스 권장 사항에 대한 자세한 내용은 [단일 Amazon RDS for Db2 DB 인스턴스의 여러 데이터베이스](db2-multiple-databases.md) 섹션을 참조하세요.

**실행 중인 프로세스로 인해 재활성화할 수 없음**

다음 오류 메시지는 `rdsadmin.create_database` 또는 `rdsadmin.restore_database` 저장 프로시저가 실행 중이므로 저장 프로시저가 데이터베이스를 재활성화할 수 없음을 나타냅니다.

```
The database can’t be reactivated because it's in the process of being created or restored.
```

몇 분 기다린 후 `rdsadmin.reactivate_database` 저장 프로시저를 다시 직접적으로 호출합니다.

### rdsadmin.restore\$1database 오류
<a name="db2-troubleshooting-restore-database-sp-errors"></a>

[rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Insufficient disk space](#restore-database-sp-insufficient-disk-space)  |  `Aborting task. Reason Restoring your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.restore_database stored procedure.`  | 
|  [Internal error](#restore-database-sp-internal-error)  |  `Caught exception during executing task id 104, Aborting task. Reason Internal Error`  | 
|  [Non-fenced routines not allowed](#restore-database-sp-non-fenced-routines)  |  `Caught exception during executing task id 2, Aborting task. Reason Non fenced routines are not allowed. Please delete the routines and retry the restore.`  | 
| [Tablespaces not restored](#restore-database-sp-tablespaces-not-restored) |  `Reason SQL0970N The system attempted to write to a read-only file. Reason SQL2563W The Restore process has completed successfully. However one or more table spaces from the backup were not restored.`  | 

**디스크 공간 부족**

다음 오류 메시지는 DB 인스턴스의 디스크 공간이 부족하여 데이터베이스를 복원할 수 없음을 나타냅니다.

```
Aborting task. Reason Restoring your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.restore_database stored procedure.
```

DB 인스턴스의 여유 공간은 백업 이미지 크기의 두 배 이상이어야 합니다. 백업 이미지가 압축된 경우 DB 인스턴스의 여유 공간이 백업 이미지 크기의 3배 이상이어야 합니다. 자세한 내용은 [DB 인스턴스 스토리지 용량 증가](USER_PIOPS.ModifyingExisting.md) 섹션을 참조하세요.

디스크 공간을 늘리고 `rdsadmin.restore_database` 저장 프로시저를 다시 직접 호출합니다. 데이터베이스가 복원되었는지 확인하려면 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 사용자 정의 함수를 직접 호출하고 복원된 데이터베이스가 나열되었는지 확인합니다.

**내부 오류**

다음 오류 메시지는 저장된 프로시저에 내부 오류가 발생했음을 나타냅니다.

```
Caught exception during executing task id 104, Aborting task. Reason Internal Error
```

[AWS Support](https://aws.amazon.com/premiumsupport/)에 문의하세요.

**격리되지 않은 루틴은 허용되지 않음**

다음 오류 메시지는 데이터베이스에 격리되지 않은 루틴이 포함되어 있음을 나타냅니다.

```
Caught exception during executing task id 2, Aborting task. Reason Non fenced routines are not allowed. Please delete the routines and retry the restore.
```

RDS for Db2는 격리되지 않은 루틴 생성을 지원하지 않습니다. 소스 데이터베이스에서 격리되지 않은 루틴을 제거한 다음 `rdsadmin.restore_database`를 다시 직접적으로 호출합니다. 데이터베이스가 복원되었는지 확인하려면 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 사용자 정의 함수를 직접 호출하고 복원된 데이터베이스가 나열되었는지 확인합니다. 자세한 내용은 [울타리가 없는 루틴](db2-known-issues-limitations.md#db2-known-issues-limitations-non-fenced-routines) 섹션을 참조하세요.

**테이블스페이스가 복원되지 않음**

다음 오류 메시지는 RDS for Db2가 데이터베이스를 성공적으로 복원했지만 하나 이상의 테이블스페이스를 복원할 수 없음을 나타냅니다.

```
Reason SQL0970N The system attempted to write to a read-only file.
Reason SQL2563W The Restore process has completed successfully. However one or more table spaces from the backup were not restored.
```

RDS for Db2는 비자동 스토리지를 지원하지 않습니다. 비자동 스토리지를 자동 스토리지로 변환한 다음 `rdsadmin.restore_database`를 다시 직접적으로 호출합니다. 자세한 내용은 IBM Db2 설명서에서 [자동 스토리지를 사용하도록 비자동 스토리지 데이터베이스 변환](https://www.ibm.com/docs/en/db2/11.5?topic=databases-converting-nonautomatic-storage-database-use-automatic-storage)을 참조하세요.

비자동 SMS 스토리지가 있는 데이터베이스는 수동 복원이 필요합니다. 데이터베이스에 비자동 SMS 스토리지가 있는 경우 [AWS 지원 팀](https://aws.amazon.com/premiumsupport/)에 문의하세요.

비자동 스토리지 및 일회성 마이그레이션에 대한 자세한 내용은 [마이그레이션 중 자동이 아닌 스토리지 테이블스페이스](db2-known-issues-limitations.md#db2-known-issues-limitations-non-automatic-storage-tablespaces) 섹션을 참조하세요.

### rdsadmin.update\$1db\$1param 오류
<a name="db2-troubleshooting-update-db-param-sp-errors"></a>

[rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 저장된 프로시저를 직접적으로 호출할 때 다음과 같은 오류가 발생할 수 있습니다.


| 오류 | 오류 메시지 | 
| --- | --- | 
|  [Parameter not supported or modifiable](#update-db-param-sp-parameter-not-supported-modifiable)  | SQL0438N Application raised error or warning with diagnostic text: "Parameter is either not supported or not modifiable to customers". SQLSTATE=99993 | 

**파라미터가 지원되지 않거나 수정할 수 없음**

다음 오류 메시지는 지원되지 않거나 수정할 수 없는 데이터베이스 구성 파라미터를 수정하려고 했음을 나타냅니다.

```
SQL0438N Application raised error or warning with diagnostic text: "Parameter
is either not supported or not modifiable to customers". SQLSTATE=99993
```

파라미터 그룹을 보고 수정할 수 있는 파라미터를 확인할 수 있습니다. 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 값 보기](USER_WorkingWithParamGroups.Viewing.md) 섹션을 참조하세요.