

# Amazon RDS Custom
<a name="rds-custom"></a>

Amazon RDS Custom은 데이터베이스 관리 작업 및 운영을 자동화합니다. RDS Custom은 데이터베이스 관리자가 데이터베이스 환경 및 운영 체제에 액세스하고 사용자 지정할 수 있도록 합니다. RDS Custom을 사용하면 레거시, 커스텀 및 패키지 애플리케이션의 요구 사항에 맞게 커스터마이징할 수 있습니다.

RDS Custom에 대한 최신 웹 세미나 및 블로그는 [Amazon RDS Custom 리소스](https://aws.amazon.com/rds/custom/resources/)를 참조하세요.

**Topics**
+ [데이터베이스 커스터마이징의 문제 해결](#custom-intro.challenge)
+ [Amazon RDS Custom을 위한 관리 모델 및 이점](#custom-intro.solution)
+ [Amazon RDS Custom 아키텍처](custom-concept.md)
+ [Amazon RDS Custom의 보안](custom-security.md)
+ [RDS Custom for Oracle 작업](working-with-custom-oracle.md)
+ [RDS Custom for SQL Server 작업](working-with-custom-sqlserver.md)

## 데이터베이스 커스터마이징의 문제 해결
<a name="custom-intro.challenge"></a>

Amazon RDS Custom은 타사 애플리케이션에 필요한 커스텀으로 인해 완전관리형 서비스로 쉽게 이동할 수 없는 시장에 Amazon RDS의 이점을 제공합니다. Amazon RDS Custom은 관리 시간을 절약하고 내구성이 뛰어나며 비즈니스에 맞게 확장할 수 있습니다.

전체 데이터베이스 및 운영 체제를 AWS로 완전 관리해야 하는 경우 Amazon RDS를 사용하는 것이 좋습니다. 종속 애플리케이션을 사용할 수 있도록 데이터베이스 및 기본 운영 체제에 대한 관리 권한이 필요한 경우 Amazon RDS Custom 이 더 나은 선택입니다. 완전한 관리 책임을 원하고 관리형 컴퓨팅 서비스가 필요한 경우 Amazon EC2 상용 데이터베이스를 자체 관리하는 것이 가장 좋습니다.

관리형 서비스 환경을 제공하기 위해 Amazon RDS는 기본 호스트에 액세스할 수 없습니다. 또한 Amazon RDS는 고급 권한이 필요한 특정 시스템 프로시저와 테이블에 대한 액세스를 제한합니다. 그러나 일부 애플리케이션의 경우 권한이 있는 운영 시스템(OS) 사용자로 작업을 수행해야 할 수 있습니다.

예를 들어, 다음 작업 중 일부를 수행해야 할 수 있습니다.
+ 사용자 지정 데이터베이스 및 OS 패치 및 패키지를 설치합니다.
+ 특정 데이터베이스 설정을 구성합니다.
+ 애플리케이션과 직접 파일을 공유하도록 파일 시스템을 구성합니다.

이전에는 애플리케이션을 커스터마이징해야 하는 경우 온프레미스 또는 Amazon EC2 데이터베이스를 배포해야 했습니다. 이 경우 다음 테이블에 요약된 대로 데이터베이스 관리에 대한 책임의 대부분 또는 전부를 부담합니다.


|  기능  |  온프레미스 책임  |  Amazon EC2 책임  |  Amazon RDS 책임  | 
| --- | --- | --- | --- | 
|  애플리케이션 최적화  |  고객  |  고객  |  고객  | 
|  확장성  |  고객  |  고객  |  AWS  | 
|  높은 가용성  |  고객  |  고객  |  AWS  | 
|  데이터베이스 백업  |  고객  |  고객  |  AWS  | 
|  데이터베이스 소프트웨어 패치  |  고객  |  고객  |  AWS  | 
|  데이터베이스 소프트웨어 설치  |  고객  |  고객  |  AWS  | 
|  OS 패치  |  고객  |  고객  |  AWS  | 
|  OS 설치  |  고객  |  고객  |  AWS  | 
|  서버 유지 관리  |  고객  |  AWS  |  AWS  | 
|  하드웨어 수명  |  고객  |  AWS  |  AWS  | 
|  전력, 네트워크 및 냉각  |  고객  |  AWS  |  AWS  | 

데이터베이스 소프트웨어를 직접 관리하면 더 많은 제어 권한을 얻을 수 있지만 사용자 오류도 발생하기 쉽습니다. 예를 들어 수동으로 변경하면 실수로 애플리리케이션 다운타임이 발생할 수 있습니다. 모든 변경 사항을 확인하여 문제를 파악하고 수정하려면 몇 시간이 걸리기도 합니다. 일반적인 DBA 작업을 자동화하고 데이터베이스 및 기본 운영 체제에 대한 권한 있는 액세스도 지원하는 관리형 데이터베이스 서비스가 필요할 것입니다.

## Amazon RDS Custom을 위한 관리 모델 및 이점
<a name="custom-intro.solution"></a>

Amazon RDS Custom은 기본 운영 체제 및 데이터베이스 환경에 액세스해야 하는 레거시, 커스텀 및 패키지 애플리케이션을 위한 관리형 데이터베이스 서비스입니다. RDS Custom은 데이터베이스 및 기본 운영 체제에 대한 액세스 권한을 부여하는 동안 AWS 클라우드의 데이터베이스 설정, 운영 및 확장을 자동화합니다. 이 액세스를 통해 설정을 구성하고 패치를 설치하며 종속 애플리케이션의 요구 사항을 충족하도록 기본 기능을 활성화할 수 있습니다. RDS Custom을 사용하면 AWS Management Console 또는 AWS CLI를 사용하여 데이터베이스 워크로드를 실행할 수 있습니다.

RDS Custom은 Oracle 데이터베이스 및 Microsoft SQL Server DB 엔진만 지원합니다.

**Topics**
+ [RDS Custom의 공동 책임 모델](#custom-intro.solution.shared)
+ [RDS Custom에서 지원 범위 및 지원하지 않는 구성](#custom-intro.solution.support-perimeter)
+ [RDS Custom의 주요 이점](#custom-intro.solution.benefits)

### RDS Custom의 공동 책임 모델
<a name="custom-intro.solution.shared"></a>

RDS Custom을 사용하면 Amazon RDS의 관리형 기능을 사용하지만 Amazon EC2에서처럼 호스트를 관리하고 OS를 사용자 지정할 수 있습니다. Amazon RDS에서 수행하는 작업 외에 추가로 데이터베이스 관리 책임을 부여받게 됩니다. 따라서 Amazon RDS에서보다 데이터베이스 및 DB 인스턴스 관리를 더 잘 제어하면서도 RDS 자동화의 혜택을 누릴 수 있습니다.

공동 책임은 다음을 의미합니다.

1. RDS Custom 기능을 사용할 때 프로세스의 일부를 소유합니다.

   예를 들어 RDS Custom for Oracle에서는 어떤 Oracle 데이터베이스 패치를 사용하고 언제 DB 인스턴스에 적용할지 제어할 수 있습니다.

1. 사용자는 RDS Custom 기능 관련 모든 사용자 지정 기능이 제대로 작동하는지 직접 확인해야 합니다.

   잘못된 사용자 지정을 방지하도록 지원하고자 RDS Custom은 DB 인스턴스 이외에서 실행되는 자동화 소프트웨어를 갖추고 있습니다. 기본 Amazon EC2 인스턴스가 손상되면 RDS Custom은 EC2 인스턴스를 재부팅하거나 교체하여 이러한 문제를 자동 해결하기 위해 시도합니다. 사용자가 인식할 수 있는 유일한 변경 사항은 새 IP 주소입니다. 자세한 내용은 [Amazon RDS Custom 호스트 교체](custom-concept.md#custom-troubleshooting.host-problems) 섹션을 참조하세요.

다음 테이블은 RDS Custom 공동 책임 모델의 다양한 기능을 자세히 보여줍니다.


|  기능  |  Amazon EC2 책임  |  Amazon RDS 책임  |  RDS Custom for Oracle 책임  |  RDS Custom for SQL Server 책임  | 
| --- | --- | --- | --- | --- | 
|  애플리케이션 최적화  |  고객  |  고객  |  고객  |  고객  | 
|  확장성  |  고객  |  AWS  |  공유됨  |  공유됨  | 
|  높은 가용성  |  고객  |  AWS  | AWS |  AWS  | 
|  데이터베이스 백업  |  고객  |  AWS  |  공유됨  |  AWS  | 
|  데이터베이스 소프트웨어 패치   |  고객  |  AWS  |  공유됨  | RPEV의 경우 AWS, CEV1의 경우 고객 | 
|  데이터베이스 소프트웨어 설치  |  고객  |  AWS  |  공유됨  | RPEV의 경우 AWS, CEV1의 경우 고객 | 
|  OS 패치  |  고객  |  AWS  |  Customer  | RPEV의 경우 AWS, CEV1의 경우 고객 | 
|  OS 설치  |  고객  |  AWS  |  공유됨  | AWS | 
|  서버 유지 관리  |  AWS  |  AWS  |  AWS  | AWS | 
|  하드웨어 수명  |  AWS  |  AWS  |  AWS  | AWS | 
|  전력, 네트워크 및 쿨링  |  AWS  |  AWS  |  AWS  | AWS | 

1 커스텀 엔진 버전(CEV)은 데이터베이스 버전과 Amazon Machine Image(AMI)의 바이너리 볼륨 스냅샷입니다. RDS에서 제공하는 엔진 버전(RPEV)은 기본 Amazon Machine Image(AMI)와 Microsoft SQL Server 설치 환경입니다.

Microsoft SQL Server를 사용하여 RDS Custom DB 인스턴스를 만들 수 있습니다. 이 경우
+ 라이선스 포함(LI) 및 기존 보유 미디어 사용(BYOM)이라는 두 가지 라이선스 모델 중에서 선택할 수 있습니다.
+ LI의 경우 SQL Server 라이선스를 별도로 구매할 필요가 없습니다. AWS는 SQL Server 데이터베이스 소프트웨어에 대한 라이선스를 보유합니다.
+ BYOM의 경우 고유한 Microsoft SQL Server 바이너리와 라이선스를 제공하고 설치할 수 있습니다.

Oracle 데이터베이스를 사용하여 RDS 커스텀 DB 인스턴스를 생성할 수 있습니다. 이 경우 다음과 같이 합니다.
+ 자체 미디어를 관리하세요.

  RDS Custom을 사용하는 경우 자체 데이터베이스 설치 파일 및 패치를 업로드합니다. 이러한 파일에서 커스텀 엔진 버전(CEV)을 생성합니다. 그런 다음 이 CEV를 사용하여 RDS 커스텀 DB 인스턴스를 생성할 수 있습니다.
+ 자체 라이선스를 관리합니다.

  자체 Oracle 데이터베이스 라이센스를 가져오고 라이센스를 직접 관리할 수 있습니다.

### RDS Custom에서 지원 범위 및 지원하지 않는 구성
<a name="custom-intro.solution.support-perimeter"></a>

RDS Custom은 지원 범위라는 모니터링 기능을 제공합니다.** 이 기능을 사용하면 호스트 및 데이터베이스 환경을 올바르게 구성할 수 있습니다. DB 인스턴스가 지원 범위를 벗어나도록 변경하는 경우 RDS Custom은 구성 문제가 수동으로 해결될 때까지 인스턴스 상태를 `unsupported-configuration`으로 변경합니다. 자세한 내용은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 섹션을 참조하세요.

### RDS Custom의 주요 이점
<a name="custom-intro.solution.benefits"></a>

RDS Custom을 사용하여 다음 작업을 할 수 있습니다.
+ 다음을 포함하는 Amazon RDS와 동일한 많은 수의 관리 작업을 자동화합니다.
  + 데이터베이스의 수명 주기 관리
  + 자동 백업 및 특정 시점 복구(PITR)
  + RDS Custom DB 인스턴스의 상태 모니터링 및 인프라, 운영 체제 및 데이터베이스 프로세스의 변경 사항 관찰
  + DB 인스턴스 중단에 따른 문제 해결을 위한 알림 또는 조치
+ 서드 파티 애플리케이션을 설치합니다.

  소프트웨어를 설치하여 커스텀 애플리케이션 및 에이전트를 실행할 수 있습니다. 호스트에 대한 액세스 권한이 있으므로 레거시 애플리케이션을 지원하도록 파일 시스템을 수정할 수 있습니다.
+ 커스텀 패치를 설치합니다.

  RDS Custom DB 인스턴스에서 커스텀 데이터베이스 패치를 적용하거나 OS 패키지를 수정할 수 있습니다.
+ 온프레미스 데이터베이스를 완전 관리형 서비스로 이동하기 전에 스테이징합니다.

  자체 온프레미스 데이터베이스를 관리하는 경우 데이터베이스를 있는 그대로 RDS Custom으로 스테이징할 수 있습니다. 클라우드 환경에 익숙해지면 데이터베이스를 완전관리형 Amazon RDS DB 인스턴스로 마이그레이션할 수 있습니다.
+ 자체 자동화를 생성합니다.

  보고, 관리 또는 진단 도구를 위한 사용자 지정 자동화 스크립트를 생성, 예약 및 실행할 수 있습니다.

# Amazon RDS Custom 아키텍처
<a name="custom-concept"></a>

Amazon RDS Custom 아키텍처는 중요한 차이점이 있는 Amazon RDS를 기반으로 합니다. 다음 다이어그램은 RDS Custom 아키텍처의 주요 구성 요소를 보여줍니다.

![\[RDS Custom 아키텍처 구성 요소\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/RDS_Custom_gen_architecture.png)


**Topics**
+ [VPC](#custom-concept.components.VPC)
+ [RDS Custom 자동화 및 모니터링](#custom-concept.workflow.automation)
+ [Amazon S3](#custom-concept.components.S3)
+ [AWS CloudTrail](#custom-concept.components.CloudTrail)

## VPC
<a name="custom-concept.components.VPC"></a>

Amazon RDS와 마찬가지로, RDS Custom DB 인스턴스는 Virtual Private Cloud(VPC)에 있습니다.

![\[RDS Custom DB 인스턴스 구성 요소\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/RDS_Custom_instance.png)


RDS Custom DB 인스턴스의 주요 구성 요소는 다음과 같습니다.
+ Amazon EC2 인스턴스
+ 인스턴스 엔드포인트
+ Amazon EC2 인스턴스에 설치된 운영 체제
+ 추가 파일 시스템을 포함하는 Amazon EBS 스토리지

## RDS Custom 자동화 및 모니터링
<a name="custom-concept.workflow.automation"></a>

RDS Custom에는 DB 인스턴스 외부에서 실행되는 자동화 소프트웨어가 있습니다. 이 소프트웨어는 DB 인스턴스의 에이전트 및 전체 RDS Custom 환경 내의 다른 구성 요소와 커뮤니케이션합니다.

RDS Custom 모니터링 및 복구 기능은 Amazon RDS와 유사한 기능을 제공합니다. 기본적으로 RDS Custom은 전체 자동화 모드에 있습니다. 자동화 소프트웨어에는 다음과 같은 주요 책임이 있습니다.
+ 지표 수집 및 알림 전송
+ 자동 인스턴스 복구 수행

RDS Custom 자동화의 중요한 책임은 Amazon EC2 인스턴스의 문제에 대응하는 것입니다. 여러 가지 이유로 호스트가 손상되거나 도달하지 못할 수 있습니다. RDS Custom은 Amazon EC2 인스턴스를 재부팅하거나 교체하여 이러한 문제를 해결합니다.

**Topics**
+ [Amazon RDS Custom 호스트 교체](#custom-troubleshooting.host-problems)
+ [RDS Custom 지원 범위](#custom-troubleshooting.support-perimeter)

### Amazon RDS Custom 호스트 교체
<a name="custom-troubleshooting.host-problems"></a>

Amazon EC2 호스트가 손상되면 RDS Custom이 호스트를 재부팅하려고 시도합니다. 이 작업이 실패하면 RDS Custom은 Amazon EC2에 포함되어 있는 동일한 중지 및 시작 기능을 사용합니다. 호스트를 교체할 때 고객이 볼 수 있는 유일한 변경 사항은 새로운 공용 IP 주소입니다.

**Topics**
+ [호스트 중지 및 시작](#custom-troubleshooting.host-problems.replacement.stop-start)
+ [호스트 교체의 영향](#custom-troubleshooting.host-problems.replacement.host-state)
+ [Amazon EC2 호스트 모범 사례](#custom-troubleshooting.host-problems.best-practices)

#### 호스트 중지 및 시작
<a name="custom-troubleshooting.host-problems.replacement.stop-start"></a>

RDS Custom은 사용자 개입 없이 다음 단계를 자동으로 수행합니다.

1. Amazon EC2 호스트를 중지합니다.

   EC2 인스턴스는 정상적인 종료를 수행하고 실행을 중지합니다. 모든 Amazon EBS 볼륨이 인스턴스에 연결된 상태로 유지되고 해당 데이터도 남습니다. 호스트 컴퓨터의 인스턴스 스토리지 볼륨(RDS Custom에서 지원되지 않음) 또는 RAM에 저장된 모든 데이터가 사라집니다.

   자세한 내용은 [Amazon EC2 사용 설명서](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)의 *인스턴스 중지 및 시작*을 참조하세요.

1. Amazon EC2 호스트를 시작합니다.

   EC2 인스턴스는 새로운 기본 호스트 하드웨어로 마이그레이션됩니다. 경우에 따라 RDS Custom DB 인스턴스가 원래 호스트에 남아 있기도 합니다.

#### 호스트 교체의 영향
<a name="custom-troubleshooting.host-problems.replacement.host-state"></a>

RDS Custom에서는 루트 디바이스 볼륨 및 Amazon EBS 스토리지 볼륨을 완벽하게 제어할 수 있습니다. 루트 볼륨에는 유실되어서는 안 될 중요한 데이터 및 구성이 포함될 수 있습니다.

Oracle용 RDS Custom은 루트 볼륨 데이터를 포함한 모든 데이터베이스 및 고객 데이터를 작업 후에도 유지합니다. 따라서 사용자가 별다른 조치를 취할 필요가 없습니다. SQL Server용 RDS Custom에서 데이터베이스 데이터는 유지되지만, 운영 체제 및 고객 데이터를 포함한 `C:` 드라이브의 모든 데이터는 손실됩니다.

호스트 교체 프로세스가 끝나면 Amazon EC2 호스트가 새로운 퍼블릭 IP 주소를 갖게 됩니다. 새 호스트에는 다음 표에 나온 데이터와 메타데이터가 유지됩니다.


| 메타데이터 또는 데이터 | RDS Custom for Oracle 보존 | RDS Custom for SQL Server 보존 | 
| --- | --- | --- | 
| EC2 인스턴스 | 예 | 아니요 | 
| EC2 인스턴스 메타데이터 | 예 | 예 | 
| 데이터 스토리지 볼륨 데이터 | 예 | 예 | 
| 루트 볼륨 데이터 | 예 | 아니요 | 
| 프라이빗 IP 주소 | 예 | 예 | 
| 탄력적 IP 주소 | 예 | 예 | 

#### Amazon EC2 호스트 모범 사례
<a name="custom-troubleshooting.host-problems.best-practices"></a>

Amazon EC2 호스트 교체 기능은 Amazon EC2가 손상되는 대부분의 상황에서 사용할 수 있습니다. 다음 모범 사례를 따르는 것이 좋습니다.
+ 구성 또는 운영 체제를 변경하기 전에 데이터를 백업합니다. 루트 볼륨 또는 운영 체제가 손상되면 호스트 교체로 복구할 수 없습니다. 이 경우 유일한 옵션은 DB 스냅샷 또는 특정 시점으로 복구에서 복원하는 것입니다.
+ 물리적 Amazon EC2 호스트를 수동으로 중지하거나 종료하지 마세요. 이렇게 하면 인스턴스가 RDS Custom 지원 경계 밖에 배치됩니다.
+ (RDS Custom for SQL Server) 추가 볼륨을 Amazon EC2 호스트에 연결하는 경우 재시작할 때 다시 탑재하도록 구성합니다. 호스트가 손상된 경우 RDS Custom이 호스트를 자동으로 중지하고 시작할 수 있습니다.

### RDS Custom 지원 범위
<a name="custom-troubleshooting.support-perimeter"></a>

RDS Custom은 *지원 범위*라는 모니터링 기능을 제공합니다. 이 추가적인 모니터링은 RDS Custom DB 인스턴스가 지원되는 AWS 인프라, 운영 체제 및 데이터베이스를 사용하도록 보장합니다.

지원 범위에서는 DB 인스턴스가 [RDS Custom for Oracle에서 지원되지 않는 구성 문제 해결](custom-troubleshooting.md#custom-troubleshooting.fix-unsupported) 및 [RDS Custom for SQL Server에서 지원되지 않는 구성 문제 해결](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.fix-unsupported)에 나열된 요구 사항을 준수하는지 확인합니다. RDS Custom은 이러한 요구 사항 중 하나라도 충족되지 않으면 DB 인스턴스가 지원 경계를 벗어난 것으로 간주합니다.

**Topics**
+ [RDS Custom에서 지원되지 않는 구성](#custom-concept.support-perimeter.unsupported-config)
+ [지원되지 않는 구성 문제 해결](#custom-concept.support-perimeter.fix-unsupported-config)

#### RDS Custom에서 지원되지 않는 구성
<a name="custom-concept.support-perimeter.unsupported-config"></a>

DB 인스턴스가 지원 경계를 벗어나면 RDS Custom은 DB 인스턴스 상태를 `unsupported-configuration`으로 변경하고 이벤트 알림을 전송합니다. 구성 문제가 해결되면 RDS Custom에서는 DB 인스턴스 상태를 `available`로 다시 변경합니다.

DB 인스턴스가 `unsupported-configuration` 상태인 동안에는 다음과 같은 상황이 발생할 수 있습니다.
+ 데이터베이스가 연결 가능한 상태가 됩니다. DB 인스턴스가 `unsupported-configuration` 상태이면 데이터베이스가 예기치 않게 종료되기 때문에 예외 상황도 있습니다.
+ DB 인스턴스를 수정할 수 없습니다.
+ DB 스냅샷을 생성할 수 없습니다.
+ 자동 백업이 생성되지 않습니다.
+ RDS Custom for SQL Server DB 인스턴스 전용의 경우, RDS Custom은 기본 Amazon EC2 인스턴스가 손상된 경우 이를 교체하지 않습니다. 호스트 교체에 관한 자세한 내용은 [Amazon RDS Custom 호스트 교체](#custom-troubleshooting.host-problems) 단원을 참조하세요.
+ DB 인스턴스를 삭제할 수는 있지만 대부분의 다른 RDS Custom API 작업은 사용할 수 없습니다.
+ RDS Custom은 다시 실행 로그 파일을 보관하고 Amazon S3에 이를 업로드하여 시점 복구(PITR)를 계속 지원합니다. `unsupported-configuration` 상태에 있는 PITR은 다음의 부분에서 차이가 있습니다.
  + PITR이 새로운 RDS Custom DB 인스턴스로 완전히 복원하는 데 시간이 오래 걸릴 수 있는데, 이러한 상황은 인스턴스가 `unsupported-configuration` 상태인 동안에는 자동 스냅샷이나 수동 스냅샷을 생성할 수 없기 때문에 발생합니다.
  + PITR은 인스턴스가 `unsupported-configuration` 상태로 전환되기 전에 가장 최근에 생성된 스냅샷부터 시작해서 다시 실행 로그를 더 많이 재생해야 합니다.
  + 보관된 다시 실행 파일을 업로드하지 못하도록 변경했기 때문에 DB 인스턴스가 `unsupported-configuration` 상태에 있는 경우도 있습니다. EC2 인스턴스 중지, RDS Custom 에이전트 중지, EBS 볼륨 분리 등을 예로 들 수 있습니다. 이 경우 PITR을 통해 DB 인스턴스를 복원 가능한 가장 빠른 시간으로 복원하지 못할 수 있습니다.

#### 지원되지 않는 구성 문제 해결
<a name="custom-concept.support-perimeter.fix-unsupported-config"></a>

RDS Custom은 `unsupported-configuration` 상태 관련 문제 해결 지침을 제공합니다. RDS Custom for Oracle 및 RDS Custom for SQL Server에 적용되는 일부 지침이 있긴 하지만, DB 엔진에 따라 달라지는 지침도 있습니다. 엔진별 문제 해결 정보는 다음 주제를 참조하세요.
+ [RDS Custom for Oracle에서 지원되지 않는 구성 문제 해결](custom-troubleshooting.md#custom-troubleshooting.fix-unsupported)
+ [RDS Custom for SQL Server에서 지원되지 않는 구성 문제 해결](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.fix-unsupported)

## Amazon S3
<a name="custom-concept.components.S3"></a>

Oracle용 RDS Custom을 사용하는 경우 설치 미디어를 사용자가 생성한 Amazon S3 버킷에 업로드합니다. Oracle용 RDS Custom은 이 버킷의 미디어를 사용하여 사용자 지정 엔진 버전(CEV)을 생성합니다. *CEV*는 데이터베이스 버전과 Amazon Machine Image(AMI)의 이진 볼륨 스냅샷입니다. CEV에서 RDS Custom DB 인스턴스를 생성할 수 있습니다. 자세한 정보는 [사용자 지정 엔진 버전의 Amazon RDS Custom for Oracle으로 작업](custom-cev.md)을 참조하세요.

RDS Custom for Oracle 및 RDS Custom for SQL Server 모두에 대해 RDS Custom은 문자열 `do-not-delete-rds-custom-` 접두사가 붙은 Amazon S3 버킷을 자동으로 생성합니다. RDS Custom은 `do-not-delete-rds-custom-` S3 버킷을 사용하여 다음 유형의 파일을 저장합니다.
+ AWS CloudTrailRDS Custom에서 생성한 추적에 대한 로그
+ 주변 아티팩트 지원([RDS Custom 지원 범위](#custom-troubleshooting.support-perimeter) 참조)
+ 데이터베이스 다시 실행 로그 파일(RDS Custom for Oracle만 해당)
+ 트랜잭션 로그(RDS Custom for SQL Server만 해당)
+ Custom 엔진 버전 아티팩트(RDS Custom for Oracle만 해당)

RDS Custom은 다음 리소스 중 하나를 생성할 때 `do-not-delete-rds-custom-` S3 버킷을 생성합니다.
+ RDS Custom for Oracle을 위한 첫 번째 CEV
+ RDS Custom for SQL Server의 첫 번째 DB 인스턴스

RDS Custom은 다음의 조합마다 하나의 버킷을 생성합니다.
+ AWS 계정 ID
+ 엔진 유형(RDS Custom for Oracle 또는 RDS Custom for SQL Server)
+ AWS 리전

예를 들어 단일 AWS 리전에서 Oracle CEV용 RDS Custom을 생성하는 경우 하나의 `do-not-delete-rds-custom-` 버킷이 존재합니다. 여러 RDS Custom for SQL Server 인스턴스를 생성하고 다른 AWS 리전에 상주하는 경우 각 AWS 리전에 하나의 `do-not-delete-rds-custom-` 버킷이 있습니다. 단일 AWS 리전에 RDS Custom for Oracle 인스턴스 1개와 RDS Custom for SQL Server 인스턴스 2개를 생성하는 경우 `do-not-delete-rds-custom-` 버킷이 2개 존재합니다.

## AWS CloudTrail
<a name="custom-concept.components.CloudTrail"></a>

RDS Custom은 이름이 `do-not-delete-rds-custom-`으로 시작하는 AWS CloudTrail 추적을 자동으로 생성합니다. RDS Custom 지원 경계는 CloudTrail의 이벤트에 따라 작업이 RDS Custom 자동화에 영향을 미치는지 여부를 결정합니다. 자세한 내용은 [지원되지 않는 구성 문제 해결](#custom-concept.support-perimeter.fix-unsupported-config) 섹션을 참조하세요.

RDS Custom은 첫 번째 DB 인스턴스를 생성할 때 추적을 생성합니다. RDS Custom은 다음의 조합마다 하나의 추적을 생성합니다.
+ AWS 계정 ID
+ 엔진 유형(RDS Custom for Oracle 또는 RDS Custom for SQL Server)
+ AWS 리전

RDS Custom DB 인스턴스를 삭제해도 이 인스턴스의 CloudTrail은 자동으로 제거되지 않습니다. 이 경우, 삭제되지 않은 CloudTrail에 대해 AWS 계정에 계속 요금이 청구됩니다. RDS Custom은 이 리소스의 삭제에 대해 책임을 지지 않습니다. CloudTrail을 수동으로 제거하는 방법을 알아보려면 **AWS CloudTrail 사용 설명서에서 [추적 삭제](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-delete-trails-console.html)를 참조하세요.

# Amazon RDS Custom의 보안
<a name="custom-security"></a>

RDS Custom의 보안 고려 사항을 숙지하세요.

RDS Custom의 보안에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [Amazon S3 버킷 보안으로 혼동된 대리자 문제 방지](custom-security.confused-deputy.md)
+ [규정 준수 프로그램을 위한 RDS Custom for Oracle 자격 증명](custom-security.cred-rotation.md)

## RDS Custom이 사용자를 대신하여 작업을 안전하게 관리하는 방법
<a name="custom-security.security-tools"></a>

RDS Custom은 다음과 같은 도구와 기법을 사용하여 사용자를 대신하여 안전하게 작업을 실행합니다.

**AWSServiceRoleForRDSCustom 서비스 연결 역할**  
서비스 연결 역할**은 서비스에서 사전 정의하며, 사용자를 대신하여 다른 AWS 서비스를 자동으로 호출하는 데 필요한 모든 권한을 포함합니다. RDS  Custom의 경우 `AWSServiceRoleForRDSCustom`이 최소 권한의 원칙에 따라 정의된 서비스 연결 역할입니다. RDS Custom은 이 역할에 연결된 정책인 `AmazonRDSCustomServiceRolePolicy`의 권한을 사용하여 대부분의 프로비저닝과 모든 오프 호스트 관리 작업을 수행합니다. 자세한 내용은 [AmazonRDSCustomServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSCustomServiceRolePolicy.html)를 참조하세요.  
호스트에 작업을 수행할 때 RDS Custom 자동화는 서비스 연결 역할의 보안 인증 정보를 사용하여 AWS Systems Manager로 명령을 실행합니다. Systems Manager 명령 기록 및 AWS CloudTrail을 통해 명령 기록을 감사할 수 있습니다. Systems Manager는 네트워킹 설정을 사용하여 RDS Custom DB 인스턴스에 연결합니다. 자세한 내용은 [4단계: RDS Custom for Oracle의 IAM 구성](custom-setup-orcl.md#custom-setup-orcl.iam-vpc) 섹션을 참조하세요.

**임시 IAM 보안 인증 정보**  
리소스를 프로비저닝하거나 삭제할 때 RDS Custom은 호출하는 IAM 보안 주체의 보안 인증 정보에서 파생된 임시 보안 인증 정보를 사용하는 경우가 있습니다. 이러한 IAM 보안 인증 정보는 해당 보안 주체에 연결된 IAM 정책에 의해 제한되며 작업이 완료된 후 만료됩니다. RDS Custom을 사용하는 IAM 보안 주체에 필요한 권한에 대해 알아보려면 [5단계: IAM 사용자 또는 역할에 필요한 권한 부여](custom-setup-orcl.md#custom-setup-orcl.iam-user) 섹션을 참조하세요.

**Amazon EC2 인스턴스 프로파일**  
EC2 인스턴스 프로파일이란 IAM 역할을 위한 컨테이너로, EC2 인스턴스에 역할 정보를 전달하는 데 사용됩니다. EC2 인스턴스는 RDS Custom DB 인스턴스의 기반이 됩니다. RDS Custom DB 인스턴스를 만들 때 인스턴스 프로필을 제공합니다. RDS Custom은 백업과 같은 호스트 기반 관리 작업을 수행할 때 EC2 인스턴스 프로파일 보안 인증 정보를 사용합니다. 자세한 내용은 [수동으로 IAM 역할과 인스턴스 프로파일 생성](custom-setup-orcl.md#custom-setup-orcl.iam) 섹션을 참조하세요.

**SSH 키 페어**  
RDS Custom은 DB 인스턴스의 기반이 되는 EC2 인스턴스를 만들 때 사용자를 대신하여 SSH 키 페어를 생성합니다. 키는 이름 지정 접두사 `do-not-delete-rds-custom-ssh-privatekey-db-` 또는 `rds-custom!oracle-do-not-delete-db_resource_id-uuid-ssh-privatekey`를 사용하며, AWS Secrets Manager는 SSH 프라이빗 키를 AWS 계정에 보안 암호로 저장합니다. Amazon RDS는 이러한 보안 인증 정보를 저장, 액세스 또는 사용하지 않습니다. 자세한 내용은 [Amazon EC2 키 페어 및 Linux 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)를 참조하세요.

## SSL 인증서
<a name="custom-security.ssl"></a>

RDS Custom DB 인스턴스는 관리형 SSL 인증서를 지원하지 않습니다. SSL을 배포하려는 경우 고유 Wallet에서 SSL 인증서를 자체 관리하고 SSL 리스너를 생성하여 클라이언트 데이터베이스 간 연결을 보호하거나 데이터베이스 복제를 수행할 수 있습니다. 자세한 내용은 Oracle Database 설명서에서 [전송 계층 보안 인증 구성](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-secure-sockets-layer-authentication.html#GUID-6AD89576-526F-4D6B-A539-ADF4B840819F)을 참조하세요.

# Amazon S3 버킷 보안으로 혼동된 대리자 문제 방지
<a name="custom-security.confused-deputy"></a>

Amazon RDS Custom for Oracle 사용자 지정 엔진 버전(CEV) 또는 RDS Custom for SQL Server DB 인스턴스를 생성하면 RDS Custom이 Amazon S3 버킷을 생성합니다. S3 버킷은 CEV 아티팩트, 다시 실행(트랜잭션) 로그, 지원 경계에 대한 구성 항목 및 AWS CloudTrail 로그와 같은 파일을 저장합니다.

*혼란스러운 대리인 문제*를 방지하기 위해 전역 조건 컨텍스트 키를 사용하여 이러한 S3 버킷을 보다 안전하게 만들 수 있습니다. 자세한 내용은 [교차 서비스 혼동된 대리자 문제 방지](cross-service-confused-deputy-prevention.md)을 참조하세요.

다음 RDS Custom for Oracle 예는 S3 버킷 정책에서 `aws:SourceArn` 및 `aws:SourceAccount` 전역 조건 컨텍스트 키의 사용을 보여줍니다. RDS Custom for Oracle의 경우 CEV 및 DB 인스턴스에 대한 Amazon 리소스 이름(ARN)을 포함해야 합니다. RDS Custom for SQL Server의 경우 DB 인스턴스 ARN을 포함해야 합니다.

```
...
{
  "Sid": "AWSRDSCustomForOracleInstancesObjectLevelAccess",
  "Effect": "Allow",
  "Principal": {
     "Service": "custom.rds.amazonaws.com"
  },
  "Action": [
     "s3:GetObject",
     "s3:GetObjectVersion",
     "s3:DeleteObject",
     "s3:DeleteObjectVersion",
     "s3:GetObjectRetention",
     "s3:BypassGovernanceRetention"
  ],
  "Resource": "arn:aws:s3:::do-not-delete-rds-custom-123456789012-us-east-2-c8a6f7/RDSCustomForOracle/Instances/*",
  "Condition": {
     "ArnLike": {
        "aws:SourceArn": [
            "arn:aws:rds:us-east-2:123456789012:db:*",
            "arn:aws:rds:us-east-2:123456789012:cev:*/*"
        ]
     },
     "StringEquals": {
        "aws:SourceAccount": "123456789012"
    }
  }
},
...
```

# 규정 준수 프로그램을 위한 RDS Custom for Oracle 자격 증명
<a name="custom-security.cred-rotation"></a>

일부 규정 준수 프로그램에서는 데이터베이스 사용자 자격 증명을 주기적으로(예: 90일마다) 변경해야 합니다. RDS Custom for Oracle은 미리 정의된 일부 데이터베이스 사용자의 자격 증명을 자동으로 교체합니다.

**Topics**
+ [미리 정의된 사용자의 자격 증명 자동 교체](#custom-security.cred-rotation.auto)
+ [사용자 자격 증명 교체에 대한 지침](#custom-security.cred-rotation.guidelines)
+ [사용자 자격 증명을 수동으로 교체](#custom-security.cred-rotation.manual)

## 미리 정의된 사용자의 자격 증명 자동 교체
<a name="custom-security.cred-rotation.auto"></a>

RDS Custom for Oracle DB 인스턴스가 Amazon RDS에서 호스팅되는 경우, 다음과 같은 미리 정의된 Oracle 사용자의 자격 증명이 30일마다 자동으로 교체됩니다. 이전 사용자의 자격 증명은 AWS Secrets Manager에 있습니다.


| 데이터베이스 사용자 | 생성한 사람 | 지원되는 엔진 버전 | 참고 | 
| --- | --- | --- | --- | 
|  `SYS`  |  Oracle  |  custom-oracle-ee custom-oracle-ee-cdb custom-oracle-se2 custom-oracle-se2-cdb  |  | 
|  `SYSTEM`  |  Oracle  |  custom-oracle-ee custom-oracle-ee-cdb custom-oracle-se2 custom-oracle-se2-cdb  |  | 
|  `RDSADMIN`  |  RDS  |  custom-oracle-ee custom-oracle-se2  |  | 
|  `C##RDSADMIN`  |  RDS  |  custom-oracle-ee-cdb custom-oracle-se2-cdb  | C\$1\$1 접두사가 있는 사용자 이름은 CDB에만 존재합니다. CDB에 대한 자세한 내용은 [Amazon RDS Custom for Oracle 아키텍처 개요](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.overview)를 참조하세요. | 
|  `RDS_DATAGUARD`  |  RDS  |  custom-oracle-ee  | 이 사용자는 읽기 전용 복제본, 읽기 전용 복제본의 소스 데이터베이스, Oracle Data Guard를 사용하여 RDS Custom에 물리적으로 마이그레이션된 데이터베이스에만 존재합니다. | 
|  `C##RDS_DATAGUARD`  |  RDS  |  custom-oracle-ee-cdb  | 이 사용자는 읽기 전용 복제본, 읽기 전용 복제본의 소스 데이터베이스, Oracle Data Guard를 사용하여 RDS Custom에 물리적으로 마이그레이션된 데이터베이스에만 존재합니다. C\$1\$1 접두사가 있는 사용자 이름은 CDB에만 존재합니다. CDB에 대한 자세한 내용은 [Amazon RDS Custom for Oracle 아키텍처 개요](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.overview)를 참조하세요. | 

수동 방식을 통해 대기 데이터베이스로 구성된 RDS Custom for Oracle DB 인스턴스는 자동 자격 증명 교체의 예외입니다. RDS는 `create-db-instance-read-replica` CLI 명령 또는`CreateDBInstanceReadReplica` API를 사용하여 생성한 읽기 전용 복제본의 자격 증명만 교체합니다.

## 사용자 자격 증명 교체에 대한 지침
<a name="custom-security.cred-rotation.guidelines"></a>

규정 준수 프로그램에 따라 자격 증명을 교체하려면 다음 지침을 참고하세요.
+ DB 인스턴스에서 자격 증명을 자동으로 교체할 경우, [미리 정의된 Oracle 사용자](#auto-rotation)에 나열된 사용자의 암호, 암호 파일 또는 암호를 수동으로 변경하거나 삭제하지 마세요. 그렇지 않으면 RDS Custom이 DB 인스턴스를 지원 경계 밖에 배치하여 자동 교체가 일시 중단될 수 있습니다.
+ RDS 마스터 사용자는 미리 정의되어 있지 않으므로 암호를 수동으로 변경하거나, Secrets Manager에서 자동 교체를 설정해야 합니다. 자세한 내용을 알아보려면 [AWS Secrets Manager 보안 암호 교체](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)를 참조하세요.

## 사용자 자격 증명을 수동으로 교체
<a name="custom-security.cred-rotation.manual"></a>

다음과 같은 데이터베이스 범주의 경우 RDS는 [미리 정의된 Oracle 사용자](#auto-rotation)에 나열된 사용자의 자격 증명을 자동으로 교체하지 않습니다.
+ 대기 데이터베이스로 작동하도록 수동으로 구성한 데이터베이스.
+ 온프레미스 데이터베이스.
+ 지원 경계 밖에 있거나 RDS Custom 자동화를 실행할 수 없는 상태의 DB 인스턴스. 이 경우 RDS Custom은 키 교체도 수행하지 않습니다.

데이터베이스가 위의 범주 중 하나에 속할 경우 사용자 자격 증명을 수동으로 교체해야 합니다.

**DB 인스턴스의 사용자 자격 증명을 수동으로 교체하려면**

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

1. **데이터베이스**에서 RDS가 현재 DB 인스턴스 백업 또는 고가용성 구성 같은 작업을 수행하고 있지 않은지 확인합니다.

1. 데이터베이스 세부 정보 페이지에서 **구성**을 선택하고 DB 인스턴스의 리소스 ID를 기록해 둡니다. AWS CLI 명령인 `describe-db-instances`를 사용할 수 있습니다.

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 Secrets Manager 콘솔을 엽니다.

1. 검색 상자에 데이터베이스의 리소스 ID를 입력하고 다음 이름 지정 규칙 중 하나를 사용하여 보안 암호를 검색합니다.

   ```
   do-not-delete-rds-custom-resource_id-uuid
   rds-custom!oracle-do-not-delete-resource_id-uuid
   ```

   이 암호는 `RDSADMIN`, `SYS`, `SYSTEM`의 암호를 저장합니다. 아래의 샘플 키는 리소스 ID가 `db-ABCDEFG12HIJKLNMNOPQRS3TUVWX`, UUID가 `123456`인 DB 인스턴스에 사용되는 키입니다.

   ```
   do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
   rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
   ```
**중요**  
DB 인스턴스가 읽기 전용 복제본이고 `custom-oracle-ee-cdb` 엔진을 사용할 경우 접미사 `db-resource_id-uuid`이 붙은 두 개의 암호가 존재합니다. 하나는 마스터 사용자용이고, 다른 하나는 `RDSADMIN`, `SYS`, `SYSTEM`용입니다. 올바른 암호를 찾으려면 호스트에서 다음 명령을 실행합니다.  

   ```
   cat /opt/aws/rdscustomagent/config/database_metadata.json | python3 -c "import sys,json; print(json.load(sys.stdin)['dbMonitoringUserPassword'])"
   ```
`dbMonitoringUserPassword` 속성은 `RDSADMIN`, `SYS`, `SYSTEM`의 암호를 나타냅니다.

1. DB 인스턴스가 Oracle Data Guard 구성에 있는 경우 다음 이름 지정 규칙 중 하나를 사용하여 보안 암호를 검색합니다.

   ```
   do-not-delete-rds-custom-resource_id-uuid-dg
   rds-custom!oracle-do-not-delete-resource_id-uuid-dg
   ```

   이 암호는 `RDS_DATAGUARD`의 암호를 저장합니다. 아래의 샘플 키는 DB 리소스 ID가 `db-ABCDEFG12HIJKLNMNOPQRS3TUVWX`, UUID가 **789012**인 DB 인스턴스에 사용되는 키입니다.

   ```
   do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
   rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
   ```

1. [미리 정의된 Oracle 사용자](#auto-rotation)에 나열된 모든 데이터베이스 사용자의 경우 [AWS Secrets Manager 암호 수정](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)의 지침에 따라 암호를 업데이트하세요.

1. 데이터베이스가 독립 실행형 데이터베이스이거나 Oracle Data Guard 구성의 소스 데이터베이스인 경우:

   1. Oracle SQL 클라이언트를 시작하고 `SYS`로 로그인합니다.

   1. [미리 정의된 Oracle](#auto-rotation) 사용자에 나열된 각 데이터베이스 사용자에 대해 다음 형식으로 된 SQL 문을 실행합니다.

      ```
      ALTER USER user-name IDENTIFIED BY pwd-from-secrets-manager ACCOUNT UNLOCK;
      ```

      예를 들어 Secrets Manager에 저장된 `RDSADMIN`의 새 암호가 `pwd-123`인 경우 다음 문을 실행합니다.

      ```
      ALTER USER RDSADMIN IDENTIFIED BY pwd-123 ACCOUNT UNLOCK;
      ```

1. Oracle Database 12c 릴리스 1(12.1)을 실행하고 Oracle Data Guard에서 관리하는 DB 인스턴스의 경우, 기본 DB 인스턴스의 암호 파일(`orapw`)을 각 대기 DB 인스턴스에 수동으로 복사하세요.

   Amazon RDS에서 DB 인스턴스를 호스팅하는 경우 암호 파일 위치는 `/rdsdbdata/config/orapw`입니다. Amazon RDS에서 호스팅되지 않는 데이터베이스의 경우 기본 위치는 Linux 및 UNIX는 `$ORACLE_HOME/dbs/orapw$ORACLE_SID`이고, Windows는 `%ORACLE_HOME%\database\PWD%ORACLE_SID%.ora`입니다.

# RDS Custom for Oracle 작업
<a name="working-with-custom-oracle"></a>

아래에서는 RDS Custom for Oracle DB 인스턴스의 관리 및 유지 관리에 대한 지침을 확인할 수 있습니다.

**Topics**
+ [RDS Custom for Oracle 워크플로](custom-concept.workflow.md)
+ [Amazon RDS Custom for Oracle 데이터베이스 아키텍처](custom-oracle.db-architecture.md)
+ [RDS Custom for Oracle에 대한 기능 가용성 및 지원](custom-oracle-feature-support.md)
+ [RDS Custom for Oracle 요구 사항 및 제한](custom-reqs-limits.md)
+ [Amazon RDS Custom for Oracle을 위한 환경 설정](custom-setup-orcl.md)
+ [사용자 지정 엔진 버전의 Amazon RDS Custom for Oracle으로 작업](custom-cev.md)
+ [Amazon RDS Custom for Oracle용 DB 인스턴스 구성](custom-creating.md)
+ [Amazon RDS Custom for Oracle DB 인스턴스 관리](custom-managing.md)
+ [RDS Custom for Oracle에 대한 다중 AZ 배포 관리](custom-oracle-multiaz.md)
+ [RDS Custom for Oracle의 Oracle 복제본으로 작업](custom-rr.md)
+ [Amazon RDS Custom for Oracle DB 인스턴스 백업 및 복원](custom-backup.md)
+ [RDS Custom for Oracle에서 옵션 그룹을 사용한 작업](custom-oracle-option-groups.md)
+ [온프레미스 데이터베이스를 RDS Custom for Oracle로 마이그레이션](custom-migrating-oracle.md)
+ [Oracle용 Amazon RDS Custom DB 인스턴스 업그레이드](custom-upgrading.md)
+ [Amazon RDS Custom for Oracle의 DB 문제 해결](custom-troubleshooting.md)
+ [Amazon RDS Custom for Oracle의 알려진 문제](custom-known-issues.md)

# RDS Custom for Oracle 워크플로
<a name="custom-concept.workflow"></a>

다음 다이어그램은 RDS Custom for Oracle의 일반적인 워크플로를 보여줍니다.

![\[Oracle 아키텍처 구성 요소를 위한 RDS Custom\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/RDS_Custom_architecture_v2.png)


단계는 다음과 같습니다.

1. Amazon S3 버킷에 데이터베이스 소프트웨어를 업로드합니다.

   자세한 내용은 [3단계: Amazon S3에 설치 파일 업로드](custom-cev.preparing.md#custom-cev.preparing.s3) 섹션을 참조하세요.

1. 미디어에서 RDS Custom for Oracle 사용자 지정 엔진 버전(CEV)을 만듭니다.

   CDB 아키텍처 또는 기존의 비CDB 아키텍처를 선택합니다. 자세한 내용은 [CEV 생성](custom-cev.create.md) 섹션을 참조하세요.

1. CEV에서 RDS Custom for Oracle DB 인스턴스를 생성합니다.

   자세한 내용은 [RDS Custom for Oracle DB 인스턴스 생성](custom-creating.md#custom-creating.create) 섹션을 참조하세요.

1. 애플리케이션을 DB 인스턴스 엔드포인트에 연결합니다.

   자세한 내용은 [SSH를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating.md#custom-creating.ssh) 및 [세션 관리자를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating.ssm.md) 섹션을 참조하세요.

1. (선택 사항) 호스트에 액세스하여 소프트웨어를 커스터마이징합니다.

1. RDS Custom 자동화로 생성된 알림 및 메시지를 모니터링합니다.

## 데이터베이스 설치 파일
<a name="custom-concept.workflow.db-files"></a>

미디어에 대한 책임은 Amazon RDS와 RDS Custom 간의 주요 차이점입니다. 완전관리형 서비스인 Amazon RDS는 Amazon Machine Image(AMI) 및 데이터베이스 소프트웨어를 제공합니다. Amazon RDS 데이터베이스 소프트웨어가 사전 설치되어 있으므로 데이터베이스 엔진과 버전을 선택하고 데이터베이스를 생성하기만 하면 됩니다.

RDS Custom의 경우 자체 미디어를 제공합니다. 커스텀 엔진 버전을 만들면 RDS Custom은 사용자가 제공한 미디어를 설치합니다. RDS Custom 미디어에는 데이터베이스 설치 파일 및 패치가 포함되어 있습니다. 이 서비스 모델은 자체 미디어 가져오기(BYOM)입니다.

## RDS Custom for Oracle의 사용자 지정 엔진 버전
<a name="custom-concept.workflow.cev"></a>

RDS Custom for Oracle 사용자 지정 엔진 버전(CEV)은 데이터베이스 버전 및 AMI의 바이너리 볼륨 스냅샷입니다. 기본적으로 RDS Custom for Oracle은 Amazon EC2에서 제공하는 가장 최신 AMI를 사용합니다. 기존 AMI를 재사용하는 방법도 있습니다.

### CEV 매니페스트
<a name="custom-concept.workflow.cev.install"></a>

Oracle에서 Oracle 데이터베이스 설치 파일을 다운로드한 후 Amazon S3 버킷에 업로드합니다. CEV를 만들 때 JSON 문서에 CEV 매니페스트로 파일 이름을 지정합니다. RDS Custom for Oracle은 이 설치 파일과 AMI를 사용하여 CEV를 생성합니다.

RDS Custom for Oracle은 지원되는 각 Oracle 데이터베이스 릴리스에 대한 권장 .zip 파일이 포함된 JSON 매니페스트 템플릿을 제공합니다. 예를 들어, 다음 템플릿은 19.17.0.0.0 RU용입니다.

```
{
    "mediaImportTemplateVersion": "2020-08-14",
    "databaseInstallationFileNames": [
        "V982063-01.zip"
    ],
    "opatchFileNames": [
        "p6880880_190000_Linux-x86-64.zip"
    ],
    "psuRuPatchFileNames": [
        "p34419443_190000_Linux-x86-64.zip",
        "p34411846_190000_Linux-x86-64.zip"
    ],
    "otherPatchFileNames": [
        "p28852325_190000_Linux-x86-64.zip",
        "p29997937_190000_Linux-x86-64.zip",
        "p31335037_190000_Linux-x86-64.zip",
        "p32327201_190000_Linux-x86-64.zip",
        "p33613829_190000_Linux-x86-64.zip",
        "p34006614_190000_Linux-x86-64.zip",
        "p34533061_190000_Linux-x86-64.zip",
        "p34533150_190000_Generic.zip",
        "p28730253_190000_Linux-x86-64.zip",
        "p29213893_1917000DBRU_Generic.zip",
        "p33125873_1917000DBRU_Linux-x86-64.zip",
        "p34446152_1917000DBRU_Linux-x86-64.zip"
    ]
}
```

JSON 매니페스트에서 설치 파라미터를 지정할 수도 있습니다. 예를 들어 Oracle base, Oracle home, UNIX/Linux 사용자 및 그룹의 ID 및 이름에 대해 기본값이 아닌 값을 설정할 수 있습니다. 자세한 내용은 [CEV 매니페스트 내의 JSON](custom-cev.preparing.md#custom-cev.preparing.manifest.fields) 섹션을 참조하세요.

### CEV 이름 지정 형식
<a name="custom-concept.workflow.cev.name"></a>

고객 지정 문자열을 사용하여 RDS Custom for Oracle CEV의 이름을 지정합니다. 이름 형식은 Oracle Database 릴리스에 따라 다음과 같습니다.
+ `19.customized_string`
+ `18.customized_string`
+ `12.2.customized_string`
+ `12.1.customized_string`

1\$150개의 영숫자, 밑줄, 대시 및 마침표를 사용할 수 있습니다. 예를 들어 CEV 이름을 `19.my_cev1`으로 지정할 수 있습니다.

### RDS Custom for Oracle의 Oracle 멀티테넌트 아키텍처
<a name="custom-concept.workflow.cev.multitenant"></a>

Oracle 멀티테넌트 아키텍처에서 Oracle 데이터베이스는 컨테이너 데이터베이스(CDB) 기능을 할 수 있습니다. CDB에는 0개, 1개 또는 여러 개의 고객 생성 플러그형 데이터베이스(PDB)가 포함됩니다. PDB는 애플리케이션에 기존 비CDB로 나타나는 스키마와 객체의 이동식 모음입니다.

RDS Custom for Oracle CEV를 생성할 때 CDB 또는 비CDB 아키텍처를 지정합니다. RDS Custom for Oracle CDB는 생성에 사용한 CEV가 Oracle 멀티테넌트 아키텍처를 사용하는 경우에만 생성할 수 있습니다. 자세한 내용은 [사용자 지정 엔진 버전의 Amazon RDS Custom for Oracle으로 작업](custom-cev.md) 섹션을 참조하세요.

## RDS Custom for Oracle DB 인스턴스 생성
<a name="custom-concept.workflow.instance"></a>

CEV는 생성 후 사용 가능한 상태가 됩니다. 여러 CEV를 생성하고, CEV에서 RDS Custom for Oracle DB 인스턴스를 여러 개 생성할 수 있습니다. CEV의 상태를 변경하여 사용 가능 또는 비활성 상태로 만들 수도 있습니다.

Oracle 멀티테넌트 아키텍처(`custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb` 엔진 유형) 또는 기존의 비CDB 아키텍처(`custom-oracle-ee` 또는 `custom-oracle-se2` 엔진 유형)를 사용하여 RDS Custom for Oracle DB 인스턴스를 생성할 수 있습니다. 생성한 컨테이너 데이터베이스(CDB)에는 플러그형 데이터베이스(PDB) 1개와 PDB 시드 1개가 포함됩니다. Oracle SQL을 사용하여 수동으로 추가 PDB를 생성할 수 있습니다.

RDS Custom for Oracle DB 인스턴스를 생성하려면 `create-db-instance` 명령을 사용하세요. 이 명령에서 사용할 CEV를 지정합니다. 생성 절차는 Amazon RDS DB 인스턴스 생성과 유사합니다. 하지만 일부 파라미터는 다릅니다. 자세한 내용은 [Amazon RDS Custom for Oracle용 DB 인스턴스 구성](custom-creating.md) 섹션을 참조하세요.

## 데이터베이스 연결
<a name="custom-concept.workflow.db-connection"></a>

Amazon RDS DB 인스턴스와 마찬가지로 RDS Custom DB 인스턴스는 Virtual Private Cloud(VPC)에 있습니다. 애플리케이션은 Oracle 리스너를 사용하여 Oracle 데이터베이스에 연결합니다.

데이터베이스가 CDB인 경우 리스너 `L_RDSCDB_001`을 사용하여 CDB 루트와 PDB에 연결할 수 있습니다. 비 CDB를 CDB에 연결하는 경우 마이그레이션된 애플리케이션이 동일한 설정을 유지하도록 `USE_SID_AS_SERVICE_LISTENER = ON`을 설정해야 합니다.

비 CDB에 연결하는 경우 마스터 사용자는 비 CDB의 사용자입니다. CDB에 연결하는 경우 마스터 사용자는 PDB의 사용자입니다. CDB 루트에 연결하려면 호스트에 로그인하고 SQL 클라이언트를 시작한 다음 SQL 명령을 사용하여 관리자를 생성합니다.  

## RDS Custom 커스터마이징
<a name="custom-concept.workflow.db-customization"></a>

RDS Custom 호스트에 액세스하여 소프트웨어를 설치하거나 커스터마이징할 수 있습니다. 변경 사항과 RDS Custom 자동화 간의 충돌을 방지하려면 지정된 기간 동안 자동화를 일시 중지하면 됩니다. 이 기간 동안 RDS Custom은 모니터링 또는 인스턴스 복구를 수행하지 않습니다. 기간이 만료되면 RDS Custom은 전체 자동화를 재개합니다. 자세한 내용은 [RDS Custom DB 인스턴스 일시 중지 및 재개](custom-managing.customizing-env.md#custom-managing.pausing) 섹션을 참조하세요.

# Amazon RDS Custom for Oracle 데이터베이스 아키텍처
<a name="custom-oracle.db-architecture"></a>

RDS Custom for Oracle은 Oracle 멀티테넌트 아키텍처와 비멀티테넌트 아키텍처를 모두 지원합니다.

**Topics**
+ [지원되는 Oracle 데이터베이스 아키텍처](#custom-oracle.db-architecture.types)
+ [지원되는 엔진 유형](#custom-oracle.db-architecture.engine-types)
+ [Oracle 멀티테넌트 아키텍처에서 지원되는 특성](#custom-oracle.db-architecture.features)

## 지원되는 Oracle 데이터베이스 아키텍처
<a name="custom-oracle.db-architecture.types"></a>

Oracle 멀티테넌트 아키텍처(CDB 아키텍처)는 Oracle 데이터베이스가 컨테이너 데이터베이스(CDB) 기능을 하도록 합니다. CDB에는 플러그형 데이터베이스(PDB)가 포함되어 있습니다. PDB는 애플리케이션에 기존 Oracle 데이터베이스로 나타나는 스키마와 객체의 모음입니다. 자세한 내용은 *Oracle Multitenant 관리자 안내서*의 [멀티테넌트 아키텍처 소개](https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html)를 참조하세요.

CDB 아키텍처와 비CDB 아키텍처는 상호 배타적입니다. Oracle 데이터베이스가 CDB가 아닌 경우 비CDB이므로 PDB를 포함할 수 없습니다. RDS Custom for Oracle에서는 Oracle Database 19c만 CDB 아키텍처를 지원합니다. 따라서 이전 Oracle 데이터베이스 릴리스를 사용하여 DB 인스턴스를 생성할 경우 비CDB만 생성할 수 있습니다. 자세한 내용은 [멀티테넌트 아키텍처 고려 사항](custom-creating.md#custom-creating.overview) 섹션을 참조하세요.

## 지원되는 엔진 유형
<a name="custom-oracle.db-architecture.engine-types"></a>

Amazon RDS Custom for Oracle CEV 또는 DB 인스턴스를 생성할 때 다음 CDB 엔진 유형 또는 비CDB 엔진 유형을 선택합니다.
+ `custom-oracle-ee-cdb` 및 `custom-oracle-se2-cdb`

  이러한 엔진 유형은 Oracle 멀티테넌트 아키텍처를 지정합니다. 이 옵션은 Oracle Database 19c에서만 지원됩니다. 멀티테넌트 아키텍처를 사용하여 RDS for Oracle DB 인스턴스를 생성하는 경우 CDB에는 다음과 같은 컨테이너가 포함됩니다.
  + CDB 루트(`CDB$ROOT`)
  + PDB 시드(`PDB$SEED`)
  + 초기 PDB

  Oracle SQL 명령 `CREATE PLUGGABLE DATABASE`를 사용하여 더 많은 PDB를 생성할 수 있습니다. RDS API를 사용하여 PDB를 만들거나 삭제할 수 없습니다.
+ `custom-oracle-ee` 및 `custom-oracle-se2`

  이러한 엔진 유형은 기존의 비CDB 아키텍처를 지정합니다. 비 CDB에는 플러그형 데이터베이스(PDB)가 포함될 수 없습니다.

자세한 내용은 [멀티테넌트 아키텍처 고려 사항](custom-creating.md#custom-creating.overview) 섹션을 참조하세요.

## Oracle 멀티테넌트 아키텍처에서 지원되는 특성
<a name="custom-oracle.db-architecture.features"></a>

RDS Custom for Oracle CDB 인스턴스는 다음 기능을 지원합니다.
+ 백업
+ 백업에서 복원 및 시점 복구(PITR)
+ 읽기 전용 복제본
+ 마이너 버전 업그레이드

# RDS Custom for Oracle에 대한 기능 가용성 및 지원
<a name="custom-oracle-feature-support"></a>

이 주제에서는 빠른 참조를 위해 RDS Custom for Oracle 기능 가용성 및 지원 요약을 찾을 수 있습니다.

**Topics**
+ [RDS Custom for Oracle에 대한 AWS 리전 및 데이터베이스 버전 지원](#custom-reqs-limits.RegionVersionAvailability)
+ [RDS Custom for Oracle에 대한 데이터베이스 버전 지원](#custom-reqs-limits.db-version)
+ [RDS Custom for Oracle에 대한 에디션 및 라이선스 지원](#custom-oracle-feature-support.editions)
+ [RDS Custom for Oracle에 대한 DB 인스턴스 클래스 지원](#custom-reqs-limits.instances)
+ [RDS Custom for Oracle에 대한 옵션 그룹 지원](#custom-oracle-feature-support.option-groups)

## RDS Custom for Oracle에 대한 AWS 리전 및 데이터베이스 버전 지원
<a name="custom-reqs-limits.RegionVersionAvailability"></a>

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

## RDS Custom for Oracle에 대한 데이터베이스 버전 지원
<a name="custom-reqs-limits.db-version"></a>

RDS Custom for Oracle은 다음과 같은 Oracle 데이터베이스 버전을 지원합니다.
+ Oracle Database 19c
+ Oracle Database 18c
+ Oracle Database 12c 릴리스 2(12.2)
+ Oracle Database 12c 릴리스 1(12.1)

## RDS Custom for Oracle에 대한 에디션 및 라이선스 지원
<a name="custom-oracle-feature-support.editions"></a>

RDS Custom for Oracle은 BYOL 모델에서 Enterprise Edition(EE) 및 Standard Edition 2(SE2)를 지원합니다.

Standard Edition 2의 경우 다음 제한 사항이 있으니 참조하세요.
+ Oracle Data Guard가 지원되지 않습니다. 따라서 Oracle 읽기 전용 복제본을 만들 수 없습니다.
+ vCPU가 16개 이하(최대 4배)인 DB 인스턴스 클래스만 사용할 수 있습니다.
+ Standard Edition 2의 CDB 인스턴스는 최대 3개의 테넌트 데이터베이스를 지원합니다.
+ Enterprise Edition 및 Standard Edition 2 간에는 데이터를 마이그레이션할 수 없습니다.

## RDS Custom for Oracle에 대한 DB 인스턴스 클래스 지원
<a name="custom-reqs-limits.instances"></a>

RDS Custom for Oracle은 다음 DB 인스턴스 클래스를 지원합니다. Standard Edition 2에서 DB 인스턴스를 생성하는 경우 vCPU가 16개 이하(최대 4배)인 인스턴스 클래스만 사용할 수 있습니다.


| Type | 크기 | 
| --- | --- | 
| db.m7i | db.m7i.large \$1 db.m7i.xlarge \$1 db.m7i.2xlarge \$1 db.m7i.4xlarge \$1 db.m7i.8xlarge \$1 db.m7i.12xlarge \$1 db.m7i.16xlarge \$1 db.m7i.24xlarge \$1 db.m7i.48xlarge \$1 db.m7i.metal-24xl \$1 db.m7i.metal-48xl | 
| db.m6i | db.m6i.large \$1 db.m6i.xlarge \$1 db.m6i.2xlarge \$1 db.m6i.4xlarge \$1 db.m6i.8xlarge \$1 db.m6i.12xlarge \$1 db.m6i.16xlarge \$1 db.m6i.24xlarge \$1 db.m6i.32xlarge \$1 db.m6i.metal | 
| db.m6id | db.m6id.metal | 
| db.m6in | db.m6in.metal | 
| db.m5 | db.m5.large \$1 db.m5.xlarge \$1 db.m5.2xlarge \$1 db.m5.4xlarge \$1 db.m5.8xlarge \$1 db.m5.12xlarge \$1 db.m5.16xlarge \$1 db.m5.24xlarge | 
| db.r7i | db.r7i.large \$1 db.r7i.xlarge \$1 db.r7i.2xlarge \$1 db.r7i.4xlarge \$1 db.r7i.8xlarge \$1 db.r7i.12xlarge \$1 db.r7i.16xlarge \$1 db.r7i.24xlarge \$1 db.r7i.48xlarge \$1 db.r7i.metal-24xl \$1 db.r7i.metal-48xl | 
| db.r6i | db.r6i.large \$1 db.r6i.xlarge \$1 db.r6i.2xlarge \$1 db.r6i.4xlarge \$1 db.r6i.8xlarge \$1 db.r6i.12xlarge \$1 db.r6i.16xlarge \$1 db.r6i.24xlarge \$1 db.r6i.32xlarge \$1 db.r6i.metal | 
| db.r6id | db.r6id.metal | 
| db.r6in | db.r6in.metal | 
| db.r5b | db.r5b.large \$1 db.r5b.xlarge \$1 db.r5b.2xlarge \$1 db.r5b.4xlarge \$1 db.r5b.8xlarge \$1 db.r5b.12xlarge \$1 db.r5b.16xlarge \$1 db.r5b.24xlarge | 
| db.r5 | db.r5.large \$1 db.r5.xlarge \$1 db.r5.2xlarge \$1 db.r5.4xlarge \$1 db.r5.8xlarge \$1 db.r5.12xlarge \$1 db.r5.16xlarge \$1 db.r5.24xlarge | 
| db.x2iedn | db.x2iedn.xlarge \$1 db.x2iedn.2xlarge \$1 db.x2iedn.4xlarge \$1 db.x2iedn.8xlarge \$1 db.x2iedn.16xlarge \$1 db.x2iedn.24xlarge \$1 db.x2iedn.32xlarge \$1 db.x2iedn.metal | 
| db.x2idn | db.x2idn.metal | 
| db.x2iezn | db.x2iezn.2xlarge \$1 db.x2iezn.4xlarge \$1 db.x2iezn.6xlarge \$1 db.x2iezn.8xlarge \$1 db.x2iezn.12xlarge \$1 db.x2iezn.metal | 
| db.t3 | db.t3.medium \$1 db.t3.large \$1 db.t3.xlarge \$1 db.t3.2xlarge | 

## RDS Custom for Oracle에 대한 옵션 그룹 지원
<a name="custom-oracle-feature-support.option-groups"></a>

RDS Custom for Oracle DB 인스턴스를 생성하거나 수정할 때 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [RDS Custom for Oracle에서 옵션 그룹을 사용한 작업](custom-oracle-option-groups.md) 섹션을 참조하세요.

# RDS Custom for Oracle 요구 사항 및 제한
<a name="custom-reqs-limits"></a>

이 주제에서는 빠른 참조를 위해 Amazon RDS Custom for Oracle 가용성 및 요구 사항의 요약을 찾을 수 있습니다.

**Topics**
+ [RDS Custom for Oracle 일반 요구 사항](#custom-reqs-limits.reqs)
+ [RDS Custom for Oracle의 일반적 제한 사항](#custom-reqs-limits.limits)
+ [RDS Custom for Oracle의 CEV 및 AMI 제한 사항](#custom-reqs-limits.cev-limits)
+ [워크플로 생성 및 수정에 지원되지 않는 설정](#custom-reqs-limits.unsupported-settings)
+ [AWS 계정의 DB 인스턴스 할당량](#custom-reqs-limits.quotas)

## RDS Custom for Oracle 일반 요구 사항
<a name="custom-reqs-limits.reqs"></a>

Amazon RDS Custom for Oracle에 대한 다음 요구 사항을 준수해야 합니다.
+ [My Oracle Support](https://support.oracle.com/portal/) 및 [Oracle Software Delivery Cloud](https://edelivery.oracle.com/osdc/faces/Home.jspx)에 액세스하여 RDS Custom for Oracle의 지원되는 설치 파일 및 패치 목록을 다운로드할 수 있습니다. 알 수 없는 패치를 사용하는 경우 사용자 지정 엔진 버전(CEV) 생성에 실패합니다. 이 경우 RDS Custom 지원팀에 문의하여 누락된 패치를 추가해달라고 요청하세요. 자세한 내용은 [2단계: Oracle Software Delivery Cloud에서 데이터베이스 설치 파일 및 패치 다운로드](custom-cev.preparing.md#custom-cev.preparing.download) 섹션을 참조하세요.
+ Amazon S3에 액세스할 수 있습니다. 다음과 같은 이유로 이 서비스가 필요합니다.
  + Oracle 설치 파일을 S3 버킷에 업로드합니다. 업로드된 설치 파일은 RDS Custom CEV를 생성할 때 사용합니다.
  + RDS Custom for Oracle은 내부적으로 정의된 S3 버킷에서 다운로드한 스크립트를 사용하여 DB 인스턴스에서 작업을 수행합니다. 이러한 스크립트는 온보딩 및 RDS Custom 자동화에 필요합니다.
  + RDS Custom for Oracle은 특정 파일을 고객 계정에 있는 S3 버킷에 업로드합니다. 이러한 버킷은 `do-not-delete-rds-custom-`*account\$1id*-*region*-*uuid*라는 이름 지정 형식을 사용합니다. 예를 들어, `do-not-delete-rds-custom-123456789012-us-east-1-12a3b4`라는 이름이 지정된 버킷이 있는 경우를 가정해 보겠습니다.

  자세한 내용은 [3단계: Amazon S3에 설치 파일 업로드](custom-cev.preparing.md#custom-cev.preparing.s3) 및 [CEV 생성](custom-cev.create.md)(을)를 참조하세요.
+ [RDS Custom for Oracle에 대한 DB 인스턴스 클래스 지원](custom-oracle-feature-support.md#custom-reqs-limits.instances)에 나열된 DB 인스턴스 클래스를 사용하여 RDS Custom for Oracle DB 인스턴스를 생성할 수 있습니다.
+ RDS Custom for Oracle DB 인스턴스는 Oracle Linux 8(권장) 또는 Oracle Linux 7을 실행합니다. Oracle Linux 7이 필요한 경우 지원에 문의하세요. 자세한 내용은 [RDS Custom for Oracle 데이터베이스 업그레이드에 대한 고려 사항](custom-upgrading-considerations.md) 섹션을 참조하세요.
+ Amazon EBS 스토리지에 대한 gp2, gp3 또는 io1 솔리드 스테이트 드라이브를 지정합니다. 최대 스토리지 크기는 64TiB입니다.
+ RDS Custom for Oracle DB 인스턴스를 생성할 수 있는 AWS KMS 키가 있습니다. 자세한 내용은 [1단계: 대칭 암호화 AWS KMS 키 생성 또는 재사용](custom-setup-orcl.md#custom-setup-orcl.cmk) 섹션을 참조하세요.
+ RDS Custom for Oracle DB 인스턴스 생성에 필요한 AWS Identity and Access Management(IAM) 역할 및 인스턴스 프로파일이 있습니다. 자세한 내용은 [4단계: RDS Custom for Oracle의 IAM 구성](custom-setup-orcl.md#custom-setup-orcl.iam-vpc) 섹션을 참조하세요.
+ CEV 또는 RDS Custom DB 인스턴스를 생성하는 AWS Identity and Access Management(IAM) 사용자는 IAM, CloudTrail 및 Amazon S3에 대한 필수 권한을 보유합니다.

  자세한 내용은 [5단계: IAM 사용자 또는 역할에 필요한 권한 부여](custom-setup-orcl.md#custom-setup-orcl.iam-user) 섹션을 참조하세요.
+ 자체 Virtual Private Cloud(VPC) 및 보안 그룹 구성을 제공합니다. 자세한 내용은 [6단계: RDS Custom for Oracle용 VPC 구성](custom-setup-orcl.md#custom-setup-orc.vpc-config) 섹션을 참조하세요.
+ RDS Custom for Oracle이 다른 AWS 서비스에 액세스하는 데 사용할 수 있는 네트워킹 구성을 제공합니다. 특정 요구 사항은 [4단계: RDS Custom for Oracle의 IAM 구성](custom-setup-orcl.md#custom-setup-orcl.iam-vpc) 단원을 참조하세요.

## RDS Custom for Oracle의 일반적 제한 사항
<a name="custom-reqs-limits.limits"></a>

RDS Custom for Oracle에는 다음과 같은 제한 사항이 적용됩니다.
+ 기존 RDS Custom for Oracle DB 인스턴스의 DB 인스턴스 식별자는 수정할 수 없습니다.
+ Oracle Database 19c 이외의 릴리스에는 Oracle 멀티테넌트 아키텍처를 지정할 수 없습니다.
+ RDS Custom for Oracle 인스턴스에서는 여러 Oracle 데이터베이스를 생성할 수 없습니다.
+ RDS Custom for Oracle DB 인스턴스 또는 기본 Amazon EC2 인스턴스는 중지할 수 없습니다. RDS Custom for Oracle DB 인스턴스의 요금 청구는 중지할 수 없습니다.
+ RDS Custom for Oracle은 자동 메모리 관리만 지원하므로 자동 공유 메모리 관리는 사용할 수 없습니다. 자세한 내용은 *Oracle 데이터베이스 관리자 안내서*의 [자동 메모리 관리](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-memory.html#GUID-04EFED7D-D1F1-43C3-B78F-0FF9AFAC02B0)를 참조하세요.
+ 프라이머리 DB 인스턴스의 `DB_UNIQUE_NAME`을 변경하지 않도록 주의하세요. 이름을 변경하면 모든 복원 작업이 중단됩니다.
+ 같은 리전에서 동시에 20개 이상의 스냅샷 복사본을 만들 수 없습니다.
+ RDS Custom for Oracle DB 인스턴스에는 `describe-reserved-db-instances` API를 사용할 수 없습니다.

RDS Custom for Oracle DB 인스턴스 수정 관련 제한 사항은 [RDS Custom for Oracle DB 인스턴스 수정](custom-managing.modifying.md)을 참조하세요. 복제 제한은 [RDS Custom for Oracle 복제본의 일반적 제한 사항](custom-rr.reqs-limitations.md#custom-rr.limitations)을 참조하세요.

## RDS Custom for Oracle의 CEV 및 AMI 제한 사항
<a name="custom-reqs-limits.cev-limits"></a>

RDS Custom for Oracle CEV 및 AMI에는 다음과 같은 제한 사항이 적용됩니다.
+ RDS Custom for Oracle CEV에서 사용할 자체 AMI를 제공할 수 없습니다. Oracle Linux 8을 사용하는 기본 AMI 또는 이전에 RDS Custom for Oracle CEV에서 사용한 AMI를 지정할 수 있습니다.
**참고**  
RDS Custom for Oracle은 일반적인 취약성 및 노출이 발견되면 새로운 기본 AMI를 릴리스합니다. 일정이 정해져 있거나 보장되지 않습니다. RDS Custom for Oracle은 보통 30일마다 새로운 기본 AMI를 게시합니다.
+ CEV를 수정하여 다른 AMI를 사용할 수는 없습니다.
+ `custom-oracle-ee` 또는 `custom-oracle-se2` 엔진 유형을 사용하는 CEV에서 CDB 인스턴스를 만들 수 없습니다. CEV에는 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb`를 사용해야 합니다.
+ RDS Custom for Oracle에서는 현재 RDS API 호출을 사용하여 RDS Custom for Oracle DB 인스턴스의 OS를 업그레이드할 수 없습니다. 차선책으로서 다음 `sudo yum update --security` 명령을 사용하여 OS를 수동으로 업데이트할 수 있습니다.

## 워크플로 생성 및 수정에 지원되지 않는 설정
<a name="custom-reqs-limits.unsupported-settings"></a>

RDS Custom for Oracle DB 인스턴스를 생성하거나 수정할 때는 다음과 같은 작업을 수행할 수 없습니다.
+ DB 인스턴스 클래스의 코어당 CPU 코어 및 스레드 수를 변경합니다.
+ 스토리지 자동 조정을 활성화합니다.
+ 백업 보존을 `0`으로 설정합니다.
+ Kerberos 인증을 구성합니다.
+ 고유한 DB 파라미터 그룹 또는 옵션 그룹을 지정합니다.
+ 성능 개선 도우미를 활성화합니다.
+ 마이너 버전 자동 업그레이드를 활성화합니다.

## AWS 계정의 DB 인스턴스 할당량
<a name="custom-reqs-limits.quotas"></a>

RDS Custom과 Amazon RDS DB 인스턴스의 합산 수가 할당량 한도를 초과하지 않아야 합니다. 예를 들어, Amazon RDS에 대한 할당량이 40개의 DB 인스턴스인 경우 RDS Custom for Oracle DB 인스턴스 20개와 Amazon RDS DB 인스턴스 20개를 보유할 수 있습니다.

# Amazon RDS Custom for Oracle을 위한 환경 설정
<a name="custom-setup-orcl"></a>

Amazon RDS Custom for Oracle DB 인스턴스를 생성하기 전에 다음 태스크를 수행해야 합니다.

**Topics**
+ [1단계: 대칭 암호화 AWS KMS 키 생성 또는 재사용](#custom-setup-orcl.cmk)
+ [2단계: AWS CLI 다운로드 및 설치](#custom-setup-orcl.cli)
+ [3단계: RDS Custom for Oracle용 CloudFormation 템플릿 추출](#custom-setup-orcl.cf.downloading)
+ [4단계: RDS Custom for Oracle의 IAM 구성](#custom-setup-orcl.iam-vpc)
+ [5단계: IAM 사용자 또는 역할에 필요한 권한 부여](#custom-setup-orcl.iam-user)
+ [6단계: RDS Custom for Oracle용 VPC 구성](#custom-setup-orc.vpc-config)

## 1단계: 대칭 암호화 AWS KMS 키 생성 또는 재사용
<a name="custom-setup-orcl.cmk"></a>

*고객 관리형 키*는 사용자가 생성, 소유 및 관리하는 AWS 계정의 AWS KMS keys입니다. 고객 관리형 대칭 암호화 KMS 키는 RDS Custom에 필수입니다. RDS Custom for Oracle DB 인스턴스를 생성할 때 KMS 키 식별자를 제공해야 합니다. 자세한 내용은 [Amazon RDS Custom for Oracle용 DB 인스턴스 구성](custom-creating.md) 단원을 참조하세요.

다음과 같은 옵션이 있습니다.
+ 기존에 AWS 계정에 고객 관리형 KMS 키가 있는 경우 RDS Custom과 함께 사용할 수 있습니다. 별도로 조치를 취할 필요가 없습니다.
+ 다른 RDS Custom 엔진에 대해 고객 관리형 대칭 암호화 KMS 키를 이미 생성한 경우 동일한 KMS 키를 재사용할 수 있습니다. 별도로 조치를 취할 필요가 없습니다.
+ 계정에 사용 중이던 고객 관리형 대칭 암호화 KMS 키가 없는 경우 *AWS Key Management Service 개발자 가이드*의 [키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) 지침에 따라 KMS 키를 생성합니다.
+ CEV 또는 RDS Custom DB 인스턴스를 생성하고 있으며 KMS 키가 다른 AWS 계정에 있는 경우 반드시 AWS CLI를 사용해야 합니다. 교차 계정 KMS 키에는 AWS 콘솔을 사용할 수 없습니다.

**중요**  
RDS Custom은 AWS 관리형 KMS 키를 지원하지 않습니다.

사용하는 대칭 암호화 키는 `kms:Decrypt` 및 `kms:GenerateDataKey` 작업에 액세스할 수 있는 권한을 IAM 인스턴스 프로파일의 AWS Identity and Access Management(IAM) 역할에 제공해야 합니다. 계정에 대칭 암호화 키를 새로 사용하는 경우에는 변경할 필요가 없습니다. 아니면 대칭 암호화 키의 정책이 이러한 작업에 액세스할 권한을 부여할 수 있는지 확인하세요.

자세한 내용은 [4단계: RDS Custom for Oracle의 IAM 구성](#custom-setup-orcl.iam-vpc) 섹션을 참조하세요.

RDS Custom for Oracle의 IAM 구성에 대한 자세한 내용은 [4단계: RDS Custom for Oracle의 IAM 구성](#custom-setup-orcl.iam-vpc) 섹션을 참조하세요.

## 2단계: AWS CLI 다운로드 및 설치
<a name="custom-setup-orcl.cli"></a>

AWS에서는 RDS Custom 기능을 사용할 수 있는 명령줄 인터페이스를 제공합니다. AWS CLI의 버전 1 또는 버전 2를 사용할 수 있습니다.

AWS CLI 다운로드 및 설치에 대한 내용은 [AWS CLI의 최신 버전 설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 중 하나에 해당하는 경우 이 단계를 건너뜁니다.
+ AWS Management Console에서만 RDS Custom에 액세스하려는 경우.
+ Amazon RDS용 AWS CLI 또는 다른 RDS Custom DB 엔진을 이미 다운로드한 경우.

## 3단계: RDS Custom for Oracle용 CloudFormation 템플릿 추출
<a name="custom-setup-orcl.cf.downloading"></a>

설정을 간소화하려면 CloudFormation 템플릿을 사용하여 CloudFormation 스택을 만드는 것이 좋습니다. IAM과 VPC를 수동으로 구성하려면 이 단계를 건너뜁니다.

**Topics**
+ [3a단계: CloudFormation 템플릿 파일 다운로드](#custom-setup-orcl.cf.dl-templates)
+ [3b단계: custom-oracle-iam.json 추출](#custom-setup-orcl.cf.downloading.ca-role)
+ [3c단계: custom-vpc.json 추출](#custom-setup-orcl.cf.downloading.ca-pn)

### 3a단계: CloudFormation 템플릿 파일 다운로드
<a name="custom-setup-orcl.cf.dl-templates"></a>

CloudFormation 템플릿이란 스택을 구성하는 AWS 리소스의 선언입니다. 템플릿은 JSON 파일로 저장됩니다.

**CloudFormation 템플릿 파일을 다운로드하려면**

1. [custom-oracle-iam.zip](samples/custom-oracle-iam.zip) 링크의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 열고 **다른 이름으로 링크 저장**을 선택합니다.

1. 파일을 컴퓨터에 저장합니다.

1. [custom-vpc.zip](samples/custom-vpc.zip) 링크에 대해 이전 단계를 반복합니다.

   RDS Custom의 VPC를 이미 구성한 경우 이 단계를 건너뜁니다.

### 3b단계: custom-oracle-iam.json 추출
<a name="custom-setup-orcl.cf.downloading.ca-role"></a>

다운로드한 `custom-oracle-iam.zip` 파일을 연 다음 `custom-oracle-iam.json` 파일을 추출합니다. 파일의 시작 부분은 다음과 같습니다.

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "EncryptionKey": {
      "Type": "String",
      "Default": "*",
      "Description": "KMS Key ARN for encryption of data managed by RDS Custom and by DB Instances."
    }
  },
  "Resources": {
    "RDSCustomInstanceServiceRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "RoleName": { "Fn::Sub": "AWSRDSCustomInstanceRole-${AWS::Region}" },
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "ec2.amazonaws.com"
              }
            }
          ]
        },...
```

### 3c단계: custom-vpc.json 추출
<a name="custom-setup-orcl.cf.downloading.ca-pn"></a>

**참고**  
기존 RDS Custom for Oracle용 VPC를 이미 구성한 경우 이 단계를 건너뜁니다. 자세한 내용은 [수동으로 RDS Custom for Oracle용 VPC 구성](#custom-setup-orcl.vpc) 섹션을 참조하세요.

다운로드한 `custom-vpc.zip` 파일을 연 다음 `custom-vpc.json` 파일을 추출합니다. 파일의 시작 부분은 다음과 같습니다.

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "PrivateVpc": {
      "Type": "AWS::EC2::VPC::Id",
      "Description": "Private VPC Id to use for RDS Custom DB Instances"
    },
    "PrivateSubnets": {
      "Type": "List<AWS::EC2::Subnet::Id>",
      "Description": "Private Subnets to use for RDS Custom DB Instances"
    },
    "RouteTable": {
      "Type": "String",
      "Description": "Route Table that must be associated with the PrivateSubnets and used by S3 VPC Endpoint",
      "AllowedPattern": "rtb-[0-9a-z]+"
    }
  },
  "Resources": {
    "DBSubnetGroup": {
      "Type": "AWS::RDS::DBSubnetGroup",
      "Properties": {
        "DBSubnetGroupName": "rds-custom-private",
        "DBSubnetGroupDescription": "RDS Custom Private Network",
        "SubnetIds": {
          "Ref": "PrivateSubnets"
        }
      }
    },...
```

## 4단계: RDS Custom for Oracle의 IAM 구성
<a name="custom-setup-orcl.iam-vpc"></a>

IAM 역할 또는 IAM 사용자(IAM 엔터티라고 함)를 사용하여 콘솔 또는 AWS CLI를 사용하는 RDS Custom DB 인스턴스를 생성할 수 있습니다. 이 IAM 엔터티에는 인스턴스를 생성하는 데 필요한 권한이 있어야 합니다.

CloudFormation 또는 수동 단계를 사용하여 IAM을 구성할 수 있습니다.

**중요**  
CloudFormation을 사용하여 RDS Custom for Oracle 환경을 구성하는 것이 좋습니다. 이 방법은 가장 쉽고 오류가 가장 적습니다.

**Topics**
+ [CloudFormation을 사용하여 IAM 구성](#custom-setup-orcl.cf.config-iam)
+ [수동으로 IAM 역할과 인스턴스 프로파일 생성](#custom-setup-orcl.iam)

### CloudFormation을 사용하여 IAM 구성
<a name="custom-setup-orcl.cf.config-iam"></a>

IAM에 CloudFormation 템플릿을 사용할 경우, 다음과 같은 필수 리소스가 생성됩니다.
+ 이름이 `AWSRDSCustomInstanceProfile-region`인 인스턴스 프로파일
+ `AWSRDSCustomInstanceRole-region`이라는 서비스 역할
+ 서비스 역할에 연결된 `AWSRDSCustomIamRolePolicy`라는 이름의 액세스 정책

**CloudFormation을 사용하여 IAM을 구성하는 방법**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 스택 생성 마법사를 시작하고 **Create Stack**(스택 생성)을 선택합니다.

1. **Create stack**(스택 생성) 페이지에서 다음을 수행합니다.

   1. **템플릿 준비**에서 **템플릿 준비가 완료되었습니다**를 선택합니다.

   1. **템플릿 소스**로 **템플릿 파일 업로드**를 선택합니다.

   1. **파일 선택**의 경우 **custom-oracle-iam.json**을 찾아 선택합니다.

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

1. **스택 세부 정보 지정** 페이지에서 다음 작업을 수행합니다.

   1. **Stack name**(스택 이름)에 **custom-oracle-iam**을 입력합니다.

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

1. **스택 옵션 구성** 페이지에서 **다음**을 선택합니다.

1. **custom-oracle-iam 검토** 페이지에서 다음을 수행합니다.

   1. ****사용자 지정 이름을 사용하여 CloudFormation이 IAM 리소스를 생성할 수 있음에 동의합니다**** 확인란을 선택합니다.

   1. **Submit**(제출)을 선택합니다.

   CloudFormation은 RDS Custom for Oracle에 필요한 IAM 역할을 생성합니다. 왼쪽 패널의 **custom-oracle-iam**에 **CREATE\$1COMPLETE**이 표시되면 다음 단계를 진행합니다.

1. 왼쪽 패널에서 **custom-oracle-iam**을 선택합니다. 오른쪽 패널에서 다음을 수행합니다.

   1. **스택 정보**를 선택합니다. 스택에는 **arn:aws:cloudformation:*region*:*account-no*:stack/custom-oracle-iam/*identifier*** 형식으로 된 ID가 있습니다.

   1. **리소스**를 선택합니다. 다음과 같은 모양이어야 합니다.
      + **AWSRDSCustomInstanceProfile-*region***이라는 이름의 인스턴스 프로파일
      + **AWSRDSCustomInstanceRole-*region***이라는 이름의 서비스 역할

      RDS Custom DB 인스턴스를 생성할 경우 인스턴스 프로파일 ID를 제공해야 합니다.

### 수동으로 IAM 역할과 인스턴스 프로파일 생성
<a name="custom-setup-orcl.iam"></a>

CloudFormation을 사용하는 방법이 가장 쉽습니다. 하지만 IAM을 수동으로도 구성할 수 있습니다. 수동으로 설정하려면 다음을 수행합니다.
+ [1단계: IAM 역할 AWSRDSCustomInstanceRoleForRdsCustomInstance 생성](#custom-setup-orcl.iam.create-role).
+ [2단계: AWSRDSCustomInstanceRoleForRdsCustomInstance에 액세스 정책 추가](#custom-setup-orcl.iam.add-policy).
+ [2단계: AWSRDSCustomInstanceRoleForRdsCustomInstance에 액세스 정책 추가](#custom-setup-orcl.iam.create-profile).
+ [4단계: AWSRDSCustomInstanceRoleForRdsCustomInstance를 AWSRDSCustomInstanceProfile에 추가](#custom-setup-orcl.iam.add-profile).

#### 1단계: IAM 역할 AWSRDSCustomInstanceRoleForRdsCustomInstance 생성
<a name="custom-setup-orcl.iam.create-role"></a>

이 단계에서는 이름 지정 형식을 사용하여 역할을 생성합니다`AWSRDSCustomInstanceRole-region`. Amazon EC2에서는 신뢰 정책을 사용하여 역할을 위임할 수 있습니다. 다음 예시에서는 DB 인스턴스를 생성하려는 환경 변수 `$REGION`을 AWS 리전으로 설정했다고 가정합니다.

```
aws iam create-role \
  --role-name AWSRDSCustomInstanceRole-$REGION \
  --assume-role-policy-document '{
    "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
              "Service": "ec2.amazonaws.com"
          }
        }
      ]
    }'
```

#### 2단계: AWSRDSCustomInstanceRoleForRdsCustomInstance에 액세스 정책 추가
<a name="custom-setup-orcl.iam.add-policy"></a>

인라인 정책을 IAM 역할에 포함시켰을 때 인라인 정책은 역할의 액세스(권한) 정책의 일환으로 사용됩니다. 사용자는 Amazon EC2가 메시지를 보내고 받으며 다양한 작업을 수행할 수 있도록 허용하는 `AWSRDSCustomIamRolePolicy` 정책을 생성하게 됩니다.

다음 예제에서는 이름이 `AWSRDSCustomIamRolePolicy`인 액세스 정책을 생성하여 `AWSRDSCustomInstanceRole-region` IAM 역할에 추가합니다. 이 예제에서는 다음과 같은 환경 변수를 설정했다고 가정합니다.

`$REGION`  
이 변수를 DB 인스턴스를 생성할 AWS 리전으로 설정합니다.

`$ACCOUNT_ID`  
이 변수를 사용자의 AWS 계정 번호로 설정합니다.

`$KMS_KEY`  
이 변수를 RDS Custom DB 인스턴스에 사용할 AWS KMS key의 Amazon 리소스 이름(ARN)으로 설정합니다. 두 개 이상의 KMS 키를 지정하려면 문 ID(시드) 11의 `Resources` 섹션에 추가합니다.

```
aws iam put-role-policy \
  --role-name AWSRDSCustomInstanceRole-$REGION \
  --policy-name AWSRDSCustomIamRolePolicy \
  --policy-document '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeAssociation",
                "ssm:GetDeployablePatchSnapshotForInstance",
                "ssm:GetDocument",
                "ssm:DescribeDocument",
                "ssm:GetManifest",
                "ssm:GetParameter",
                "ssm:GetParameters",
                "ssm:ListAssociations",
                "ssm:ListInstanceAssociations",
                "ssm:PutInventory",
                "ssm:PutComplianceItems",
                "ssm:PutConfigurePackageResult",
                "ssm:UpdateAssociationStatus",
                "ssm:UpdateInstanceAssociationStatus",
                "ssm:UpdateInstanceInformation",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceInformation",
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Action": [
                "ec2messages:AcknowledgeMessage",
                "ec2messages:DeleteMessage",
                "ec2messages:FailMessage",
                "ec2messages:GetEndpoint",
                "ec2messages:GetMessages",
                "ec2messages:SendReply"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "3",
            "Effect": "Allow",
            "Action": [
                "logs:PutRetentionPolicy",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams",
                "logs:DescribeLogGroups",
                "logs:CreateLogStream",
                "logs:CreateLogGroup"
            ],
            "Resource": [
                "arn:aws:logs:'$REGION':'$ACCOUNT_ID':log-group:rds-custom-instance*"
            ]
        },
        {
            "Sid": "4",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::do-not-delete-rds-custom-*/*"
            ]
        },
        {
            "Sid": "5",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": [
                        "RDSCustomForOracle/Agent"
                    ]
                }
            }
        },
        {
            "Sid": "6",
            "Effect": "Allow",
            "Action": [
                "events:PutEvents"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "7",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": [
                "arn:aws:secretsmanager:'$REGION':'$ACCOUNT_ID':secret:do-not-delete-rds-custom-*",
                "arn:aws:secretsmanager:'$REGION':'$ACCOUNT_ID':secret:rds-custom!oracle-do-not-delete-*"
            ]
        },
        {
           "Sid": "8",
           "Effect": "Allow",
           "Action": [
             "s3:ListBucketVersions"
           ],
           "Resource": [
             "arn:aws:s3:::do-not-delete-rds-custom-*"
           ]
         },
         {
            "Sid": "9",
            "Effect": "Allow",
            "Action": "ec2:CreateSnapshots",
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/AWSRDSCustom": "custom-oracle"
                }
            }
          },
          {
            "Sid": "10",
            "Effect": "Allow",
            "Action": "ec2:CreateSnapshots",
            "Resource": [
                "arn:aws:ec2:*::snapshot/*"
            ]
          },
          {
            "Sid": "11",
            "Effect": "Allow",
            "Action": [
              "kms:Decrypt",
              "kms:GenerateDataKey"
            ],
            "Resource": [
              "arn:aws:kms:'$REGION':'$ACCOUNT_ID':key/'$KMS_KEY'"
            ]
          },
          {
            "Sid": "12",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "ec2:CreateAction": [
                        "CreateSnapshots"
                    ]
                }
            }
        },
        {
            "Sid": "13",
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage",
                "sqs:ReceiveMessage",
                "sqs:DeleteMessage",
                "sqs:GetQueueUrl"
            ],
            "Resource": "arn:aws:sqs:'$REGION':'$ACCOUNT_Id':do-not-delete-rds-custom-*",
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/AWSRDSCustom": "custom-oracle"
                }
            }
        }
    ]
}'
```

#### 3단계: RDS Custom 인스턴스 프로파일 AWSRDSCustomInstanceProfile 생성
<a name="custom-setup-orcl.iam.create-profile"></a>

인스턴스 프로파일은 단일 IAM 역할을 포함하는 컨테이너입니다. RDS Custom은 인스턴스 프로파일을 사용하여 인스턴스에 역할을 전달합니다.

CLI를 사용하여 역할을 생성하면 역할과 인스턴스 프로파일이 별개의 작업으로 생성되며 이름은 각각 다를 수 있습니다. 다음과 같이 IAM 인스턴스 프로파일을 생성하고 `AWSRDSCustomInstanceProfile-region` 형식을 사용하여 이름을 지정합니다. 다음 예시에서는 DB 인스턴스를 생성하려는 환경 변수 `$REGION`을 AWS 리전으로 설정했다고 가정합니다.

```
aws iam create-instance-profile \
    --instance-profile-name AWSRDSCustomInstanceProfile-$REGION
```

#### 4단계: AWSRDSCustomInstanceRoleForRdsCustomInstance를 AWSRDSCustomInstanceProfile에 추가
<a name="custom-setup-orcl.iam.add-profile"></a>

이전에 생성한 인스턴스 프로파일에 IAM 역할을 추가합니다. 다음 예시에서는 DB 인스턴스를 생성하려는 환경 변수 `$REGION`을 AWS 리전으로 설정했다고 가정합니다.

```
aws iam add-role-to-instance-profile \
    --instance-profile-name AWSRDSCustomInstanceProfile-$REGION \
    --role-name AWSRDSCustomInstanceRole-$REGION
```

## 5단계: IAM 사용자 또는 역할에 필요한 권한 부여
<a name="custom-setup-orcl.iam-user"></a>

CEV 또는 RDS Custom DB 인스턴스를 생성하는 IAM 보안 주체(사용자 또는 역할)에는 다음 정책 중 하나가 있어야 합니다.
+ `AdministratorAccess` 정책
+ Amazon S3 및 AWS KMS, CEV 생성 및 DB 인스턴스 생성에 필요한 권한이 있는 `AmazonRDSFullAccess` 정책

**Topics**
+ [Amazon S3 및 AWS KMS에 필요한 IAM 권한](#custom-setup-orcl.s3-kms)
+ [CEV를 생성하는 데 필요한 IAM 권한](#custom-setup-orcl.cev)
+ [CEV에서 DB 인스턴스를 생성하는 데 필요한 IAM 권한](#custom-setup-orcl.db)

### Amazon S3 및 AWS KMS에 필요한 IAM 권한
<a name="custom-setup-orcl.s3-kms"></a>

CEV 또는 RDS Custom for Oracle DB 인스턴스를 생성하려면 IAM 보안 주체가 Amazon S3 및 AWS KMS에 액세스해야 합니다. 다음 샘플 JSON 정책은 필요한 권한을 부여합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketPolicy",
                "s3:PutBucketObjectLockConfiguration",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateKmsGrant",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}
```

------

`kms:CreateGrant` 권한에 대한 자세한 내용은 [AWS KMS key 관리](Overview.Encryption.Keys.md) 섹션을 참조하세요.

### CEV를 생성하는 데 필요한 IAM 권한
<a name="custom-setup-orcl.cev"></a>

CEV를 생성하려면 IAM 보안 주체는 다음과 같은 추가 권한이 필요합니다.

```
s3:GetObjectAcl
s3:GetObject
s3:GetObjectTagging
s3:ListBucket
mediaimport:CreateDatabaseBinarySnapshot
```

다음 샘플 JSON 정책은 *my-custom-installation-files* 버킷 및 내용에 액세스하는 데 필요한 추가 권한을 부여합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessToS3MediaBucket",
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAcl",
                "s3:GetObject",
                "s3:GetObjectTagging",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::my-custom-installation-files",
                "arn:aws:s3:::my-custom-installation-files/*"
            ]
        },
        {
            "Sid": "PermissionForByom",
            "Effect": "Allow",
            "Action": [
                "mediaimport:CreateDatabaseBinarySnapshot"
            ],
            "Resource": "*"
        }
    ]
}
```

------

S3 버킷 정책을 사용하여 발신자 계정에 Amazon S3에 대해 유사한 권한을 부여할 수 있습니다.

### CEV에서 DB 인스턴스를 생성하는 데 필요한 IAM 권한
<a name="custom-setup-orcl.db"></a>

기존 CEV에서 RDS Custom for Oracle DB 인스턴스를 생성하려면 IAM 보안 주체에 다음과 같은 추가 권한이 필요합니다.

```
iam:SimulatePrincipalPolicy
cloudtrail:CreateTrail
cloudtrail:StartLogging
```

다음 샘플 JSON 정책은 IAM 역할 및 로그 정보를 검증하는 데 필요한 권한을 AWS CloudTrail에 부여합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ValidateIamRole",
            "Effect": "Allow",
            "Action": "iam:SimulatePrincipalPolicy",
            "Resource": "*"
        },
        {
            "Sid": "CreateCloudTrail",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:CreateTrail",
                "cloudtrail:StartLogging"
            ],
            "Resource": "arn:aws:cloudtrail:*:*:trail/do-not-delete-rds-custom-*"
        }
    ]
}
```

------

## 6단계: RDS Custom for Oracle용 VPC 구성
<a name="custom-setup-orc.vpc-config"></a>

RDS Custom DB 인스턴스는 Amazon EC2 인스턴스 또는 Amazon RDS 인스턴스와 마찬가지로 Amazon VPC 서비스를 기반으로 하는 Virtual Private Cloud(VPC)에 있습니다. 자체 VPC를 제공하고 구성해야 RDS Custom for SQL Server와 달리, RDS Custom for Oracle은 액세스 제어 목록이나 보안 그룹을 생성하지 않습니다. 사용자의 자체 보안 그룹, 서브넷, 라우팅 테이블을 연결해야 합니다.

CloudFormation 또는 수동 프로세스를 사용하여 Virtual Private Cloud(VPC)를 구성할 수 있습니다.

**중요**  
CloudFormation을 사용하여 RDS Custom for Oracle 환경을 구성하는 것이 좋습니다. 이 방법은 가장 쉽고 오류가 가장 적습니다.

**Topics**
+ [CloudFormation을 사용하여 VPC 구성(권장)](#custom-setup-orcl.cf.config-vpc)
+ [수동으로 RDS Custom for Oracle용 VPC 구성](#custom-setup-orcl.vpc)

### CloudFormation을 사용하여 VPC 구성(권장)
<a name="custom-setup-orcl.cf.config-vpc"></a>

다른 RDS Custom 엔진의 VPC를 이미 구성했고 기존 VPC를 재사용하려는 경우 이 단계를 건너뜁니다. 이 섹션에서는 다음과 같이 가정합니다.
+ 기존에 CloudFormation을 사용하여 IAM 인스턴스 프로파일과 역할을 생성했습니다.
+ 라우팅 테이블 ID를 알고 있습니다.

  DB 인스턴스가 프라이빗 인스턴스가 되려면 프라이빗 서브넷에 있어야 합니다. 서브넷이 프라이빗이 되려면 기본 인터넷 게이트웨이가 있는 라우팅 테이블과 연결되어 있지 않아야 합니다. 자세한 내용은 *Amazon VPC 사용 설명서*의 [라우팅 테이블 구성](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html)을 참조하세요.

VPC에 CloudFormation 템플릿을 사용할 경우 다음과 같은 리소스가 생성됩니다.
+ 프라이빗 VPC
+ 이름이 `rds-custom-private`인 서브넷 그룹
+ DB 인스턴스가 종속 AWS 서비스와 통신하는 데 사용하는 다음 VPC 엔드포인트:
  + `com.amazonaws.region.ec2messages`
  + `com.amazonaws.region.events`
  + `com.amazonaws.region.logs`
  + `com.amazonaws.region.monitoring`
  + `com.amazonaws.region.s3`
  + `com.amazonaws.region.secretsmanager`
  + `com.amazonaws.region.ssm`
  + `com.amazonaws.region.ssmmessages`

  다중 AZ 배포를 생성하는 경우:
  + `com.amazonaws.region.sqs`
**참고**  
기존 계정을 사용하는 복잡한 네트워킹 설정의 경우 액세스 권한이 아직 없다면 종속 서비스에 대한 액세스를 수동으로 구성하는 것이 좋습니다. 자세한 내용은 [VPC가 종속 AWS 서비스에 액세스할 수 있는지 확인](#custom-setup-orcl.vpc.endpoints) 섹션을 참조하세요.

**CloudFormation을 사용하여 VPC를 구성하는 방법**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 스택 생성 마법사를 시작하고 **스택 생성**을 선택한 다음, **새 리소스 사용(표준)**을 선택합니다.

1. **스택 생성** 페이지에서 다음을 수행합니다.

   1. **템플릿 준비**에서 **템플릿 준비가 완료되었습니다**를 선택합니다.

   1. **Template source**(템플릿 소스)로 **Upload a template file**(템플릿 파일 업로드)을 선택합니다.

   1. **파일 선택(Choose file)**에서 `custom-vpc.json`을 찾아 선택합니다.

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

1. **스택 세부 정보 지정** 페이지에서 다음 작업을 수행합니다.

   1. **Stack name**(스택 이름)에 **custom-vpc**를 입력합니다.

   1. **파라미터(Parameters)**로 RDS Custom DB 인스턴스에 사용할 프라이빗 서브넷을 선택합니다.

   1. RDS Custom DB 인스턴스에 사용할 프라이빗 VPC ID를 선택합니다.

   1. 프라이빗 서브넷과 연결된 라우팅 테이블을 입력합니다.

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

1. **스택 옵션 구성** 페이지에서 **다음**을 선택합니다.

1. **custom-vpc 검토** 페이지에서 **제출**을 선택합니다.

   CloudFormation은 프라이빗 VPC를 구성합니다. 왼쪽 패널의 **custom-vpc**에 **CREATE\$1COMPLETE**이 표시되면 다음 단계를 진행합니다.

1. (선택 사항) VPC 세부 정보를 검토합니다. **스택** 창에서 **custom-vpc**를 선택합니다. 오른쪽 창에서 다음을 수행합니다.

   1. **스택 정보**를 선택합니다. 스택에는 **arn:aws:cloudformation:*region*:*account-no*:stack/custom-vpc/*identifier*** 형식으로 된 ID가 있습니다.

   1. **리소스**를 선택합니다. **rds-custom-private**이라는 이름의 서브넷 그룹, 그리고 **vpce-*string***이라는 이름 지정 형식을 사용하는 몇몇 VPC 엔드포인트가 표시되어야 합니다. 각 엔드포인트는 RDS Custom이 통신을 수행해야 하는 AWS 서비스에 해당합니다. 자세한 내용은 [VPC가 종속 AWS 서비스에 액세스할 수 있는지 확인](#custom-setup-orcl.vpc.endpoints) 섹션을 참조하세요.

   1. **파라미터**를 선택합니다. 스택을 생성했을 때 지정한 프라이빗 서브넷, 프라이빗 VPC, 라우팅 테이블이 표시되어야 합니다. DB 인스턴스를 생성할 경우, VPC ID 및 서브넷 그룹을 제공해야 합니다.

### 수동으로 RDS Custom for Oracle용 VPC 구성
<a name="custom-setup-orcl.vpc"></a>

CloudFormation을 사용하여 VPC 생성을 자동화하지 않고 VPC를 수동으로 구성할 수 있습니다. 이 옵션은 기존 리소스를 사용하는 복잡한 네트워킹 설정이 있는 경우에 가장 적합할 수 있습니다.

**Topics**
+ [VPC가 종속 AWS 서비스에 액세스할 수 있는지 확인](#custom-setup-orcl.vpc.endpoints)
+ [인스턴스 메타데이터 서비스 구성](#custom-setup-orcl.vpc.imds)

#### VPC가 종속 AWS 서비스에 액세스할 수 있는지 확인
<a name="custom-setup-orcl.vpc.endpoints"></a>

RDS Custom은 DB 인스턴스에서 다른 AWS 서비스로 통신을 전송합니다. RDS Custom DB 인스턴스를 생성하는 서브넷에서 다음 서비스에 액세스할 수 있는지 확인합니다.
+ Amazon CloudWatch(`com.amazonaws.region.monitoring`)
+ Amazon CloudWatch Logs(`com.amazonaws.region.logs`)
+ Amazon CloudWatch Events(`com.amazonaws.region.events`)
+ Amazon EC2(`com.amazonaws.region.ec2` 및 `com.amazonaws.region.ec2messages`)
+ Amazon S3(`com.amazonaws.region.s3`)
+ AWS Secrets Manager (`com.amazonaws.region.secretsmanager`)
+ AWS Systems Manager (`com.amazonaws.region.ssm` 및 `com.amazonaws.region.ssmmessages`)

다중 AZ 배포를 생성하는 경우
+ Amazon Simple Queue Service(`com.amazonaws.region.sqs`)

필요한 서비스와 RDS Custom이 통신할 수 없는 경우 다음 이벤트가 게시됩니다.

```
Database instance in incompatible-network. SSM Agent connection not available. Amazon RDS can't connect to the dependent AWS services.
```

```
Database instance in incompatible-network. Amazon RDS can't connect to dependent AWS services. Make sure port 443 (HTTPS) allows outbound connections, and try again. "Failed to connect to the following services: s3 events"
```

`incompatible-network` 오류를 방지하려면 RDS Custom DB 인스턴스와 AWS 서비스 간의 통신과 관련된 VPC 구성 요소가 다음 요구 사항을 충족하는지 확인합니다.
+ DB 인스턴스는 포트 443에서 다른 AWS 서비스로 아웃바운드 연결을 생성할 수 있습니다.
+ VPC는 RDS Custom DB 인스턴스에서 시작된 요청에 대한 수신 응답을 허용합니다.
+ RDS Custom는 각 AWS 서비스에 대한 엔드포인트의 도메인 이름을 정확하게 확인할 수 있습니다.

다른 RDS Custom DB 엔진의 VPC를 이미 구성한 경우 해당 VPC를 재사용하고 이 프로세스를 건너뛸 수 있습니다.

#### 인스턴스 메타데이터 서비스 구성
<a name="custom-setup-orcl.vpc.imds"></a>

인스턴스가 다음을 수행할 수 있는지 확인하세요.
+ 인스턴스 메타데이터 서비스 버전 2(IMDSv2)를 사용하여 인스턴스 메타데이터 서비스에 액세스합니다.
+ 포트 80(HTTP)을 통한 IMDS 링크 IP 주소로의 아웃바운드 통신을 허용합니다.
+ IMDSv2 링크인 `http://169.254.169.254`에서 인스턴스 메타데이터를 요청합니다.

자세한 내용은 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)Amazon EC2 사용 설명서의 *IMDSv2 사용*을 참조하세요.

RDS Custom for Oracle 자동화는 기본 Amazon EC2 인스턴스에서 `HttpTokens=enabled`를 설정하여 기본적으로 IMDSv2를 사용합니다. 하지만 필요할 경우 IMDSv1을 사용할 수 있습니다. 자세한 내용을 알아보려면 **Amazon EC2 사용 설명서의 [인스턴스 메타데이터 옵션 구성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)을 참조하세요.

# 사용자 지정 엔진 버전의 Amazon RDS Custom for Oracle으로 작업
<a name="custom-cev"></a>

Amazon RDS Custom for Oracle의 *사용자 지정 엔진 버전(CEV)*은 데이터베이스 엔진 및 특정 Amazon Machine Image(AMI)의 바이너리 볼륨 스냅샷입니다. RDS Custom for Oracle에서는 기본적으로 RDS Custom에서 관리되는 최신 AMI를 사용하지만, 사용자가 이전 CEV에서 사용된 AMI를 지정하는 것도 가능합니다. 데이터베이스 설치 파일은 Amazon S3에 저장되며, RDS Custom은 이 설치 파일과 AMI를 사용하여 CEV를 생성합니다.

**Topics**
+ [CEV 생성 준비](custom-cev.preparing.md)
+ [CEV 생성](custom-cev.create.md)
+ [CEV 상태 수정](custom-cev.modify.md)
+ [Amazon RDS Custom for Oracle의 CEV 세부 정보 보기](custom-cev.view.md)
+ [CEV 삭제](custom-cev.delete.md)

# CEV 생성 준비
<a name="custom-cev.preparing"></a>

CEV를 생성하려면 다음 릴리스 중 하나에 대해 Amazon S3 버킷에 저장된 설치 파일 및 패치를 사용해야 합니다.
+ Oracle Database 19c
+ Oracle Database 18c
+ Oracle Database 12c 릴리스 2(12.2)
+ Oracle Database 12c 릴리스 1(12.1)

예를 들어, 2021년 4월 RU/RUR for Oracle Database 19c 또는 설치 파일과 패치의 유효한 조합을 사용할 수 있습니다. RDS Custom for Oracle이 지원하는 버전 및 리전에 대한 자세한 내용은 [RDS Oracle을 지원하는 RDS Custom](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.html#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.ora)을 참조하세요.

**Topics**
+ [1단계(선택 사항): 매니페스트 템플릿 다운로드](#custom-cev.preparing.templates)
+ [2단계: Oracle Software Delivery Cloud에서 데이터베이스 설치 파일 및 패치 다운로드](#custom-cev.preparing.download)
+ [3단계: Amazon S3에 설치 파일 업로드](#custom-cev.preparing.s3)
+ [4단계(선택 사항): 여러 AWS 계정에 걸쳐 S3의 설치 미디어 공유](#custom-cev.preparing.accounts)
+ [5단계: CEV 매니페스트 준비](#custom-cev.preparing.manifest)
+ [6단계(선택 사항): CEV 매니페스트 검증](#custom-cev.preparing.validating)
+ [7단계: 필요한 IAM 권한 추가](#custom-cev.preparing.iam)

## 1단계(선택 사항): 매니페스트 템플릿 다운로드
<a name="custom-cev.preparing.templates"></a>

*CEV 매니페스트*는 CEV의 데이터베이스 설치 .zip 파일 목록이 포함된 JSON 문서입니다. CEV를 생성하려면 다음을 수행합니다.

1. CEV에 포함하려는 Oracle 데이터베이스 설치 파일을 식별합니다.

1. 설치 파일을 다운로드합니다.

1. 설치 파일을 나열하는 JSON 매니페스트를 생성합니다.

RDS Custom for Oracle은 지원되는 각 Oracle 데이터베이스 릴리스에 대한 권장 .zip 파일이 포함된 JSON 매니페스트 템플릿을 제공합니다. 예를 들어, 다음 템플릿은 19.17.0.0.0 RU용입니다.

```
{
    "mediaImportTemplateVersion": "2020-08-14",
    "databaseInstallationFileNames": [
        "V982063-01.zip"
    ],
    "opatchFileNames": [
        "p6880880_190000_Linux-x86-64.zip"
    ],
    "psuRuPatchFileNames": [
        "p34419443_190000_Linux-x86-64.zip",
        "p34411846_190000_Linux-x86-64.zip"
    ],
    "otherPatchFileNames": [
        "p28852325_190000_Linux-x86-64.zip",
        "p29997937_190000_Linux-x86-64.zip",
        "p31335037_190000_Linux-x86-64.zip",
        "p32327201_190000_Linux-x86-64.zip",
        "p33613829_190000_Linux-x86-64.zip",
        "p34006614_190000_Linux-x86-64.zip",
        "p34533061_190000_Linux-x86-64.zip",
        "p34533150_190000_Generic.zip",
        "p28730253_190000_Linux-x86-64.zip",
        "p29213893_1917000DBRU_Generic.zip",
        "p33125873_1917000DBRU_Linux-x86-64.zip",
        "p34446152_1917000DBRU_Linux-x86-64.zip"
    ]
}
```

각 템플릿에는 패치 다운로드 지침, .zip 파일의 URL, 파일 체크섬이 포함된 관련 Readme 파일이 있습니다. 이러한 템플릿을 그대로 사용하거나 자체 패치를 사용하여 수정할 수 있습니다. 템플릿을 검토하려면 로컬 디스크에 [custom-oracle-manifest.zip](samples/custom-oracle-manifest.zip)을 다운로드한 후 파일 보관 애플리케이션을 사용하여 파일을 엽니다. 자세한 내용은 [5단계: CEV 매니페스트 준비](#custom-cev.preparing.manifest) 섹션을 참조하세요.

## 2단계: Oracle Software Delivery Cloud에서 데이터베이스 설치 파일 및 패치 다운로드
<a name="custom-cev.preparing.download"></a>

CEV에 사용할 설치 파일을 확인했으면 해당 파일을 로컬 시스템에 다운로드하세요. Oracle Database 설치 파일 및 패치는 Oracle Software Delivery Cloud에서 호스팅됩니다. 각 CEV에는 Oracle Database 19c 또는 Oracle Database 12c 릴리스 2(12.2), 그리고 패치 목록(선택 사항)이 필요합니다.

**Oracle Database용 데이터베이스 설치 파일을 다운로드하려면**

1. [https://edelivery.oracle.com/](https://edelivery.oracle.com/)으로 이동하여 로그인합니다.

1. 검색 상자에 **Oracle Database Enterprise Edition** 또는 **Oracle Database Standard Edition 2**를 입력하고 **검색**을 선택합니다.

1. 다음 기본 릴리스 중 하나를 선택합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-cev.preparing.html)

1. **Continue**(계속)를 선택합니다.

1. **Download Queue**(대기열 다운로드) 확인란을 선택 취소합니다.

1. 기본 릴리스에 해당하는 옵션을 선택합니다.
   + **Oracle Database 19.3.0.0.0 - 장기 지원 릴리스**.
   + **Oracle Database 18.0.0.0.0**
   + **Oracle Database 12.2.0.1.0**.
   + **Oracle Database 12.1.0.2.0**.

1. **Platform/Languages**(플랫폼/언어)에서 **Linux x86-64**를 선택합니다.

1. **계속**을 선택한 다음 Oracle 라이선스 계약에 서명합니다.

1. 데이터베이스 릴리스에 해당하는 .zip 파일을 선택합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-cev.preparing.html)

1. 원하는 Oracle 패치를 `updates.oracle.com` 또는 `support.oracle.com`에서 로컬 시스템으로 다운로드합니다. 다음 위치에서 패치의 URL을 찾을 수 있습니다.
   + [1단계(선택 사항): 매니페스트 템플릿 다운로드](#custom-cev.preparing.templates)에서 다운로드한 .zip 파일의 Readme 파일
   + [Release notes for Amazon Relational Database Service (Amazon RDS) for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes)(Amazon Relational Database Service(RDS) for Oracle에 대한 릴리스 노트)의 Release Update(RU)에 나열된 패치

## 3단계: Amazon S3에 설치 파일 업로드
<a name="custom-cev.preparing.s3"></a>

AWS CLI를 사용하여 Oracle 설치 및 패치 파일을 Amazon S3 업로드할 수 있습니다. 단, 설치 파일이 포함된 S3 버킷이 CEV와 동일한 AWS 리전에 있어야 합니다.

이 섹션의 예제에서는 다음 자리 표시자를 사용합니다.
+ `install-or-patch-file.zip` - Oracle 설치 미디어 파일입니다. 예를 들어, p32126828\$1190000\$1Linux-x86-64.zip은 패치입니다.
+ `amzn-s3-demo-destination-bucket` - 업로드된 설치 파일에 지정된 Amazon S3 버킷입니다.
+ `123456789012/cev1` - Amazon S3 버킷의 접두사(선택 사항)입니다.
+ `amzn-s3-demo-source-bucket` - 필요에 따라 파일을 단계화할 수 있는 Amazon S3 버킷입니다.

**Topics**
+ [3a단계: S3 버킷이 올바른 AWS 리전에 있는지 확인](#custom-cev.preparing.s3.verify-region)
+ [3b단계: S3 버킷 정책에 올바른 권한이 있는지 확인](#custom-cev.preparing.s3.verify-policy)
+ [3c단계: cp 또는 sync 명령을 사용하여 파일 업로드](#custom-cev.preparing.s3.upload)
+ [3d단계: S3 버킷의 파일 나열](#custom-cev.preparing.s3.list)

### 3a단계: S3 버킷이 올바른 AWS 리전에 있는지 확인
<a name="custom-cev.preparing.s3.verify-region"></a>

S3 버킷이 `create-custom-db-engine-version` 명령을 실행하려는 AWS 리전에 있는지 확인합니다.

```
aws s3api get-bucket-location --bucket amzn-s3-demo-destination-bucket
```

### 3b단계: S3 버킷 정책에 올바른 권한이 있는지 확인
<a name="custom-cev.preparing.s3.verify-policy"></a>

CEV는 처음부터 생성하거나 소스 CEV에서 생성할 수 있습니다. 소스 CEV에서 새 CEV를 생성하려는 경우 S3 버킷 정책에 올바른 권한이 있는지 확인하세요.

1. RDS Custom에서 예약한 S3 버킷을 식별합니다. 버킷 이름의 형식은 `do-not-delete-rds-custom-account-region-string`입니다. 예를 들어, 버킷의 이름은 `do-not-delete-rds-custom-123456789012-us-east-1-abc123EXAMPLE`일 수 있습니다.

1. S3 버킷 정책에 다음 권한이 추가되었는지 확인하세요. `do-not-delete-rds-custom-123456789012-us-east-1-abc123EXAMPLE`을 사용 중인 버킷의 이름으로 바꿉니다.

   ```
   {
       "Sid": "AWSRDSCustomForOracleCustomEngineVersionGetObject",
       "Effect": "Allow",
       "Principal": {
           "Service": "custom.rds.amazonaws.com"
       },
       "Action": [
           "s3:GetObject",
           "s3:GetObjectTagging"
       ],
       "Resource": "arn:aws:s3:::do-not-delete-rds-custom-123456789012-us-east-1-abc123EXAMPLE/CustomEngineVersions/*"
   }, ...
   ```

### 3c단계: cp 또는 sync 명령을 사용하여 파일 업로드
<a name="custom-cev.preparing.s3.upload"></a>

다음 옵션 중 하나를 선택합니다.
+ `aws s3 cp`를 사용하여 .zip 파일 하나만 업로드합니다.

  각 설치 .zip 파일을 별도로 업로드합니다. .zip 파일을 하나의 .zip 파일로 결합하지 마세요.
+ `aws s3 sync`를 사용하여 디렉터리를 업로드합니다.

**Example**  
다음 예제에서는 RDS Custom Amazon S3 버킷에 있는 `123456789012/cev1` 폴더에 `install-or-patch-file.zip`을 업로드합니다. 업로드하려는 각 .zip 파일에 대해 `aws s3` 명령을 별도로 실행합니다.   
대상 LinuxmacOS, 또는Unix:  

```
1. aws s3 cp install-or-patch-file.zip \
2.     s3://amzn-s3-demo-destination-bucket/123456789012/cev1/
```
Windows의 경우:  

```
1. aws s3 cp install-or-patch-file.zip ^
2.     s3://amzn-s3-demo-destination-bucket/123456789012/cev1/
```

**Example**  
다음 예제에서는 로컬 *cev1* 폴더의 파일을 Amazon S3 버킷의 *123456789012/cev1* 폴더로 업로드합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws s3 sync cev1 \
    s3://amzn-s3-demo-destination-bucket/123456789012/cev1/
```
Windows의 경우:  

```
aws s3 sync cev1 ^
    s3://amzn-s3-demo-destination-bucket/123456789012/cev1/
```

**Example**  
다음 예제에서는 `amzn-s3-demo-source-bucket`에 있는 모든 파일을 Amazon S3 버킷의 **`123456789012/cev1`** 폴더로 업로드합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws s3 sync s3://amzn-s3-demo-source-bucket/ \
    s3://amzn-s3-demo-destination-bucket/123456789012/cev1/
```
Windows의 경우:  

```
aws s3 sync s3://amzn-s3-demo-source-bucket/ ^
    s3://amzn-s3-demo-destination-bucket/123456789012/cev1/
```

### 3d단계: S3 버킷의 파일 나열
<a name="custom-cev.preparing.s3.list"></a>

다음 예시에서는 `s3 ls` 명령을 사용하여 RDS Custom Amazon S3 버킷에 있는 파일을 나열합니다.

```
aws s3 ls \
    s3://amzn-s3-demo-destination-bucket/123456789012/cev1/
```

## 4단계(선택 사항): 여러 AWS 계정에 걸쳐 S3의 설치 미디어 공유
<a name="custom-cev.preparing.accounts"></a>

이 섹션에서는 업로드한 Oracle 설치 파일이 포함된 Amazon S3 버킷이 *미디어 버킷*입니다. 조직은 한 AWS 계정에서 여러 AWS 리전을 사용할 수 있습니다. 그렇다면 하나를 사용하고 싶을 것입니다.AWS 계정미디어 버킷 및 다른 미디어 버킷 채우기AWS 계정CEV를 만들 수 있습니다. 미디어 버킷에 폴더를 공유하고 싶지 않은 경우 다음 섹션으로 건너뜁니다.

이 섹션에서는 다음과 같이 가정합니다.
+ 미디어 버킷을 생성한 계정과 CEV를 생성하려는 다른 계정에 액세스할 수 있습니다.
+ AWS 리전에서 CEV를 하나만 만들려고 합니다. 여러 리전을 사용하려는 경우 각 리전에 미디어 버킷을 생성하세요.
+ CLI를 사용 중입니다. Amazon S3 콘솔을 사용 중인 경우 다음 단계를 조정합니다.

**AWS 계정에서 공유할 미디어 버킷을 구성하려면**

1. 설치 미디어를 업로드한 S3 버킷이 포함된 AWS 계정에 로그인합니다.

1. 먼저 빈 JSON 정책 템플릿이나 적용할 수 있는 기존 정책으로 시작하세요.

   다음 명령은 기존 정책을 검색하여 *my-policy.json*으로 저장합니다. 이 예제에서 설치 파일이 포함된 S3 버킷의 이름은 *amzn-s3-demo-bucket*입니다.

   ```
   aws s3api get-bucket-policy \ 
       --bucket amzn-s3-demo-bucket \
       --query Policy \
       --output text > my-policy.json
   ```

1. 미디어 버킷 권한을 다음과 같이 편집합니다.
   + 템플릿의 `Resource` 요소에서 Oracle Database 설치 파일을 업로드한 S3 버킷을 지정합니다.
   + `Principal` 요소에서 CEV를 생성하는 데 사용할 모든 AWS 계정에 대한 ARN을 지정합니다. S3 버킷 허용 목록에 루트, 사용자 또는 역할을 추가할 수 있습니다. 자세한 내용은 *AWS Identity and Access Management 사용 설명서*에서 [IAM 식별자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)를 참조하세요.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "GrantAccountsAccess",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:root",
                       "arn:aws:iam::444455556666:user/user-name-with-path",
                       "arn:aws:iam::123456789012:role/role-name-with-path"
                   ]
               },
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectAcl",
                   "s3:GetObjectTagging",
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }
   ```

------

1. 미디어 버킷에 다음 정책을 연결합니다.

   다음 예제에서 *amzn-s3-demo-bucket*은 설치 파일이 포함된 S3 버킷의 이름이고 *my-policy.json*은 JSON 파일의 이름입니다.

   ```
   aws s3api put-bucket-policy \
       --bucket amzn-s3-demo-bucket \
       --policy file://my-policy.json
   ```

1. CEV를 만들려는 AWS 계정에 로그인합니다.

1. 이 계정이 생성한 AWS 계정의 미디어 버킷에 액세스할 수 있는지 확인합니다.

   ```
   aws s3 ls --query "Buckets[].Name"
   ```

   자세한 내용은 *AWS CLI 명령 참조*에서 [aws s3 ls](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html)를 참조합니다.

1. [CEV 생성](custom-cev.create.md)의 단계에 따라 CEV를 생성합니다.

## 5단계: CEV 매니페스트 준비
<a name="custom-cev.preparing.manifest"></a>

CEV 매니페스트는 다음이 포함된 JSON 문서입니다.
+ (필수) Amazon S3에 업로드한 설치 .zip 파일 목록. RDS Custom은 매니페스트에 나열된 순서대로 패치를 적용합니다.
+ (선택 사항) Oracle base, Oracle home, UNIX/Linux 사용자 및 그룹의 ID 및 이름에 기본값이 아닌 값을 설정하는 설치 파라미터. 기존 CEV 또는 기존 DB 인스턴스의 설치 파라미터는 수정할 수 없다는 점에 유의하세요. 또한 설치 파라미터의 설정이 다른 경우 한 CEV에서 다른 CEV로 업그레이드할 수 없습니다.

샘플 CEV 매니페스트는 [1단계(선택 사항): 매니페스트 템플릿 다운로드](#custom-cev.preparing.templates)에서 다운로드한 JSON 템플릿을 참조하세요. [CEV 매니페스트 예](#custom-cev.preparing.manifest.examples)에서 샘플을 검토할 수도 있습니다.

**Topics**
+ [CEV 매니페스트 내의 JSON](#custom-cev.preparing.manifest.fields)
+ [CEV 매니페스트 생성](#custom-cev.preparing.manifest.creating)
+ [CEV 매니페스트 예](#custom-cev.preparing.manifest.examples)

### CEV 매니페스트 내의 JSON
<a name="custom-cev.preparing.manifest.fields"></a>

다음 표에서는 매니페스트의 JSON 필드를 설명합니다.


| JSON 필드 | 설명 | 
| --- | --- | 
|  `MediaImportTemplateVersion`  |  CEV 매니페스트 버전으로, 날짜 형식은 `YYYY-MM-DD`입니다.  | 
|  `databaseInstallationFileNames`  |  데이터베이스의 설치 파일이 나열된 목록입니다.  | 
|  `opatchFileNames`  |  Oracle DB 엔진에 사용된 OPatch 설치 관리자가 나열된 목록으로, 하나의 값만 유효합니다. `opatchFileNames` 값은 `p6880880_`으로 시작해야 합니다.  | 
|  `psuRuPatchFileNames`  |  이 데이터베이스에 대한 PSU 및 RU 패치입니다.  `psuRuPatchFileNames`가 포함되어 있는 경우 `opatchFileNames`는 필수입니다. `opatchFileNames` 값은 `p6880880_`으로 시작해야 합니다.   | 
|  `OtherPatchFileNames`  |  PSU 및 RU 패치 목록에 없는 패치입니다. RDS Custom은 PSU 및 RU 패치를 적용한 후에 이러한 패치를 적용합니다.  `OtherPatchFileNames`가 포함되어 있는 경우 `opatchFileNames`는 필수입니다. `opatchFileNames` 값은 `p6880880_`으로 시작해야 합니다.   | 
|  `installationParameters`  |  Oracle base, Oracle home, UNIX/Linux 사용자 및 그룹의 ID 및 이름의 기본이 아닌 설정입니다. 다음과 같은 파라미터를 설정할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-cev.preparing.html)  | 

각 Oracle Database 릴리스에는 지원되는 설치 파일 목록이 다릅니다. CEV 매니페스트를 생성할 때 Oracle용 RDS Custom에서 지원하는 파일만 지정해야 합니다. 그렇지 않으면 오류가 발생하여 CEV 생성이 실패합니다. [Release notes for Amazon Relational Database Service (Amazon RDS) for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes)(Amazon Relational Database Service(RDS) for Oracle에 대한 릴리스 노트)에 나열된 모든 패치가 지원됩니다.

### CEV 매니페스트 생성
<a name="custom-cev.preparing.manifest.creating"></a>

**CEV 매니페스트를 생성하려면**

1. 적용할 모든 설치 파일을 나열할 순서대로 나열합니다.

1. 설치 파일을 [CEV 매니페스트 내의 JSON](#custom-cev.preparing.manifest.fields)에 설명된 JSON 필드와 상호 연관시킵니다.

1. 다음 중 하나를 수행하세요.
   + CEV 매니페스트를 JSON 텍스트 파일로 생성합니다.
   + 콘솔에서 CEV를 만들 때 CEV 매니페스트 템플릿을 편집합니다. 자세한 내용은 [CEV 생성](custom-cev.create.md)을 참조하세요.

### CEV 매니페스트 예
<a name="custom-cev.preparing.manifest.examples"></a>

다음 예는 다양한 Oracle 데이터베이스 릴리스에 대한 CEV 매니페스트 파일을 보여줍니다. 매니페스트 형태로, JSON 필드를 포함할 경우 비워둘 것이 아닌지 확인하세요. 예를 들어, 다음 매니페스트는 `otherPatchFileNames`가 비어 있으므로 유효하지 않습니다.

```
{
    "mediaImportTemplateVersion": "2020-08-14",
    "databaseInstallationFileNames": [
        "V982063-01.zip"
    ],
    "opatchFileNames": [
        "p6880880_190000_Linux-x86-64.zip"
    ],
    "psuRuPatchFileNames": [
        "p32126828_190000_Linux-x86-64.zip"
    ],
    "otherPatchFileNames": [
    ]
}
```

**주제**
+ [Sample CEV manifest for Oracle Database 12c Release 1 (12.1)](#oracle-cev-manifest-12.1)
+ [Sample CEV manifest for Oracle Database 12c Release 2 (12.2)](#oracle-cev-manifest-12.2)
+ [Sample CEV manifest for Oracle Database 18c](#oracle-cev-manifest-18c)
+ [Sample CEV manifest for Oracle Database 19c](#oracle-cev-manifest-19c)

**Example Oracle Database 12c Release 1(12.1) 샘플 CEV 매니페스트**  
Oracle Database 12c 릴리스 1(12.1)용 2021년 7월 PSU의 다음 예에서 RDS Custom은 지정된 순서대로 패치를 적용합니다. 따라서 RDS Custom은 p32768233, p32876425, p18759211 순으로 적용합니다. 이 예제에서는 UNIX/Linux 사용자 및 그룹, Oracle home, Oracle base의 새 값을 설정합니다.  

```
{
    "mediaImportTemplateVersion":"2020-08-14",
    "databaseInstallationFileNames":[
        "V46095-01_1of2.zip",
        "V46095-01_2of2.zip"
    ],
    "opatchFileNames":[
        "p6880880_121010_Linux-x86-64.zip"
    ],
    "psuRuPatchFileNames":[
        "p32768233_121020_Linux-x86-64.zip"
    ],
    "otherPatchFileNames":[
        "p32876425_121020_Linux-x86-64.zip",
        "p18759211_121020_Linux-x86-64.zip",
        "p19396455_121020_Linux-x86-64.zip",
        "p20875898_121020_Linux-x86-64.zip",
        "p22037014_121020_Linux-x86-64.zip",
        "p22873635_121020_Linux-x86-64.zip",
        "p23614158_121020_Linux-x86-64.zip",
        "p24701840_121020_Linux-x86-64.zip",
        "p25881255_121020_Linux-x86-64.zip",
        "p27015449_121020_Linux-x86-64.zip",
        "p28125601_121020_Linux-x86-64.zip",
        "p28852325_121020_Linux-x86-64.zip",
        "p29997937_121020_Linux-x86-64.zip",
        "p31335037_121020_Linux-x86-64.zip",
        "p32327201_121020_Linux-x86-64.zip",
        "p32327208_121020_Generic.zip",
        "p17969866_12102210119_Linux-x86-64.zip",
        "p20394750_12102210119_Linux-x86-64.zip",
        "p24835919_121020_Linux-x86-64.zip",
        "p23262847_12102201020_Linux-x86-64.zip",
        "p21171382_12102201020_Generic.zip",
        "p21091901_12102210720_Linux-x86-64.zip",
        "p33013352_12102210720_Linux-x86-64.zip",
        "p25031502_12102210720_Linux-x86-64.zip",
        "p23711335_12102191015_Generic.zip",
        "p19504946_121020_Linux-x86-64.zip"
    ],
    "installationParameters": {
        "unixGroupName": "dba",
        "unixGroupId": 12345,
        "unixUname": "oracle",
        "unixUid": 12345,
        "oracleHome": "/home/oracle/oracle.12.1.0.2",
        "oracleBase": "/home/oracle"
    }
}
```

**Example Oracle Database 12c Release 2(12.2) 샘플 CEV 매니페스트**  
Oracle Database 12c 릴리스 2(12.2)용 2021년 10월 PSU의 다음 예에서 RDS Custom은 p33261817, p33192662, p29213893 등을 적용합니다. 이 예제에서는 UNIX/Linux 사용자 및 그룹, Oracle home, Oracle base의 새 값을 설정합니다.  

```
{
    "mediaImportTemplateVersion":"2020-08-14",
    "databaseInstallationFileNames":[
        "V839960-01.zip"
    ],
    "opatchFileNames":[
        "p6880880_122010_Linux-x86-64.zip"
    ],
    "psuRuPatchFileNames":[
        "p33261817_122010_Linux-x86-64.zip"
    ],
    "otherPatchFileNames":[
        "p33192662_122010_Linux-x86-64.zip",
        "p29213893_122010_Generic.zip",
        "p28730253_122010_Linux-x86-64.zip",
        "p26352615_12201211019DBOCT2021RU_Linux-x86-64.zip",
        "p23614158_122010_Linux-x86-64.zip",
        "p24701840_122010_Linux-x86-64.zip",
        "p25173124_122010_Linux-x86-64.zip",
        "p25881255_122010_Linux-x86-64.zip",
        "p27015449_122010_Linux-x86-64.zip",
        "p28125601_122010_Linux-x86-64.zip",
        "p28852325_122010_Linux-x86-64.zip",
        "p29997937_122010_Linux-x86-64.zip",
        "p31335037_122010_Linux-x86-64.zip",
        "p32327201_122010_Linux-x86-64.zip",
        "p32327208_122010_Generic.zip"
    ],
    "installationParameters": {
        "unixGroupName": "dba",
        "unixGroupId": 12345,
        "unixUname": "oracle",
        "unixUid": 12345,
        "oracleHome": "/home/oracle/oracle.12.2.0.1",
        "oracleBase": "/home/oracle"
    }
}
```

**Example Oracle Database 18c 샘플 CEV 매니페스트**  
Oracle Database 18c용 2021년 10월 PSU의 다음 예에서 RDS Custom은 p33261817, p33192662, p29213893 등을 적용합니다. 이 예제에서는 UNIX/Linux 사용자 및 그룹, Oracle home, Oracle base의 새 값을 설정합니다.  

```
{
    "mediaImportTemplateVersion":"2020-08-14",
    "databaseInstallationFileNames":[
        "V978967-01.zip"
    ],
    "opatchFileNames":[
        "p6880880_180000_Linux-x86-64.zip"
    ],
    "psuRuPatchFileNames":[
        "p32126855_180000_Linux-x86-64.zip"
    ],
    "otherPatchFileNames":[
        "p28730253_180000_Linux-x86-64.zip",
        "p27539475_1813000DBRU_Linux-x86-64.zip",
        "p29213893_180000_Generic.zip",
        "p29374604_1813000DBRU_Linux-x86-64.zip",
        "p29782284_180000_Generic.zip",
        "p28125601_180000_Linux-x86-64.zip",
        "p28852325_180000_Linux-x86-64.zip",
        "p29997937_180000_Linux-x86-64.zip",
        "p31335037_180000_Linux-x86-64.zip",
        "p31335142_180000_Generic.zip"
    ]
    "installationParameters": {
        "unixGroupName": "dba",
        "unixGroupId": 12345,
        "unixUname": "oracle",
        "unixUid": 12345,
        "oracleHome": "/home/oracle/18.0.0.0.ru-2020-10.rur-2020-10.r1",
        "oracleBase": "/home/oracle/"
    }
}
```

**Example Oracle Database 19c 샘플 CEV 매니페스트**  
다음 Oracle Database 19c 예제에서 RDS Custom은 p32126828을 적용한 다음 p29213893, p29782284 순으로 적용합니다. 이 예제에서는 UNIX/Linux 사용자 및 그룹, Oracle home, Oracle base의 새 값을 설정합니다.  

```
{
    "mediaImportTemplateVersion": "2020-08-14",
    "databaseInstallationFileNames": [
        "V982063-01.zip"
    ],
    "opatchFileNames": [
        "p6880880_190000_Linux-x86-64.zip"
    ],
    "psuRuPatchFileNames": [
        "p32126828_190000_Linux-x86-64.zip"
    ],
    "otherPatchFileNames": [
        "p29213893_1910000DBRU_Generic.zip",
        "p29782284_1910000DBRU_Generic.zip",
        "p28730253_190000_Linux-x86-64.zip",
        "p29374604_1910000DBRU_Linux-x86-64.zip",
        "p28852325_190000_Linux-x86-64.zip",
        "p29997937_190000_Linux-x86-64.zip",
        "p31335037_190000_Linux-x86-64.zip",
        "p31335142_190000_Generic.zip"
    ],
    "installationParameters": {
        "unixGroupName": "dba",
        "unixGroupId": 12345,
        "unixUname": "oracle",
        "unixUid": 12345,
        "oracleHome": "/home/oracle/oracle.19.0.0.0.ru-2020-04.rur-2020-04.r1.EE.1",
        "oracleBase": "/home/oracle"
    }
}
```

## 6단계(선택 사항): CEV 매니페스트 검증
<a name="custom-cev.preparing.validating"></a>

필요에 따라 `json.tool` Python 스크립트를 실행하여 매니페스트가 유효한 JSON 파일인지 확인할 수 있습니다. 예를 들어, `manifest.json`이라는 이름의 CEV 매니페스트를 포함하는 디렉터리로 변경하는 경우 다음 명령을 실행하면 됩니다.

```
python -m json.tool < manifest.json
```

## 7단계: 필요한 IAM 권한 추가
<a name="custom-cev.preparing.iam"></a>

CEV를 생성하는 IAM 보안 주체에는 [5단계: IAM 사용자 또는 역할에 필요한 권한 부여](custom-setup-orcl.md#custom-setup-orcl.iam-user)에 설명된 필수 정책이 있는지 확인합니다.

# CEV 생성
<a name="custom-cev.create"></a>

AWS Management Console 또는 AWS CLI를 사용하여 CEV를 생성할 수 있습니다. 멀티테넌트 또는 비 멀티테넌트 아키텍처를 지정합니다. 자세한 내용은 [멀티테넌트 아키텍처 고려 사항](custom-creating.md#custom-creating.overview) 단원을 참조하십시오.

일반적으로 CEV 생성에는 약 2시간이 소요됩니다. CEV를 만든 후 이를 사용하여 RDS Custom DB 인스턴스를 만들 수 있습니다. 자세한 내용은 [RDS Custom for Oracle DB 인스턴스 생성](custom-creating.md#custom-creating.create) 및 [RDS Custom for Oracle DB 인스턴스 업그레이드](custom-upgrading-modify.md) 단원을 참조하세요.

**참고**  
DB 인스턴스가 현재 Oracle Linux 7.9를 사용하는 경우 Oracle Linux 8을 사용하는 최신 AMI를 사용하는 새 CEV를 만듭니다. 그런 다음 새 CEV를 사용하도록 인스턴스를 수정합니다.

CEV 생성에 대해 다음과 같은 요구 사항 및 제한 사항에 유의합니다.
+ 단, 설치 파일이 포함된 Amazon S3 버킷이 CEV와 동일한 AWS 리전에 있어야 하며, 그렇지 않으면 생성 프로세스가 실패합니다.
+ CEV 이름은 `major-engine-version.customized_string`과 같은 `19.cdb_cev1` 형식이어야 합니다.
+ CEV 이름은 1\$150개의 영숫자, 밑줄, 대시 또는 마침표를 포함해야 합니다.
+ CEV 이름에는 `19..cdb_cev1`에서와 같이 연속된 마침표를 포함할 수 없습니다.

## 콘솔
<a name="custom-cev.create.console"></a>

**CEV를 생성하는 방법**

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

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

   **사용자 지정 엔진 버전(Custom engine versions)** 페이지에는 현재 존재하는 모든 CEV가 표시됩니다. CEV를 생성한 적이 없으면 페이지가 비어 있습니다.

1. **사용자 지정 엔진 버전 생성(Create custom engine version)**을 선택합니다.

1. **엔진 옵션**에서 다음을 수행합니다.

   1. **엔진 유형(Engine type)**으로 **Oracle**을 선택합니다.

   1. **아키텍처 설정**에서 필요에 따라 **멀티테넌트 아키텍처**를 선택하여 DB 엔진 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb`를 사용하는 Oracle 멀티테넌트 CEV를 생성합니다. 멀티테넌트 CEV가 있는 RDS Custom for Oracle CDB만 생성할 수 있습니다. 이 옵션을 선택하지 않는 경우 CEV는 엔진 `custom-oracle-ee` 또는 `custom-oracle-se2`를 사용하는 비CDB입니다.
**참고**  
선택한 아키텍처는 CEV의 영구적인 특성입니다. 나중에 다른 아키텍처를 사용하도록 CEV를 수정할 수 없습니다.

   1. 다음 옵션 중 하나를 선택합니다.
      + **새 CEV 생성** - 처음부터 CEV를 생성합니다. 이 경우 데이터베이스 바이너리를 지정하는 JSON 매니페스트를 지정해야 합니다.
      + **소스에서 CEV 생성** - **복사할 CEV 지정**에서 소스 CEV로 사용할 기존 CEV를 선택합니다. 이 경우 새 Amazon Machine Image(AMI)를 지정할 수 있지만 다른 데이터베이스 바이너리를 지정할 수는 없습니다.

   1. **엔진 버전**에서 메이저 엔진 버전을 선택합니다.

1. **버전 세부 정보**에서 다음을 수행합니다.

   1. **사용자 지정 엔진 버전 이름**에 유효한 이름을 입력합니다. 예를 들어, **19.cdb\$1cev1**을 이름으로 입력할 수 있습니다.

   1. (선택 사항) CEV에 대한 설명을 입력합니다.

1. **설치 미디어**에서 다음을 수행합니다.

   1. (선택 사항) **AMI ID**의 경우 필드를 비워 최신 서비스 제공 AMI를 사용하거나 이전에 CEV를 생성할 때 사용한 AMI를 입력합니다. 유효한 AMI ID를 가져오려면 다음 방법 중 하나를 사용합니다.
      + 콘솔의 왼쪽 탐색 창에서 **사용자 지정 엔진 버전**을 선택하고 CEV 이름을 선택합니다. CEV에서 사용하는 AMI ID는 **구성** 탭에 표시됩니다.
      + AWS CLI에서 `describe-db-engine-versions` 명령을 사용합니다. `ImageID`에 대한 출력을 검색합니다.

   1. **매니페스트 파일의 S3 위치(S3 location of manifest files)**에서 [3단계: Amazon S3에 설치 파일 업로드](custom-cev.preparing.md#custom-cev.preparing.s3)에 지정한 대로 Amazon S3 버킷의 위치를 입력합니다. 예를 들면 **s3://my-custom-installation-files/123456789012/cev1/**를(을) 입력합니다.
**참고**  
CEV를 생성하는 AWS 리전은 S3 버킷과 동일한 리전이어야 합니다.

   1. (새 CEV 생성의 경우만 해당) **CEV 매니페스트**의 경우 [CEV 매니페스트 생성](custom-cev.preparing.md#custom-cev.preparing.manifest.creating)에서 생성한 JSON 매니페스트를 입력합니다.

1. **KMS 키** 섹션에서 **키 ARN 입력**을 선택하여 사용 가능한 AWS KMS 키를 나열합니다. 그런 다음 목록에서 KMS 키를 선택합니다.

   AWS KMS 키는 RDS Custom에 필수입니다. 자세한 내용은 [1단계: 대칭 암호화 AWS KMS 키 생성 또는 재사용](custom-setup-orcl.md#custom-setup-orcl.cmk) 단원을 참조하십시오.

1. (선택 사항) **새 태그 추가**를 선택하여 CEV의 키-값 페어를 생성합니다.

1. **Create custom engine version**(사용자 지정 엔진 버전 생성)을 선택합니다.

   JSON 매니페스트의 형식이 잘못되면 콘솔에 **CEV 매니페스트를 검증하는 중 오류 발생** 메시지가 표시됩니다. 문제를 해결한 후 다시 시도해 주세요.

**사용자 지정 엔진 버전(Custom engine versions)** 페이지가 표시됩니다. CEV가 상태가 **생성 중(Creating)**으로 표시됩니다. CEV를 생성하는 데 약 2시간이 소요됩니다.

## AWS CLI
<a name="custom-cev.create.CEV"></a>

AWS CLI를 사용하여 CEV를 생성하려면 [create-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/create-custom-db-engine-version.html) 명령을 실행합니다.

다음 옵션이 필요합니다.
+ `--engine` - 엔진 유형을 지정합니다. CDB에서 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb`를 지정합니다. 비CDB에서 `custom-oracle-ee` 또는 `custom-oracle-se2`를 지정합니다. CDB는 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb`로 생성한 CEV에서만 생성할 수 있습니다. 비CDB는 `custom-oracle-ee` 또는 `custom-oracle-se2`로 생성한 CEV에서만 생성할 수 있습니다.
+ `--engine-version` - 엔진 버전을 지정합니다. 형식은 *major-engine-version*.*customized\$1string*입니다. CEV 이름은 1\$150개의 영숫자, 밑줄, 대시 또는 마침표를 포함해야 합니다. CEV 이름에는 `19..cdb_cev1`에서와 같이 연속된 마침표를 포함할 수 없습니다.
+ `--kms-key-id` - AWS KMS key을 지정합니다.
+ `--manifest` - `manifest_json_string` 또는 `--manifest file:file_name`을 지정합니다. `manifest_json_string`에서 줄 바꿈 문자는 허용되지 않습니다. 백슬래시(\$1)를 접두사에 부여하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

  다음 예제에서는 [5단계: CEV 매니페스트 준비](custom-cev.preparing.md#custom-cev.preparing.manifest)의 19c에 대한 `manifest_json_string`을 보여줍니다. 이 예제에는 Oracle base, Oracle home, UNIX/Linux 사용자 및 그룹의 ID와 이름의 새 값을 설정합니다. 이 문자열을 복사하는 경우 명령에 붙여넣기 전에 모든 줄 바꿈 문자를 삭제하세요.

  `"{\"mediaImportTemplateVersion\": \"2020-08-14\",\"databaseInstallationFileNames\": [\"V982063-01.zip\"],\"opatchFileNames\": [\"p6880880_190000_Linux-x86-64.zip\"],\"psuRuPatchFileNames\": [\"p32126828_190000_Linux-x86-64.zip\"],\"otherPatchFileNames\": [\"p29213893_1910000DBRU_Generic.zip\",\"p29782284_1910000DBRU_Generic.zip\",\"p28730253_190000_Linux-x86-64.zip\",\"p29374604_1910000DBRU_Linux-x86-64.zip\",\"p28852325_190000_Linux-x86-64.zip\",\"p29997937_190000_Linux-x86-64.zip\",\"p31335037_190000_Linux-x86-64.zip\",\"p31335142_190000_Generic.zip\"]\"installationParameters\":{ \"unixGroupName\":\"dba\", \ \"unixUname\":\"oracle\", \ \"oracleHome\":\"/home/oracle/oracle.19.0.0.0.ru-2020-04.rur-2020-04.r1.EE.1\", \ \"oracleBase\":\"/home/oracle/\"}}"`
+ `--database-installation-files-s3-bucket-name` - [3단계: Amazon S3에 설치 파일 업로드](custom-cev.preparing.md#custom-cev.preparing.s3)에서 지정한 것과 동일한 버킷 이름을 지정합니다. `create-custom-db-engine-version`을 실행하는 AWS 리전은 Amazon S3 버킷과 동일한 리전이어야 합니다.

다음 옵션도 지정할 수 있습니다.
+ `--description` - CEV에 대한 설명을 지정합니다.
+ `--database-installation-files-s3-prefix` - [3단계: Amazon S3에 설치 파일 업로드](custom-cev.preparing.md#custom-cev.preparing.s3)에서 지정한 폴더 이름을 지정합니다.
+ `--image-id` - 재사용할 AMI ID를 지정합니다. 유효한 ID를 찾으려면 `describe-db-engine-versions` 명령을 실행한 다음 `ImageID`의 출력을 검색하세요. 기본적으로 RDS Custom for Oracle은 가장 최신 AMI를 사용합니다.

다음 예시에서는 `19.cdb_cev1`이라는 Oracle 멀티테넌트 CEV를 생성합니다. 예제에서는 사용 가능한 최신 AMI를 사용하는 대신 기존 AMI를 재사용합니다. CEV의 이름이 주요 엔진 버전 번호로 시작하는지 확인하세요.

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

```
1. aws rds create-custom-db-engine-version \
2.     --engine custom-oracle-se2-cdb \
3.     --engine-version 19.cdb_cev1 \
4.     --database-installation-files-s3-bucket-name us-east-1-123456789012-custom-installation-files \
5.     --database-installation-files-s3-prefix 123456789012/cev1 \
6.     --kms-key-id my-kms-key \
7.     --description "test cev" \
8.     --manifest manifest_string \
9.     --image-id ami-012a345678901bcde
```
Windows의 경우:  

```
1. aws rds create-custom-db-engine-version ^
2.     --engine custom-oracle-se2-cdb ^
3.     --engine-version 19.cdb_cev1 ^
4.     --database-installation-files-s3-bucket-name us-east-1-123456789012-custom-installation-files ^
5.     --database-installation-files-s3-prefix 123456789012/cev1 ^
6.     --kms-key-id my-kms-key ^
7.     --description "test cev" ^
8.     --manifest manifest_string ^
9.     --image-id ami-012a345678901bcde
```

**Example**  
`describe-db-engine-versions` 명령을 사용하여 CEV에 대한 세부 정보를 확인합니다.  

```
1. aws rds describe-db-engine-versions \
2.     --engine custom-oracle-se2-cdb \
3.     --include-all
```
다음 부분 샘플 출력은 엔진, 파라미터 그룹, 매니페스트 및 기타 정보를 보여줍니다.  

```
 1. {
 2.     "DBEngineVersions": [
 3.         {
 4.             "Engine": "custom-oracle-se2-cdb",
 5.             "EngineVersion": "19.cdb_cev1",
 6.             "DBParameterGroupFamily": "custom-oracle-se2-cdb-19",
 7.             "DBEngineDescription": "Containerized Database for Oracle Custom SE2",
 8.             "DBEngineVersionDescription": "test cev",
 9.             "Image": {
10.                 "ImageId": "ami-012a345678901bcde",
11.                 "Status": "active"
12.             },
13.             "ValidUpgradeTarget": [],
14.             "SupportsLogExportsToCloudwatchLogs": false,
15.             "SupportsReadReplica": true,
16.             "SupportedFeatureNames": [],
17.             "Status": "available",
18.             "SupportsParallelQuery": false,
19.             "SupportsGlobalDatabases": false,
20.             "MajorEngineVersion": "19",
21.             "DatabaseInstallationFilesS3BucketName": "us-east-1-123456789012-custom-installation-files",
22.             "DatabaseInstallationFilesS3Prefix": "123456789012/cev1",
23.             "DBEngineVersionArn": "arn:aws:rds:us-east-1:123456789012:cev:custom-oracle-se2-cdb/19.cdb_cev1/abcd12e3-4f5g-67h8-i9j0-k1234l56m789",
24.             "KMSKeyId": "arn:aws:kms:us-east-1:732027699161:key/1ab2345c-6d78-9ef0-1gh2-3456i7j89k01",
25.             "CreateTime": "2023-03-07T19:47:58.131000+00:00",
26.             "TagList": [],
27.             "SupportsBabelfish": false,
28. ...
```

## CEV 생성 실패
<a name="custom-cev.create.failure"></a>

CEV 생성이 실패하면 RDS Custom에서 `Creation failed for custom engine version major-engine-version.cev_name` 메시지와 함께 `RDS-EVENT-0198` 오류가 발생하며, 실패 관련 세부 정보가 표시됩니다. 예를 들어, 이벤트는 누락된 파일을 인쇄합니다.

실패한 CEV는 수정할 수 없습니다. 삭제하고 나서 실패 원인을 수정한 후에 CEV를 다시 만들 수 있습니다. CEV 생성에 실패한 이유 문제 해결에 대한 자세한 내용은 [Oracle용 RDS Custom에 대한 사용자 지정 엔진 버전 생성 문제 해결](custom-troubleshooting.md#custom-troubleshooting.cev) 섹션을 참조하세요.

# CEV 상태 수정
<a name="custom-cev.modify"></a>

AWS Management Console 또는 AWS CLI를 사용하여 CEV를 수정하고, CEV 설명 또는 가용 상태를 수정할 수 있습니다. CEV는 다음 상태 값 중 하나를 가집니다.
+ `available` - 이 CEV를 사용하여 새로운 RDS Custom DB 인스턴스를 생성하거나 DB 인스턴스를 업그레이드할 수 있습니다. 이 상태는 새로 생성된 CEV의 기본 상태입니다.
+ `inactive` - 이 CEV에서는 RDS Custom 인스턴스를 생성하거나 업그레이드할 수 없습니다. 이 CEV에서는 DB 스냅샷을 복원하여 새로운 RDS Custom DB 인스턴스를 생성할 수 없습니다.

CEV를 지원되는 상태에서 다른 지원 상태로 변경할 수 있습니다. 상태를 변경하여 실수로 CEV를 사용하지 못하도록 하거나 중단된 CEV를 다시 사용하도록 할 수 있습니다. 예를 들어 CEV의 상태를 `available`에서 `inactive`로, `inactive`에서 `available`로 변경할 수 있습니다.

## 콘솔
<a name="custom-cev.modify.console"></a>

**CEV를 수정하는 방법**

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

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

1. 수정하려는 설명 또는 상태가 지정된 CEV를 선택합니다.

1. **작업**에서 **수정**을 선택합니다.

1. 다음을 원하는 대로 변경합니다.
   + **CEV 상태 설정(CEV status settings)**에서 새로운 가용 상태를 선택합니다.
   + **버전 설명(Version description)**에 새로운 설명을 입력합니다.

1. **CEV 수정(Modify CEV)**을 선택합니다.

   CEV가 사용 중인 경우 콘솔에 **CEV 상태를 수정할 수 없습니다(You can't modify the CEV status)**가 표시됩니다. 문제를 해결한 후 다시 시도해 주세요.

**사용자 지정 엔진 버전(Custom engine versions)** 페이지가 표시됩니다.

## AWS CLI
<a name="custom-cev.modify.cli"></a>

AWS CLI를 사용하여 CEV를 수정하려면 [modify-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-custom-db-engine-version.html) 명령을 실행합니다. [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 실행하여 수정할 CEV를 찾을 수 있습니다.

다음 옵션이 필요합니다.
+ `--engine engine-type`(*엔진 유형*은 `custom-oracle-ee`, `custom-oracle-se2`, `custom-oracle-ee-cdb`, `custom-oracle-se2-cdb`)
+ `--engine-version cev`(*`cev`*는 수정하려는 사용자 지정 엔진 버전의 이름)
+ `--status`` status`(*`status`*는 CEV에 할당하려는 가용 상태)

다음 예제에서는 이름이 `19.my_cev1`로 지정된 CEV를 현재 상태에서 `inactive`로 변경합니다.

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

```
1. aws rds modify-custom-db-engine-version \
2.     --engine custom-oracle-se2 \ 
3.     --engine-version 19.my_cev1 \
4.     --status inactive
```
Windows의 경우:  

```
1. aws rds modify-custom-db-engine-version ^
2.     --engine custom-oracle-se2 ^
3.     --engine-version 19.my_cev1 ^
4.     --status inactive
```

# Amazon RDS Custom for Oracle의 CEV 세부 정보 보기
<a name="custom-cev.view"></a>

AWS Management Console 또는 AWS CLI를 사용하여 CEV 매니페스트 세부 정보와 CEV를 만드는 데 사용한 명령 관련 세부 정보를 볼 수 있습니다.

## 콘솔
<a name="custom-cev.view.console"></a>

**CEV 세부 정보를 보려면**

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

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

   **사용자 지정 엔진 버전(Custom engine versions)** 페이지에는 현재 존재하는 모든 CEV가 표시됩니다. CEV를 생성한 적이 없으면 페이지가 비어 있습니다.

1. 확인할 CEV의 이름을 선택합니다.

1. **Configuration**(구성)을 선택하면 매니페스트에 지정된 설치 파라미터를 볼 수 있습니다.  
![\[CEV의 설치 파라미터를 확인합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/cev-configuration-tab.png)

1. `create-custom-db-engine-version` 명령의`--manifest` 옵션에 지정된 설치 파라미터를 보려면 **Manifest**(매니페스트)를 선택합니다. 이 텍스트를 복사하고, 필요한 경우 값을 바꾸고, 새 명령에서 사용할 수 있습니다.  
![\[CEV를 만드는 데 사용한 명령을 볼 수 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/cev-manifest-tab.png)

## AWS CLI
<a name="custom-cev.view.CEV"></a>

AWS CLI를 사용하여 CEV에 대한 세부 정보를 보려면 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 실행합니다.

다음 옵션이 필요합니다.
+ `--engine engine-type`(*엔진 유형*은 `custom-oracle-ee`, `custom-oracle-se2`, `custom-oracle-ee-cdb`, `custom-oracle-se2-cdb`)
+ `--engine-version major-engine-version.customized_string`

다음 예제에서는 Enterprise Edition을 사용하는 비CDB CEV를 생성합니다. CEV의 `19.my_cev1` 이름이 메이저 엔진 버전 번호로 시작하며, 이 번호는 필수 항목입니다.

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

```
1. aws rds describe-db-engine-versions \
2.     --engine custom-oracle-ee \
3.     --engine-version 19.my_cev1
```
Windows의 경우:  

```
1. aws rds describe-db-engine-versions ^
2.     --engine custom-oracle-ee ^
3.     --engine-version 19.my_cev1
```
다음 부분 샘플 출력은 엔진, 파라미터 그룹, 매니페스트 및 기타 정보를 보여줍니다.  

```
 1. "DBEngineVersions": [
 2.     {
 3.         "Engine": "custom-oracle-ee",
 4.         "MajorEngineVersion": "19",
 5.         "EngineVersion": "19.my_cev1",
 6.         "DatabaseInstallationFilesS3BucketName": "us-east-1-123456789012-cev-customer-installation-files",
 7.         "DatabaseInstallationFilesS3Prefix": "123456789012/cev1",
 8.         "CustomDBEngineVersionManifest": "{\n\"mediaImportTemplateVersion\": \"2020-08-14\",\n\"databaseInstallationFileNames\": [\n\"V982063-01.zip\"\n],\n\"installationParameters\": {\n\"oracleBase\":\"/tmp\",\n\"oracleHome\":\"/tmp/Oracle\"\n},\n\"opatchFileNames\": [\n\"p6880880_190000_Linux-x86-64.zip\"\n],\n\"psuRuPatchFileNames\": [\n\"p32126828_190000_Linux-x86-64.zip\"\n],\n\"otherPatchFileNames\": [\n\"p29213893_1910000DBRU_Generic.zip\",\n\"p29782284_1910000DBRU_Generic.zip\",\n\"p28730253_190000_Linux-x86-64.zip\",\n\"p29374604_1910000DBRU_Linux-x86-64.zip\",\n\"p28852325_190000_Linux-x86-64.zip\",\n\"p29997937_190000_Linux-x86-64.zip\",\n\"p31335037_190000_Linux-x86-64.zip\",\n\"p31335142_190000_Generic.zip\"\n]\n}\n",
 9.         "DBParameterGroupFamily": "custom-oracle-ee-19",
10.         "DBEngineDescription": "Oracle Database server EE for RDS Custom",
11.         "DBEngineVersionArn": "arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/0a123b45-6c78-901d-23e4-5678f901fg23",
12.         "DBEngineVersionDescription": "test",
13.         "KMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/ab1c2de3-f4g5-6789-h012-h3ijk4567l89",
14.         "CreateTime": "2022-11-18T09:17:07.693000+00:00",
15.         "ValidUpgradeTarget": [
16.         {
17.             "Engine": "custom-oracle-ee",
18.             "EngineVersion": "19.cev.2021-01.09",
19.             "Description": "test",
20.             "AutoUpgrade": false,
21.             "IsMajorVersionUpgrade": false
22.         }
23. ]
```

# CEV 삭제
<a name="custom-cev.delete"></a>

AWS Management Console 또는 AWS CLI를 사용하여 CEV를 삭제할 수 있습니다. 일반적으로 삭제하는 데는 몇 분 정도 걸립니다.

CEV를 삭제하면 다음 중 어디에서도 CEV를 사용할 수 없습니다.
+ RDS Custom DB 인스턴스
+ RDS Custom DB 인스턴스의 스냅샷
+ RDS Custom DB 인스턴스의 자동 백업

## 콘솔
<a name="custom-cev.create.console"></a>

**CEV를 삭제하는 방법**

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

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

1. 삭제하려는 설명 또는 상태가 지정된 CEV를 선택합니다.

1. **작업**에 대해 **삭제**를 선택합니다.

   ***cev\$1name*을 삭제하시겠습니까?(Delete cev\$1name?)** 대화 상자가 표시됩니다.

1. **delete me**를 입력한 다음 **삭제**를 선택합니다.

   **사용자 지정 엔진 버전(Custom engine versions)** 페이지의 배너에서 CEV가 삭제 중임을 표시합니다.

## AWS CLI
<a name="custom-cev.create.console.cli"></a>

AWS CLI를 사용하여 CEV를 삭제하려면 [delete-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-custom-db-engine-version.html) 명령을 실행합니다.

다음 옵션이 필요합니다.
+ `--engine engine-type`(*엔진 유형*은 `custom-oracle-ee`, `custom-oracle-se2`, `custom-oracle-ee-cdb`, `custom-oracle-se2-cdb`)
+ `--engine-version cev`(*cev*는 삭제할 사용자 지정 엔진 버전의 이름)

다음 예제에서는 이름이 `19.my_cev1`인 CEV를 삭제합니다.

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

```
1. aws rds delete-custom-db-engine-version \
2.     --engine custom-oracle-ee \
3.     --engine-version 19.my_cev1
```
Windows의 경우:  

```
1. aws rds delete-custom-db-engine-version ^
2.     --engine custom-oracle-ee ^
3.     --engine-version 19.my_cev1
```

# Amazon RDS Custom for Oracle용 DB 인스턴스 구성
<a name="custom-creating"></a>

RDS Custom DB 인스턴스를 생성한 다음 Secure Shell(SSH) 또는 AWS Systems Manager를 사용하여 연결할 수 있습니다.

RDS Custom for Oracle DB 인스턴스에 연결하고 로그인하는 방법에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [세션 관리자를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating.ssm.md)
+ [SSH를 사용하여 RDS Custom DB 인스턴스에 연결](#custom-creating.ssh)
+ [RDS Custom for Oracle 데이터베이스에 SYS로 로그인](custom-creating.sysdba.md)

## RDS Custom for Oracle DB 인스턴스 생성
<a name="custom-creating.create"></a>

AWS Management Console 또는 AWS CLI를 사용하여 Oracle DB 인스턴스용 Amazon RDS Custom을 생성할 수 있습니다. 생성 절차는 Amazon RDS DB 인스턴스를 생성하는 절차와 유사합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.

CEV 매니페스트에 설치 파라미터를 포함시킨 경우 DB 인스턴스는 지정한 Oracle base, Oracle home, UNIX/Linux 사용자 및 그룹의 ID와 이름을 사용합니다. 설치 중에 Oracle Database에서 생성되는 `oratab` 파일은 심볼 링크가 아닌 실제 설치 위치를 가리킵니다. RDS Custom for Oracle은 명령을 실행할 때 기본 사용자 `rdsdb`가 아닌 구성된 OS 사용자로 실행합니다. 자세한 내용은 [5단계: CEV 매니페스트 준비](custom-cev.preparing.md#custom-cev.preparing.manifest) 섹션을 참조하세요.

RDS Custom DB 인스턴스를 생성하거나 RDS Custom DB 인스턴스에 연결하려면 먼저 [Amazon RDS Custom for Oracle을 위한 환경 설정](custom-setup-orcl.md) 섹션에 나와 있는 작업을 완료하세요.

### 콘솔
<a name="custom-creating.console"></a>

**RDS Custom for Oracle DB 인스턴스를 생성하는 방법**

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

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. **데이터베이스 생성**을 선택합니다.

1. **데이터베이스 생성 방법 선택(Choose a database creation method)**에서 **표준 생성(Standard Create)**을 선택합니다.

1. **엔진 옵션**) 섹션에서 다음과 같이 실행합니다.

   1. **엔진 유형(Engine type)**으로 **Oracle**을 선택합니다.

   1. **데이터베이스 관리 유형(Database management type)**에서 **Amazon RDS Custom**을 선택합니다.

   1. **아키텍처 설정**에서 다음 중 하나를 수행합니다.
      + **멀티테넌트 아키텍처**를 선택하여 컨테이너 데이터베이스(CDB)를 생성합니다. 생성 시 CDB에는 PDB 시드와 초기 PDB가 하나씩 포함됩니다.
**참고**  
**멀티테넌트 아키텍처** 설정은 Oracle Database 19c에만 지원됩니다.
      + 비 CDB를 생성하려면 **멀티테넌트 아키텍처**를 지웁니다. 비 CDB에는 PDB가 포함될 수 없습니다.

   1. **에디션**에서 **Oracle Enterprise Edition** 또는 **Oracle Standard Edition 2**를 선택합니다.

   1. **사용자 지정 엔진 버전**의 경우 RDS Custom의 기존 사용자 지정 엔진 버전(CEV)을 선택합니다. CEV의 형식은 `major-engine-version.customized_string`입니다. 예제 식별자는 `19.cdb_cev1`입니다.

      이전 단계에서 **멀티테넌트 아키텍처**를 선택한 경우 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb` 엔진 유형을 사용하는 CEV만 지정할 수 있습니다. 콘솔은 다른 엔진 유형으로 생성된 CEV를 필터링합니다.

1. **템플릿(Templates)**에서 **프로덕션(Production)**을 선택합니다.

1. **설정** 섹션에서 다음을 수행합니다.

   1. **DB 인스턴스 식별자**에서 DB 인스턴스의 이름을 입력합니다.

   1. **마스터 사용자 이름**에 사용자 이름을 입력합니다. 나중에 콘솔에서 이 값을 검색할 수 있습니다.

      비 CDB에 연결하는 경우 마스터 사용자는 비 CDB의 사용자입니다. CDB에 연결하는 경우 마스터 사용자는 PDB의 사용자입니다. CDB 루트에 연결하려면 호스트에 로그인하고 SQL 클라이언트를 시작한 다음 SQL 명령을 사용하여 관리자를 생성합니다.  

   1. **암호 자동 생성**을 지웁니다.

1. **DB 인스턴스 클래스**를 선택합니다.

   지원되는 클래스는 [RDS Custom for Oracle에 대한 DB 인스턴스 클래스 지원](custom-oracle-feature-support.md#custom-reqs-limits.instances) 섹션을 참조하세요.

1. **스토리지(Storage)** 섹션에서 다음을 수행합니다.

   1. **스토리지 유형**에서 SSD 유형(io1, io2, gp2 또는 gp3)을 선택합니다. 다음과 같은 추가 옵션이 있습니다.
      + io1, io2 또는 gp3의 경우 **프로비저닝된 IOPS**의 속도를 선택합니다. 기본값은 io1 및 io2의 경우 1,000이고 gp3의 경우 12,000입니다.
      + gp3에서 **스토리지 처리량** 속도를 선택합니다. 기본값은 500MiBps입니다.

   1. **할당된 스토리지**에서 스토리지 크기를 선택합니다. 기본값은 40GiB입니다.

1. **연결**에서 **Virtual Private Cloud(VPC)**, **DB 서브넷 그룹**, **VPC 보안 그룹(방화벽)**을 지정합니다.

1. **RDS Custom 보안**을 위해서는 다음을 수행합니다.

   1. **IAM 인스턴스 프로파일(IAM instance profile)**에서 RDS Custom for Oracle DB 인스턴스의 인스턴스 프로파일을 선택합니다.

      IAM 인스턴스 프로파일은 `AWSRDSCustom`으로 시작해야 합니다(예: *AWSRDSCustomInstanceProfileForRdsCustomInstance*).

   1. **암호화(Encryption)**의 경우 **키 ARN 입력(Enter a key ARN)**을 선택하여 사용 가능한 AWS KMS 키를 나열합니다. 그런 다음 목록에서 키를 선택합니다.

      AWS KMS 키는 RDS Custom에 필수입니다. 자세한 내용은 [1단계: 대칭 암호화 AWS KMS 키 생성 또는 재사용](custom-setup-orcl.md#custom-setup-orcl.cmk) 섹션을 참조하세요.

1. **데이터베이스 옵션**에서 다음을 수행합니다.

   1. (선택 사항) **시스템 ID(SID)**에 Oracle SID의 값을 입력합니다. 이 값은 CDB의 이름이기도 합니다. SID는 데이터베이스 파일을 관리하는 Oracle 데이터베이스 인스턴스의 이름입니다. 이 맥락에서 ‘Oracle 데이터베이스 인스턴스’라는 용어는 SGA(시스템 글로벌 영역) 및 Oracle 백그라운드 프로세스만을 지칭합니다. SID를 지정하지 않으면 기본값 **RDSCDB**가 사용됩니다.

   1. (선택 사항) **초기 데이터베이스 이름**에 이름을 입력합니다. 기본값은 **ORCL**입니다. 멀티테넌트 아키텍처에서 초기 데이터베이스 이름은 PDB 이름입니다.
**참고**  
SID와 PDB 이름은 달라야 합니다.

   1. **옵션 그룹**의 경우 옵션 그룹을 선택하거나 기본값을 그대로 사용합니다.
**참고**  
RDS Custom for Oracle에 지원되는 유일한 옵션은 `Timezone`입니다. 자세한 내용은 [Oracle 시간대](custom-managing.timezone.md) 섹션을 참조하세요.

   1. **백업 보존 기간**에서 값일을 선택합니다. **0일**은 선택할 수 없습니다.

   1. 나머지 섹션에서 원하는 대로 RDS Custom DB 인스턴스 설정을 지정합니다. 각 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 섹션을 참조하세요. 다음 설정은 콘솔에 표시되지 않으며 지원되지 않습니다.
      + **프로세서 기능**
      + **Storage autoscaling(스토리지 Autoscaling**
      + **데이터베이스 인증(Database authentication)**의 **암호 및 Kerberos 인증(Password and Kerberos authentication)** 옵션(**암호 인증(Password authentication)**만 지원)
      + **성능 개선 도우미** 
      + **로그 내보내기**
      + **마이너 버전 자동 업그레이드 활성화**
      + **삭제 방지**

1. **Create database**(데이터베이스 생성)를 선택합니다.
**중요**  
RDS Custom for Oracle DB 인스턴스를 생성할 때 다음 오류가 표시될 수 있습니다. 서비스 연결 역할이 생성되고 있습니다. 나중에 다시 시도해 주세요. 이 경우에는 몇 분 정도 기다렸다가 다시 DB 인스턴스를 생성하면 됩니다.

   **View credential details**(보안 인증 세부 정보 보기) 버튼이 **Databases**(데이터베이스) 페이지에 표시됩니다.

   RDS Custom DB 인스턴스의 마스터 사용자 이름 및 암호를 보려면 **자격 증명 세부 정보 보기(View credential details)**를 선택합니다.

   DB 인스턴스를 마스터 사용자로 연결하려면 화면에 나타난 사용자 이름과 암호를 사용합니다.
**중요**  
콘솔에서 마스터 사용자 암호를 다시 볼 수 없습니다. 따라서 기록을 해두지 않으면 이를 변경해야 합니다. RDS Custom DB 인스턴스를 사용할 수 있게 된 후에 마스터 사용자 암호를 변경하려면 데이터베이스에 로그인하여 `ALTER USER` 명령을 실행합니다. 콘솔에서 **수정** 옵션을 사용하여 암호를 재설정할 수 없습니다.

1. **데이터베이스(Databases)**를 선택하여 RDS Custom DB 인스턴스 목록을 확인합니다.

1. 방금 생성한 RDS Custom DB 인스턴스를 선택합니다.

   RDS 콘솔에 새로운 RDS Custom DB 인스턴스의 세부 정보가 표시됩니다.
   + RDS Custom DB 인스턴스를 만들고 사용할 준비가 될 때까지 DB 인스턴스의 상태는 **생성 중(creating)**입니다. 상태가 **available**로 변경되면 DB 인스턴스에 연결할 수 있습니다. 할당된 인스턴스 클래스 및 스토리지에 따라 새 DB 인스턴스를 사용할 수 있게 되기까지 몇 분 정도 걸릴 수 있습니다.
   + **역할(Role)**에는 **인스턴스(RDS Custom)(Instance (RDS Custom))** 값이 있습니다.
   + **RDS Custom 자동화 모드(RDS Custom automation mode)**에는 **완전 자동화(Full automation)** 값이 있습니다. 이 설정은 DB 인스턴스가 자동 모니터링 및 인스턴스 복구를 제공함을 의미합니다.

### AWS CLI
<a name="custom-creating.CLI"></a>

[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 명령을 사용하여 RDS Custom DB 인스턴스를 생성합니다.

다음 옵션이 필요합니다.
+ `--db-instance-identifier`
+ `--db-instance-class`(지원되는 인스턴스 클래스 목록은 섹션 참조)[RDS Custom for Oracle에 대한 DB 인스턴스 클래스 지원](custom-oracle-feature-support.md#custom-reqs-limits.instances)
+ `--engine engine-type`(*엔진 유형*은 `custom-oracle-ee`, `custom-oracle-se2`, `custom-oracle-ee-cdb`, `custom-oracle-se2-cdb`)
+ `--engine-version cev`(여기서 *`cev`*는 [CEV 생성](custom-cev.create.md)에서 지정한 사용자 지정 엔진 버전의 이름)
+ `--kms-key-id my-kms-key`
+ `--backup-retention-period days`(여기서 *`days`*는 `0`보다 큰 값)
+ `--no-auto-minor-version-upgrade`
+ `--custom-iam-instance-profile AWSRDSCustomInstanceProfile-us-east-1`(여기서 *`region`*은 DB 인스턴스를 생성하는 AWS 리전)

다음 예제에서는 `my-cfo-cdb-instance`라는 RDS Custom DB 인스턴스를 생성합니다. 데이터베이스는 기본값이 아닌 이름 *MYCDB*가 지정된 CDB입니다. 기본값이 아닌 PDB 이름은 *MYPDB*입니다. 백업 보존 기간은 3일로 설정합니다.

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

```
 1. aws rds create-db-instance \
 2.     --engine custom-oracle-ee-cdb \
 3.     --db-instance-identifier my-cfo-cdb-instance \
 4.     --engine-version 19.cdb_cev1 \
 5.     --db-name MYPDB \
 6.     --db-system-id MYCDB \
 7.     --allocated-storage 250 \
 8.     --db-instance-class db.m5.xlarge \
 9.     --db-subnet-group mydbsubnetgroup \
10.     --master-username myuser \
11.     --master-user-password mypassword \
12.     --backup-retention-period 3 \
13.     --port 8200 \
14.     --kms-key-id my-kms-key \
15.     --no-auto-minor-version-upgrade \
16.     --custom-iam-instance-profile AWSRDSCustomInstanceProfile-us-east-1
```
Windows의 경우:  

```
 1. aws rds create-db-instance ^
 2.     --engine custom-oracle-ee-cdb ^
 3.     --db-instance-identifier my-cfo-cdb-instance ^
 4.     --engine-version 19.cdb_cev1 ^
 5.     --db-name MYPDB ^
 6.     --db-system-id MYCDB ^
 7.     --allocated-storage 250 ^
 8.     --db-instance-class db.m5.xlarge ^
 9.     --db-subnet-group mydbsubnetgroup ^
10.     --master-username myuser ^
11.     --master-user-password mypassword ^
12.     --backup-retention-period 3 ^
13.     --port 8200 ^
14.     --kms-key-id my-kms-key ^
15.     --no-auto-minor-version-upgrade ^
16.     --custom-iam-instance-profile AWSRDSCustomInstanceProfile-us-east-1
```
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

`describe-db-instances` 명령을 사용하여 인스턴스에 대한 세부 정보를 가져옵니다.

**Example**  

```
1. aws rds describe-db-instances --db-instance-identifier my-cfo-cdb-instance
```
다음 부분 출력은 엔진, 파라미터 그룹 및 기타 정보를 보여줍니다.  

```
 1.         {   
 2.             "DBInstanceIdentifier": "my-cfo-cdb-instance",
 3.             "DBInstanceClass": "db.m5.xlarge",
 4.             "Engine": "custom-oracle-ee-cdb",
 5.             "DBInstanceStatus": "available",
 6.             "MasterUsername": "admin",
 7.             "DBName": "MYPDB",
 8.             "DBSystemID": "MYCDB",
 9.             "Endpoint": {
10.                 "Address": "my-cfo-cdb-instance.abcdefghijkl.us-east-1.rds.amazonaws.com",
11.                 "Port": 1521,
12.                 "HostedZoneId": "A1B2CDEFGH34IJ"
13.             },
14.             "AllocatedStorage": 100,
15.             "InstanceCreateTime": "2023-04-12T18:52:16.353000+00:00",
16.             "PreferredBackupWindow": "08:46-09:16",
17.             "BackupRetentionPeriod": 7,
18.             "DBSecurityGroups": [],
19.             "VpcSecurityGroups": [
20.                 {
21.                     "VpcSecurityGroupId": "sg-0a1bcd2e",
22.                     "Status": "active"
23.                 }
24.             ],
25.             "DBParameterGroups": [
26.                 {
27.                     "DBParameterGroupName": "default.custom-oracle-ee-cdb-19",
28.                     "ParameterApplyStatus": "in-sync"
29.                 }
30.             ],
31. ...
```

## 멀티테넌트 아키텍처 고려 사항
<a name="custom-creating.overview"></a>

Oracle 멀티테넌트 아키텍처(`custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb` 엔진 유형)를 사용하여 Amazon RDS Custom for Oracle DB 인스턴스를 생성하는 경우 데이터베이스는 컨테이너 데이터베이스(CDB)입니다. Oracle 멀티테넌트 아키텍처를 지정하지 않는 경우 데이터베이스는 `custom-oracle-ee` 또는 `custom-oracle-se2` 엔진 유형을 사용하는 기존의 비CDB입니다. 비 CDB에는 플러그형 데이터베이스(PDB)가 포함될 수 없습니다. 자세한 내용은 [Amazon RDS Custom for Oracle 데이터베이스 아키텍처](custom-oracle.db-architecture.md) 섹션을 참조하세요.

RDS Custom for Oracle CDB 인스턴스를 생성할 때는 다음 사항을 고려하세요.
+ Oracle Database 19c CEV에서만 멀티테넌트 데이터베이스를 생성할 수 있습니다.
+ CEV가 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb` 엔진 유형을 사용하는 경우에만 CDB 인스턴스를 만들 수 있습니다.
+ Standard Edition 2를 사용하여 CDB 인스턴스를 생성하는 경우 CDB에는 최대 3개의 PDB를 포함할 수 있습니다.
+ 기본적으로 CDB의 이름은 `RDSCDB`이며, 이는 Oracle 시스템 ID(Oracle SID)의 이름이기도 합니다. 다른 이름으로 변경할 수 있습니다.
+ CDB에는 초기 PDB가 하나만 있습니다. PDB 이름의 기본값은 `ORCL`입니다. 첫 PDB에 다른 이름을 선택할 수도 있지만, Oracle SID와 PDB 이름은 같으면 안 됩니다.
+ RDS Custom for Oracle은 PDB용 API를 제공하지 않습니다. 추가 PDB를 생성하려면 Oracle SQL 명령 `CREATE PLUGGABLE DATABASE`를 사용합니다. RDS Custom for Oracle은 생성할 수 있는 PDB 수를 제한하지 않습니다. 일반적으로 온프레미스 배포에서와 마찬가지로 PDB를 생성하고 관리하는 것은 사용자의 책임입니다.
+ RDS API를 사용하여 PDB를 생성, 수정 및 삭제할 수 없습니다. Oracle SQL 문을 사용해야 합니다. Oracle SQL로 PDB를 생성할 때 시점 복구(PITR)를 수행해야 하는 경우에 대비하여 나중에 수동 스냅샷을 생성하는 것이 좋습니다.
+ 기존 PDB의 이름은 Amazon RDS API를 사용하여 변경할 수 없습니다. `modify-db-instance` 명령을 사용하여 CDB의 이름을 바꿀 수도 없습니다.
+ CDB 루트의 열기 모드는 기본 데이터베이스에서는 `READ WRITE`이고 탑재된 대기 데이터베이스에서는 `MOUNTED`입니다. RDS Custom for Oracle은 CDB를 열 때 모든 PDB를 열려고 시도합니다. RDS Custom for Oracle이 일부 PDB를 열 수 없는 경우 `tenant database shutdown` 이벤트가 발생합니다.

## RDS Custom 서비스 연결 역할
<a name="custom-creating.slr"></a>

*서비스 연결 역할*을 사용하여 AWS 계정의 리소스에 대한 Amazon RDS Custom 액세스 권한을 부여합니다. 필요한 권한을 수동으로 추가할 필요가 없어 RDS Custom을 보다 쉽게 사용할 수 있습니다. RDS Custom은 서비스 연결 역할의 권한을 정의하므로, 달리 정의하지 않으면 RDS Custom만 해당 역할을 맡을 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며, 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

RDS Custom DB 인스턴스를 생성하면 Amazon RDS 및 RDS Custom 서비스 연결 역할이 모두 생성되어(존재하지 않았던 경우) 사용됩니다. 자세한 내용은 [Amazon RDS에 서비스 연결 역할 사용](UsingWithRDS.IAM.ServiceLinkedRoles.md) 섹션을 참조하세요.

RDS Custom for Oracle DB 인스턴스를 처음 생성할 때 다음 오류가 표시될 수 있습니다. 서비스 연결 역할이 생성되고 있습니다. 나중에 다시 시도해 주세요. 이 경우에는 몇 분 정도 기다렸다가 다시 DB 인스턴스를 생성하면 됩니다.

## RDS Custom for Oracle DB 인스턴스에 추가 소프트웨어 구성 요소 설치
<a name="custom-install-add-software"></a>

새로 만든 DB 인스턴스의 데이터베이스 환경에는 Oracle 바이너리, 데이터베이스 및 데이터베이스 리스너가 포함됩니다. DB 인스턴스의 호스트 운영 체제에 추가 소프트웨어를 설치해야 할 수 있습니다. 예를 들어 Oracle Application Express(APEX), Oracle Enterprise Manager(OEM) 에이전트 또는 Guardium S-TAP 에이전트를 설치할 수 있습니다. 가이드 및 개괄적인 지침이 자세히 나와 있는 AWS 블로그 게시물 [Amazon RDS Custom for Oracle에 추가 소프트웨어 구성 요소 설치](https://aws.amazon.com//blogs/database/install-additional-software-components-on-amazon-rds-custom-for-oracle/)를 참조하세요.

# 세션 관리자를 사용하여 RDS Custom DB 인스턴스에 연결
<a name="custom-creating.ssm"></a>

RDS Custom DB 인스턴스를 생성한 후 AWS Systems Manager Session Manager를 사용하여 연결할 수 있습니다. 이는 DB 인스턴스에 공개적으로 액세스할 수 없을 때 우선적으로 사용되는 기술입니다.

Session Manager를 사용하면 브라우저 기반 쉘 또는 AWS CLI를 통해 Amazon EC2 인스턴스에 액세스할 수 있습니다. 자세한 내용은 [AWS Systems Manager 세션 관리자](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)를 참조하세요.

## 콘솔
<a name="custom-managing.ssm.console"></a>

**세션 관리자를 사용하여 DB 인스턴스에 연결하는 방법**

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

1. 탐색 창에서 **데이터베이스(Databases)**를 선택한 후 연결하려는 RDS Custom DB 인스턴스를 선택합니다.

1. **Configuration**(구성)을 선택합니다.

1. DB 인스턴스의 **리소스 ID(Resource ID)**를 기록해 둡니다. 예를 들어, 리소스 ID는 `db-ABCDEFGHIJKLMNOPQRS0123456`일 수 있습니다.

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **Instances**(인스턴스)를 선택합니다.

1. EC2 인스턴스의 이름을 찾은 다음 연결된 인스턴스 ID를 클릭합니다. 예를 들어, 인스턴스 ID는 `i-abcdefghijklm01234`일 수 있습니다.

1. **연결**을 선택합니다.

1. **세션 관리자(Session Manager)**를 선택합니다.

1. **Connect**(연결)를 선택합니다.

   세션에 대한 창이 열립니다.

## AWS CLI
<a name="custom-managing.ssm.CLI"></a>

AWS CLI를 사용하여 RDS Custom DB 인스턴스에 연결할 수 있습니다. 이 기술을 사용하려면 AWS CLI용 세션 관리자 플러그인이 필요합니다. 플러그인 설치 방법은 [AWS CLI용 세션 관리자 플러그인 설치](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)를 참조하세요.

RDS Custom DB 인스턴스의 DB 리소스 ID를 찾으려면 `aws rds [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)`를 사용합니다.

```
aws rds describe-db-instances \
    --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
    --output text
```

다음 샘플 출력은 RDS Custom 인스턴스의 리소스 ID를 보여줍니다. 접두사는 `db-`입니다.

```
db-ABCDEFGHIJKLMNOPQRS0123456
```

DB 인스턴스의 EC2 인스턴스 ID를 찾으려면 `aws ec2 describe-instances`를 사용합니다. 다음 예제에는 리소스 ID로 `db-ABCDEFGHIJKLMNOPQRS0123456`이 사용됩니다.

```
aws ec2 describe-instances \
    --filters "Name=tag:Name,Values=db-ABCDEFGHIJKLMNOPQRS0123456" \
    --output text \
    --query 'Reservations[*].Instances[*].InstanceId'
```

다음 샘플 출력에는 EC2 인스턴스 ID가 나와 있습니다.

```
i-abcdefghijklm01234
```

`--target` 파라미터의 EC2 인스턴스 ID를 제공하는 `aws ssm start-session` 명령을 사용합니다.

```
aws ssm start-session --target "i-abcdefghijklm01234"
```

성공적으로 연결되면 다음과 같이 표시됩니다.

```
Starting session with SessionId: yourid-abcdefghijklm1234
[ssm-user@ip-123-45-67-89 bin]$
```

## SSH를 사용하여 RDS Custom DB 인스턴스에 연결
<a name="custom-creating.ssh"></a>

SSH(Secure Shell Protocol)는 보안이 되지 않은 네트워크를 통한 암호화된 통신을 지원하는 네트워크 프로토콜입니다. RDS Custom DB 인스턴스를 생성한 후 ssh 클라이언트를 사용하여 이 인스턴스에 연결할 수 있습니다. 자세한 내용은 [SSH를 사용하여 Linux 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)을 참조하세요.

SSH 연결 기술은 DB 인스턴스가 프라이빗 인스턴스인지에 따라 좌우됩니다. 즉, 이 기술은 퍼블릭 인터넷 연결을 허용하지 않습니다. 이 경우 SSH 터널링을 사용하여 ssh 유틸리티를 인스턴스에 연결해야 합니다. 이 기술은 기존 SSH 세션 내에서 전용 데이터 스트림(터널)을 사용하여 데이터를 전송합니다. AWS Systems Manager를 사용하여 SSH 터널링을 구성할 수 있습니다.

**참고**  
프라이빗 인스턴스에 액세스할 수 있는 다양한 전략이 지원됩니다. Bastion 호스트를 사용하여 ssh 클라이언트를 프라이빗 인스턴스에 연결하는 방법을 알아보려면 [Linux Bastion Hosts on AWS](https://aws.amazon.com/solutions/implementations/linux-bastion/)을 참조하세요. 포트 전달을 구성하는 방법을 알아보려면 [AWS Systems Manager Session Manager를 사용하여 포트 전달](https://aws.amazon.com/blogs/aws/new-port-forwarding-using-aws-system-manager-sessions-manager/)을 참조하세요.

DB 인스턴스가 퍼블릭 서브넷에 있고 공개적으로 사용 가능한 설정이 있는 경우 SSH 터널링이 필요하지 않습니다. 퍼블릭 Amazon EC2 인스턴스와 마찬가지로 SSH를 사용하여 연결할 수 있습니다.

ssh 클라이언트를 DB 인스턴스에 연결하려면 다음 단계를 완료하세요.

1. [1단계: SSH 연결을 허용하도록 DB 인스턴스 구성](#custom-managing.ssh.port-22)

1. [2단계: SSH 비밀 키 및 EC2 인스턴스 ID 검색](#custom-managing.ssh.obtaining-key)

1. [3단계: ssh 유틸리티를 사용하여 EC2 인스턴스에 연결](#custom-managing.ssh.connecting)

### 1단계: SSH 연결을 허용하도록 DB 인스턴스 구성
<a name="custom-managing.ssh.port-22"></a>

DB 인스턴스가 SSH 연결을 허용할 수 있는지 확인하려면 다음을 수행합니다.
+ DB 인스턴스 보안 그룹이 TCP용 포트 22에서 인바운드 연결을 허용하는지 확인해야 합니다.

  DB 인스턴스의 보안 그룹을 구성하는 방법을 알아보려면 [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md) 섹션을 참조하세요.
+ SSH 터널링을 사용할 계획이 없는 경우 DB 인스턴스가 퍼블릭 서브넷에 있고 퍼블릭 액세스가 가능한지 확인합니다.

  콘솔의 관련 필드는 데이터베이스 세부 정보 페이지의 **연결 및 보안** 탭에 있는 **퍼블릭 액세스 가능**입니다. CLI에서 설정을 확인하려면 다음 명령을 실행합니다.

  ```
  aws rds describe-db-instances \
  --query 'DBInstances[*].{DBInstanceIdentifier:DBInstanceIdentifier,PubliclyAccessible:PubliclyAccessible}' \
  --output table
  ```

  DB 인스턴스의 접근성 설정을 변경하려면 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

### 2단계: SSH 비밀 키 및 EC2 인스턴스 ID 검색
<a name="custom-managing.ssh.obtaining-key"></a>

SSH를 사용하여 DB 인스턴스에 연결하려면 인스턴스와 연결된 SSH 키 페어가 필요합니다. RDS Custom은 SSH 키 페어를 자동으로 만드는데, 이때 이름 지정 규칙 `do-not-delete-rds-custom-ssh-privatekey-resource_id-uuid` 또는 `rds-custom!oracle-do-not-delete-resource_id-uuid-ssh-privatekey`를 사용하여 이름을 지정합니다. AWS Secrets Manager는 SSH 프라이빗 키를 보안 암호로 저장합니다.

AWS Management Console 또는 AWS CLI 중 하나를 사용하여 SSH 비밀 키를 검색할 수 있습니다. 인스턴스에 퍼블릭 DNS가 있고 SSH 터널링을 사용하지 않으려는 경우 DNS 이름도 검색하세요. 퍼블릭 연결의 DNS 이름을 지정합니다.

#### 콘솔
<a name="custom-managing.ssh.obtaining-key.console"></a>

**SSH 비밀 키를 검색하려면**

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

1. 탐색 창에서 **데이터베이스(Databases)**를 선택한 후 연결하려는 RDS Custom DB 인스턴스를 선택합니다.

1. **Configuration**(구성)을 선택합니다.

1. **리소스 ID(Resource ID)** 값을 기록해 둡니다. 예를 들어 DB 인스턴스 리소스 ID는 `db-ABCDEFGHIJKLMNOPQRS0123456`일 수 있습니다.

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. EC2 인스턴스의 이름을 찾고 연결된 인스턴스 ID를 선택합니다. 예를 들어, EC2 인스턴스 ID는 `i-abcdefghijklm01234`일 수 있습니다.

1. **세부 정보(Details)**에서 **키 페어 이름(Key pair name)**을 찾습니다. 페어 이름에는 DB 인스턴스 리소스 ID가 포함됩니다. 예를 들어, 페어 이름은 `do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c` 또는 `rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey`일 수 있습니다.

1. EC2 인스턴스가 퍼블릭인 경우 **퍼블릭 IPv4 DNS**를 기록해 둡니다. 예를 들어, 퍼블릭 도메인 이름 시스템(DNS) 주소는 `ec2-12-345-678-901.us-east-2.compute.amazonaws.com`일 수 있습니다.

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 AWS Secrets Manager 콘솔을 엽니다.

1. 키 페어와 이름이 같은 비밀 키를 선택합니다.

1. **Retrieve secret value**(보안 암호 값 검색)를 선택합니다.

1. SSH 프라이빗 키를 텍스트 파일로 복사한 다음 `.pem` 확장자로 파일을 저장합니다. 예를 들어, 파일을 `/tmp/do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem` 또는 `/tmp/rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem`으로 저장합니다.

#### AWS CLI
<a name="custom-managing.ssh.obtaining-key.CLI"></a>

SSH 프라이빗 키를 검색하고 .pem 파일에 저장하려면 AWS CLI를 사용하면 됩니다.

1. `aws rds [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)`를 사용하여 RDS Custom DB 인스턴스의 DB 리소스 ID를 찾습니다.

   ```
   aws rds describe-db-instances \
       --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
       --output text
   ```

   다음 샘플 출력은 RDS Custom 인스턴스의 리소스 ID를 보여줍니다. 접두사는 `db-`입니다.

   ```
   db-ABCDEFGHIJKLMNOPQRS0123456
   ```

1. `aws ec2 describe-instances`를 사용하여 DB 인스턴스의 EC2 인스턴스 ID를 찾습니다. 다음 예제에는 리소스 ID로 `db-ABCDEFGHIJKLMNOPQRS0123456`이 사용됩니다.

   ```
   aws ec2 describe-instances \
       --filters "Name=tag:Name,Values=db-ABCDEFGHIJKLMNOPQRS0123456" \
       --output text \
       --query 'Reservations[*].Instances[*].InstanceId'
   ```

   다음 샘플 출력에는 EC2 인스턴스 ID가 나와 있습니다.

   ```
   i-abcdefghijklm01234
   ```

1. 키 이름을 찾으려면 EC2 인스턴스 ID를 지정합니다. 다음 예제에서는 EC2 인스턴스 `i-0bdc4219e66944afa`에 대해 설명합니다.

   ```
   aws ec2 describe-instances \
       --instance-ids i-0bdc4219e66944afa \
       --output text \
       --query 'Reservations[*].Instances[*].KeyName'
   ```

   다음 샘플 출력은 이름 지정 형식 `do-not-delete-rds-custom-ssh-privatekey-resource_id-uuid` 또는 `rds-custom!oracle-do-not-delete-resource_id-uuid-ssh-privatekey`를 사용하는 키 이름을 보여줍니다.

   ```
   do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c
   rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey
   ```

1. `aws secretsmanager`를 사용하여 키의 이름을 따라 명명된 .pem 파일로 프라이빗 키를 저장합니다.

   다음 예제에서는 `/tmp` 디렉터리의 파일에 `do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c` 키를 저장합니다.

   ```
   aws secretsmanager get-secret-value \
       --secret-id do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c \
       --query SecretString \
       --output text >/tmp/do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem
   ```

   다음 예제에서는 `/tmp` 디렉터리의 파일에 `rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey` 키를 저장합니다.

   ```
   aws secretsmanager get-secret-value \
       --secret-id rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey \
       --query SecretString \
       --output text >/tmp/rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem
   ```

### 3단계: ssh 유틸리티를 사용하여 EC2 인스턴스에 연결
<a name="custom-managing.ssh.connecting"></a>

연결 방법은 프라이빗 DB 인스턴스에 연결하는지 또는 퍼블릭 인스턴스에 연결하는지에 따라 달라집니다. 프라이빗 연결을 위해서는 AWS Systems Manager를 통해 SSH 터널링을 구성해야 합니다.

**ssh 유틸리티를 사용하여 EC2 인스턴스에 연결하려면**

1. 프라이빗 연결의 경우 SSH 구성 파일을 수정하여 명령을 AWS Systems Manager Session Manager로 프록시합니다. 퍼블릭 연결의 경우 2단계로 건너뜁니다.

   다음 행을 `~/.ssh/config`에 추가합니다. 이러한 행은 이름이 `i-` 또는 `mi-`로 시작하는 호스트에 대한 SSH 명령을 프록시합니다.

   ```
   Host i-* mi-*
       ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
   ```

1. .pem 파일이 들어 있는 디렉터리로 변경하고, `chmod`를 사용하여 권한을 `400`으로 설정합니다.

   다음 예제에서는 `/tmp` 디렉터리를 변경하고 .pem 파일 `do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem`에 대한 권한을 설정합니다.

   ```
   cd /tmp
   chmod 400 do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem
   ```

   다음 예제에서는 `/tmp` 디렉터리를 변경하고 .pem 파일 `rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem`에 대한 권한을 설정합니다.

   ```
   cd /tmp
   chmod 400 rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem
   ```

1. ssh 유틸리티를 실행하여.pem 파일과 퍼블릭 DNS 이름(퍼블릭 연결용) 또는 EC2 인스턴스 ID(프라이빗 연결용)를 지정합니다. `ec2-user` 사용자로 로그인합니다.

   다음 예제에서는 DNS 이름 `ec2-12-345-678-901.us-east-2.compute.amazonaws.com`을 사용하여 퍼블릭 인스턴스에 연결합니다.

   ```
   # .pem file using naming prefix do-not-delete
   ssh -i \
     "do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem" \
     ec2-user@ec2-12-345-678-901.us-east-2.compute.amazonaws.com
   
   # .pem file using naming prefix rds-custom!oracle-do-not-delete
   ssh -i \
     "rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem" \
     ec2-user@ec2-12-345-678-901.us-east-2.compute.amazonaws.com
   ```

   다음 예제에서는 EC2 인스턴스 ID `i-0bdc4219e66944afa`를 사용하여 프라이빗 인스턴스에 연결합니다.

   ```
   # .pem file using naming prefix do-not-delete
   ssh -i \
     "do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem" \
     ec2-user@i-0bdc4219e66944afa
   
   # .pem file using naming prefix rds-custom!oracle-do-not-delete
   ssh -i \
     "rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem" \
     ec2-user@i-0bdc4219e66944afa
   ```

# RDS Custom for Oracle 데이터베이스에 SYS로 로그인
<a name="custom-creating.sysdba"></a>

RDS Custom DB 인스턴스를 생성한 후 Oracle 데이터베이스에 `SYS` 사용자로 로그인할 수 있으며, 이 경우 `SYSDBA` 권한이 부여됩니다. 로그인 옵션은 다음과 같습니다.
+ Secrets Manager에서 `SYS` 암호를 가져오고, SQL 클라이언트에서 이 암호를 지정합니다.
+ OS 인증을 사용하여 데이터베이스에 로그인합니다. 이 경우 암호가 필요하지 않습니다.

## RDS Custom for Oracle 데이터베이스의 SYS 암호 찾기
<a name="custom-creating.sysdba.pwd"></a>

Oracle 데이터베이스에 `SYS` 또는 `SYSTEM`로 로그인하거나, API 호출에 마스터 사용자 이름을 지정하여 로그인할 수 있습니다. `SYS` 및 `SYSTEM`의 암호는 Secrets Manager에 저장됩니다.

보안 암호는 이름 지정 형식 `do-not-delete-rds-custom-resource_id-uuid` 또는 `rds-custom!oracle-do-not-delete-resource_id-uuid`를 사용합니다. AWS Management Console을 사용하여 암호를 찾을 수 있습니다.

### 콘솔
<a name="custom-creating.sysdba.pwd.console"></a>

**Secrets Manager에서 데이터베이스의 SYS 암호를 찾으려면**

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

1. 콘솔에서 다음 단계를 완료합니다.

   1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

   1. RDS Custom for Oracle DB 인스턴스의 이름을 선택합니다.

   1. **구성**을 선택합니다.

   1. **리소스 ID** 아래의 값을 복사합니다. 예를 들어, 리소스 ID는 **db-ABC12CDE3FGH4I5JKLMNO6PQR7**일 수 있습니다.

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 Secrets Manager 콘솔을 엽니다.

1. Secrets Manager 콘솔에서 다음 단계를 완료합니다.

   1. 왼쪽 탐색 창에서 **보안 암호**를 선택합니다.

   1. 2.d단계에서 복사한 리소스 ID를 기준으로 보안 암호를 필터링합니다.

   1. 이름 지정 형식 **do-not-delete-rds-custom-*resource\$1id*-*uuid*** 또는 **rds-custom\$1oracle-do-not-delete-*resource\$1id*-*uuid***를 사용하는 보안 암호를 선택합니다. *resource\$1id*는 2.d단계에서 복사한 리소스 ID입니다.

      예를 들어 리소스 ID가 **db-ABC12CDE3FGH4I5JKLMNO6PQR7**이고 UUID가 **1234ab**인 경우 보안 암호의 이름은 **do-not-delete-rds-custom-db-ABC12CDE3FGH4I5JKLMNO6PQR7-1234ab** 또는 **rds-custom\$1oracle-do-not-delete-db-ABC12CDE3FGH4I5JKLMNO6PQR7-1234ab**입니다.

   1. **보안 암호 값** 섹션에서 **보안 암호 값 검색**을 선택합니다.

   1. **키/값**에서 **암호** 값을 복사합니다.

1. DB 인스턴스에 SQL\$1Plus를 설치하고 데이터베이스에 `SYS`로 로그인합니다. 자세한 내용은 [3단계: SQL 클라이언트를 Oracle DB 인스턴스에 연결](CHAP_GettingStarted.CreatingConnecting.Oracle.md#CHAP_GettingStarted.Connecting.Oracle) 섹션을 참조하세요.

## OS 인증을 사용하여 RDS Custom for Oracle 데이터베이스에 로그인
<a name="custom-creating.sysdba.pwd"></a>

OS 사용자 `rdsdb`는 Oracle 데이터베이스 바이너리를 소유합니다. `rdsdb` 사용자로 전환하여 암호 없이 RDS Custom for Oracle 데이터베이스에 로그인할 수 있습니다.

1. AWS Systems Manager를 사용하여 DB 인스턴스에 연결합니다. 자세한 내용은 [세션 관리자를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating.ssm.md) 섹션을 참조하세요.

1. `rdsdb` 사용자로 전환합니다.

   ```
   sudo su - rdsdb
   ```

1. OS 인증을 사용하여 데이터베이스에 로그인합니다. `sqlplus / as sysdba` 또는 `sql` 별칭을 사용할 수 있습니다.

   ```
   $ sqlplus / as sysdba
   
   SQL*Plus: Release 21.0.0.0.0 - Production on Wed Apr 12 20:11:08 2023
   Version 21.9.0.0.0
   
   Copyright (c) 1982, 2020, Oracle.  All rights reserved.
   
   
   Connected to:
   Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
   Version 19.10.0.0.0
   ```

   또는 `sql` 별칭을 사용할 수 있습니다.

   ```
   $ sql
   ```

# Amazon RDS Custom for Oracle DB 인스턴스 관리
<a name="custom-managing"></a>

Amazon RDS Custom은 Amazon RDS DB 인스턴스에 대한 일반적인 관리 작업의 하위 집합을 지원합니다. 그런 다음 AWS Management Console 및 AWS CLI를 사용하여 지원되는 RDS Custom for Oracle 관리 작업에 대한 지침을 확인할 수 있습니다.

**Topics**
+ [RDS Custom for Oracle에서 컨테이너 데이터베이스(CDB) 작업](custom-managing.multitenant.md)
+ [RDS Custom for Oracle의 고가용성 기능을 통한 작업](custom-managing.ha.md)
+ [RDS Custom 환경 사용자 지정](custom-managing.customizing-env.md)
+ [RDS Custom for Oracle DB 인스턴스 수정](custom-managing.modifying.md)
+ [RDS Custom for Oracle DB 인스턴스의 문자 집합 변경](custom-managing.character-set.md)
+ [RDS Custom for Oracle의 NLS\$1LANG 값 설정](custom-managing.nlslang.md)
+ [투명한 데이터 암호화 지원](#custom-managing.tde)
+ [RDS Custom for Oracle 리소스 태깅](custom-managing.tagging.md)
+ [RDS Custom for Oracle DB 인스턴스 삭제](custom-managing.deleting.md)

# RDS Custom for Oracle에서 컨테이너 데이터베이스(CDB) 작업
<a name="custom-managing.multitenant"></a>

Oracle 멀티테넌트 아키텍처(`custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb` 엔진 유형) 또는 기존의 비CDB 아키텍처(`custom-oracle-ee` 또는 `custom-oracle-se2` 엔진 유형)를 사용하여 RDS Custom for Oracle DB 인스턴스를 생성할 수 있습니다. 생성한 컨테이너 데이터베이스(CDB)에는 플러그형 데이터베이스(PDB) 1개와 PDB 시드 1개가 포함됩니다. Oracle SQL을 사용하여 수동으로 추가 PDB를 생성할 수 있습니다.

## PDB 및 CDB 이름
<a name="custom-managing.pdb-names"></a>

RDS Custom for Oracle CDB 인스턴스를 생성할 경우, 초기 PDB의 이름을 지정합니다. 기본적으로 초기 PDB의 이름은 `ORCL`으로 지정됩니다. 다른 이름으로 변경할 수 있습니다.

기본적으로 CDB의 이름은 `RDSCDB`로 지정됩니다. 다른 이름으로 변경할 수 있습니다. CDB 이름은 CDB를 관리하는 메모리와 프로세스를 고유하게 식별하는 Oracle 시스템 식별자(SID)의 이름이기도 합니다. Oracle SID에 대한 자세한 내용은 Oracle Database Concepts에 나온 [Oracle System Identifier(SID)](https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/oracle-database-instance.html#GUID-8BB8140D-63ED-454E-AAC3-1964F80D102D)를 참조하세요.**

기존 PDB의 이름은 Amazon RDS API를 사용하여 변경할 수 없습니다. `modify-db-instance` 명령을 사용하여 CDB의 이름을 바꿀 수도 없습니다.

## PDB 관리
<a name="custom-managing.pdb-creation"></a>

RDS Custom for Oracle 공동 책임 모델에서 PDB를 관리하고 추가 PDB를 생성할 책임은 사용자에게 있습니다. RDS Custom은 PDB 수를 제한하지 않습니다. CDB 루트에 연결하고 SQL 문을 실행하여 PDB를 수동으로 생성, 수정 및 삭제할 수 있습니다. Amazon EBS 데이터 볼륨에 PDB를 생성하여 DB 인스턴스가 지원 경계를 벗어나는 것을 방지합니다.

CDB 또는 PDB를 수정하려면 다음 단계를 완료합니다.

1. 자동화를 일시 중지하여 RDS Custom 작업과의 간섭을 방지하세요.

1. CDB 또는 PDB를 수정합니다.

1. 수정된 모든 PDB를 백업합니다.

1. RDS Custom 자동화를 다시 시작합니다.

## CDB 루트 자동 복구
<a name="custom-managing.cdb-root"></a>

RDS Custom은 비 CDB 루트를 열린 상태로 유지하는 것과 동일한 방식으로 CDB 루트를 열린 상태로 유지합니다. CDB 루트 상태가 변경되면 모니터링 및 복구 자동화가 CDB 루트를 원하는 상태로 복구하려고 시도합니다. 비 CDB 아키텍처와 마찬가지로 루트 CDB가 종료(`RDS-EVENT-0004`)되거나 재시작(`RDS-EVENT-0006`)될 때 RDS 이벤트 알림을 받습니다. RDS Custom은 DB 인스턴스 시작 시 모든 PDB를 `READ WRITE` 모드에서 열려고 시도합니다. 일부 PDB를 열 수 없는 경우 RDS Custom은 `tenant database shutdown` 이벤트를 게시합니다.

# RDS Custom for Oracle의 고가용성 기능을 통한 작업
<a name="custom-managing.ha"></a>

RDS Custom for Oracle은 다중 AZ 배포를 통해 내장된 고가용성을 제공합니다. 또는 사용 사례에 따라 Oracle Data Guard를 고객 관리형 옵션으로 사용할 수 있습니다.

## 다중 AZ 배포(완전관리형)
<a name="rds-custom-oracle-multiaz-deployments"></a>

RDS Custom for Oracle에 대한 다중 AZ 배포에서 Amazon RDS는 자동으로 서로 다른 가용 영역(AZ)에 동기식 대기 복제본을 프로비저닝하고 유지 관리합니다. 기본 DB 인스턴스는 데이터 중복성을 위해 여러 AZ에 대기 복제본으로 동기식으로 복제됩니다. 다중 AZ 배포는 Enterprise Edition과 Standard Edition 2 모두에서 지원됩니다. 세부 정보는 [RDS Custom for Oracle에 대한 다중 AZ 배포 관리](custom-oracle-multiaz.md) 섹션을 참조하세요.

## Oracle Data Guard(고객 관리형)
<a name="rds-custom-oracle-data-guard"></a>

또는 RDS Custom for Oracle DB 인스턴스 간에 데이터를 복제하도록 Oracle Data Guard를 수동으로 구성하여 고가용성을 달성할 수 있습니다. 프라이머리 DB 인스턴스는 데이터를 대기 인스턴스와 자동으로 동기화합니다. Oracle Data Guard는 Enterprise Edition에서만 지원됩니다.

다음과 같은 방법으로 고가용성 환경을 구성할 수 있습니다.
+ AZ 장애에 대처하도록 서로 다른 AZ에서 대기 인스턴스를 구성합니다.
+ 대기 데이터베이스를 탑재된 모드 또는 읽기 전용 모드로 전환합니다. 읽기 전용 모드에는 Oracle Active Data Guard 라이선스가 필요합니다.
+ 데이터 손실 없이 프라이머리 데이터베이스에서 대기 데이터베이스로 장애 조치하거나 전환합니다.
+ 온프레미스 인스턴스에 대해 고가용성을 구성한 다음, RDS Custom for Oracle 대기 데이터베이스로 장애 조치하거나 전환하여 데이터를 마이그레이션합니다.

고가용성을 위해 Oracle Data Guard를 구성하는 방법은 AWS Blog의 [Build high availability for RDS Custom for Oracle using read replicas](https://aws.amazon.com/blogs/database/build-high-availability-for-amazon-rds-custom-for-oracle-using-read-replicas/)를 참조하세요. 다음 작업을 수행할 수 있습니다.
+ 가상 사설 네트워크(VPN) 터널을 사용하여 고가용성 인스턴스에 대해 전송 중인 데이터를 암호화합니다. 전송 중 암호화는 RDS Custom for Oracle에서 자동으로 구성되지 않습니다.
+ 고가용성 인스턴스를 모니터링하도록 Oracle Fast-Failover Observer(FSFO)를 구성합니다.
+ 필요한 조건이 충족되면 관찰자가 자동 장애 조치를 수행할 수 있도록 합니다.

# RDS Custom 환경 사용자 지정
<a name="custom-managing.customizing-env"></a>

RDS Custom for Oracle에는 자동화를 일시 중지하지 않고도 DB 인스턴스 환경을 사용자 지정할 수 있는 내장 기능이 포함되어 있습니다. 예를 들어 RDS API를 사용하면 다음과 같이 환경을 사용자 지정할 수 있습니다.
+ DB 스냅샷을 생성하고 복원하여 클론 환경을 생성합니다.
+ 읽기 전용 복제본을 생성합니다.
+ 스토리지 설정을 수정합니다.
+ CEV를 변경하여 릴리스 업데이트 적용

문자 집합을 변경하는 등의 일부 사용자 지정 작업에는 RDS API를 사용할 수 없습니다. 이러한 경우 루트 사용자로 Amazon EC2 인스턴스에 액세스하거나 Oracle 데이터베이스에 `SYSDBA`로 로그인하여 환경을 수동으로 변경해야 합니다.

인스턴스를 수동으로 사용자 지정하려면 RDS Custom 자동화를 일시 중지했다가 재개해야 합니다. 이렇게 일시 중지하면 사용자 지정한 인스턴스가 RDS Custom 자동화를 방해하지 않도록 할 수 있습니다. 이 방법을 사용하면 지원 경계가 무너지는 것을 방지할 수 있습니다. 그러면 기본 문제가 해결될 때까지 인스턴스가 `unsupported-configuration` 상태로 유지됩니다. RDS Custom for Oracle DB 인스턴스를 수정할 때 지원되는 자동화 태스크는 자동화 일시 중지 및 재개뿐입니다.

## RDS 사용자 지정 환경을 사용자 지정하는 일반적인 단계
<a name="custom-managing.pausing.general-steps"></a>

RDS Custom DB 인스턴스를 사용자 지정하려면 다음 단계를 완료합니다.

1. 콘솔 또는 CLI를 사용하여 지정된 기간 동안 RDS Custom 자동화를 일시 중지합니다.

1. 기본 Amazon EC2 인스턴스를 확인합니다.

1. SSH 키 또는 AWS Systems Manager를 사용하여 기본 Amazon EC2 인스턴스에 연결합니다.

1. 데이터베이스 또는 운영 체제 계층에서 현재 구성 설정을 확인합니다.

   초기 구성을 변경된 구성과 비교하여 변경 내용을 검증할 수 있습니다. 사용자 지정 유형에 따라 OS 도구 또는 데이터베이스 쿼리를 사용하세요.

1. 필요에 따라 RDS Custom for Oracle DB 인스턴스를 사용자 지정합니다.

1. 필요한 경우 인스턴스 또는 데이터베이스를 재부팅합니다.
**참고**  
온프레미스 Oracle CDB에서는 내장 명령을 사용하거나 시작 트리거 이후에 PDB에 대해 지정된 열기 모드를 유지할 수 있습니다. 이 메커니즘은 CDB가 다시 시작될 때 PDB를 지정된 상태로 전환합니다. CDB를 열 때 RDS Custom 자동화는 사용자가 지정한 보존 상태를 삭제하고 모든 PDB를 열려고 시도합니다. RDS Custom이 일부 PDB를 열 수 없는 경우 `The following PDBs failed to open: list-of-PDBs` 이벤트가 발생합니다.

1. 새 구성 설정을 이전 설정과 비교하여 확인합니다.

1. 다음 방법 중 하나를 사용하여 RDS Custom 자동화를 재개합니다.
   + 수동으로 자동화를 다시 시작합니다.
   + 일시 중지 기간이 끝날 때까지 기다립니다. 이 경우 RDS Custom은 모니터링 및 인스턴스 복구를 자동으로 재개합니다.

1. RDS Custom 자동화 프레임워크 확인

   이전 단계를 올바르게 수행한 경우 RDS Custom은 자동 백업을 시작합니다. 콘솔의 인스턴스 상태는 **사용 가능**으로 표시됩니다.

모범 사례 및 단계별 지침은 AWS 블로그 게시물인 [Make configuration changes to an Amazon RDS Custom for Oracle instance: Part 1](https://aws.amazon.com/blogs/database/part-1-make-configuration-changes-to-an-amazon-rds-custom-for-oracle-instance/)(Amazon RDS Custom for Oracle 인스턴스의 구성 변경: 1부) 및 [Recreate an Amazon RDS Custom for Oracle database: Part 2](https://aws.amazon.com/blogs/database/part-2-recreate-an-amazon-rds-custom-for-oracle-database/)(Amazon RDS Custom for Oracle 데이터베이스 다시 생성: 2부)를 참조하세요.

## RDS Custom DB 인스턴스 일시 중지 및 재개
<a name="custom-managing.pausing"></a>

콘솔 또는 CLI를 사용하여 DB 인스턴스의 자동화를 일시 중지하고 재개할 수 있습니다.

### 콘솔
<a name="custom-managing.pausing.console"></a>

**RDS Custom 자동화를 일시 중지하거나 다시 시작하는 방법**

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

1. 탐색 창에서 **데이터베이스(Databases)**를 선택한 다음 변경하려는 RDS Custom DB 인스턴스를 선택합니다.

1. **Modify**(수정)를 선택합니다. **Modify DB instance**(DB 인스턴스 수정) 페이지가 나타납니다.

1. **RDS Custom 자동화 모드(RDS Custom automation mode)**로 다음 옵션 중 하나를 선택합니다.
   + **일시 중지됨(Paused)**을 선택하면 RDS Custom DB 인스턴스에 대한 모니터링 및 인스턴스 복구가 일시 중지됩니다. **자동화 모드 지속 시간(Automation mode duration)**으로 원하는 일시 중지 기간(분)을 입력합니다. 최소값은 60분(기본값)입니다. 최대값은 1,440분입니다.
   + **완전 자동화(Full automation)**를 선택하면 자동화가 재개됩니다.

1. **계속(Continue)**을 선택하여 수정 사항을 요약한 내용을 확인합니다.

   RDS Custom에서 변경 사항을 즉시 적용한다는 메시지가 표시됩니다.

1. 변경 내용이 정확할 경우 **DB 인스턴스 수정(Modify DB instance)**을 선택합니다. 또는 **뒤로**를 선택하여 변경 내용을 편집하거나 **취소**를 선택하여 변경 내용을 취소합니다.

   RDS 콘솔에 수정 사항에 대한 세부 정보가 표시됩니다. 자동화를 일시 중지한 경우 RDS Custom DB 인스턴스의 **상태(Status)**가 **자동화 일시 중지됨(Automation paused)**으로 표시됩니다.

1. (선택 사항) 탐색 창에서 **데이터베이스(Databases)**를 선택한 후 RDS Custom DB 인스턴스를 선택합니다.

   **요약(Summary)** 창에서 **RDS Custom 자동화 모드(RDS Custom automation mode)**는 자동화 상태를 나타냅니다. 자동화가 일시 중지되면 값이 **일시 중지됨(Paused)이 됩니다. *num*분 후에 자동화가 재개됩니다**.

### AWS CLI
<a name="custom-managing.pausing.CLI"></a>

RDS Custom 자동화를 일시 중지하거나 재개하려면 `modify-db-instance` AWS CLI 명령을 사용합니다. 필수 파라미터 `--db-instance-identifier`를 사용하여 DB 인스턴스를 식별합니다. 다음 파라미터를 사용하여 자동화 모드를 제어합니다.
+ `--automation-mode`는 DB 인스턴스의 일시 정지 상태를 지정합니다. 유효한 값은 자동화를 일시 중지하는 `all-paused`와 다시 재개하는 `full`입니다.
+ `--resume-full-automation-mode-minutes`는 일시 중지 기간을 지정합니다. 기본값은 60분입니다.

**참고**  
`--no-apply-immediately` 또는 `--apply-immediately`에 관계없이 RDS Custom은 가능한 한 빨리 비동기식으로 수정 사항을 적용합니다.

명령 응답에서 `ResumeFullAutomationModeTime`은 재개 시간을 UTC 타임스탬프로 나타냅니다. 자동화 모드가 `all-paused`인 경우 `modify-db-instance`를 사용하여 자동화 모드를 재개하거나 일시 중지 기간을 연장할 수 있습니다. 다른 `modify-db-instance` 옵션은 지원되지 않습니다.

다음 예제에서는 `my-custom-instance`에 대한 자동화를 90분 동안 일시 중지합니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode all-paused \
    --resume-full-automation-mode-minutes 90
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode all-paused ^
    --resume-full-automation-mode-minutes 90
```

다음 예제에서는 일시 중지 기간을 30분 더 연장합니다. 30분이 `ResumeFullAutomationModeTime`에 표시된 원래 시간에 추가됩니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode all-paused \
    --resume-full-automation-mode-minutes 30
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode all-paused ^
    --resume-full-automation-mode-minutes 30
```

다음 예제에서는 `my-custom-instance`에 대한 전체 자동화를 재개합니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode full \
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode full
```
다음 부분 샘플 출력에서 보류 중인 `AutomationMode` 값은 `full`입니다.  

```
{
    "DBInstance": {
        "PubliclyAccessible": true,
        "MasterUsername": "admin",
        "MonitoringInterval": 0,
        "LicenseModel": "bring-your-own-license",
        "VpcSecurityGroups": [
            {
                "Status": "active",
                "VpcSecurityGroupId": "0123456789abcdefg"
            }
        ],
        "InstanceCreateTime": "2020-11-07T19:50:06.193Z",
        "CopyTagsToSnapshot": false,
        "OptionGroupMemberships": [
            {
                "Status": "in-sync",
                "OptionGroupName": "default:custom-oracle-ee-19"
            }
        ],
        "PendingModifiedValues": {
            "AutomationMode": "full"
        },
        "Engine": "custom-oracle-ee",
        "MultiAZ": false,
        "DBSecurityGroups": [],
        "DBParameterGroups": [
            {
                "DBParameterGroupName": "default.custom-oracle-ee-19",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        ...
        "ReadReplicaDBInstanceIdentifiers": [],
        "AllocatedStorage": 250,
        "DBInstanceArn": "arn:aws:rds:us-west-2:012345678912:db:my-custom-instance",
        "BackupRetentionPeriod": 3,
        "DBName": "ORCL",
        "PreferredMaintenanceWindow": "fri:10:56-fri:11:26",
        "Endpoint": {
            "HostedZoneId": "ABCDEFGHIJKLMNO",
            "Port": 8200,
            "Address": "my-custom-instance.abcdefghijk.us-west-2.rds.amazonaws.com"
        },
        "DBInstanceStatus": "automation-paused",
        "IAMDatabaseAuthenticationEnabled": false,
        "AutomationMode": "all-paused",
        "EngineVersion": "19.my_cev1",
        "DeletionProtection": false,
        "AvailabilityZone": "us-west-2a",
        "DomainMemberships": [],
        "StorageType": "gp2",
        "DbiResourceId": "db-ABCDEFGHIJKLMNOPQRSTUVW",
        "ResumeFullAutomationModeTime": "2020-11-07T20:56:50.565Z",
        "KmsKeyId": "arn:aws:kms:us-west-2:012345678912:key/aa111a11-111a-11a1-1a11-1111a11a1a1a",
        "StorageEncrypted": false,
        "AssociatedRoles": [],
        "DBInstanceClass": "db.m5.xlarge",
        "DbInstancePort": 0,
        "DBInstanceIdentifier": "my-custom-instance",
        "TagList": []
    }
```

# RDS Custom for Oracle DB 인스턴스 수정
<a name="custom-managing.modifying"></a>

RDS Custom for Oracle DB 인스턴스를 수정하는 작업은 Amazon RDS DB 인스턴스를 수정하는 것과 유사합니다. 다음과 같은 설정을 변경할 수 있습니다.
+ DB 인스턴스 클래스
+ 스토리지 할당 및 유형
+ 백업 보존 기간
+ 삭제 방지
+ 옵션 그룹
+ CEV([RDS Custom for Oracle DB 인스턴스 업그레이드](custom-upgrading-modify.md) 참조)
+ Port

**Topics**
+ [DB 인스턴스 스토리지 수정 시 요구 사항 및 제한](#custom-managing.storage-modify)
+ [DB 인스턴스 클래스 수정 시 요구 사항 및 제한](#custom-managing.instance-class-reqs)
+ [인스턴스 클래스 수정 시 RDS Custom이 DB 인스턴스를 생성하는 방법](#custom-managing.instance-class-resources)
+ [RDS Custom for Oracle DB 인스턴스 수정](#custom-managing.modifying.procedure)

## DB 인스턴스 스토리지 수정 시 요구 사항 및 제한
<a name="custom-managing.storage-modify"></a>

RDS Custom for Oracle DB 인스턴스를 수정할 때는 다음과 같은 요구 사항과 제한을 고려하세요.
+ RDS Custom for Oracle에 대해 할당된 최소 스토리지는 40GiB이며 최대 64TiB입니다.
+ Amazon RDS와 마찬가지로 할당된 스토리지를 줄일 수는 없는데, 이것이 Amazon EBS 볼륨의 한계입니다.
+ RDS Custom DB 인스턴스에는 스토리지 자동 크기 조정이 지원되지 않습니다.
+ RDS Custom DB 인스턴스에 수동으로 연결하는 모든 스토리지 볼륨은 지원 경계를 벗어납니다.

  자세한 내용은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 섹션을 참조하세요.
+ 마그네틱(표준) Amazon EBS 스토리지는 RDS Custom에 지원되지 않습니다. io1, io2, gp2 또는 gp3 SSD 스토리지 유형만 선택할 수 있습니다.

Amazon EBS 스토리지에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 스토리지](CHAP_Storage.md) 섹션을 참조하세요. 스토리지 수정에 대한 일반적인 정보는 [Amazon RDS DB 인스턴스 스토리지 작업](USER_PIOPS.StorageTypes.md) 섹션을 참조하세요.

## DB 인스턴스 클래스 수정 시 요구 사항 및 제한
<a name="custom-managing.instance-class-reqs"></a>

RDS Custom for Oracle DB 인스턴스의 인스턴스 클래스를 수정할 때는 다음과 같은 요구 사항과 제한을 고려하세요.
+ DB 인스턴스는 `available` 상태여야 합니다.
+ DB 인스턴스에는 루트 볼륨, 데이터 볼륨, 바이너리 볼륨에 최소 100MiB의 여유 공간이 있어야 합니다.
+ 기본 탄력적 네트워크 인터페이스(ENI)를 사용할 때는 RDS Custom for Oracle DB 인스턴스에 탄력적 IP(EIP) 하나만 할당할 수 있습니다. DB 인스턴스에 여러 ENI를 연결하면 수정 작업이 실패합니다.
+ 모든 RDS Custom for Oracle 태그가 있어야 합니다.
+ RDS Custom for Oracle 복제를 사용하는 경우 다음과 같은 요구 사항과 제한에 유의하세요.
  + 기본 DB 인스턴스 및 읽기 전용 복제본의 경우 한 번에 하나의 DB 인스턴스만 인스턴스 클래스를 변경할 수 있습니다.
  + RDS Custom for Oracle DB 인스턴스에 온프레미스 기본 또는 복제본 데이터베이스가 있는 경우 수정이 완료된 후 온프레미스 DB 인스턴스의 프라이빗 IP 주소를 수동으로 업데이트해야 합니다. 이 작업은 Oracle DataGuard 기능을 유지하는 데 필요합니다. RDS Custom for Oracle은 수정이 성공하면 이벤트를 게시합니다.
  + 기본 또는 읽기 전용 복제본 DB 인스턴스에 FSFO(Fast-Start Failover)가 구성된 경우 RDS Custom for Oracle DB 인스턴스 클래스를 수정할 수 없습니다.

## 인스턴스 클래스 수정 시 RDS Custom이 DB 인스턴스를 생성하는 방법
<a name="custom-managing.instance-class-resources"></a>

인스턴스 클래스를 수정하는 경우 RDS Custom은 다음과 같이 DB 인스턴스를 생성합니다.
+ Amazon EC2 인스턴스를 생성합니다.
+ 최신 DB 스냅샷에서 루트 볼륨을 생성합니다. RDS Custom for Custom은 최신 DB 스냅샷 이후에 루트 볼륨에 추가된 정보를 유지하지 않습니다.
+ Amazon CloudWatch 경보를 생성합니다.
+ 원래 키 페어를 삭제한 경우 Amazon EC2 SSH 키 페어를 생성합니다. 그렇지 않은 경우 RDS Custom for Custom은 원래 키 페어를 유지합니다.
+ 수정을 시작하면 DB 인스턴스에 연결된 태그를 사용하여 새 리소스를 생성합니다. RDS Custom은 태그가 기본 리소스에 직접 연결되면 태그를 새 리소스로 전송하지 않습니다.
+ 최신 수정 사항이 포함된 바이너리 및 데이터 볼륨을 새 DB 인스턴스로 전송합니다.
+ 탄력적 IP 주소(EIP)를 전송합니다. DB 인스턴스에 공개적으로 액세스할 수 있는 경우 RDS Custom은 EIP를 전송하기 전에 새 DB 인스턴스에 퍼블릭 IP 주소를 임시로 연결합니다. DB 인스턴스에 공개적으로 액세스할 수 없는 경우 RDS Custom은 퍼블릭 IP 주소를 생성하지 않습니다.

## RDS Custom for Oracle DB 인스턴스 수정
<a name="custom-managing.modifying.procedure"></a>

콘솔, AWS CLI 또는 RDS API를 사용하여 DB 인스턴스 클래스나 스토리지를 수정할 수 있습니다.

### 콘솔
<a name="custom-managing.modifying.procedure.CON"></a>

**RDS Custom for Oracle DB 인스턴스를 수정하는 방법**

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

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 수정하려는 DB 인스턴스를 선택합니다.

1. **Modify**(수정)를 선택합니다.

1. (선택 사항) **인스턴스 구성**에서 **DB 인스턴스 클래스**의 값을 선택합니다. 지원되는 클래스는 [RDS Custom for Oracle에 대한 DB 인스턴스 클래스 지원](custom-oracle-feature-support.md#custom-reqs-limits.instances) 섹션을 참조하세요.

1. (선택 사항) **스토리지**에서 필요에 따라 다음과 같이 변경합니다.

   1. **Allocated storage**(할당된 스토리지)에 새로운 값을 입력합니다. 현재 값보다 커야 하며 40GiB\$164TiB여야 합니다.

   1. **스토리지 유형**의 값을 **범용 SSD(gp2)**, **범용 SSD(gp3)**, **프로비저닝된 IOPS(io1)** 또는 **프로비저닝된 IOPS(io2)**로 변경합니다.

   1. **범용 SSD(gp2)** 이외의 스토리지 유형을 지정한 경우 **프로비저닝된 IOPS** 값을 변경할 수 있습니다.

1. (선택 사항) **추가 구성**에서 필요에 따라 다음과 같이 변경합니다.

   1. **옵션 그룹**에서 새로운 옵션 그룹을 선택합니다. 자세한 내용은 [RDS Custom for Oracle에서 옵션 그룹을 사용한 작업](custom-oracle-option-groups.md) 섹션을 참조하세요.

1. **Continue**(계속)를 선택합니다.

1. **즉시 적용(Apply immediately)** 또는 **예약된 다음 유지 관리 기간에 적용(Apply during the next scheduled maintenance window)**을 선택합니다.

1. **Modify DB instance**(DB 인스턴스 수정)를 선택합니다.

### AWS CLI
<a name="custom-managing.modifying.procedure.CLI"></a>

RDS Custom for Oracle DB 인스턴스 스토리지를 수정하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 명령을 사용하면 됩니다. 필요한 경우 다음 파라미터를 설정합니다.
+ `--db-instance-class` - 새 인스턴스 클래스입니다. 지원되는 클래스는 [RDS Custom for Oracle에 대한 DB 인스턴스 클래스 지원](custom-oracle-feature-support.md#custom-reqs-limits.instances) 섹션을 참조하세요.
+ `--allocated-storage` - DB 인스턴스에 할당할 스토리지 크기(GiB)입니다. 현재 값보다 커야 하며 40\$165,536GiB여야 합니다.
+ `--storage-type` - 스토리지 유형: gp2, gp3 io1 또는 io2.
+ `--iops` - io1, io2 또는 gp3 스토리지 유형을 사용하는 경우 DB 인스턴스에 대해 프로비저닝된 IOPS입니다.
+ `--apply-immediately` – `--apply-immediately`를 사용하여 스토리지 변경 사항을 바로 적용합니다.

  그 밖에 다음 유지 관리 기간에 스토리지 변경 사항을 적용하려면 `--no-apply-immediately`(기본값)를 사용합니다.

다음 예시에서는 `my-cfo-instance`의 DB 인스턴스 클래스를 `db.m5.16xlarge`로 변경합니다. 또한 이 명령은 스토리지 크기를 `1024`(1TiB)로, 스토리지 유형을 `io2`로, 프로비저닝된 IOPS를 `3000`으로, 옵션 그룹을 `cfo-ee-19-mt`로 변경합니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-cfo-instance \
    --db-instance-class db.m5.16xlarge \
    --storage-type io2 \
    --iops 3000 \
    --allocated-storage 1024 \
    --option-group cfo-ee-19-mt \
    --apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-cfo-instance ^
    --db-instance-class db.m5.16xlarge ^
    --storage-type io2 ^
    --iops 3000 ^
    --allocated-storage 1024 ^
    --option-group cfo-ee-19-mt ^
    --apply-immediately
```

# RDS Custom for Oracle DB 인스턴스의 문자 집합 변경
<a name="custom-managing.character-set"></a>

RDS Custom for Oracle 문자 집합의 기본값은 US7ASCII입니다. 언어 또는 멀티바이트 문자 요구 사항을 충족하기 위해 서로 다른 문자 집합을 지정할 수 있습니다. RDS Custom for Oracle을 사용하는 경우 자동화를 일시 중지한 다음 데이터베이스의 문자 집합을 수동으로 변경할 수 있습니다.

RDS Custom for Oracle DB 인스턴스의 문자 집합을 변경하려면 다음 요구 사항을 충족해야 합니다.
+ 애플리케이션 데이터가 없는 빈 데이터베이스나 스타터 데이터베이스가 있는 새로 프로비저닝된 RDS Custom 인스턴스의 문자만 변경할 수 있습니다. 다른 모든 경우에는 Database Migration Assistant for Unicode(DMU)를 사용하여 문자 집합을 변경하면 됩니다.
+ RDS for Oracle에서 지원하는 문자 집합으로만 변경할 수 있습니다. 자세한 내용은 [지원되는 DB 문자 집합](Appendix.OracleCharacterSets.md#Appendix.OracleCharacterSets.db-character-set.supported) 단원을 참조하세요.

**RDS Custom for Oracle DB 인스턴스의 문자 집합을 변경하려면**

1. RDS Custom 자동화를 일시 중지합니다. 자세한 내용은 [RDS Custom DB 인스턴스 일시 중지 및 재개](custom-managing.customizing-env.md#custom-managing.pausing) 단원을 참조하세요.

1. `SYSDBA` 권한을 사용하여 데이터베이스에 사용자로 로그인합니다.

1. 제한 모드에서 데이터베이스를 다시 시작하고 문자 집합을 변경한 다음 일반 모드에서 데이터베이스를 다시 시작합니다.

   SQL 클라이언트에서 다음 스크립트를 실행합니다.

   ```
   SHUTDOWN IMMEDIATE;
   STARTUP RESTRICT;
   ALTER DATABASE CHARACTER SET INTERNAL_CONVERT AL32UTF8;
   SHUTDOWN IMMEDIATE;
   STARTUP;
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
   ```

   출력에 올바른 문자 집합이 표시되는지 확인합니다.

   ```
   VALUE
   --------
   AL32UTF8
   ```

1. RDS Custom 자동화를 다시 시작합니다. 자세한 내용은 [RDS Custom DB 인스턴스 일시 중지 및 재개](custom-managing.customizing-env.md#custom-managing.pausing) 단원을 참조하십시오.

# RDS Custom for Oracle의 NLS\$1LANG 값 설정
<a name="custom-managing.nlslang"></a>

*로캘*은 지정된 언어와 국가에 해당하는 언어 및 문화적 요구 사항을 해결하는 일련의 정보입니다. Oracle 소프트웨어의 로캘 동작을 지정하려면 클라이언트 호스트에서 `NLS_LANG` 환경 변수를 설정합니다. 이 변수는 클라이언트 애플리케이션과 데이터베이스 세션에서 사용되는 언어, 지역, 문자를 설정합니다.

RDS Custom for Oracle의 경우 `NLS_LANG` 변수에서 언어만 설정할 수 있습니다. 지역 및 문자는 기본값을 사용합니다. 언어는 Oracle 데이터베이스 메시지, 데이터 정렬, 요일 이름, 월 이름에 사용됩니다. 지원되는 각 언어는 고유한 이름(예: 미국 영어, 프랑스어 또는 독일어)이 있습니다. 언어를 지정하지 않을 경우 기본값은 미국 영어입니다.

RDS Custom for Oracle 데이터베이스를 생성한 후 클라이언트 호스트에서 `NLS_LANG`을 영어가 아닌 다른 언어로 설정할 수 있습니다. Oracle Database에서 지원되는 언어 목록을 보려면 RDS Custom for Oracle 데이터베이스에 로그인한 후 다음 쿼리를 실행하세요.

```
SELECT VALUE FROM V$NLS_VALID_VALUES WHERE PARAMETER='LANGUAGE' ORDER BY VALUE;
```

호스트 명령줄에서 `NLS_LANG`을 설정할 수 있습니다. 다음 예제에서는 Linux에서 Z 쉘을 사용하는 클라이언트 애플리케이션의 언어를 독일어로 설정합니다.

```
export NLS_LANG=German
```

애플리케이션은 시작 시 `NLS_LANG` 값을 읽은 다음, 연결 시 이를 데이터베이스에 전달합니다.

자세한 내용은 *Oracle Database Globalization Support Guide*의 [Choosing a Locale with the NLS\$1LANG Environment Variable](https://docs.oracle.com/en/database/oracle/oracle-database/21/nlspg/setting-up-globalization-support-environment.html#GUID-86A29834-AE29-4BA5-8A78-E19C168B690A)(NLS\$1LANG 환경 변수를 사용하여 로캘 선택)을 참조하세요.

## 투명한 데이터 암호화 지원
<a name="custom-managing.tde"></a>

RDS Custom은 RDS Custom for Oracle DB 인스턴스에 대해 투명한 데이터 암호화(TDE)를 지원합니다.

그러나 RDS for Oracle에서는 사용자 지정 옵션 그룹의 옵션을 사용하여 TDE를 활성화할 수 없습니다. TDE를 수동으로 켭니다. Oracle의 투명한 데이터 보안 사용에 대한 정보는 Oracle 문서의 [투명한 데이터 암호화를 사용하여 저장된 데이터 보안](http://docs.oracle.com/cd/E11882_01/network.112/e40393/asotrans.htm#BABFGJAG)을 참조하세요.

# RDS Custom for Oracle 리소스 태깅
<a name="custom-managing.tagging"></a>

Amazon RDS 리소스와 마찬가지로 RDS Custom 리소스에 태그를 지정할 수 있지만, 몇 가지 중요한 차이점이 있습니다.
+ RDS Custom 자동화에 필요한 `AWSRDSCustom` 태그를 생성하거나 수정해서는 안 됩니다. 이렇게 하면 자동화가 중단될 수 있습니다.
+ `Name` 태그는 접두사 값이 `rds-custom!oracle-do-not-delete` 또는 `do-not-delete-rds-custom`인 RDS Custom 리소스에 추가됩니다. 고객이 전달한 키 값을 덮어씁니다.
+ 생성 중에 RDS Custom DB 인스턴스에 추가된 태그는 다른 모든 관련 RDS Custom 리소스로 전파됩니다.
+ DB 인스턴스 생성 후 RDS Custom 리소스에 태그를 추가하면 태그가 전파되지 않습니다.

리소스 태그 지정에 대한 일반적인 정보는 [Amazon RDS 리소스에 태그 지정](USER_Tagging.md) 섹션을 참조하세요.

# RDS Custom for Oracle DB 인스턴스 삭제
<a name="custom-managing.deleting"></a>

**주의**  
DB 인스턴스 삭제는 영구적인 작업입니다. 백업 또는 스냅샷이 없으면 삭제 후 DB 인스턴스를 복구할 수 없습니다.  
RDS Custom DB 인스턴스를 삭제하면 AWS가 기본 Amazon EC2 인스턴스와 EBS 볼륨을 자동으로 삭제합니다. Amazon RDS를 통해 DB 인스턴스를 삭제하기 전에 Amazon EC2 인스턴스를 수동으로 종료하거나 EBS 볼륨을 삭제하지 마세요. 이러한 리소스를 수동으로 삭제하면 DB 인스턴스 삭제 및 최종 스냅샷 생성이 실패하여 복구 가능성이 방지됩니다.

RDS Custom DB 인스턴스를 삭제하려면 다음을 수행하세요.
+ DB 인스턴스 이름을 입력합니다.
+ DB 인스턴스의 최종 DB 스냅샷을 생성하는 옵션을 비활성화합니다.
+ 자동화된 백업을 유지하는 옵션을 선택하거나 선택 취소합니다.

콘솔이나 CLI를 사용하여 RDS Custom DB 인스턴스를 삭제할 수 있습니다. DB 인스턴스를 삭제하는 데 필요한 시간은 백업 보존 기간(삭제할 백업 수)과 삭제되는 데이터 양에 따라 달라질 수 있습니다.

## 콘솔
<a name="custom-managing.deleting.console"></a>

**RDS Custom DB 인스턴스를 삭제하는 방법**

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

1. 탐색 창에서 **데이터베이스(Databases)**를 선택한 후 삭제하려는 RDS Custom DB 인스턴스를 선택합니다. RDS Custom DB 인스턴스는 역할 **인스턴스(RDS Custom)(Instance (RDS Custom))**를 보여줍니다.

1. **작업**에 대해 **삭제**를 선택합니다.

1. 자동 백업을 보관하려면 **Retain automated backups**(자동 백업 보관)를 선택합니다.

1. 상자에 **delete me**를 입력합니다.

1. **삭제**를 선택합니다.

## AWS CLI
<a name="custom-managing.deleting.CLI"></a>

[delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html) AWS CLI 명령을 사용하여 RDS Custom DB 인스턴스를 삭제할 수 있습니다. 필수 파라미터 `--db-instance-identifier`를 사용하여 DB 인스턴스를 식별합니다. 나머지 파라미터는 Amazon RDS DB 인스턴스와 동일하지만, 다음과 같은 예외가 있습니다.
+ `--skip-final-snapshot`은 필수입니다.
+ `--no-skip-final-snapshot`는 지원되지 않습니다.
+ `--final-db-snapshot-identifier`는 지원되지 않습니다.

다음 예제에서는 이름이 `my-custom-instance`인 RDS Custom DB 인스턴스를 삭제하고 자동화된 백업을 유지합니다.

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

```
aws rds delete-db-instance \
    --db-instance-identifier my-custom-instance \
    --skip-final-snapshot \
    --no-delete-automated-backups
```
Windows의 경우:  

```
aws rds delete-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --skip-final-snapshot ^
    --no-delete-automated-backups
```

# RDS Custom for Oracle에 대한 다중 AZ 배포 관리
<a name="custom-oracle-multiaz"></a>

RDS Custom for Oracle에 대한 다중 AZ DB 인스턴스 배포에서 Amazon RDS는 자동으로 서로 다른 가용 영역(AZ)에 동기식 대기 복제본을 프로비저닝하고 유지 관리합니다. 기본 DB 인스턴스는 가용 영역 전체에서 대기 복제본으로 동기식으로 복제되어 데이터 중복성을 제공합니다.

다중 AZ DB 인스턴스 배포는 계획된 시스템 유지 관리 중에 가용성을 향상시킵니다. 계획된 데이터베이스 유지 관리 또는 예기치 않은 서비스 중단이 발생할 경우, Amazon RDS가 최신 대기 DB 인스턴스로 자동으로 장애 조치를 수행합니다. 수동 개입 없이 데이터베이스 작업을 빠르게 재개할 수 있습니다. 기본 인스턴스 및 대기 인스턴스는 동일한 엔드포인트를 사용합니다. 이 엔드포인트의 물리적 네트워크 주소는 장애 조치 프로세스의 일환으로 대기 복제본으로 전환됩니다. 장애 조치가 발생하는 경우 애플리케이션을 다시 구성할 필요가 없습니다.

다음 다이어그램은 RDS Custom for Oracle의 다중 AZ 아키텍처를 보여줍니다.

![\[Amazon RDS architecture with primary DB instance and standby replica in separate availability zones.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/custom-oracle-multiaz-architecture.png)


Amazon RDS 콘솔에 대기 복제본의 가용 영역(보조 AZ)이 표시됩니다. `describe-db-instances` CLI 명령 또는 `DescribeDBInstances` API 작업을 사용하여 보조 AZ를 찾을 수도 있습니다.

## RDS Custom for Oracle용 다중 AZ 배포의 리전 및 버전 가용성
<a name="custom-oracle-multiaz-availability"></a>

RDS Custom for Oracle용 다중 AZ 배포는 Enterprise Edition(EE) 및 Standard Edition 2(SE2) 모두에 대해 다음 릴리스에서 지원됩니다.
+ Oracle Database 19c
+ Oracle Database 12c 릴리스 2(12.2)
+ Oracle Database 12c 릴리스 1(12.1)

**참고**  
RDS Custom for Oracle에 대한 다중 AZ 배포는 Oracle Database 18c에서 지원되지 않습니다.

RDS Custom for Oracle에 대한 다중 AZ 배포는 RDS Custom for Oracle을 사용 가능한 모든 리전에서 사용할 수 있습니다. RDS Custom for Oracle에 대한 다중 AZ 배포의 리전 가용성에 대한 자세한 내용은 [RDS Custom for Oracle을 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.ora) 섹션을 참조하세요.

## RDS Custom for Oracle의 다중 AZ 배포 제한 사항
<a name="custom-oracle-multiaz-limitations"></a>

RDS Custom for Oracle을 사용한 다중 AZ 배포에는 다음과 같은 제한 사항이 있습니다.
+ 2025년 6월 30일 이전에 DB 인스턴스를 생성한 경우 단일 AZ에서 다중 AZ 배포로 전환할 수 없습니다. 기본 사용자 지정 엔진 버전(CEV)은 다중 AZ 지원이 없는 이전 서비스 제공 AMI로 빌드되었습니다. 2025년 6월 30일 후 서비스 제공 AMI로 생성한 CEV를 사용하여 데이터베이스를 새 DB 인스턴스로 마이그레이션해야 합니다. 자세한 내용은 [2025년 6월 30일 이전에 생성한 CEV를 사용하는 DB 인스턴스의 마이그레이션 단계](custom-oracle-multiaz-prerequisites.md#migration-using-older-CEVs)을 참조하세요.
+ 리전 간 다중 AZ 배포는 생성할 수 없습니다.
+ 대기 DB 인스턴스가 데이터베이스 읽기 작업을 허용하도록 구성할 수 없습니다.
+ 다중 AZ 배포와 함께 사용자 지정 엔진 버전(CEV)을 사용할 경우 대기 DB 인스턴스는 동일한 CEV를 사용합니다. 대기 DB 인스턴스는 다른 CEV를 사용할 수 없습니다.
+ 다중 AZ 배포 인스턴스에서 읽기 전용 복제본을 생성할 수 없으며 다중 AZ 배포를 사용하도록 읽기 전용 복제본의 기본 인스턴스를 수정할 수도 없습니다.
+ 다중 AZ 배포를 사용하는 RDS Custom for Oracle DB 인스턴스는 단일 AZ 배포에 비해 쓰기 및 커밋 지연 시간이 길어질 수 있습니다. 이러한 대기 시간 증가는 DB 인스턴스 간의 동기 데이터 복제로 인해 발생할 수 있습니다. AWS는 가용 영역 간 지연 시간이 짧은 네트워크 연결을 제공하도록 설계되었지만 배포가 예비 복제본으로 장애 조치될 경우 지연 시간이 변경될 수 있습니다.

## RDS Custom for Oracle에서 다중 AZ 배포 생성
<a name="custom-oracle-multiaz-creating"></a>

다중 AZ 배포를 사용하는 RDS Custom for Oracle DB 인스턴스를 생성하려면[Amazon RDS Custom for Oracle을 위한 환경 설정](custom-setup-orcl.md)의 단계에 따라 사전 조건으로 환경을 설정합니다.

**중요**  
설정을 간소화하려면 네트워크 설정 지침에 제공된 최신 CloudFormation 템플릿 파일을 사용하는 것이 좋습니다. 자세한 내용은 [AWS CloudFormation을 사용하여 RDS Custom for Oracle 배포](custom-oracle-multiaz-deployment.md) 섹션을 참조하세요.

Amazon RDS 콘솔에서 데이터베이스 인스턴스를 생성하는 동안 다중 AZ 옵션을 선택하여 **다중 AZ** 배포를 사용하는 RDS Custom for Oracle 인스턴스를 생성할 수 있습니다. 아니면 AWS CLI의 Amazon RDS `create-db-instance` 명령에서 `--multi-az` 파라미터를 지정하면 됩니다.

# RDS Custom for Oracle의 다중 AZ 배포 사전 조건
<a name="custom-oracle-multiaz-prerequisites"></a>

RDS Custom for Oracle에 대한 다중 AZ 배포는 RDS for Oracle에 대한 다중 AZ 배포와 다릅니다. RDS for Oracle용 다중 AZ와 달리 다중 AZ DB 인스턴스를 생성하기 전에 RDS Custom for Oracle의 사전 조건을 충족해야 합니다. 이는 RDS Custom이 권한이 필요한 자체 계정 내에서 실행되기 때문입니다. 또한 다중 AZ 배포를 지원하는 최신 서비스 제공 AMI를 사용하여 CEV에서 다중 AZ 인스턴스를 생성해야 합니다.

사전 조건을 완료하지 않으면 다중 AZ DB 인스턴스가 실행되지 않거나, 단일 AZ DB 인스턴스로 자동으로 되돌아갈 수 있습니다. 사전 조건에 대한 자세한 내용은 [RDS Custom for Oracle의 다중 AZ 배포 사전 조건](#custom-oracle-multiaz-prerequisites) 섹션을 참조하세요.

RDS Custom for Oracle은 단일 AZ에서 다중 AZ 배포로 변환할 때 특정 사전 조건을 요구합니다. 사전 조건이 불완전하게 충족되면 다중 AZ 설정이 실패합니다. 네트워크 설정 지침에 제공된 수동 설정 또는 최신 CloudFormation 템플릿 파일을 사용하세요. 자세한 내용은 [3단계: RDS Custom for Oracle용 CloudFormation 템플릿 추출](custom-setup-orcl.md#custom-setup-orcl.cf.downloading) 섹션을 참조하세요.

 사전 조건을 수동으로 충족하려면 [RDS Custom for Oracle에서 단일 AZ 배포를 다중 AZ 배포로 변환](custom-oracle-multiaz-modify-single-to-multi.md)의 단계를 따르고 다음 사항에 유의하세요.
+ RDS Custom for Oracle DB 인스턴스가 2025년 6월 30일 후에 생성된 CEV를 서비스 제공 최신 AMI와 함께 사용해야 합니다.
+ 포트 1120을 허용하도록 Amazon RDS 보안 그룹 인바운드 및 아웃바운드 규칙을 업데이트합니다.
+ Amazon RDS Custom for Oracle DB 인스턴스가 Amazon SQS와 통신할 수 있도록 새 Amazon SQS VPC 엔드포인트를 생성합니다.
+ 인스턴스 프로파일 역할에서 Amazon SQS 권한을 업데이트합니다.

**중요**  
RDS Custom for Oracle 자동화를 일시 중지하지 않고 인스턴스에 로그인하여 다중 AZ 기본 DB 인스턴스를 수동으로 재부팅하지 마세요.

## 2025년 6월 30일 이전에 생성한 CEV를 사용하는 DB 인스턴스의 마이그레이션 단계
<a name="migration-using-older-CEVs"></a>

2025년 6월 30일 이전에 RDS Custom for Oracle DB 인스턴스를 생성한 경우 기본 CEV가 다중 AZ 지원이 없는 이전 서비스 제공 AMI로 빌드되었기 때문에 다중 AZ 배포로 직접 수정할 수 없습니다. 2025년 6월 30일 후에 생성한 CEV를 사용하여 데이터베이스를 새 인스턴스로 마이그레이션해야 합니다. 마이그레이션을 위해 다음을 수행합니다.

1. 최신 서비스 제공 AMI를 사용하여 **소스에서 CEV 생성**(2025년 6월 30일 후).

1. 새 CEV를 사용하여 **새 DB 인스턴스 시작**.

1. 다음 방법 중 하나를 사용하여 다중 AZ 배포를 지원하지 않는 기존 DB 인스턴스에서 새로 생성된 인스턴스로 **데이터베이스를 마이그레이션**합니다.
   + [Physical migration of Oracle databases to Amazon RDS Custom using Data Guard](https://aws.amazon.com/blogs//database/physical-migration-of-oracle-databases-to-amazon-rds-custom-using-data-guard/)
   + [Physical migration of Oracle databases to Amazon RDS Custom using RMAN duplication](https://aws.amazon.com/blogs//database/physical-migration-of-oracle-databases-to-amazon-rds-custom-using-rman-duplication/)

# RDS Custom for Oracle에서 단일 AZ 배포를 다중 AZ 배포로 변환
<a name="custom-oracle-multiaz-modify-single-to-multi"></a>

다중 AZ와 호환되는 기존 RDS Custom for Oracle DB 인스턴스를 단일 AZ 배포에서 다중 AZ 배포로 변환할 수 있습니다. DB 인스턴스를 수정할 경우 Amazon RDS는 여러 가지 작업을 수행합니다.
+ 기본 DB 인스턴스의 스냅샷을 생성합니다.
+ 스냅샷에서 스탠바이 복제본용 새 볼륨을 생성합니다. 이러한 볼륨은 백그라운드에서 초기화되며 데이터가 완전히 초기화된 후에 최대 볼륨 성능이 달성됩니다.
+ 기본 DB 인스턴스와 대기 DB 인스턴스 간의 동기식 블록 수준 복제를 활성화합니다.

**중요**  
사용량이 가장 많은 기간에는 RDS Custom for Oracle DB 인스턴스를 단일 AZ에서 프로덕션 DB 인스턴스의 다중 AZ 배포로 수정하지 않는 것이 좋습니다.

AWS는 스냅샷을 사용하여 대기 인스턴스를 생성하면 단일 AZ에서 다중 AZ로 변환할 때 가동 중지 시간을 피할 수 있지만, 다중 AZ로 변환하는 동안과 이후에 성능에 영향을 미칠 수 있습니다. 이는 쓰기 대기 시간에 민감한 워크로드에 상당한 영향을 미칠 수 있습니다. 이 기능을 사용하면 스냅샷에서 대용량 볼륨을 신속하게 복원할 수 있지만, 이 경우 동기식 복제로 인해 I/O 작업의 지연 시간이 증가할 수 있습니다. 이러한 지연 시간은 데이터베이스 성능에 영향을 줄 수 있습니다.

## CloudFormation을 사용하여 단일 AZ를 다중 AZ 배포로 수정하기 위한 사전 조건 구성
<a name="custom-oracle-multiaz-modify-cf-prereqs"></a>

[3단계: RDS Custom for Oracle용 CloudFormation 템플릿 추출](custom-setup-orcl.md#custom-setup-orcl.cf.downloading) 섹션을 따라 VPC 및 IAM 프로파일을 다시 설정하여 IAM 프로파일에 SQS VPC 엔드포인트 및 SQS 권한을 추가합니다.

## 단일 AZ를 다중 AZ 배포로 수동으로 수정하기 위한 사전 조건 구성
<a name="custom-oracle-multiaz-modify-manual-prereqs"></a>

사전 조건을 수동으로 구성하도록 선택한 경우 다음 태스크를 수행합니다.

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. **Endpoint**(엔드포인트)를 선택합니다. **엔드포인트 생성**페이지가 나타납니다.

1. **서비스 범주**에서 **AWS 서비스**를 선택합니다.

1. **서비스**에서 `SQS`를 검색합니다.

1. **VPC**에서 RDS Custom for Oracle DB 인스턴스가 배포되는 VPC를 선택합니다.

1. **서브넷**에서 RDS Custom for Oracle DB 인스턴스가 배포되는 서브넷을 선택합니다.

1. **보안 그룹**에서 RDS Custom for Oracle DB 인스턴스가 배포되는 보안 그룹을 선택합니다.

1. **정책**에서 **사용자 지정**을 선택합니다.

1. 사용자 지정 정책에서 `AWS partition`, `Region`, `accountId` 및 `IAM-Instance-role`을 실제 값으로 바꿉니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/AWSRDSCustom": "custom-oracle"
                }
            },
            "Action": [
                "SQS:SendMessage",
                "SQS:ReceiveMessage",
                "SQS:DeleteMessage",
                "SQS:GetQueueUrl"
            ],
            "Resource": "arn:aws:sqs:us-east-1:111122223333:do-not-delete-rds-custom-*",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/{IAM-Instance-role}"
            }
        }
    ]
}
```

------

Amazon SQS에 액세스할 수 있는 권한으로 **인스턴스 프로파일**을 업데이트합니다. `AWS partition`, `Region`, `accountId`를 실제 값으로 바꿉니다.

```
{
    "Sid": "13",
    "Effect": "Allow",
    "Action": [
        "SQS:SendMessage",
        "SQS:ReceiveMessage",
        "SQS:DeleteMessage",
        "SQS:GetQueueUrl"
    ],
    "Resource": [
        {
            "Fn::Sub": "arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:do-not-delete-rds-custom-*"
        }
    ],
    "Condition": {
        "StringLike": {
            "aws:ResourceTag/AWSRDSCustom": "custom-oracle"
        }
    }
}
```

포트 1120을 허용하도록 Amazon RDS 보안 그룹 인바운드 및 아웃바운드 규칙을 업데이트합니다.
+ **보안 그룹**에서 RDS Custom for Oracle DB 인스턴스가 배포되는 그룹을 선택합니다.
+ **인바운드 규칙**에서 소스 그룹의 포트 `1120`을 허용하는 **사용자 지정 TCP** 규칙을 만듭니다.
+ **아웃바운드 규칙**에서 대상 그룹의 포트 `1120`을 허용하는 **사용자 지정 TCP** 규칙을 만듭니다.

## RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 수정
<a name="custom-oracle-multiaz-modify-console-cli-api"></a>

사전 조건을 충족한 후 RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 RDS Custom for Oracle DB 인스턴스를 단일 AZ에서 다중 AZ 배포로 수정할 수 있습니다.

### 콘솔
<a name="custom-oracle-multiaz-modify-console"></a>

**기존 RDS Custom for Oracle 단일 AZ 배포를 다중 AZ 배포로 수정하는 방법**

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

1. Amazon RDS 콘솔에서 **데이터베이스**를 선택합니다. **데이터베이스** 창이 표시됩니다.

1. 수정하려는 RDS Custom for Oracle DB 인스턴스를 선택합니다.

1. **작업**에서 **다중 AZ 배포로 변환**을 선택합니다.

1. **확인** 페이지에서 **즉시 적용**을 선택하여 변경 사항을 즉시 적용합니다. 이 옵션을 선택하면 다운타임이 발생하지 않지만 성능이 영향을 받을 수 있습니다. 다음 유지 관리 기간에 업데이트를 적용하도록 선택할 수도 있습니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 섹션을 참조하세요.

1. **확인** 페이지에서 **다중 AZ로 변환**을 선택합니다.

### AWS CLI
<a name="custom-oracle-multiaz-modify-cli"></a>

AWS CLI를 사용하여 다중 AZ DB 인스턴스 배포로 변환하려면 [modify-db-instance](https://docs.aws.amazon.com//cli/latest/reference/rds/modify-db-instance.html) 명령을 호출하고 `--multi-az` 옵션을 설정합니다. DB 인스턴스 식별자와 수정하려는 기타 옵션 값을 지정합니다. 각 옵션에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_ModifyInstance.Settings.md) 섹션을 참조하세요.

**Example 예제**  
다음 코드는 `--multi-az` 옵션을 포함하여 `mycustomdbinstance`를 수정합니다. 변경 사항은 `--no-apply-immediately`를 사용하여 다음 유지 관리 기간에 적용됩니다. 변경 사항을 바로 적용하려면 `--apply-immediately`를 사용합니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 섹션을 참조하세요.  
Linux, macOS 또는 Unix의 경우는 다음과 같습니다.  

```
aws rds modify-db-instance \
    --db-instance-identifier mycustomdbinstance \
    --multi-az \
    [--no-apply-immediately | --apply-immediately]
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mycustomdbinstance ^
    --multi-az ^
    [--no-apply-immediately | --apply-immediately]
```

### RDS API
<a name="custom-oracle-multiaz-modify-api"></a>

Amazon RDS API를 사용하여 다중 AZ DB 인스턴스 배포로 변환하려면 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 직접 호출하고 `MultiAZ` 파라미터를 true로 설정합니다.

# RDS Custom for Oracle에서 다중 AZ 배포를 단일 AZ 배포로 변환
<a name="custom-oracle-multiaz-modify-multi-to-single"></a>

기존 RDS Custom for Oracle DB 인스턴스를 다중 AZ 배포에서 단일 AZ 배포로 수정할 수 있습니다.

## 콘솔
<a name="custom-oracle-multiaz-multi-to-single-console"></a>

**RDS Custom for Oracle DB 인스턴스를 다중 AZ 배포에서 단일 AZ 배포로 수정하는 방법**

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

1. Amazon RDS 콘솔에서 **데이터베이스**를 선택합니다. **데이터베이스** 창이 표시됩니다.

1. 수정하려는 RDS Custom for Oracle DB 인스턴스를 선택합니다.

1. **다중 AZ 배포**의 경우 **No**(아니요)를 선택합니다.

1. **확인** 페이지에서 **즉시 적용**을 선택하여 변경 사항을 즉시 적용합니다. 이 옵션을 선택하면 다운타임이 발생하지 않지만 성능이 영향을 받을 수 있습니다. 다음 유지 관리 기간에 업데이트를 적용하도록 선택할 수도 있습니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 섹션을 참조하세요.

1. **확인** 페이지에서 **DB 인스턴스 수정**을 선택합니다.

## AWS CLI
<a name="custom-oracle-multiaz-multi-to-single-cli"></a>

AWS CLI를 사용하여 다중 AZ 배포를 단일 AZ 배포로 수정하려면 [modify-db-instance](https://docs.aws.amazon.com//cli/latest/reference/rds/modify-db-instance.html) 명령을 호출하고 `--no-multi-az` 옵션을 포함합니다. DB 인스턴스 식별자와 수정하려는 기타 옵션 값을 지정합니다. 각 옵션에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_ModifyInstance.Settings.md) 섹션을 참조하세요.

**Example 예제**  
다음 코드는 `--no-multi-az` 옵션을 포함하여 `mycustomdbinstance`를 수정합니다. 변경 사항은 `--no-apply-immediately`를 사용하여 다음 유지 관리 기간에 적용됩니다. 변경 사항을 바로 적용하려면 `--apply-immediately`를 사용합니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 섹션을 참조하세요.  
Linux, macOS 또는 Unix의 경우는 다음과 같습니다.  

```
aws rds modify-db-instance \
    --db-instance-identifier mycustomdbinstance \
    --no-multi-az \
    [--no-apply-immediately | --apply-immediately]
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mycustomdbinstance ^
    --no-multi-az ^
    [--no-apply-immediately | --apply-immediately]
```

## RDS API
<a name="custom-oracle-multiaz-multi-to-single-api"></a>

Amazon RDS API를 사용하여 다중 AZ 배포를 단일 AZ 배포로 수정하려면 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 직접 호출하고 `MultiAZ` 파라미터를 `false`로 설정합니다.

# RDS Custom for Oracle 다중 AZ 배포에서 OS 사용자 지정
<a name="custom-oracle-multiaz-os-customization"></a>

RDS Custom for Oracle 다중 AZ 배포를 사용하면 운영 체제를 사용자 지정하고 기본 및 대기 EC2 인스턴스 모두에 타사 소프트웨어를 설치할 수 있습니다. Amazon RDS와 달리 RDS Custom for Oracle은 데이터베이스 환경 및 기본 운영 체제에 대한 관리 액세스를 제공하므로 Oracle 데이터베이스 외에도 모니터링 도구, 보안 에이전트 또는 사용자 지정 애플리케이션을 설치할 수 있습니다.

다중 AZ 배포에서 OS를 사용자 지정할 때 기본 인스턴스와 대기 인스턴스 모두에 사용자 지정이 존재하는지 확인하는 것은 사용자의 책임입니다. 이 접근 방식은 다중 AZ 장애 조치 중에 애플리케이션 연속성을 보장하고 두 인스턴스 모두에서 일관된 기능을 유지합니다.

## RDS Custom for Oracle 다중 AZ 배포에서 OS를 사용자 지정하기 위한 요구 사항
<a name="cfo-os-maz-reqs"></a>

다중 AZ 배포에서 OS를 사용자 지정하기 전에 다음 요구 사항에 유의하세요.
+ `/rdsdbdata` 탑재 지점에만 타사 소프트웨어를 설치합니다. 데이터 볼륨(`/rdsdbdata`)은 다중 AZ 배포에서 복제되는 유일한 데이터입니다. 루트 볼륨(`/`)은 OS 패치 적용 중에 대체되고, 바이너리 볼륨(`/rdsdbbin`)은 데이터베이스 패치 적용 중에 대체됩니다. 루트 및 바이너리 볼륨에 설치된 소프트웨어는 패치 적용 중에 손실됩니다.
+ 모든 사용자 지정이 AWS 및 Oracle 라이선스 이용 약관을 준수하는지 확인합니다.
+ 단일 AZ에서 다중 AZ로 변환하기 전에 `/etc/sysctl.conf`의 HugePages 설정이 올바르게 작동하는지 확인합니다.

## RDS Custom for Oracle 다중 AZ 배포에서 EC2 인스턴스 식별
<a name="cfo-os-maz-identify-instances"></a>

다중 AZ 인스턴스를 사용자 지정할 때 RDS Custom for Oracle 배포의 기본 및 대기 역할을 하는 Amazon EC2 인스턴스를 식별합니다.

**기본 및 대기 EC2 인스턴스 식별**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. Oracle DB 인스턴스를 위한 다중 AZ RDS Custom을 선택합니다.

1. **구성** 섹션에서 **리소스 ID**(형식: `db-nnnnnnn`)를 기록해 둡니다.

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 검색 상자에 4단계의 리소스 ID를 입력합니다.

1. 검색 결과에는 기본 인스턴스와 보조 인스턴스라는 두 개의 인스턴스가 표시됩니다. 활성 RDS Custom for Oracle 데이터베이스가 있는 인스턴스가 기본 인스턴스입니다.

## RDS Custom for Oracle 다중 AZ 배포를 생성하기 전에 OS 사용자 지정
<a name="cfo-os-maz-convert"></a>

이 시나리오에서 현재 배포는 단일 AZ DB 인스턴스입니다. OS를 사용자 지정한 다음 DB 인스턴스를 다중 AZ 배포로 변환할 수 있습니다. 타사 소프트웨어를 설치하고 여러 볼륨에서 파일을 수정한 경우 이 기술을 사용하는 것이 좋습니다.

**단일 AZ를 다중 AZ로 변환하기 전에 OS 사용자 지정**

1. AWS Systems Manager Session Manager 또는 SSH를 사용하여 단일 AZ 배포의 EC2 인스턴스에 연결합니다.

1. 다음 사용자 지정 중 하나를 수행하세요.
   + 데이터 볼륨(`/rdsdbdata`)에 타사 소프트웨어를 설치합니다.
   + 루트 볼륨(`/`)의 파일을 사용자 지정합니다.

1. 소프트웨어 또는 루트 볼륨 사용자 지정을 테스트하여 올바르게 작동하는지 확인합니다.

1. [RDS Custom for Oracle에서 단일 AZ 배포를 다중 AZ 배포로 변환](custom-oracle-multiaz-modify-single-to-multi.md)의 지침에 따라 단일 AZ DB 인스턴스를 다중 AZ 배포로 변환합니다.

1. 다중 AZ 배포의 두 인스턴스 모두에 사용자 지정이 존재하는지 확인합니다. 자세한 내용은 [RDS Custom for Oracle 다중 AZ 배포에서 EC2 인스턴스 식별](#cfo-os-maz-identify-instances) 섹션을 참조하세요.

## RDS Custom for Oracle 다중 AZ 배포 생성 후 OS 사용자 지정
<a name="cfo-maz-soft-root"></a>

다중 AZ 배포가 종료되는 경우 AWS Systems Manager 또는 수동 기술을 사용하여 사용자 지정을 배포할 수 있습니다.

### AWS Systems Manager를 사용하여 다중 AZ 배포에서 OS 사용자 지정
<a name="cfo-os-maz-systems-manager"></a>

기존 다중 AZ DB 인스턴스의 경우 기본 인스턴스와 대기 인스턴스 모두에 사용자 지정을 동시에 적용하는 가장 안정적인 방법으로 Systems Manager를 사용하는 것이 좋습니다. 이 접근 방식은 일관성을 보장합니다. 이 서비스에 대한 일반적인 소개는 [AWS Systems Manager란 무엇인가요?](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)를 참조하세요. 두 DB 인스턴스에 동시에 소프트웨어를 설치하는 방법을 알아보려면 [배포자 패키지 설치 또는 업데이트](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-deploy.html)를 참조하세요.

### 다중 AZ 배포에서 수동으로 OS 사용자 지정
<a name="cfo-os-maz-create"></a>

이 시나리오에서는 다중 AZ 배포가 이미 존재하지만 AWS Systems Manager를 사용하여 사용자 지정을 배포하지 않습니다. 다음 방법 중 하나로 OS를 수동으로 사용자 지정할 수 있습니다.

**기본 인스턴스에서 OS 사용자 지정 및 변경 사항 복제**  
다중 AZ 배포는 `rdsdbdata` 볼륨을 자동으로 복제합니다. OS를 다음과 같이 사용자 지정할 수 있습니다.  
+ `/rdsdbdata` 탑재 지점에 타사 소프트웨어를 직접 설치합니다.
+ 루트 볼륨(`/`)의 파일을 수정하려면 데이터 볼륨에 파일을 생성한 다음 루트 볼륨 파일에서 데이터 볼륨 파일로 심볼릭 링크를 생성합니다.

**기본 인스턴스와 대기 인스턴스에서 별도로 OS 사용자 지정**  
이 접근 방식에서는 기본 인스턴스의 OS를 사용자 지정합니다. 그런 다음 대기 인스턴스에서 동일한 사용자 지정을 수행합니다.

**기본 인스턴스에서 OS가 자동으로 복제되도록 사용자 지정**

1. [RDS Custom for Oracle 다중 AZ 배포에서 EC2 인스턴스 식별](#cfo-os-maz-identify-instances)의 절차를 사용하여 기본 및 대기 DB 인스턴스를 식별합니다.

1. Session Manager 또는 SSH를 사용하여 프라이머리 EC2 인스턴스에 연결합니다.

1. 비즈니스 요구 사항에 따라 다음 기법 중 하나를 사용합니다.  
**타사 소프트웨어 설치**  
`/rdsdbdata` 탑재 지점에 소프트웨어를 설치합니다.  

   ```
   sudo mkdir -p /rdsdbdata/custom-software
   cd /rdsdbdata/custom-software
   # Install your software here
   ```  
**루트 볼륨 사용자 지정**  
루트 볼륨의 OS 구성 파일에서 데이터 볼륨의 파일로 심볼릭 링크를 생성합니다. 예를 들어 `/rdsdbdata/customizations/sysctl.conf` 파일을 생성한 다음 `/etc/sysctl.conf`에 `/rdsdbdata/customizations/sysctl.conf`로 연결되는 심볼릭 링크를 생성합니다.  

   ```
   sudo mkdir -p /rdsdbdata/customizations
   sudo mv /etc/sysctl.conf /rdsdbdata/customizations/sysctl.conf
   sudo ln -sf /rdsdbdata/customizations/sysctl.conf /etc/sysctl.conf
   ```

1. 소프트웨어 또는 루트 볼륨 사용자 지정을 테스트하여 올바르게 작동하는지 확인합니다.

1. 대기 인스턴스에 연결하고 동기식 복제가 소프트웨어 또는 루트 볼륨 사용자 지정을 `/rdsdbdata` 디렉터리에 복사했는지 확인합니다.

## RDS Custom for Oracle 다중 AZ 배포에서 바이너리 볼륨 사용자 지정
<a name="cfo-os-maz-bin"></a>

RDS Custom for Oracle 다중 AZ 배포에서 바이너리 볼륨(`/rdsdbbin`)에 데이터베이스 패치를 적용할 수 있습니다. 기본 및 대기 인스턴스에 패치를 적용해야 합니다. 다음 지침을 참고하세요.
+ 일회성 패치를 수행할 때는 매니페스트에 포함된 새 일회성 패치를 사용하여 새 CEV를 생성하는 것이 좋습니다.
+ 일회성 패치를 수동으로 적용하려면 기본 및 보조 EC2 인스턴스 모두에서 일회성 패치의 압축을 풀어야 합니다. `datapatch` 패치 적용 및 실행은 기본 다중 AZ 인스턴스에서만 필요합니다.
+ 다른 CEV를 사용하여 데이터베이스를 패치하면 바이너리 볼륨이 대체됩니다. 새 CEV의 매니페스트에 일회성 패치를 포함해야 합니다.

## OS 사용자 지정 모범 사례
<a name="cfo-os-maz-bp"></a>

RDS Custom for Oracle 다중 AZ 인스턴스에서 OS를 사용자 지정할 때 다음 모범 사례를 따르세요.

**비프로덕션 환경에서 테스트**  
프로덕션 인스턴스에 적용하기 전에 항상 비프로덕션 환경에서 사용자 지정을 테스트합니다.

**모든 변경 사항 문서화**  
향후 참조 및 문제 해결을 위해 모든 사용자 지정에 대한 자세한 문서를 유지 관리합니다. 경우에 따라 언제든지 적용할 수 있는 스크립트에 사용자 지정을 저장하는 것이 좋습니다.

**두 인스턴스 모두에서 확인**  
기본 인스턴스와 대기 인스턴스 모두에서 사용자 지정이 존재하고 올바르게 작동하는지 정기적으로 확인합니다.

**일관성을 위해 Systems Manager 사용**  
Systems Manager를 사용하면 여러 인스턴스, 특히 기존 다중 AZ 배포에 변경 사항을 일관되게 적용할 수 있습니다.

# AWS CloudFormation을 사용하여 RDS Custom for Oracle 배포
<a name="custom-oracle-multiaz-deployment"></a>

제공된 AWS CloudFormation 템플릿을 사용하여 RDS Custom for Oracle 배포를 자동화합니다. 리소스를 배포하기 전에 다음 사전 조건을 충족합니다.

## 사전 조건
<a name="custom-oracle-prerequisites"></a><a name="custom-oracle-required-files"></a>

**필수 Oracle 파일 다운로드**

CloudFormation 템플릿을 생성하려면 먼저 특정 Oracle 설치 파일이 필요합니다. 배포하기 전에 이러한 파일을 다운로드하세요.

1. [Oracle Database 19c (19.3)](https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html)로 이동합니다.

1. `LINUX.X64_193000_db_home.zip` 파일을 찾아 다운로드합니다.

1. 파일 이름을 `V982063-01.zip`으로 변경합니다.

1. **플랫폼 또는 언어**를 `Linux x86-64`로 선택하여 나머지 패치를 다운로드합니다.

### 최신 OPatch 유틸리티
<a name="custom-oracle-opatch"></a>

[Patch 6880880](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=6880880)

### 2023년 1월 PSU 패치
<a name="custom-oracle-jan-2023-patches"></a>

**데이터베이스 PSU 및 RU 패치**
+ [Patch 34765931](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=34765931)
+ [Patch 34786990](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=34786990)

**추가 필수 패치**
+ [Patch 35099667](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=35099667)
+ [Patch 35099674](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=35099674)
+ [Patch 28730253](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=28730253)
+ [Patch 29213893](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=29213893)
+ [Patch 35012866](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=35012866)

### 2023년 4월 PSU 패치
<a name="custom-oracle-apr-2023-patches"></a>

**데이터베이스 PSU 및 RU 패치**
+ [Patch 35042068](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=35042068)
+ [Patch 35050341](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=35050341)

**추가 필수 패치**
+ [Patch 28730253](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=28730253)
+ [Patch 29213893](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=29213893)
+ [Patch 33125873](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=33125873)
+ [Patch 35220732](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=35220732)
+ [Patch 35239280](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=35239280)

### Amazon S3 버킷 설정
<a name="custom-oracle-s3-setup"></a>

1. AWS 계정에서 Amazon S3 버킷을 생성하거나 기존 버킷을 선택합니다.

1. 아래 예시와 유사한 폴더 구조를 버킷에 생성합니다.

   ```
   <bucket-name>/
   └── oracle_cev/
       ├── V982063-01.zip
       ├── p6880880_190000_Linux-x86-64.zip
       ├── p34765931_190000_Linux-x86-64.zip
       ├── p34786990_190000_Linux-x86-64.zip
       ├── p35099667_190000_Linux-x86-64.zip
       ├── p35099674_190000_Generic.zip
       ├── p28730253_190000_Linux-x86-64.zip
       ├── p29213893_1918000DBRU_Generic.zip
       ├── p35012866_1918000DBRU_Linux-x86-64.zip
       ├── p35042068_190000_Linux-x86-64.zip
       ├── p35050341_190000_Linux-x86-64.zip
       ├── p29213893_1919000DBRU_Generic.zip
       ├── p33125873_1919000DBRU_Linux-x86-64.zip
       ├── p35220732_190000_Linux-x86-64.zip
       └── p35239280_190000_Generic.zip
   ```

1. 이전에 다운로드한 모든 Oracle 파일을 적절한 폴더에 업로드합니다.

## AWS CloudFormation을 사용하여 RDS Custom for Oracle 배포
<a name="custom-oracle-deployment-steps"></a>

### 1단계: CloudFormation 템플릿 준비
<a name="custom-oracle-step1-prereqs"></a>

RDS Custom for Oracle을 배포하려면 먼저 필요한 사전 조건을 생성하는 CloudFormation 템플릿을 다운로드하고 구성해야 합니다.

**템플릿 복사 및 저장**

1. [Deploying RDS Custom for Oracle with single and multiple Availability Zones](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html#aws-resource-rds-dbinstance--examples--Deploying_RDS_Custom_for_Oracle_with_single_and_multiple_Availability_Zones)으로 이동합니다.

1. 원하는 형식(YAML 또는 JSON)으로 템플릿을 복사합니다.

1. 파일을 YAML 또는 JSON 형식으로 저장합니다. 예: `rds-custom-oracle-prereqs.yaml`

**AWS Console에서 스택 시작**

1. AWS Console을 열고 AWS CloudFormation으로 이동합니다.

1. **스택 생성** > **새 리소스 사용(표준)**을 선택합니다.

1. **기존 템플릿 선택**을 선택합니다.

1. **템플릿 파일 업로드** > **파일 선택**을 선택합니다.

1. 이전에 다운로드한 템플릿 파일을 선택합니다.

1. 기본 파라미터 값을 유지합니다.

1. **다음**을 선택하여 스택을 생성합니다.

**대안: AWS CLI 사용**

콘솔을 사용하는 대신 AWS CLI를 사용하여 스택을 생성할 수 있습니다.

```
aws cloudformation create-stack \
  --stack-name rds-custom-oracle \
  --template-body file://rds-custom-oracle-prereqs.yaml \
  --capabilities CAPABILITY_NAMED_IAM
```

### 2단계: 사용자 지정 엔진 버전(CEV) 및 Amazon RDS 인스턴스 생성
<a name="custom-oracle-step2-cev-rds"></a>

**템플릿 복사 및 저장**

1. [Deploying RDS Custom for Oracle with single and multiple Availability Zones](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html#aws-resource-rds-dbinstance--examples--Deploying_RDS_Custom_for_Oracle_with_single_and_multiple_Availability_Zones)으로 이동합니다.

1. 원하는 형식(YAML 또는 JSON)으로 템플릿을 복사합니다.

1. 필요한 경우 템플릿에서 다음 파라미터를 업데이트합니다.
   + `BucketName`
   + `CEVS3Prefix`
   + 데이터베이스 마스터 암호(\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1 대체)

1. 파일을 YAML 또는 JSON 형식으로 저장합니다.

### 3단계: AWS Console을 사용하여 배포
<a name="custom-oracle-step3-console-deploy"></a>

1. AWS Console을 열고 AWS CloudFormation으로 이동합니다.

1. **스택 생성** > **새 리소스 사용(표준)**을 선택합니다.

1. **기존 템플릿 선택**을 선택합니다.

1. **템플릿 파일 업로드** > **파일 선택**을 선택합니다.

1. 이전에 다운로드한 템플릿 파일을 선택합니다.

1. 파라미터를 기본값으로 둡니다.

1. 다음과 같이 파라미터를 입력합니다:

   ```
   BucketName: rds-custom-id
   CEVS3Prefix: oracle_cev
   CEVCreation: Yes
   ```

1. 구성을 검토하고 **다음**을 선택하여 스택을 생성합니다.

**선택 사항: AWS CLI를 사용하여 배포**

```
aws cloudformation create-stack \
  --stack-name rds-custom-oracle \
  --template-body file://rds-custom-oracle.yaml \
  --parameters \
    ParameterKey=BucketName,ParameterValue=rds-custom-id \
    ParameterKey=CEVS3Prefix,ParameterValue=oracle_cev \
    ParameterKey=CEVCreation,ParameterValue=Yes \
  --capabilities CAPABILITY_NAMED_IAM
```

## 배포 리소스 생성됨
<a name="custom-oracle-deployment-resources"></a>

 템플릿은 다음 리소스를 만듭니다.
+ 퍼블릭 및 프라이빗 서브넷이 있는 Amazon VPC
+ 보안 그룹
+ Amazon VPC 엔드포인트
+ IAM 역할 및 정책
+ 암호화를 위한 AWS KMS 키
+ 사용자 지정 엔진 버전(CEV)
+ 단일 AZ 및 다중 AZ 구성 모두에 대한 RDS Custom for Oracle 인스턴스

## 배포 진행 상황 모니터링
<a name="custom-oracle-monitoring-deployment"></a>

CloudFormation 스택을 생성한 후 진행 상황을 모니터링하여 배포가 성공했는지 확인합니다. 배포 프로세스에는 사용자 지정 엔진 버전(CEV) 및 RDS 인스턴스 생성이 포함됩니다.

배포 진행 상황을 모니터링하는 방법:

1. CloudFormation 콘솔을 엽니다.

1. 스택 이름을 선택합니다.

1. **이벤트** 탭을 선택하여 진행 상황을 보고 오류를 식별합니다.

**참고**  
CEV 생성에는 일반적으로 2\$13시간이 소요됩니다. CEV 생성이 성공적으로 완료되면 Amazon RDS는 Amazon RDS 인스턴스 생성을 자동으로 시작합니다.

## 배포 후
<a name="custom-oracle-post-deployment"></a>

스택 생성 프로세스가 완료되면 다음 배포 후 확인 및 구성 단계를 수행합니다.

1. Amazon RDS 콘솔 페이지에서 **사용자 지정 엔진 버전**으로 이동하여 CEV 생성을 확인합니다.

1. Amazon RDS 인스턴스가 생성되고 사용 가능한지 확인합니다.

1. Amazon RDS 인스턴스에 대한 연결을 테스트합니다.

1. 필요에 따라 모니터링 및 백업 전략을 설정합니다.

## 정리
<a name="custom-oracle-cleanup"></a>

모든 리소스를 제거하려면 다음 AWS CLI 명령을 실행합니다.

```
aws cloudformation delete-stack --stack-name rds-custom-oracle
```

## 문제 해결
<a name="custom-oracle-troubleshooting"></a>

배포 중에 문제가 발생하면 다음 솔루션을 사용하여 일반적인 문제를 해결하세요.

CEV 생성 실패  
+ 필요한 모든 패치가 Amazon S3에 업로드되었는지 확인합니다.
+ IAM 권한을 확인합니다.
+ 패치 버전이 올바른지 확인합니다. 필요한 패치 목록은 [사전 조건](#custom-oracle-prerequisites) 섹션을 참조하세요.

Amazon RDS 인스턴스 생성 실패  
+ VPC/서브넷 구성을 확인합니다.
+ 보안 그룹 규칙을 확인합니다.
+ CEV를 사용할 수 있는지 확인합니다.

# RDS Custom for Oracle의 Oracle 복제본으로 작업
<a name="custom-rr"></a>

Oracle Enterprise Edition이 실행되는 RDS Custom for Oracle DB 인스턴스에서 Oracle 복제본을 생성할 수 있습니다. 컨테이너 데이터베이스(CDB)와 비 CDB가 모두 지원됩니다. Standard Edition 2는 Oracle Data Guard를 지원하지 않습니다.

RDS Custom for Oracle 복제본을 생성하는 방법은 Oracle 복제본을 생성하는 방법과 비슷하지만, 몇 가지 중요한 차이점이 있습니다. Oracle 복제본 생성 및 관리에 대한 일반적인 정보는 [DB 인스턴스 읽기 전용 복제본 작업](USER_ReadRepl.md) 및 [Amazon RDS의 Oracle의 읽기 전용 복제본 작업](oracle-read-replicas.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom for Oracle 복제 개요](#custom-rr.overview)
+ [RDS Custom for Oracle 복제본의 지침 및 제한 사항](custom-rr.reqs-limitations.md)
+ [RDS Custom for Oracle 복제본을 독립 실행형 DB 인스턴스로 승격](custom-rr.promoting.md)
+ [RDS Custom for Oracle 기본 인스턴스와 복제본 인스턴스 간에 VPN 터널 구성](cfo-standby-vpn-tunnel.md)

## RDS Custom for Oracle 복제 개요
<a name="custom-rr.overview"></a>

Oracle 복제를 위한 RDS 커스텀 아키텍처는 오라클용 RDS 복제와 유사합니다. 기본 DB 인스턴스는 하나 이상의 Oracle 복제본에 비동기적으로 복제합니다.

![\[RDS Custom for Oracle은 Oracle 복제본을 지원합니다\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/read-replica-custom-oracle.png)


### 최대 복제본 수
<a name="custom-rr.overview.number"></a>

Oracle용 RDS와 마찬가지로 RDS Custom for Oracle 기본 DB 인스턴스의 관리형 Oracle 복제본을 최대 5개까지 생성할 수 있습니다. 사용자 고유의 수동 구성 (외부) Oracle 복제본을 생성할 수도 있습니다. 외부 복제본은 DB 인스턴스 제한에 포함되지 않습니다. 또한 RDS Custom 지원 경계 밖에 배치됩니다. 지원 범위에 대한 자세한 내용은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 섹션을 참조하세요.

### 복제본 명명 규칙
<a name="custom-rr.overview.names"></a>

Oracle 복제본 이름은 데이터베이스 고유 이름을 기반으로 합니다. 이러한 `DB_UNIQUE_NAME_X` 형식으로, 문자가 순차적으로 추가됩니다. 예를 들어, 데이터베이스 고유 이름이 다음과 같은 경우`ORCL`, 처음 두 개의 복제본에는 이름이 `ORCL_A`과`ORCL_B` 이렇게 들어갑니다. 처음 6개의 문자 A\$1F는 RDS Custom 전용입니다. 데이터베이스 파라미터는 프라이머리 DB 인스턴스에서 복제본으로 복사됩니다. 자세한 내용은 Oracle 문서의 [DB\$1UNIQUE\$1NAME](https://docs.oracle.com/database/121/REFRN/GUID-3547C937-5DDA-49FF-A9F9-14FF306545D8.htm#REFRN10242)을 참조하세요.

### 복제본 백업 보존
<a name="custom-rr.overview.backups"></a>

기본적으로 RDS Custom Oracle 복제본은 기본 DB 인스턴스와 동일한 백업 보존 기간을 사용합니다. 백업 보존 기간을 1\$135일로 수정할 수 있습니다. RDS Custom은 백업, 복원 및 시점 복구(PITR)를 지원합니다. RDS Custom DB 인스턴스 백업 및 복원에 대한 자세한 내용은 [Amazon RDS Custom for Oracle DB 인스턴스 백업 및 복원](custom-backup.md) 단원을 참조하세요.

**참고**  
RDS Custom에서 Oracle 복제본을 생성하는 동안 RDS Custom 자동화는 다시 실행 로그 정리 작업을 일시적으로 중지합니다. Oracle 복제본을 생성하는 동안 RDS Custom은 다시 실행 로그 파일 정리를 일시적으로 일시 중지합니다.

### 복제본 승격
<a name="custom-rr.overview.promotion"></a>

콘솔, `promote-read-replica` AWS CLI 명령 또는 `PromoteReadReplica` API를 사용하여 RDS Custom for Oracle의 관리형 Oracle 복제본을 승격할 수 있습니다. 기본 DB 인스턴스를 삭제하고 모든 복제본이 정상이면 RDS Custom for Oracle은 관리형 복제본을 독립 실행형 인스턴스로 자동 승격합니다. 복제본이 자동화를 일시 중지했거나 지원 경계 밖에 있는 경우 RDS Custom이 자동으로 승격할 수 있으려면 먼저 복제본을 수정해야 합니다. 외부 Oracle 복제본은 수동으로만 프로모션할 수 있습니다.

# RDS Custom for Oracle 복제본의 지침 및 제한 사항
<a name="custom-rr.reqs-limitations"></a>

RDS Custom for Oracle 복제본을 생성할 때 모든 RDS Oracle 복제본 옵션이 지원되는 것은 아닙니다.

**Topics**
+ [RDS Custom for Oracle 복제본의 일반적 지침](#custom-rr.guidelines)
+ [RDS Custom for Oracle 복제본의 일반적 제한 사항](#custom-rr.limitations)
+ [RDS Custom for Oracle 복제본의 네트워킹 요구 사항 및 제한 사항](#custom-rr.network)
+ [RDS Custom for Oracle의 외부 복제본 제한 사항](#custom-rr.external-replica-reqs)

## RDS Custom for Oracle 복제본의 일반적 지침
<a name="custom-rr.guidelines"></a>

RDS Custom for Oracle로 작업을 수행할 경우 다음 지침을 따르세요.
+ RDS Custom for Oracle 복제본을 Oracle Enterprise Edition에서만 사용할 수 있습니다. Standard Edition 2는 지원되지 않습니다.
+ VPN 터널을 구현하여 기본 인스턴스와 대기 인스턴스 간의 통신을 암호화하는 것이 좋습니다. 자세한 내용은 [RDS Custom for Oracle 기본 인스턴스와 복제본 인스턴스 간에 VPN 터널 구성](cfo-standby-vpn-tunnel.md) 섹션을 참조하세요.
+ `RDS_DATAGUARD` 사용자를 수정하지 마세요. RDS Custom for Oracle 자동화를 위한 사용자입니다. 이 사용자를 수정하면 RDS Custom for Oracle DB 인스턴스에 대한 Oracle 복제본을 생성할 수 없는 것과 같은 원하지 않는 결과가 발생할 수 있습니다.
+ 복제본 사용자 암호를 변경하지 마세요. 이 암호는 RDS Custom 호스트에서 Oracle Data Guard 구성을 관리하는 데 필요합니다. 암호를 변경하면 RDS Custom for Oracle이 Oracle 복제본을 지원 경계 외부에 둘 수 있습니다. 자세한 내용은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 섹션을 참조하세요.

  암호는 DB 리소스 ID로 태그가 지정된 AWS Secrets Manager에 저장됩니다. 각 읽기 전용 복제본은 Secrets Manager에 고유한 암호가 있습니다. 보안 암호는 다음 이름 지정 형식 중 하나를 사용합니다.

  ```
  do-not-delete-rds-custom-db-DB_resource_id-uuid-dg
  rds-custom!oracle-do-not-delete-DB_resource_id-uuid-dg
  ```
+ 기본 DB 인스턴스의 `DB_UNIQUE_NAME`을 변경하지 마세요. 이름을 변경하면 모든 복원 작업이 중단됩니다.
+ RDS Custom CDB의 `CREATE PLUGGABLE DATABASE` 명령에 `STANDBYS=NONE` 절을 지정하지 마세요. 이렇게 하면 장애 조치가 발생할 경우 대기 CDB에 모든 PDB가 포함됩니다.

## RDS Custom for Oracle 복제본의 일반적 제한 사항
<a name="custom-rr.limitations"></a>

RDS Custom for Oracle 복제본에는 다음과 같은 제한 사항이 있습니다.
+ 읽기 전용 모드에서는 RDS Custom for Oracle 복제본을 생성할 수 없습니다. 그러나 마운트된 복제본의 모드를 읽기 전용으로, 읽기 전용에서 마운트된 모드로 수동으로 변경할 수 있습니다. 자세한 내용은 [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html) AWS CLI 명령에 대한 문서를 참조하세요.
+ Oracle 복제본의 경우 리전 간 RDS Custom for Oracle 복제본을 생성할 수 없습니다.
+ Oracle Data Guard `CommunicationTimeout` 파라미터의 값은 변경할 수 없습니다. RDS Custom for Oracle DB 인스턴스의 경우 이 파라미터는 15초로 설정됩니다.

## RDS Custom for Oracle 복제본의 네트워킹 요구 사항 및 제한 사항
<a name="custom-rr.network"></a>

네트워크 구성이 RDS Custom for Oracle 복제본을 지원하는지 확인해야 합니다. 다음을 고려하세요.
+ 기본 DB 인스턴스와 모든 복제본의 Virtual Private Cloud(VPC) 내 인바운드 및 아웃바운드 통신 모두에 대해 포트 1140을 활성화해야 합니다. 이는 읽기 전용 복제본 간의 Oracle Data Guard 통신에 필요합니다.
+ RDS Custom for Oracle은 Oracle 복제본을 생성하는 동안 네트워크의 유효성을 검사합니다. 기본 DB 인스턴스와 새 복제본이 네트워크를 통해 연결할 수 없는 경우 RDS Custom for Oracle은 복제본을 생성하지 않고 `INCOMPATIBLE_NETWORK` 상태에 배치합니다.
+ Amazon EC2 또는 온프레미스에서 생성하는 복제본과 같은 외부 Oracle 복제본의 경우 Oracle Data Guard 복제에 대해 다른 포트와 리스너를 사용합니다. 포트 1140을 사용하려고 하면 RDS Custom 자동화와 충돌이 발생할 수 있습니다.
+ `/rdsdbdata/config/tnsnames.ora` 파일에는 리스너 프로토콜 주소에 매핑된 네트워크 서비스 이름이 포함되어 있습니다. 다음 요구 사항 및 권장 사항을 참고하세요.
  + Oracle 복제본 작업을 처리할 때 `tnsnames.ora` 접두사가 붙은 `rds_custom_`의 항목은 RDS Custom 전용입니다.

    `tnsnames.ora`에서 수동으로 항목을 생성할 때는 이 접두사를 사용하지 마세요.
  + 경우에 따라 수동으로 전환하거나 장애 조치하거나, 또는 고속 장애 조치(FSFO)와 같은 장애 조치 기법을 사용할 수도 있습니다. 그럴 경우 프라이머리 DB 인스턴스의 `tnsnames.ora` 항목을 모든 대기 인스턴스로 수동으로 동기화해야 합니다. 이 권장 사항은 RDS Custom에서 관리하는 Oracle 복제본과 외부 Oracle 복제본에 모두 적용됩니다.

    RDS Custom 자동화는 프라이머리 DB 인스턴스에서만 `tnsnames.ora` 항목을 업데이트합니다. Oracle 복제본을 추가하거나 제거할 때도 동기화해야 합니다.

    `tnsnames.ora` 파일을 동기화하고 수동으로 전환하거나 장애 조치하지 않으면 프라이머리 DB 인스턴스의 Oracle Data Guard가 Oracle 복제본과 통신하지 못할 수 있습니다.

## RDS Custom for Oracle의 외부 복제본 제한 사항
<a name="custom-rr.external-replica-reqs"></a>

 온프레미스 복제본을 포함하는 RDS Custom for Oracle 외부 복제본에는 다음과 같은 제한 사항이 있습니다.
+ RDS Custom for Oracle은 FSFO와 같은 수동 장애 조치 시 외부 Oracle 복제본에 대한 인스턴스 역할 변경을 감지하지 않습니다.

  RDS Custom for Oracle은 관리형 복제본의 변경 사항을 감지합니다. 역할 변경은 이벤트 로그에 기록됩니다. [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 명령을 사용하여 새로운 상태를 확인할 수도 있습니다.
+ RDS Custom for Oracle은 외부 Oracle 복제본에 대한 복제본 지연을 감지하지 않습니다.

  RDS Custom for Oracle은 관리형 복제본의 지연을 감지합니다. 복제 지연률이 높으면 `Replication has stopped` 이벤트가 발생합니다. [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 명령을 사용하여 복제 상태를 볼 수도 있지만, 업데이트되는 데 지연이 있을 수 있습니다.
+ RDS Custom for Oracle은 기본 DB 인스턴스를 삭제한 경우 외부 Oracle 복제본을 자동으로 승격시키지 않습니다.

  자동 프로모션 기능은 관리형 Oracle 복제본에만 사용할 수 있습니다. Oracle 복제본을 수동으로 승격하는 방법에 대한 내용은 [Amazon RDS Custom for Oracle의 Data Guard를 사용하여 고가용성 활성화](https://d1.awsstatic.com/whitepapers/enabling-high-availability-with-data-guard-on-amazon-rds-custom-for-oracle.pdf) 백서를 참조하세요

# RDS Custom for Oracle 복제본을 독립 실행형 DB 인스턴스로 승격
<a name="custom-rr.promoting"></a>

RDS for Oracle,와 마찬가지로 RDS Custom for Oracle 복제본을 독립형 DB 인스턴스로 승격할 수 있습니다. Oracle 복제본을 승격하면 RDS Custom for Oracle의 DB 인스턴스가 먼저 재부팅된 후에 사용할 수 있습니다. Oracle 복제본 승격에 대한 자세한 내용은 [읽기 전용 복제본을 독립 DB 인스턴스로 승격](USER_ReadRepl.Promote.md) 섹션을 참조하세요.

복제본을 승격할 경우 다음 지침을 참고하세요.
+ RDS Custom for Oracle이 복제본을 승격하는 동안 장애 조치를 시작하지 마세요. 그렇지 않으면 프로모션 워크플로가 중단될 수 있습니다.
+ RDS Custom for Oracle이 Oracle 복제본을 승격하는 동안에는 기본 DB 인스턴스를 전환하지 마세요. 그렇지 않으면 프로모션 워크플로가 중단될 수 있습니다.
+ RDS Custom for Oracle이 Oracle 복제본을 승격하는 동안에는 기본 DB 인스턴스를 종료하지 마세요. 그렇지 않으면 프로모션 워크플로가 중단될 수 있습니다.
+ 새로 승격된 DB 인스턴스를 대상으로 삼아 복제를 다시 시작하지 마세요. RDS Custom for Oracle이 Oracle 복제본을 승격시킨 후에는 독립형 DB 인스턴스가 되며 더 이상 복제본 역할이 없습니다.

RDS Custom for Oracle 복제본 승격의 다음과 같은 제한 사항을 참고하세요.
+ RDS Custom for Oracle이 백업하는 동안에는 복제본을 프로모션할 수 없습니다.
+ Oracle 복제본을 승격할 때 백업 보존 기간을 `0`으로 변경할 수 없습니다.
+ 정상 상태가 아닌 복제본은 승격시킬 수 없습니다.

  기본 DB 인스턴스에서 `delete-db-instance`를 발행하는 경우 RDS Custom for Oracle은 각 관리형 Oracle 복제본이 정상이고 승격에 사용할 수 있는지 확인합니다. 자동화가 일시 중지되었거나 지원 경계 밖에 있기 때문에 복제본은 승격에 적합하지 않을 수 있습니다. 이러한 경우 RDS Custom for Oracle은 Oracle 복제본을 수동으로 복구할 수 있도록 문제를 설명하는 이벤트를 게시합니다.

다음 단계는 Oracle 복제본을 DB 인스턴스로 승격하기 위한 일반적인 프로세스입니다.

1. 기본 DB 인스턴스에 대한 트랜잭션 쓰기를 중단합니다.

1. RDS Custom for Oracle이 모든 업데이트를 Oracle 복제본에 적용할 때까지 기다리십시오.

1. Amazon RDS 콘솔의 **승격** 옵션, AWS CLI 명령 [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html) 또는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) Amazon RDS API 작업을 사용하여 Oracle 복제본을 승격합니다.

Oracle 복제본의 승격 작업은 완료할 때까지 몇 분 걸립니다. 프로세스 중에 RDS Custom for Oracle은 복제를 중지하고 복제본을 재부팅합니다. 재부팅이 완료되면 Oracle 복제본을 새 DB 인스턴스로 사용할 수 있습니다. 복제본 승격의 문제 해결에 대한 자세한 내용은 [RDS Custom for Oracle 복제본 승격 문제 해결](custom-troubleshooting.md#custom-troubleshooting-promote) 섹션을 참조하세요.

## 콘솔
<a name="USER_ReadRepl.Promote.Console"></a>

**RDS Custom for Oracle 복제본을 독립 실행형 DB 인스턴스로 승격하려면**

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

1. Amazon RDS 콘솔에서 **데이터베이스**를 선택합니다.

   **데이터베이스** 창이 표시됩니다. 각 Oracle 복제본은 **역할** 열에 **복제본**이라고 표시됩니다.

1. 승격하려는 RDS Custom for Oracle 복제본을 선택합니다.

1. **Actions**(작업)에서 **Promote**(승격)를 선택합니다.

1. **읽기 전용 복제본 승격** 페이지에서 새롭게 승격된 DB 인스턴스의 백업 보존 기간과 백업 기간을 입력합니다. 이 값은 **0**으로 설정할 수 없습니다.

1. 원하는 대로 설정되었으면 **Oracle 복제본 승격**을 선택합니다.

## AWS CLI
<a name="USER_ReadRepl.Promote.CLI"></a>

RDS Custom for Oracle 복제본을 독립 실행형 DB 인스턴스로 승격하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html) 명령을 사용합니다.

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

```
aws rds promote-read-replica \
--db-instance-identifier my-custom-read-replica \
--backup-retention-period 2 \
--preferred-backup-window 23:00-24:00
```
Windows의 경우:  

```
aws rds promote-read-replica ^
--db-instance-identifier my-custom-read-replica ^
--backup-retention-period 2 ^
--preferred-backup-window 23:00-24:00
```

## RDS API
<a name="USER_ReadRepl.Promote.API"></a>

RDS Custom for Oracle 복제본을 독립형 DB 인스턴스로 승격하려면 필수 파라미터 `DBInstanceIdentifier`를 사용하여 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) 작업을 호출합니다.

# RDS Custom for Oracle 기본 인스턴스와 복제본 인스턴스 간에 VPN 터널 구성
<a name="cfo-standby-vpn-tunnel"></a>

VPN 터널은 네트워크를 통한 디바이스 두 개 이상 간의 암호화된 연결입니다. RDS Custom for Oracle에서 Oracle Data Guard 인스턴스에 대한 최고 수준의 보안을 보장하려면 VPN 터널을 구현하여 기본 인스턴스와 대기 인스턴스 간의 통신을 암호화하는 것이 좋습니다. 터널은 민감한 데이터가 인스턴스 간에 네트워크를 이동할 때 민감한 데이터를 보호하는 역할을 합니다. 이 구성은 선택 사항이지만 데이터 보안 및 규정 준수를 달성하기 위한 모범 사례로 사용하는 것이 좋습니다.

다음 사전 조건을 충족하는지 확인합니다.
+ 기본 및 대기 호스트에 대한 루트 액세스 권한이 있어야 합니다.
+ `ipsec` 명령을 실행할 수 있는 기술적 전문 지식이 있어야 합니다.

**RDS Custom for Oracle에서 기본 복제본과 복제본 간에 VPN 터널을 구성하는 방법**

1. 다음 규칙을 사용하여 기본 인스턴스와 대기 인스턴스 모두에 대한 보안 그룹을 허용 목록에 추가합니다.

   ```
   ACTION FLOW SOURCE PROTO PORT
   
   ALLOW ingress this-SG 50 (ESP) all (N/A)
   ALLOW egress this-SG 50 (ESP) all (N/A)
   
   ALLOW ingress this-SG 17 (UDP) 500 (IKE)
   ALLOW egress this-SG 17 (UDP) 500 (IKE)
   ```

1. 루트 사용자로 전환합니다.

   ```
   $ sudo su – root
   ```

1. 기본 인스턴스와 대기 인스턴스 모두에서 다음 명령을 실행하여 사용자 `root`를 사용하여 네트워크 보안 서비스(NSS) 데이터베이스를 초기화합니다.

   ```
   ipsec initnss --nssdir /etc/ipsec.d
   ```

1. 다음과 같이 RSA 키를 생성합니다.

   1. 기본 인스턴스에서 OS 버전에 따라 다음 `ipsec` 명령 중 하나를 사용하여 키를 생성합니다.

      ```
      ipsec newhostkey --nssdir /etc/ipsec.d       ## for Oracle Linux Version 8
      ipsec newhostkey --output /etc/ipsec.secrets ## for Oracle Linux version 7.9
      ```

   1. 구성을 만드는 데 필요한 퍼블릭 키를 가져옵니다. 다음 예시에서 기본 인스턴스는 `left`입니다. `ipsec` parlance에서 `left`가 현재 구성 중인 디바이스를 나타내고 `right`는 터널의 다른 쪽 끝에 있는 디바이스를 나타내기 때문입니다.

      ```
      ipsec showhostkey --left --ckaid ckaid-returned-in-last-statement
      ```

   1. 대기 인스턴스에서 대기 인스턴스에 대한 키를 생성합니다.

      ```
      ipsec newhostkey --nssdir /etc/ipsec.d       ## for Oracle Linux Version 8
      ipsec newhostkey --output /etc/ipsec.secrets ## for Oracle Linux version 7.9
      ```

   1. 구성을 만드는 데 필요한 대기 인스턴스의 퍼블릭 키를 가져옵니다. 다음 예시에서 대기 인스턴스는 터널의 다른 쪽 끝에 있는 디바이스를 나타내는 `right`입니다.

      ```
      ipsec showhostkey --right --ckaid ckaid-returned-in-last-statement
      ```

1. 가져온 RSA 키를 기반으로 구성을 생성합니다. 구성은 기본 인스턴스와 대기 인스턴스에서 동일합니다. AWS Console에서 기본 인스턴스 IPv4 주소와 대기 인스턴스 IPv4 주소를 찾을 수 있습니다.

   기본 인스턴스와 대기 인스턴스 모두에서 다음 구성을 `/etc/ipsec.d/custom-fb-tunnel.conf` 파일에 저장합니다.

   ```
   conn custom-db-tunnel
    type=transport
    auto=add
    authby=rsasig
    left=IPV4-for-primary 
    leftrsasigkey=RSA-key-generated-on-primary
    right=IPV4-for-standby
    rightrsasigkey=RSA-key-generated-on-standby
   ```

1. 기본 인스턴스와 대기 인스턴스 둘 다, 두 호스트 모두에서 `ipsec` 대몬을 시작합니다.

   ```
   ipsec setup start
   ```

1. 기본 인스턴스 또는 대기 인스턴스에서 터널을 시작합니다. 다음과 같이 출력됩니다.

   ```
   [root@ip-172-31-6-81 ~]# ipsec auto --up custom-db-tunnel
   181 "custom-db-tunnel" #1: initiating IKEv2 connection
   181 "custom-db-tunnel" #1: sent IKE_SA_INIT request to 172.31.32.196:500
   182 "custom-db-tunnel" #1: sent IKE_AUTH request {cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_512 group=DH19}
   003 "custom-db-tunnel" #1: initiator established IKE SA; authenticated peer '3584-bit PKCS#1 1.5 RSA with SHA1' signature using preloaded certificate '172.31.32.196'
   004 "custom-db-tunnel" #2: initiator established Child SA using #1; IPsec transport [172.31.6.81-172.31.6.81:0-65535 0] -> [172.31.32.196-172.31.32.196:0-65535 0] {ESP/ESN=>0xda9c4815 <0xb742ca42 xfrm=AES_GCM_16_256-NONE DPD=passive}
   [root@ip-172-31-6-81 ~]#
   ```

# Amazon RDS Custom for Oracle DB 인스턴스 백업 및 복원
<a name="custom-backup"></a>

Amazon RDS와 마찬가지로 RDS Custom은 DB 인스턴스의 백업 기간 동안 RDS Custom for Oracle DB 인스턴스의 자동 백업을 생성하고 저장합니다. 또한, 수동으로 DB 인스턴스를 백업할 수도 있습니다.

절차는 Amazon RDS DB 인스턴스의 스냅샷을 생성하는 것과 동일합니다. RDS Custom DB 인스턴스의 첫 번째 스냅샷에는 전체 DB 인스턴스의 데이터가 포함되며, 후속 스냅샷은 증분적입니다.

AWS Management Console 또는 AWS CLI를 사용하여 DB 스냅샷을 복원할 수 있습니다.

**Topics**
+ [RDS Custom for Oracle 스냅샷 생성](custom-backup.creating.md)
+ [RDS Custom for Oracle DB 스냅샷에서 복원](custom-backup.restoring.md)
+ [RDS Custom for Oracle 인스턴스를 특정 시점으로 복원](custom-backup.pitr.md)
+ [RDS Custom for Oracle 스냅샷 삭제](custom-backup.deleting.md)
+ [RDS Custom for Oracle 자동 백업 삭제](custom-backup.deleting-backups.md)

# RDS Custom for Oracle 스냅샷 생성
<a name="custom-backup.creating"></a>

RDS Custom for Oracle은 DB 인스턴스의 스토리지 볼륨 스냅샷을 생성하여 개별 데이터베이스뿐만 아니라 전체 DB 인스턴스를 백업합니다. DB 인스턴스에 컨테이너 데이터베이스(CDB) 가 포함된 경우, 인스턴스의 스냅샷에는 루트 CDB와 모든 PDB가 포함됩니다.

RDS Custom for Oracle 스냅샷을 생성할 때 백업할 RDS Custom DB 인스턴스를 지정하고, 나중에 복원할 수 있도록 스냅샷에 이름을 지정합니다.

스냅샷을 생성할 때 RDS Custom for Oracle은 DB 인스턴스에 연결된 모든 볼륨에 대해 Amazon EBS 스냅샷을 생성합니다. RDS Custom for Oracle은 루트 볼륨의 EBS 스냅샷을 사용하여 새로운 Amazon Machine Image(AMI)를 등록합니다. 스냅샷을 특정 DB 인스턴스에 쉽게 연결할 수 있도록 `DBSnapshotIdentifier`, `DbiResourceId` 및 `VolumeType`으로 태그가 지정됩니다.

DB 스냅샷을 생성하면 I/O가 잠시 중단됩니다. 이러한 일시 중단은 DB 인스턴스의 크기와 클래스에 따라 몇 초에서 몇 분까지 지속될 수 있습니다. 스냅샷 생성에 걸리는 시간은 데이터베이스 크기에 따라 다릅니다. 스냅샷에는 전체 스토리지 볼륨이 포함되므로 임시 파일과 같은 파일의 크기도 스냅샷 생성 시간에 영향을 미칩니다. 스냅샷을 생성하는 방법에 대한 자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 섹션을 참조하세요.

콘솔 또는 AWS CLI를 사용하여 RDS Custom for Oracle 스냅샷을 생성할 수 있습니다.

## 콘솔
<a name="USER_CreateSnapshot.CON"></a>

**RDS Custom 스냅샷을 생성하는 방법**

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

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. RDS Custom DB 인스턴스 목록에서 스냅샷을 생성할 인스턴스를 선택합니다.

1. **작업**에서 **스냅샷 만들기**를 선택합니다.

   [**DB 스냅샷 생성(Take DB Snapshot)**] 창이 나타납니다.

1. **스냅샷 이름(Snapshot name)**에 스냅샷 이름을 입력합니다.

1. [**스냅샷 생성(Take Snapshot)**]을 선택합니다.

## AWS CLI
<a name="USER_CreateSnapshot.CLI"></a>

[create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) AWS CLI 명령을 사용하여 RDS Custom DB 인스턴스의 스냅샷을 생성합니다.

다음과 같은 옵션을 지정할 수 있습니다.
+ `--db-instance-identifier` - 백업할 RDS Custom DB 인스턴스를 식별합니다.
+ `--db-snapshot-identifier` - 나중에 복원할 수 있도록 RDS Custom 스냅샷의 이름을 지정합니다.

이 예제에서는 `my-custom-instance`라는 RDS Custom DB 인스턴스에 대해 *`my-custom-snapshot`*이라는 DB 스냅샷을 생성합니다.

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

```
1. aws rds create-db-snapshot \
2.     --db-instance-identifier my-custom-instance \
3.     --db-snapshot-identifier my-custom-snapshot
```
Windows의 경우:  

```
1. aws rds create-db-snapshot ^
2.     --db-instance-identifier my-custom-instance ^
3.     --db-snapshot-identifier my-custom-snapshot
```

# RDS Custom for Oracle DB 스냅샷에서 복원
<a name="custom-backup.restoring"></a>

RDS Custom for Oracle DB 인스턴스를 복원하는 경우 DB 스냅샷의 이름과 새로운 인스턴스의 이름을 입력합니다. 스냅샷에서 기존 RDS Custom DB 인스턴스로 복원할 수 없습니다. 복원 시 새로운 RDS Custom for Oracle DB 인스턴스가 생성됩니다.

복원 프로세스는 다음과 같은 면에서 Amazon RDS의 복원과 다릅니다.
+ 스냅샷을 복원하기 전에 RDS Custom for Oracle은 기존 구성 파일을 백업합니다. 이러한 파일은 디렉터리 `/rdsdbdata/config/backup`의 복원된 인스턴스에서 사용할 수 있습니다. RDS Custom for Oracle은 기본 파라미터로 DB 스냅샷을 복원하고 이전 데이터베이스 구성 파일을 기존 데이터베이스 구성 파일로 덮어씁니다. 따라서 복원된 인스턴스는 사용자 지정 파라미터 및 데이터베이스 구성 파일의 변경 사항을 보존하지 않습니다.
+ 복원된 데이터베이스의 이름은 스냅샷과 동일하며, 다른 이름을 지정할 수 없습니다. (RDS Custom for Oracle의 경우 기본값은 `ORCL`입니다.)

## 콘솔
<a name="custom-backup.restoring.console"></a>

**DB 스냅샷에서 RDS Custom DB 인스턴스를 복원하는 방법**

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

1. 탐색 창에서 [**Snapshots**]를 선택합니다.

1. 복원 원본으로 사용할 DB 스냅샷을 선택합니다.

1. **작업**에서 **스냅샷 복원**을 선택합니다.

1. **DB 인스턴스 복원(Restore DB instance)** 페이지의 **DB 인스턴스 식별자(DB instance identifier)**에 복원된 RDS Custom DB 인스턴스의 이름을 입력합니다.

1. **DB 인스턴스 복원**을 선택합니다.

## AWS CLI
<a name="custom-backup.restoring.CLI"></a>

[ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) AWS CLI 명령을 사용하여 RDS Custom DB 스냅샷을 복원합니다.

복원하려는 스냅샷이 프라이빗 DB 인스턴스용인 경우 `db-subnet-group-name` 및 `no-publicly-accessible`을 모두 올바르게 지정해야 합니다. 그렇지 않으면 DB 인스턴스의 기본값에 공개적으로 액세스할 수 있게 됩니다. 다음 옵션이 필요합니다.
+ `db-snapshot-identifier` - 복구할 스냅샷을 식별합니다.
+ `db-instance-identifier` - DB 스냅샷에서 생성할 RDS Custom DB 인스턴스의 이름을 지정합니다.
+ `custom-iam-instance-profile` - RDS Custom for Oracle DB 인스턴스의 기본 Amazon EC2 인스턴스와 연결된 인스턴스 프로필을 지정합니다.

다음 코드는 `my-custom-instance`에 대한 `my-custom-snapshot`이라는 스냅샷을 복원합니다.

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

```
aws rds restore-db-instance-from-db-snapshot \
  --db-snapshot-identifier my-custom-snapshot \
  --db-instance-identifier my-custom-instance \
  --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \
  --no-publicly-accessible
```
Windows의 경우:  

```
aws rds restore-db-instance-from-db-snapshot ^
  --db-snapshot-identifier my-custom-snapshot ^
  --db-instance-identifier my-custom-instance ^
  --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^
  --no-publicly-accessible
```

# RDS Custom for Oracle 인스턴스를 특정 시점으로 복원
<a name="custom-backup.pitr"></a>

DB 인스턴스를 특정 시점(PITR)으로 복원하여 새로운 DB 인스턴스를 생성할 수 있습니다. PITR을 지원하려면 DB 인스턴스의 백업 보존이 0이 아닌 값으로 설정되어 있어야 합니다.

RDS Custom for Oracle DB 인스턴스의 가장 빠른 복원 가능 시간은 여러 요소에 따라 달라지지만, 일반적으로 현재 시간에서 5분 이내입니다. DB 인스턴스의 최근 복원 가능 시간을 확인하려면 AWS CLI[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 사용한 후 DB 인스턴스의 `LatestRestorableTime` 필드에 반환되는 값을 살펴봅니다. Amazon RDS 콘솔에서 각 DB 인스턴스의 복원 가능한 최신 시간을 보려면 [ **자동 백업**을 선택합니다.

백업 보존 기간 중 어느 특정 시점으로든 복원할 수 있습니다. 각 DB 인스턴스의 복원 가능한 가장 빠른 시간을 보려면 Amazon RDS 콘솔에서 **자동 백업**을 선택합니다.

PITR에 대한 일반적인 정보는 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom for Oracle에 대한 PITR 고려 사항](#custom-backup.pitr.oracle)

## RDS Custom for Oracle에 대한 PITR 고려 사항
<a name="custom-backup.pitr.oracle"></a>

RDS Custom for Oracle에서 PITR은 다음과 같은 중요한 면에서 Amazon RDS의 PITR과 다릅니다.
+ 복원된 데이터베이스의 이름은 소스 DB 인스턴스와 동일합니다. 다른 이름을 지정할 수 없습니다. 기본값은 `ORCL`입니다.
+ `AWSRDSCustomIamRolePolicy`는 새 권한이 필요합니다. 자세한 내용은 [2단계: AWSRDSCustomInstanceRoleForRdsCustomInstance에 액세스 정책 추가](custom-setup-orcl.md#custom-setup-orcl.iam.add-policy) 단원을 참조하세요.
+ Oracle DB 인스턴스용 모든 RDS Custom에는 백업 보존이 0이 아닌 값으로 설정되어 있어야 합니다.
+ 운영 체제 또는 DB 인스턴스 시간대를 변경하면 PITR이 작동하지 않을 수 있습니다. 시간대 변경에 대한 내용은 [Oracle 시간대](custom-managing.timezone.md) 섹션을 참조하세요.
+ 자동화를 `ALL_PAUSED`로 설정한 경우 RDS Custom은 복원 가능한 최근 시간(LRT) 이전에 생성된 로그를 포함하여 아카이브된 다시 실행 로그 파일의 업로드를 일시 중지합니다. 잠시 동안 자동화를 일시 중지하는 것이 좋습니다.

  예를 들어, LRT가 10분 전이라고 가정해 봅니다. 자동화를 일시 중지하면 일시 중지한 동안 RDS Custom은 아카이브된 다시 실행 로그를 업로드하지 않습니다. DB 인스턴스가 충돌하는 경우 일시 중지할 때 존재했던 LRT 이전 시간으로만 복구할 수 있습니다. 자동화를 재개하면 RDS Custom은 로그 업로드를 다시 시작합니다. LRT가 변경되며, 일반적인 PITR 규칙이 적용됩니다.
+ RDS Custom에서는 업로드 후 RDS Custom에서 삭제하기 전에 아카이브된 다시 실행 로그를 보존할 시간을 수동으로 지정할 수 있습니다. 다음과 같이 시간을 지정합니다.

  1. `/opt/aws/rdscustomagent/config/redo_logs_custom_configuration.json`라는 이름의 텍스트 파일을 만듭니다.

  1. `{"archivedLogRetentionHours" : "num_of_hours"}` 형식의 JSON 객체를 추가합니다. 번호는 1\$1840 범위의 정수여야 합니다.
+ CDB가 아닌 항목을 컨테이너 데이터베이스(CDB)에 PDB로 연결한 다음 PITR을 시도한다고 가정하겠습니다. 이전에 PDB를 백업한 경우에만 작업이 성공합니다. PDB를 만들거나 수정한 후에는 항상 백업하는 것이 좋습니다.
+ 데이터베이스 초기화 파라미터를 사용자 지정하지 않는 것이 좋습니다. 예를 들어, 다음 파라미터를 수정하면 PITR에 영향을 줍니다.
  + `CONTROL_FILE_RECORD_KEEP_TIME`은 로그 업로드 및 삭제 규칙에 영향을 줍니다.
  + `LOG_ARCHIVE_DEST_n`는 여러 대상을 지원하지 않습니다.
  + `ARCHIVE_LAG_TARGET`은 최신 복원 가능 시간에 영향을 줍니다. Recovery Point Objective(RPO)가 5분이기 때문에 `ARCHIVE_LAG_TARGET`은 `300`으로 설정됩니다. 이 목표를 달성하기 위해 RDS는 5분마다 온라인 다시 실행 로그를 전환하여 Amazon S3 버킷에 저장합니다. 로그 전환 빈도로 인해 RDS Custom for Oracle 데이터베이스의 성능 문제가 발생하는 경우, DB 인스턴스와 스토리지를 IOPS와 처리량이 더 높은 곳으로 확장할 수 있습니다. 복구 계획에 필요한 경우 `ARCHIVE_LAG_TARGET` 초기화 파라미터 설정을 60\$17,200 사이의 값으로 조정할 수 있습니다.
+ 데이터베이스 초기화 파라미터를 사용자 지정하는 경우 다음 항목만 사용자 지정하는 것이 좋습니다.
  + `COMPATIBLE` 
  + `MAX_STRING_SIZE`
  + `DB_FILES` 
  + `UNDO_TABLESPACE` 
  + `ENABLE_PLUGGABLE_DATABASE` 
  + `CONTROL_FILES` 
  + `AUDIT_TRAIL` 
  + `AUDIT_TRAIL_DEST` 

  다른 모든 초기화 파라미터의 경우 RDS Custom은 기본값을 복원합니다. 이전 목록에 없는 파라미터를 수정하면 PITR에 악영향을 미치고 예측할 수 없는 결과가 발생할 수 있습니다. 예를 들어, `CONTROL_FILE_RECORD_KEEP_TIME`은 로그 업로드 및 삭제 규칙에 영향을 줍니다.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 RDS Custom DB 인스턴스를 특정 시점으로 복원할 수 있습니다.

## 콘솔
<a name="custom-backup.pitr2.CON"></a>

**RDS Custom DB 인스턴스를 지정된 시간으로 복원하는 방법**

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

1. 탐색 창에서 **자동 백업(Automated backups)**을 선택합니다.

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

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

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

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

   **사용자 지정(Custom)**을 선택한 경우 인스턴스를 복원하려는 날짜와 시간을 입력합니다.

   시간은 현지 시간대로 표시됩니다. 즉, 협정 세계시(UTC)에서 오프셋으로 표시됩니다. 예를 들어 UTC-5는 동부 표준시/하절기 중부 표준시입니다.

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

1. 필요에 따라 DB 인스턴스 클래스와 같은 기타 옵션을 선택합니다.

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

## AWS CLI
<a name="custom-backup.pitr2.CLI"></a>

새로운 RDS Custom DB 인스턴스를 생성하려면 [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) AWS CLI 명령을 사용하여 DB 인스턴스를 지정된 시간으로 복원합니다.

다음 옵션 중 하나를 사용하여 복원 원본으로 사용할 백업을 지정합니다.
+ `--source-db-instance-identifier mysourcedbinstance`
+ `--source-dbi-resource-id dbinstanceresourceID`
+ `--source-db-instance-automated-backups-arn backupARN`

`custom-iam-instance-profile` 옵션은 필수입니다.

다음 예제는 지정된 시간을 기준으로 `my-custom-db-instance`를 `my-restored-custom-db-instance`라는 새로운 DB 인스턴스로 복원합니다.

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

```
1. aws rds restore-db-instance-to-point-in-time \
2.     --source-db-instance-identifier my-custom-db-instance\
3.     --target-db-instance-identifier my-restored-custom-db-instance \
4.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \
5.     --restore-time 2022-10-14T23:45:00.000Z
```
Windows의 경우:  

```
1. aws rds restore-db-instance-to-point-in-time ^
2.     --source-db-instance-identifier my-custom-db-instance ^
3.     --target-db-instance-identifier my-restored-custom-db-instance ^
4.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^
5.     --restore-time 2022-10-14T23:45:00.000Z
```

# RDS Custom for Oracle 스냅샷 삭제
<a name="custom-backup.deleting"></a>

RDS Custom for Oracle에서 관리하는 DB 스냅샷이 더 이상 필요하지 않으면 삭제할 수 있습니다. Amazon RDS와 RDS Custom DB 인스턴스의 삭제 절차는 동일합니다.

바이너리 및 루트 볼륨에 대한 Amazon EBS 스냅샷은 계정에서 실행 중인 일부 인스턴스 또는 다른 RDS Custom for Oracle 스냅샷에 연결될 수 있어 계정에 더 오래 남아 있습니다. 이러한 EBS 스냅샷은 기존 RDS Custom for Oracle 리소스(DB 인스턴스 또는 백업)와 더 이상 관련이 없는 경우 자동으로 삭제됩니다.

## 콘솔
<a name="USER_DeleteSnapshot.CON"></a>

**RDS Custom DB 인스턴스의 스냅샷을 삭제하는 방법**

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

1. 탐색 창에서 [**Snapshots**]를 선택합니다.

1. 삭제하고 싶은 DB 스냅샷을 선택합니다.

1. **작업(Actions)**에서 **스냅샷 삭제(Delete snapshot)**를 선택합니다.

1. 확인 페이지에서 **삭제**를 선택합니다.

## AWS CLI
<a name="USER_DeleteSnapshot.CLI"></a>

RDS Custom 스냅샷을 삭제하려면 AWS CLI 명령 [delete-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-snapshot.html)을 사용합니다.

다음 옵션이 필요합니다.
+ `--db-snapshot-identifier` - 삭제할 스냅샷입니다.

다음 예제에서는 `my-custom-snapshot` DB 스냅샷을 삭제합니다.

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

```
1. aws rds delete-db-snapshot \  
2.   --db-snapshot-identifier my-custom-snapshot
```
Windows의 경우:  

```
1. aws rds delete-db-snapshot ^
2.   --db-snapshot-identifier my-custom-snapshot
```

# RDS Custom for Oracle 자동 백업 삭제
<a name="custom-backup.deleting-backups"></a>

보관된 RDS Custom for Oracle 자동 백업이 더 이상 필요하지 않으면 삭제할 수 있습니다. 절차는 Amazon RDS 백업을 삭제하는 절차와 동일합니다.

## 콘솔
<a name="USER_WorkingWithAutomatedBackups-Deleting.CON"></a>

**보관된 자동 백업을 삭제하려면**

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

1. 탐색 창에서 **자동 백업(Automated backups)**을 선택합니다.

1. **Retained(보관됨)**를 선택합니다.

1. 삭제하려는 보관된 자동 백업을 선택합니다.

1. [** Actions**]에 대해 [**Delete**]를 선택합니다.

1. 확인 페이지에서 **delete me**를 입력하고 **삭제**를 선택합니다.

## AWS CLI
<a name="USER_WorkingWithAutomatedBackups-Deleting.CLI"></a>

[delete-db-instance-automated-backup](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance-automated-backup.html)이라는 AWS CLI 명령을 사용하여 보관된 자동 백업을 삭제할 수 있습니다.

다음 옵션을 사용하여 보관된 자동 백업을 삭제할 수 있습니다.
+ `--dbi-resource-id` - 소스 RDS Custom DB 인스턴스의 리소스 식별자입니다.

  보관된 자동 백업의 소스 DB 인스턴스에 대한 리소스 식별자는 AWS CLI 명령 [describe-db-instance-automated-backups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instance-automated-backups.html)를 사용하여 찾을 수 있습니다.

다음 예시에서는 소스 DB 인스턴스 리소스 식별자가 `custom-db-123ABCEXAMPLE`인 보관된 자동 백업을 삭제합니다.

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

```
1. aws rds delete-db-instance-automated-backup \
2.     --dbi-resource-id custom-db-123ABCEXAMPLE
```
Windows의 경우:  

```
1. aws rds delete-db-instance-automated-backup ^
2.     --dbi-resource-id custom-db-123ABCEXAMPLE
```

# RDS Custom for Oracle에서 옵션 그룹을 사용한 작업
<a name="custom-oracle-option-groups"></a>

RDS Custom은 옵션 그룹을 사용하여 추가 기능을 활성화하고 구성합니다. 옵션 그룹**은 RDS Custom for Oracle DB 인스턴스에 사용할 수 있는 옵션이라고 하는 기능을 지정합니다. 옵션은 여러 설정을 통해 옵션의 활용 방식을 지정합니다. RDS Custom for Oracle DB 인스턴스를 옵션 그룹과 연결하면 지정된 옵션 및 옵션 설정이 이 인스턴스에 대해 활성화됩니다. Amazon RDS의 옵션 그룹에 대한 일반적인 정보는 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom for Oracle 옵션 그룹 개요](#custom-oracle-option-groups.overview)
+ [Oracle 시간대](custom-managing.timezone.md)

## RDS Custom for Oracle 옵션 그룹 개요
<a name="custom-oracle-option-groups.overview"></a>

Oracle 데이터베이스에 대한 옵션을 활성화하려면 먼저 옵션 그룹에 추가한 다음 옵션 그룹을 DB 인스턴스에 연결해야 합니다. 자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom for Oracle 옵션 요약](#custom-oracle-option-groups.summary)
+ [RDS Custom for Oracle DB 인스턴스에 옵션을 추가하는 기본 단계](#custom-oracle-timezone.overview.steps)
+ [RDS Custom for Oracle의 옵션 그룹 생성](#custom-oracle-timezone.creating)
+ [RDS Custom for Oracle DB 인스턴스와 옵션 그룹 연결](#custom-oracle-timezone.associating)

### RDS Custom for Oracle 옵션 요약
<a name="custom-oracle-option-groups.summary"></a>

RDS Custom for Oracle은 DB 인스턴스에 대해 다음 옵션을 지원합니다.


****  

| 옵션 | 옵션 ID | 설명 | 
| --- | --- | --- | 
|  Oracle 시간대  |  `Timezone`  |  RDS Custom for Oracle DB 인스턴스에서 사용하는 시간대.  | 

### RDS Custom for Oracle DB 인스턴스에 옵션을 추가하는 기본 단계
<a name="custom-oracle-timezone.overview.steps"></a>

RDS Custom for Oracle DB 인스턴스에 옵션을 추가하는 일반적인 절차는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. 옵션을 옵션 그룹에 추가합니다.

1. DB 인스턴스를 만들거나 수정할 때 옵션 그룹을 DB 인스턴스와 연결합니다.

### RDS Custom for Oracle의 옵션 그룹 생성
<a name="custom-oracle-timezone.creating"></a>

기본 옵션 그룹에서 설정을 가져오는 새 옵션 그룹을 생성할 수 있습니다. 그런 다음, 하나 이상의 옵션을 새 옵션 그룹에 추가합니다. 아니면 이미 기존 옵션 그룹이 있는 경우에는 기존 옵션 그룹과 모든 옵션을 새 옵션 그룹에 복사할 수 있습니다. 옵션 그룹을 복사하는 방법을 알아보려면 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy) 섹션을 참조하세요.

RDS Custom for Oracle의 기본 옵션 그룹은 다음 내용과 같습니다.
+ `default:custom-oracle-ee`
+ `default:custom-oracle-se2`
+ `default:custom-oracle-ee-cdb`
+ `default:custom-oracle-se2-cdb`

옵션 그룹을 생성할 때 설정은 기본 옵션 그룹에서 파생됩니다. `TIME_ZONE` 옵션을 추가한 후에는 옵션 그룹을 DB 인스턴스와 연결할 수 있습니다.

#### 콘솔
<a name="custom-oracle-timezone.Create.Console"></a>

 옵션 그룹을 생성하는 한 가지 방법은 AWS Management Console을 사용하는 것입니다.

**콘솔을 이용하여 새 옵션 그룹을 생성하려면,**

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

1. 탐색 창에서 **옵션 그룹**을 선택합니다.

1. **그룹 생성**을 선택합니다.

1. **보안 그룹 생성** 창에서 다음과 같이 합니다.

   1. [**이름(Name)**]에 AWS 계정 내에서 쉽게 식별할 수 있는 옵션 그룹 이름을 입력합니다. 이름은 글자, 숫자 및 하이픈만 사용 가능합니다.

   1. **Description**에 옵션 그룹에 대한 간략한 설명을 입력합니다. 이 설명은 표시 용도로만 사용됩니다.

   1. **엔진**의 경우 다음 RDS Custom for Oracle DB 엔진 중 하나를 선택합니다.
      + **custom-oracle-ee**
      + **custom-oracle-se2**
      + **custom-oracle-ee-cdb**
      + **custom-oracle-se2-cdb**

   1. **메이저 엔진 버전**의 경우 RDS Custom for Oracle에서 지원하는 메이저 엔진 버전을 선택합니다. 자세한 내용은 [RDS Custom for Oracle을 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.ora) 섹션을 참조하세요.

1. 계속하려면 **생성**을 선택합니다. 작업을 취소하려면 **Cancel**을 선택합니다.

#### AWS CLI
<a name="custom-oracle-timezone.Create.CLI"></a>

옵션 그룹을 생성하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/create-option-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-option-group.html) 명령을 다음 필수 파라미터와 함께 사용합니다.
+ `--option-group-name`
+ `--engine-name`
+ `--major-engine-version`
+ `--option-group-description`

**Example**  
다음은 `testoptiongroup`이라는 이름의 옵션 그룹을 생성하는 예제입니다. 이 옵션 그룹은 Oracle Enterprise Edition DB 엔진과 연동됩니다. 설명은 인용 부호로 묶여 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-option-group \
    --option-group-name testoptiongroup \
    --engine-name custom-oracle-ee-cdb \
    --major-engine-version 19 \
    --option-group-description "Test option group for a Custom Oracle CDB"
```
Windows의 경우:  

```
aws rds create-option-group ^
    --option-group-name testoptiongroup ^
    --engine-name custom-oracle-ee-cdb ^
    --major-engine-version 19 ^
    --option-group-description "Test option group for a Custom Oracle CDB"
```

#### RDS API
<a name="custom-oracle-timezone.Create.API"></a>

옵션 그룹을 생성하려면 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateOptionGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateOptionGroup.html) 작업을 호출합니다.

### RDS Custom for Oracle DB 인스턴스와 옵션 그룹 연결
<a name="custom-oracle-timezone.associating"></a>

옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스와 연결할 수 있습니다.
+ 새 DB 인스턴스의 경우 인스턴스를 생성할 때 옵션 그룹을 적용합니다. 자세한 내용은 [RDS Custom for Oracle DB 인스턴스 생성](custom-creating.md#custom-creating.create) 섹션을 참조하세요.
+ 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용하십시오. 자세한 내용은 [RDS Custom for Oracle DB 인스턴스 수정](custom-managing.modifying.md) 섹션을 참조하세요.

# Oracle 시간대
<a name="custom-managing.timezone"></a>

RDS Custom for Oracle DB 인스턴스에서 사용하는 시스템 시간대를 변경하려면 시간대 옵션을 사용합니다. 예를 들면 온프레미스 환경 또는 기존 애플리케이션과 시간을 호환하기 위해 DB 인스턴스의 시간대를 변경할 수 있습니다. 시간대 옵션은 호스트 레벨에서 시간대를 변경합니다. 시간대를 변경하면 `SYSDATE` 및 `SYSTIMESTAMP`를 비롯한 모든 날짜 열과 값이 영향을 받습니다.

**Topics**
+ [RDS Custom for Oracle의 시간대 옵션 설정](#custom-oracle-timezone.Options)
+ [RDS Custom for Oracle의 사용 가능한 시간대](#custom-oracle-timezone.Zones)
+ [RDS Custom for Oracle의 시간대 설정에 대한 고려 사항](#custom-oracle-timezone.PreReqs)
+ [RDS Custom for Oracle의 시간대 설정에 대한 제한 사항](#custom-oracle-timezone.overview.limitations)
+ [옵션 그룹에 시간대 옵션 추가](#custom-oracle-timezone.Add)
+ [시간대 옵션 제거](#custom-oracle-timezone.remove)

## RDS Custom for Oracle의 시간대 옵션 설정
<a name="custom-oracle-timezone.Options"></a>

Amazon RDS는 시간대 옵션에 대해 다음 설정을 지원합니다.


****  

| 옵션 설정 | 유효한 값 | 설명 | 
| --- | --- | --- | 
|  `TIME_ZONE`  |  사용 가능한 시간대 중 하나입니다. 전체 목록은 [RDS Custom for Oracle의 사용 가능한 시간대](#custom-oracle-timezone.Zones) 단원을 참조하십시오.  |  DB 인스턴스에 대한 새 시간대를 선택합니다.  | 

## RDS Custom for Oracle의 사용 가능한 시간대
<a name="custom-oracle-timezone.Zones"></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   | 
|  태평양  |  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  | 

## RDS Custom for Oracle의 시간대 설정에 대한 고려 사항
<a name="custom-oracle-timezone.PreReqs"></a>

DB 인스턴스의 시간대를 설정하기로 선택한 경우 다음을 고려하세요.
+ 시간대 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다.
+ 실수로 표준 시간대를 잘못 설정한 경우 DB 인스턴스를 이전 표준 시간대 설정으로 복구해야 합니다. 따라서 인스턴스에 시간대 옵션을 추가하기 전에 다음 전략 중 하나를 사용하는 것이 좋습니다.
  + RDS Custom for Oracle DB 인스턴스가 기본 옵션 그룹을 사용하는 경우 DB 인스턴스의 스냅샷을 생성합니다. 자세한 내용은 [RDS Custom for Oracle 스냅샷 생성](custom-backup.creating.md) 섹션을 참조하세요.
  + DB 인스턴스가 현재 기본값이 아닌 옵션 그룹을 사용하는 경우 DB 인스턴스의 스냅샷을 생성한 다음 시간대 옵션을 사용하여 새 옵션 그룹을 만듭니다.
+ `Timezone` 옵션을 적용한 후에는 DB 인스턴스를 수동으로 백업하는 것이 좋습니다.
+ 프로덕션 DB 인스턴스에 추가하기 전에 테스트 DB 인스턴스에서 시간대 옵션을 테스트하기를 강력히 권장합니다. 시간대 옵션을 추가하면 시스템 날짜를 이용해 날짜나 시간을 추가하는 테이블에 문제가 발생할 수 있습니다. 데이터와 애플리케이션을 분석해 표준 시간대 변경에 따른 영향을 평가하는 것이 좋습니다.

## RDS Custom for Oracle의 시간대 설정에 대한 제한 사항
<a name="custom-oracle-timezone.overview.limitations"></a>

다음과 같은 제한 사항이 있습니다.
+ 호스트를 지원 범위 밖으로 이동하지 않고는 호스트에서 직접 시간대를 변경할 수 없습니다. 데이터베이스 시간대를 변경하려면 옵션 그룹을 생성해야 합니다.
+ 시간대 옵션은 지속되는 옵션이지만, 영구 옵션은 아니므로 다음을 수행할 수 없습니다.
  + 옵션을 추가한 후에는 옵션 그룹에서 이 옵션을 제거합니다.
  + 옵션의 시간대 설정을 다른 시간대로 수정합니다.
+ RDS Custom for Oracle DB 인스턴스와 여러 옵션 그룹을 연결할 수 없습니다.
+ CDB 내에서 개별 PDB의 시간대를 설정할 수 없습니다.

## 옵션 그룹에 시간대 옵션 추가
<a name="custom-oracle-timezone.Add"></a>

RDS Custom for Oracle의 기본 옵션 그룹은 다음 내용과 같습니다.
+ `default:custom-oracle-ee`
+ `default:custom-oracle-se2`
+ `default:custom-oracle-ee-cdb`
+ `default:custom-oracle-se2-cdb`

옵션 그룹을 생성할 때 설정은 기본 옵션 그룹에서 파생됩니다. Amazon RDS의 옵션 그룹에 대한 일반적인 정보는 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 섹션을 참조하세요.

### 콘솔
<a name="custom-oracle-timezone.Console"></a>

**시간대 옵션을 옵션 그룹에 추가하려면**

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

1. 탐색 창에서 **옵션 그룹**을 선택합니다.

1. 수정하려는 옵션 그룹을 선택한 다음 **옵션 추가**를 선택합니다.

1. **옵션 추가** 창에서 다음과 같이 합니다.

   1. **시간대**를 선택합니다.

   1. **옵션 설정**에서 시간대를 선택합니다.

   1. 옵션을 추가하는 즉시 연결된 모든 RDS Custom for Oracle DB 인스턴스에서 옵션을 활성화하려면 **즉시 적용**에서 **예**를 선택합니다. **아니요**(기본 설정)를 선택하면 다음 유지 관리 기간에 연결된 모든 DB 인스턴스에서 옵션이 활성화됩니다.

   1. 
**중요**  
하나 이상의 DB 인스턴스에 이미 연결되어 있는 기존 옵션 그룹에 시간대 옵션을 추가하면 모든 DB 인스턴스가 자동으로 다시 시작되는 동안 인스턴스가 잠시 중단됩니다.

1. 원하는 대로 설정이 되었으면 **옵션 추가**를 선택합니다.

1. 시간대가 업데이트된 RDS Custom for Oracle DB 인스턴스를 백업합니다. 자세한 내용은 [RDS Custom for Oracle 스냅샷 생성](custom-backup.creating.md) 섹션을 참조하세요.

### AWS CLI
<a name="custom-oracle-timezone.CLI"></a>

다음 예에서는 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 명령을 사용하여 `Timezone` 옵션 및 `TIME_ZONE` 옵션 설정을 `testoptiongroup`이라는 옵션 그룹에 추가합니다. 표준 시간대는 `America/Los_Angeles`로 설정되어 있습니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds add-option-to-option-group \
    --option-group-name "testoptiongroup" \
    --options "OptionName=Timezone,OptionSettings=[{Name=TIME_ZONE,Value=America/Los_Angeles}]" \
    --apply-immediately
```

Windows의 경우:

```
aws rds add-option-to-option-group ^
    --option-group-name "testoptiongroup" ^
    --options "OptionName=Timezone,OptionSettings=[{Name=TIME_ZONE,Value=America/Los_Angeles}]" ^
    --apply-immediately
```

## 시간대 옵션 제거
<a name="custom-oracle-timezone.remove"></a>

시간대 옵션은 지속적인 옵션이지만, 영구적인 옵션은 아닙니다. 추가한 후에는 옵션 그룹에서 이 옵션을 제거할 수 없습니다. DB 인스턴스에서 이전 옵션 그룹의 연결을 해제하려면 다음을 수행하세요.

1. 업데이트된 `Timezone` 옵션이 있는 새 옵션 그룹을 생성합니다.

1. 인스턴스를 수정할 때 새 옵션 그룹을 DB 인스턴스와 연결합니다.

# 온프레미스 데이터베이스를 RDS Custom for Oracle로 마이그레이션
<a name="custom-migrating-oracle"></a>

온프레미스 Oracle 데이터베이스를 RDS Custom for Oracle로 마이그레이션하기 전에 다음 요소를 고려하세요.
+ 애플리케이션이 감당할 수 있는 가동 중지 시간
+ 소스 데이터베이스의 크기
+ 네트워크 연결
+ 대체 계획의 요구 사항
+ 소스 및 대상 Oracle 데이터베이스 버전과 DB 인스턴스 OS 유형
+ 사용 가능한 복제 도구(예: AWS Database Migration Service, Oracle GoldenGate 또는 서드 파티 복제 도구)

이러한 요소를 기준으로 물리적 마이그레이션, 논리적 마이그레이션을 선택하거나 조합하여 선택할 수 있습니다. 물리적 마이그레이션을 선택하면 다음과 같은 기술을 사용할 수 있습니다.

RMAN 복제  
활성 데이터베이스 복제 시 소스 데이터베이스를 백업할 필요가 없습니다. 이 작업은 네트워크를 통해 데이터베이스 파일을 보조 인스턴스로 복사하여 라이브 소스 데이터베이스를 대상 호스트에 복제합니다. RMAN `DUPLICATE` 명령은 필수 파일을 이미지 복사본 또는 백업 세트로 복사합니다. 이 기술에 대해 알아보려면 AWS 블로그 게시물인 [Physical migration of Oracle databases to Amazon RDS Custom using RMAN duplication](https://aws.amazon.com/blogs/database/physical-migration-of-oracle-databases-to-amazon-rds-custom-using-rman-duplication/)(RMAN 복제를 사용하여 Oracle 데이터베이스를 Amazon RDS Custom에 물리적으로 마이그레이션)을 참조하세요.

Oracle Data Guard  
이 기술에서는 기본 온프레미스 데이터베이스를 백업하고, 백업을 Amazon S3 버킷에 복사합니다. 그런 다음, 백업을 RDS Custom for Oracle 대기 DB 인스턴스에 복사합니다. 필요한 구성을 수행한 후에는 기본 데이터베이스를 RDS Custom for Oracle 대기 데이터베이스로 수동으로 전환하면 됩니다. 이 기술에 대해 알아보려면 AWS 블로그 게시물인 [Physical migration of Oracle databases to Amazon RDS Custom using Data Guard](https://aws.amazon.com/blogs/database/physical-migration-of-oracle-databases-to-amazon-rds-custom-using-data-guard/)(Data Guard를 사용하여 Oracle 데이터베이스를 Amazon RDS Custom에 물리적으로 마이그레이션)을 참조하세요.

데이터를 RDS for Oracle에 논리적으로 가져오는 일반적인 방법은 [Amazon RDS의 Oracle로 데이터 가져오기](Oracle.Procedural.Importing.md) 섹션을 참조하세요.

# Oracle용 Amazon RDS Custom DB 인스턴스 업그레이드
<a name="custom-upgrading"></a>

Amazon RDS Custom DB 인스턴스를 새로운 사용자 지정 엔진 버전(CEV)을 사용하도록 수정하여 업그레이드할 수 있습니다. 업그레이드에 대한 일반적인 정보는 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom for Oracle 업그레이드 개요](#custom-upgrading.overview)
+ [RDS Custom for Oracle 업그레이드에 대한 요구 사항](#custom-upgrading-reqs)
+ [RDS Custom for Oracle 데이터베이스 업그레이드에 대한 고려 사항](custom-upgrading-considerations.md)
+ [RDS Custom for Oracle OS 업그레이드에 대한 고려 사항](custom-upgrading-considerations-os.md)
+ [RDS Custom for Oracle DB 인스턴스의 유효한 CEV 업그레이드 대상 보기](custom-upgrading-target.md)
+ [RDS Custom for Oracle DB 인스턴스 업그레이드](custom-upgrading-modify.md)
+ [RDS Custom DB 인스턴스의 보류 중인 데이터베이스 업그레이드 보기](custom-upgrading-pending.md)
+ [RDS Custom for Oracle DB 인스턴스의 업그레이드 실패 문제 해결](custom-upgrading-failure.md)

## RDS Custom for Oracle 업그레이드 개요
<a name="custom-upgrading.overview"></a>

RDS Custom for Oracle을 사용하면 새 CEV를 만든 다음 새 CEV를 사용하도록 인스턴스를 수정하여 Oracle 데이터베이스 또는 DB 인스턴스 운영 체제(OS)에 패치를 적용할 수 있습니다.

**Topics**
+ [CEV 업그레이드 옵션](#custom-upgrading.overview.cev-options)
+ [CEV 없이 패치 적용](#custom-upgrading.overview.no-cevs)
+ [CEV로 DB 인스턴스에 패치를 적용하기 위한 일반적인 단계](#custom-upgrading.overview.general-steps)

### CEV 업그레이드 옵션
<a name="custom-upgrading.overview.cev-options"></a>

업그레이드를 위해 CEV를 생성할 때 상호 배타적인 다음 옵션을 사용할 수 있습니다.

**데이터베이스 전용**  
현재 DB 인스턴스에서 사용 중인 Amazon Machine Image(AMI)를 재사용하되, 데이터베이스 바이너리는 다르게 지정하세요. RDS Custom은 새 바이너리 볼륨을 할당한 다음 기존 Amazon EC2 인스턴스에 연결합니다. RDS Custom은 전체 데이터베이스 볼륨을 대상 데이터베이스 버전을 사용하는 새 볼륨으로 교체합니다.

**OS 전용**  
현재 DB 인스턴스에서 사용 중인 데이터베이스 바이너리를 재사용하되 AMI는 다르게 지정하세요. RDS Custom은 새 Amazon EC2 인스턴스를 할당한 다음 기존 바이너리 볼륨을 새 인스턴스에 연결합니다. 기존 데이터베이스 볼륨은 유지됩니다.

OS와 데이터베이스를 모두 업그레이드하려면 CEV를 두 번 업그레이드해야 합니다. OS를 업그레이드한 다음 데이터베이스를 업그레이드하거나 데이터베이스를 업그레이드한 후 OS를 업그레이드할 수 있습니다.

**주의**  
OS에 패치를 적용하면 루트 볼륨 데이터와 기존 OS 사용자 지정이 손실됩니다. 따라서 설치용 또는 영구 데이터나 파일 저장용 루트 볼륨은 사용하지 않는 것이 가장 바람직합니다. 또한 업그레이드 전에 데이터를 백업하는 것이 좋습니다.

### CEV 없이 패치 적용
<a name="custom-upgrading.overview.no-cevs"></a>

CEV를 사용하여 RDS Custom for Oracle DB 인스턴스를 업그레이드하는 것이 좋습니다. RDS Custom for Oracle 자동화는 패치 메타데이터를 DB 인스턴스의 데이터베이스 바이너리와 동기화합니다.

특수한 상황에서 RDS Custom은 OPatch 유틸리티를 사용하여 기본 Amazon EC2 인스턴스에 직접 '일회성' 데이터베이스 패치를 적용할 수 있도록 지원합니다. 유효한 사용 사례는 즉시 적용하려는 데이터베이스 패치일 수 있지만 RDS Custom 팀에서 CEV 기능을 업그레이드하고 있어 지연이 발생합니다. 수동으로 데이터베이스 패치를 적용하려면 다음 단계를 수행합니다.

1. RDS Custom 자동화를 일시 중지합니다.

1. Amazon EC2 인스턴스의 데이터베이스 바이너리에 패치를 적용합니다.

1. RDS Custom 자동화를 다시 시작합니다.

이전 기법의 단점은 업그레이드하려는 모든 인스턴스에 데이터베이스 패치를 수동으로 적용해야 한다는 것입니다. 반대로 새 CEV를 만들 때는 동일한 CEV를 사용하여 여러 DB 인스턴스를 만들거나 업그레이드할 수 있습니다.

### CEV로 DB 인스턴스에 패치를 적용하기 위한 일반적인 단계
<a name="custom-upgrading.overview.general-steps"></a>

OS 패치와 데이터베이스 패치 모두 다음 기본 단계를 수행합니다.

1. 패치 적용 대상이 데이터베이스인지 OS인지에 따라 다음 중 하나를 포함하는 CEV를 생성합니다.
   + DB 인스턴스에 적용할 Oracle 데이터베이스 RU
   + 다른 AMI(사용 가능한 최신 AMI 또는 사용자가 지정한 AMI) 및 소스로 사용할 기존 CEV

   [CEV 생성](custom-cev.create.md) 섹션의 단계를 따르세요.

1. (데이터베이스 패치 적용의 경우 선택 사항) `describe-db-engine-versions`를 실행하여 사용 가능한 엔진 버전 업그레이드를 확인합니다.

1. `modify-db-instance`를 실행하여 패치 프로세스를 시작합니다.

   패치 적용 중인 인스턴스의 상태는 다음과 같이 다릅니다.
   + RDS에서 데이터베이스에 패치를 적용 중인 경우 DB 인스턴스 상태가 **업그레이드 중**으로 바뀝니다.
   + RDS에서 OS에 패치를 적용 중인 경우 DB 인스턴스 상태가 **수정 중**으로 바뀝니다.

   DB 인스턴스의 상태가 **사용 가능**이면 패치 적용이 완료된 것입니다.

1. `describe-db-instances`를 실행하여 DB 인스턴스가 새 CEV를 사용하는지 확인합니다.

## RDS Custom for Oracle 업그레이드에 대한 요구 사항
<a name="custom-upgrading-reqs"></a>

RDS Custom for Oracle DB 인스턴스를 대상 CEV로 업그레이드할 때 다음 요구 사항을 충족하는지 확인해야 합니다.
+ 업그레이드하려는 대상 CEV가 존재해야 합니다.
+ 한 번의 작업으로 OS 또는 데이터베이스를 업그레이드해야 합니다. 하나의 API 호출로 OS와 데이터베이스를 모두 업그레이드하는 것은 지원되지 않습니다.
+ 대상 CEV는 현재 CEV의 매니페스트에 있는 설치 파라미터 설정을 사용해야 합니다. 예를 들어 기본 Oracle home을 사용하는 데이터베이스는 기본이 아닌 Oracle home을 사용하는 CEV로 업그레이드할 수 없습니다.
+ 데이터베이스 업그레이드의 경우 대상 CEV는 새 메이저 버전이 아닌 새 마이너 데이터베이스 버전을 사용해야 합니다. 예를 들어 Oracle Database 12c CEV에서 Oracle Database 19c CEV로 업그레이드할 수 없습니다. 하지만 버전 21.0.0.0.ru-2023-04.rur-2023-04.r1에서 버전 21.0.0.0.ru-2023-07.rur-2023-07.r1로 업그레이드할 수 있습니다.
+ OS 업그레이드의 경우 대상 CEV는 다른 AMI를 사용하지만 메이저 버전은 같아야 합니다.

# RDS Custom for Oracle 데이터베이스 업그레이드에 대한 고려 사항
<a name="custom-upgrading-considerations"></a>

데이터베이스를 업그레이드할 계획이라면 다음 사항을 고려해야 합니다.
+ 현재 지원되는 운영 체제(OS) 버전은 Oracle Linux 8입니다. RDS Custom for Oracle에서 최신 보안 업데이트 및 패치를 계속 받으려면 이 OS를 기반으로 CEV를 지정하여 DB 인스턴스를 Oracle Linux 8로 업그레이드하세요. Oracle Database 12c 릴리스 1(12.1), Oracle Database 릴리스 2(12.2) 및 Oracle Database 19c만 Oracle Linux 8을 지원합니다. 최신 Oracle Linux 8 AMI로 마이그레이션하려면 OS를 최신 AMI로 업그레이드하세요. 자세한 내용은 [RDS Custom for Oracle DB 인스턴스 업그레이드](custom-upgrading-modify.md) 섹션을 참조하세요.

  Oracle Linux 7.9는 2024년 12월 31일에 지원이 종료되었습니다. 지원 종료 후에도 Oracle Linux 7을 계속 실행하려면 Oracle Extended Support 라이선스를 구매합니다. 보안 업데이트에 대한 책임은 사용자에게 있으며, 사용자가 RDS Custom for Oracle 인스턴스를 수동으로 패치해야 합니다. 자세한 내용은 [Lifetime Support Policy: Coverage for Oracle Open Source Service Offerings](https://www.oracle.com/a/ocom/docs/elsp-lifetime-069338.pdf)을 참조하세요.
+ 기본 DB 인스턴스에서 데이터베이스 바이너리를 업그레이드할 때 RDS Custom for Oracle에서 읽기 전용 복제본을 자동으로 업그레이드합니다. 하지만 OS를 업그레이드할 때는 읽기 전용 복제본을 수동으로 업그레이드해야 합니다.
+ 컨테이너 데이터베이스(CDB)를 새 데이터베이스 버전으로 업그레이드할 때 RDS Custom for Oracle은 모든 PDB가 열려 있거나 열릴 수 있는지 검사합니다. 이러한 조건이 충족되지 않는 경우 RDS Custom은 검사를 중지하고 업그레이드 시도 없이 데이터베이스를 원래 상태로 되돌립니다. 조건이 충족되면 RDS Custom은 먼저 CDB 루트를 패치한 다음 다른 모든 PDB(`PDB$SEED` 포함)를 병렬로 패치합니다.

  패치 적용이 완료된 후 RDS Custom은 모든 PDB를 열려고 시도합니다. 열리지 않는 PDB가 있으면 `The following PDBs failed to open: list-of-PDBs` 이벤트가 발생합니다. RDS Custom이 CDB 루트 또는 PDB를 패치하지 못하면 인스턴스가 `PATCH_DB_FAILED` 상태로 전환됩니다.
+ 메이저 데이터베이스 버전 업그레이드와 비CDB를 CDB로 변환하는 작업을 동시에 수행하고 싶을 수도 있습니다. 이 경우 다음 작업을 수행하는 것이 좋습니다.

  1. Oracle 멀티테넌트 아키텍처를 사용하는 새 RDS Custom for Oracle DB 인스턴스를 생성합니다.

  1. 비 CDB를 CDB 루트에 연결하여 PDB로 생성합니다. 비 CDB가 CDB와 동일한 메이저 버전인지 확인합니다.

  1. `noncdb_to_pdb.sql` Oracle SQL 스크립트를 실행하여 PDB를 변환합니다.

  1. CDB 인스턴스를 검증합니다.

  1. CDB 인스턴스를 업그레이드합니다.

# RDS Custom for Oracle OS 업그레이드에 대한 고려 사항
<a name="custom-upgrading-considerations-os"></a>

OS를 업그레이드할 계획이라면 다음 사항을 고려해야 합니다.
+ RDS Custom for Oracle CEV에서 사용할 자체 AMI를 제공할 수 없습니다. Oracle Linux 8을 사용하는 기본 AMI 또는 이전에 RDS Custom for Oracle CEV에서 사용한 AMI를 지정할 수 있습니다.
**참고**  
RDS Custom for Oracle은 일반적인 취약성 및 노출이 발견되면 새로운 기본 AMI를 릴리스합니다. 일정이 정해져 있거나 보장되지 않습니다. RDS Custom for Oracle은 보통 30일마다 새로운 기본 AMI를 게시합니다.
+ 기본 DB 인스턴스에서 OS를 업그레이드할 때 연결된 읽기 전용 복제본을 수동으로 업그레이드해야 합니다.
+ OS 패치를 시작하기 전에 AZ의 인스턴스 유형에 충분한 Amazon EC2 컴퓨팅 용량을 예약하세요.

  용량 예약을 생성할 때 AZ, 인스턴스 수, 인스턴스 속성(인스턴스 유형 포함)을 지정합니다. 예를 들어 DB 인스턴스에서 기본 EC2 인스턴스 유형 r5.large를 사용하는 경우 AZ에서 r5.large용으로 EC2 용량을 예약하는 것이 좋습니다. OS 패치를 적용하는 동안 RDS Custom은 db.r5.large 유형의 새 호스트 하나를 생성하는데, AZ에 이 인스턴스 유형을 위한 EC2 용량이 부족하면 이 호스트가 중단될 수 있습니다. EC2 용량을 예약하면 용량 제약으로 인한 패치 적용 차단의 위험을 줄일 수 있습니다. 자세한 내용을 알아보려면 **Amazon EC2 사용 설명서의 [온디맨드 용량 예약](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html)을 참조하세요.
+ OS를 업그레이드하기 전에 DB 인스턴스를 백업합니다. 업그레이드 시 루트 볼륨 데이터와 기존 OS 사용자 지정이 모두 제거됩니다.
+ 공동 책임 모델에서는 OS를 최신 상태로 유지할 책임이 있습니다. RDS Custom for Oracle은 OS에 적용할 패치를 요구하지 않습니다. RDS Custom for Oracle이 작동하는 경우 이 CEV와 연결된 AMI를 무기한으로 사용할 수 있습니다.

# RDS Custom for Oracle DB 인스턴스의 유효한 CEV 업그레이드 대상 보기
<a name="custom-upgrading-target"></a>

AWS Management Console의 **사용자 지정 엔진 버전** 페이지에서 기존 CEV를 볼 수 있습니다.

[describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI 명령을 사용하여 다음 예시와 같이 DB 인스턴스를 업그레이드할 때 사용할 유효한 CEV를 찾을 수도 있습니다. 이 예시에서는 엔진 버전 `19.my_cev1`을 사용하여 DB 인스턴스를 만들었고 업그레이드 버전 `19.my_cev2`와 `19.my_cev`가 존재한다고 가정합니다.

```
aws rds describe-db-engine-versions --engine custom-oracle-ee --engine-version 19.my_cev1
```

다음과 유사하게 출력됩니다. `ImageId` 필드에는 AMI ID가 표시됩니다.

```
{
    "DBEngineVersions": [
        {
            "Engine": "custom-oracle-ee",
            "EngineVersion": "19.my_cev1",
            ...
            "Image": {
                "ImageId": "ami-2345",
                "Status": "active"
            },
            "DBEngineVersionArn": "arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12a34b5c-67d8-90e1-2f34-gh56ijk78lm9"
            "ValidUpgradeTarget": [
                {
                    "Engine": "custom-oracle-ee",
                    "EngineVersion": "19.my_cev2",
                    "Description": "19.my_cev2 description",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": false
                },
                {
                    "Engine": "custom-oracle-ee",
                    "EngineVersion": "19.my_cev3",
                    "Description": "19.my_cev3 description",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": false
                }
            ]
            ...
```

# RDS Custom for Oracle DB 인스턴스 업그레이드
<a name="custom-upgrading-modify"></a>

RDS Custom for Oracle DB 인스턴스를 업그레이드하려면 새로운 CEV를 사용하도록 수정하면 됩니다. 이 CEV에는 새 데이터베이스 바이너리나 새 AMI가 포함될 수 있습니다. 예를 들어 Oracle Linux 7.9 DB 인스턴스를 Oracle Linux 8로 업그레이드하려면 Oracle Linux 8을 사용하는 최신 AMI를 지정합니다. 데이터베이스와 OS를 업그레이드하려면 별도의 업그레이드를 두 번 수행해야 합니다.

**참고**  
데이터베이스를 업그레이드하는 경우 RDS Custom은 기본 DB 인스턴스를 업그레이드한 후 읽기 전용 복제본을 자동으로 업그레이드합니다. OS를 업그레이드하면 읽기 전용 복제본을 수동으로 업그레이드해야 합니다.

시작하기 전에 [RDS Custom for Oracle 업그레이드에 대한 요구 사항](custom-upgrading.md#custom-upgrading-reqs) 및 [RDS Custom for Oracle 데이터베이스 업그레이드에 대한 고려 사항](custom-upgrading-considerations.md) 섹션을 검토하세요.

## 콘솔
<a name="custom-upgrading-modify.CON"></a>

**RDS Custom for Oracle DB 인스턴스를 업그레이드하는 방법**

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

1. 탐색 창에서 **데이터베이스**를 선택한 후 업그레이드하려는 RDS Custom for Oracle DB 인스턴스를 선택합니다.

1. **Modify**(수정)를 선택합니다. **Modify DB instance**(DB 인스턴스 수정) 페이지가 나타납니다.

1. **DB 엔진 버전**에서 새로운 CEV를 선택합니다. 다음을 수행합니다.
   + 데이터베이스에 패치를 적용하는 경우 CEV가 DB 인스턴스에서 사용하는 것과 다른 데이터베이스 바이너리를 지정하고 DB 인스턴스에서 현재 사용하는 AMI와 다른 AMI를 지정하지 않도록 해야 합니다.
   + OS에 패치를 적용하는 경우 CEV가 DB 인스턴스에서 사용하는 것과 다른 AMI를 지정하고 다른 데이터베이스 바이너리를 지정하지 않도록 해야 합니다.
**주의**  
OS에 패치를 적용하면 루트 볼륨 데이터와 기존 OS 사용자 지정이 손실됩니다.

1. **계속(Continue)**을 선택하여 수정 사항을 요약한 내용을 확인합니다.

   변경 사항을 즉시 적용하려면 **즉시 적용**을 선택합니다.

1. 변경 내용이 정확할 경우 **DB 인스턴스 수정(Modify DB instance)**을 선택합니다. 또는 **뒤로**를 선택하여 변경 내용을 편집하거나 **취소**를 선택하여 변경 내용을 취소합니다.

## AWS CLI
<a name="custom-upgrading-modify.CLI"></a>

다음 예시는 가능한 업그레이드 시나리오를 보여줍니다. 이 예시에서는 다음 특징을 가진 RDS Custom for Oracle DB 인스턴스를 생성했다고 가정합니다.
+ 이름이 `my-custom-instance`인 DB 인스턴스
+ 이름이 `19.my_cev1`인 CEV
+ 비 CDB 아키텍처를 사용하는 Oracle Database 19c
+ AMI `ami-1234`를 사용하는 Oracle Linux 8

최신 서비스 제공 AMI는 `ami-2345` `describe-db-engine-versions` CLI 명령을 실행하여 AMI를 찾을 수 있습니다.

**Topics**
+ [OS 업그레이드](#custom-upgrading-modify.CLI.os)
+ [데이터베이스 업그레이드](#custom-upgrading-modify.CLI.db)

### OS 업그레이드
<a name="custom-upgrading-modify.CLI.os"></a>

이 예시에서는 `ami-1234`를 서비스가 제공하는 최신 AMI인 `ami-2345`로 업그레이드하려고 합니다. OS를 업그레이드하고 있으므로 `ami-1234` 및 `ami-2345`의 데이터베이스 바이너리는 동일해야 합니다. `19.my_cev1`을 기반으로 이름이 `19.my_cev2`인 새 CEV를 생성합니다.

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

```
aws rds create-custom-db-engine-version \
    --engine custom-oracle-ee \
    --engine-version 19.my_cev2 \
    --description "Non-CDB CEV based on ami-2345" \
    --kms-key-id key-name \
    --source-custom-db-engine-version-identifer arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12345678-ab12-1234-cde1-abcde123456789 \
    --image-id ami-2345
```
Windows의 경우:  

```
aws rds create-custom-db-engine-version ^
    --engine custom-oracle-ee ^
    --engine-version 19.my_cev2 ^
    --description "Non-CDB CEV based on ami-2345" ^
    --kms-key-id key-name ^
    --source-custom-db-engine-version-identifer arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12345678-ab12-1234-cde1-abcde123456789 ^
    --image-id ami-2345
```

RDS Custom DB 인스턴스를 업그레이드하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 명령을 다음 파라미터와 함께 사용합니다.
+ `--db-instance-identifier` - 업그레이드할 RDS Custom for Oracle DB 인스턴스를 지정합니다.
+ `--engine-version` - 새 AMI가 있는 CEV를 지정합니다.
+ `--no-apply-immediately` \$1 `--apply-immediately` - 업그레이드를 즉시 수행할지 아니면 예약된 유지 관리 기간까지 기다릴지를 지정합니다.

다음 예제에서는 `my-custom-instance`를 버전 `19.my_cev2`으로 업그레이드합니다. OS만 업그레이드됩니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --engine-version 19.my_cev2 \
    --apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --engine-version 19.my_cev2 ^
    --apply-immediately
```

### 데이터베이스 업그레이드
<a name="custom-upgrading-modify.CLI.db"></a>

이 예시에서는 RDS for Oracle DB 인스턴스에 Oracle 패치 p35042068을 적용하려고 합니다. [OS 업그레이드](#custom-upgrading-modify.CLI.os)에서 OS를 업그레이드했으므로 DB 인스턴스는 현재 `ami-2345`를 기반으로 `19.my_cev2`를 사용하고 있습니다. 동일하게 `ami-2345`를 사용하는 이름이 `19.my_cev3`인 새 CEV를 만들되 `$MANIFEST` 환경 변수에 새 JSON 매니페스트를 지정합니다. 따라서 새 CEV와 인스턴스가 현재 사용 중인 CEV에서 데이터베이스 바이너리만 다르게 설정됩니다.

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

```
aws rds create-custom-db-engine-version \
    --engine custom-oracle-ee \
    --engine-version 19.my_cev3 \
    --description "Non-CDB CEV with p35042068 based on ami-2345" \
    --kms-key-id key-name \
    --image-id ami-2345 \
    --manifest $MANIFEST
```
Windows의 경우:  

```
aws rds create-custom-db-engine-version ^
    --engine custom-oracle-ee ^
    --engine-version 19.my_cev3 ^
    --description "Non-CDB CEV with p35042068 based on ami-2345" ^
    --kms-key-id key-name ^
    --image-id ami-2345 ^
    --manifest $MANIFEST
```

다음 예시에서는 `my-custom-instance`를 엔진 버전 `19.my_cev3`으로 업그레이드합니다. 데이터베이스만 업그레이드됩니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --engine-version 19.my_cev3 \
    --apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --engine-version 19.my_cev3 ^
    --apply-immediately
```

# RDS Custom DB 인스턴스의 보류 중인 데이터베이스 업그레이드 보기
<a name="custom-upgrading-pending"></a>

[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 또는 [describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html) AWS CLI 명령을 사용하여 Amazon RDS Custom DB 인스턴스의 보류 중인 데이터베이스 업그레이드를 확인할 수 있습니다.

그러나 `--apply-immediately` 옵션을 사용했거나 업그레이드가 진행 중인 경우에는 이 방법을 사용할 수 없습니다.

다음 `describe-db-instances` 명령은 `my-custom-instance`에 대한 보류 중인 데이터베이스 업그레이드를 보여줍니다.

```
aws rds describe-db-instances --db-instance-identifier my-custom-instance
```

다음과 유사하게 출력됩니다.

```
{
    "DBInstances": [
        {
           "DBInstanceIdentifier": "my-custom-instance",
            "EngineVersion": "19.my_cev1",
            ...
            "PendingModifiedValues": {
                "EngineVersion": "19.my_cev3"
            ...
            }
        }
    ]
}
```

# RDS Custom for Oracle DB 인스턴스의 업그레이드 실패 문제 해결
<a name="custom-upgrading-failure"></a>

RDS Custom DB 인스턴스 업그레이드가 실패하면 RDS 이벤트가 생성되고 DB 인스턴스 상태가 `upgrade-failed`로 변경됩니다.

다음 예제와 같이 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 명령을 사용하여 이 상태를 확인할 수 있습니다.

```
aws rds describe-db-instances --db-instance-identifier my-custom-instance
```

다음과 유사하게 출력됩니다.

```
{
    "DBInstances": [
        {
           "DBInstanceIdentifier": "my-custom-instance",
            "EngineVersion": "19.my_cev1",
            ...
            "PendingModifiedValues": {
                "EngineVersion": "19.my_cev3"
            ...
            }
            "DBInstanceStatus": "upgrade-failed"
        }
    ]
}
```

업그레이드 실패 후 다음 작업을 수행할 수 있도록 DB 인스턴스를 수정하는 작업을 제외한 모든 데이터베이스 작업이 차단됩니다.
+ 동일한 업그레이드 재시도
+ RDS Custom 자동화 일시 중지 및 다시 시작
+ 특정 시점으로 복구(PITR)
+ DB 인스턴스 삭제

**참고**  
RDS Custom DB 인스턴스에 대해 자동화가 일시 중지된 경우 자동화를 재개할 때까지 업그레이드를 다시 시도할 수 없습니다.  
프라이머리에 대해서 RDS 관리형 읽기 전용 복제본의 업그레이드 실패에도 이와 동일한 작업이 적용됩니다.

자세한 내용은 [RDS Custom for Oracle 업그레이드 문제 해결](custom-troubleshooting.md#custom-troubleshooting-upgrade)을 참조하세요.

# Amazon RDS Custom for Oracle의 DB 문제 해결
<a name="custom-troubleshooting"></a>

RDS Custom의 공동 책임 모델은 OS 셸 수준 액세스 권한과 데이터베이스 관리자 액세스 권한을 제공합니다. RDS Custom은 시스템 계정에서 리소스를 실행하는 Amazon RDS와 달리 계정에서 리소스를 실행합니다. 접근 권한이 높을수록 책임도 커집니다. Amazon RDS Custom DB 인스턴스의 문제를 해결하는 방법을 알아볼 수 있습니다.

**참고**  
이 섹션에서는 RDS Custom for Oracle 관련 문제를 해결하는 방법을 설명합니다. RDS Custom for SQL Server의 문제 해결 방법을 알아보려면 [Amazon RDS Custom for SQL Server의 DB 문제 해결](custom-troubleshooting-sqlserver.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom 이벤트 보기](#custom-troubleshooting.support-perimeter.viewing-events)
+ [RDS Custom 이벤트 구독](#custom-troubleshooting.support-perimeter.subscribing)
+ [DB 인스턴스 생성 문제 해결](#custom-troubleshooting.creation-issues)
+ [Oracle용 RDS Custom에 대한 사용자 지정 엔진 버전 생성 문제 해결](#custom-troubleshooting.cev)
+ [RDS Custom for Oracle에서 지원되지 않는 구성 문제 해결](#custom-troubleshooting.fix-unsupported)
+ [RDS Custom for Oracle 업그레이드 문제 해결](#custom-troubleshooting-upgrade)
+ [RDS Custom for Oracle 복제본 승격 문제 해결](#custom-troubleshooting-promote)

## RDS Custom 이벤트 보기
<a name="custom-troubleshooting.support-perimeter.viewing-events"></a>

RDS Custom 및 Amazon RDS DB 인스턴스의 이벤트 보기 절차는 동일합니다. 자세한 내용은 [Amazon RDS 이벤트 보기](USER_ListEvents.md) 섹션을 참조하세요.

`describe-events` 명령을 사용하여 AWS CLI를 통해 RDS Custom 이벤트 알림을 볼 수 있습니다. RDS Custom에서는 몇 가지 새로운 이벤트가 도입되었습니다. 이벤트 카테고리는 Amazon RDS와 동일합니다. 이벤트 목록은 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 섹션을 참조하세요.

다음 예제에서는 지정된 RDS Custom DB 인스턴스에 대해 발생한 이벤트의 세부 정보를 검색합니다.

```
1. aws rds describe-events \
2.     --source-identifier my-custom-instance \
3.     --source-type db-instance
```

## RDS Custom 이벤트 구독
<a name="custom-troubleshooting.support-perimeter.subscribing"></a>

RDS Custom 및 Amazon RDS DB 인스턴스의 이벤트 구독 절차는 동일합니다. 자세한 내용은 [Amazon RDS 이벤트 알림 구독](USER_Events.Subscribing.md) 섹션을 참조하세요.

CLI를 사용하여 RDS Custom 이벤트 알림을 구독하려면 `create-event-subscription` 명령을 사용하면 되며, 다음 필수 파라미터를 포함합니다.
+ `--subscription-name`
+ `--sns-topic-arn`

다음 예제에서는 현재 AWS 계정에서 RDS Custom DB 인스턴스의 백업 및 복구 이벤트에 대한 구독을 생성합니다. 알림은 `--sns-topic-arn`에서 지정한 Amazon Simple Notification Service(Amazon SNS) 주제로 전송됩니다.

```
1. aws rds create-event-subscription \
2.     --subscription-name my-instance-events \
3.     --source-type db-instance \
4.     --event-categories '["backup","recovery"]' \
5.     --sns-topic-arn arn:aws:sns:us-east-1:123456789012:interesting-events
```

## DB 인스턴스 생성 문제 해결
<a name="custom-troubleshooting.creation-issues"></a>

환경이 제대로 구성되지 않았거나 필요한 권한이 누락된 경우 RDS Custom for Oracle DB 인스턴스를 생성하거나 복원할 수 없습니다. DB 인스턴스를 생성하거나 복원하려고 하면 Amazon RDS는 환경을 검증하고 문제가 감지되면 특정 오류 메시지를 반환합니다.

모든 문제를 해결한 후 RDS Custom for Oracle DB 인스턴스를 다시 생성하거나 복원해 보세요.

### 일반적인 권한 문제
<a name="custom-troubleshooting.creation-issues.permissions"></a>

RDS Custom for Oracle 인스턴스를 생성하거나 복원하면 Amazon RDS는 환경에 필요한 권한이 있는지 확인합니다. 권한이 누락되거나 거부되면 특정 오류 메시지와 함께 작업이 실패합니다.


| 문제 유형 | 오류 메시지 | 작업 | 
| --- | --- | --- | 
|  IAM 역할 액세스 정책  |  호환되지 않는 리소스 때문에 DB 인스턴스를 생성할 수 없습니다. <리소스> 리소스에서 권한 문제로 인해 다음 메시지와 함께 <권한> 권한에 대한 호스트 환경 검증에 실패했습니다. 사용자: <사용자>은(는) 리소스: <리소스>에서 <권한>을(를) 수행하도록 권한이 부여되지 않았습니다. 이는 <권한> 작업을 허용하는 ID 기반 정책이 없기 때문입니다.  |  나열된 필수 권한이 있고 적절한 리소스가 포함된 액세스 정책에서 `Allow`로 설정되어 있는지 확인합니다.  | 
|  권한 경계  |  호환되지 않는 리소스 때문에 DB 인스턴스를 생성할 수 없습니다. <리소스> 리소스에서 권한 문제로 인해 다음 메시지와 함께 <권한> 권한에 대한 호스트 환경 검증에 실패했습니다. 사용자: <사용자>은(는) 권한 경계 내 명시적인 거부와 함께 리소스: <리소스>에서 <권한>을(를) 수행하도록 권한이 부여되지 않았습니다.  |  인스턴스 역할에 연결된 권한 경계가 나열된 필수 권한 및 리소스를 제한하지 않는지 확인합니다.  | 
|  서비스 제어 정책  |  호환되지 않는 리소스 때문에 DB 인스턴스를 생성할 수 없습니다. <리소스> 리소스에서 권한 문제로 인해 다음 메시지와 함께 <권한> 권한에 대한 호스트 환경 검증에 실패했습니다. 사용자: <사용자>은(는) 서비스 제어 정책 내 명시적인 거부와 함께 리소스: <리소스>에서 <권한>을(를) 수행하도록 권한이 부여되지 않았습니다.  |  AWS Organizations 관리자에게 문의하여 계정에 연결된 서비스 제어 정책이 나열된 필수 권한 및 리소스를 제한하지 않는지 확인합니다.  | 
|  리소스 제어 정책  |  호환되지 않는 리소스 때문에 DB 인스턴스를 생성할 수 없습니다. <리소스> 리소스에서 권한 문제로 인해 다음 메시지와 함께 <권한> 권한에 대한 호스트 환경 검증에 실패했습니다. 사용자: <사용자>은(는) 리소스 제어 정책 내 명시적인 거부와 함께 리소스: <리소스>에서 <권한>을(를) 수행하도록 권한이 부여되지 않았습니다.  |  AWS Organizations 관리자에게 문의하여 계정에 연결된 리소스 제어 정책이 나열된 필수 권한 및 리소스를 제한하지 않는지 확인합니다.  | 
|  VPC 엔드포인트 정책  |  호환되지 않는 리소스 때문에 DB 인스턴스를 생성할 수 없습니다. <리소스> 리소스에서 권한 문제로 인해 다음 메시지와 함께 <권한> 권한에 대한 호스트 환경 검증에 실패했습니다. 사용자: <사용자>은(는) VPC 엔드포인트 정책 내 명시적인 거부와 함께 리소스: <리소스>에서 <권한>을(를) 수행하도록 권한이 부여되지 않았습니다.  |  필수 VPC 엔드포인트가 존재하고 여기에 연결된 정책이 나열된 필수 권한 및 리소스를 제한하지 않는지 확인합니다.  | 

### 네트워킹 문제
<a name="custom-troubleshooting.creation-issues.networking"></a>

[6단계: RDS Custom for Oracle용 VPC 구성](custom-setup-orcl.md#custom-setup-orc.vpc-config)를 검토하는 것 외에도 다음이 올바르게 구성되고 필요한 AWS 서비스에 대한 액세스를 제한하지 않는지 확인합니다.

**Amazon EC2 인스턴스에 연결된 보안 그룹**  
보안 그룹이 RDS Custom 작업에 필요한 모든 인바운드 및 아웃바운드 트래픽을 허용하는지 확인합니다.

**VPC에 연결된 보안 그룹**  
VPC 보안 그룹이 필요한 AWS 서비스와의 트래픽을 허용하는지 확인합니다.

**VPC 엔드포인트**  
필요한 모든 VPC 엔드포인트가 올바르게 구성되고 액세스 가능한지 확인합니다.

**네트워킹 액세스 제어 목록**  
네트워크 ACLs RDS Custom 기능에 필요한 트래픽을 차단하지 않는지 확인합니다.

## Oracle용 RDS Custom에 대한 사용자 지정 엔진 버전 생성 문제 해결
<a name="custom-troubleshooting.cev"></a>

CEV 생성이 실패하면 RDS Custom에서 `Creation failed for custom engine version major-engine-version.cev_name` 메시지와 함께 `RDS-EVENT-0198` 오류가 발생하며, 실패 관련 세부 정보가 표시됩니다. 예를 들어, 이벤트는 누락된 파일을 인쇄합니다.

다음 문제로 인해 CEV 생성에 실패할 수 있습니다.
+ 설치 파일이 포함된 Amazon S3 버킷이 CEV와 동일한 AWS 리전에 있지 않습니다.
+ AWS 리전에서 CEV 생성을 처음으로 요청하면 RDS Custom이 CEV 아티팩트, AWS CloudTrail 로그 및 트랜잭션 로그와 같은 RDS Custom 리소스를 저장하기 위한 S3 버킷을 생성합니다.

  RDS Custom에서 S3 버킷을 생성할 수 없는 경우 CEV 생성에 실패합니다. 발신자에게 [5단계: IAM 사용자 또는 역할에 필요한 권한 부여](custom-setup-orcl.md#custom-setup-orcl.iam-user)에 설명된 대로 S3 사용 권한이 없거나 S3 버킷 수가 한도에 도달한 것일 수 있습니다.
+ 발신자에게 설치 미디어 파일이 포함된 S3 버킷에서 파일을 가져올 수 있는 권한이 없습니다. 이러한 권한은 [7단계: 필요한 IAM 권한 추가](custom-cev.preparing.md#custom-cev.preparing.iam)에 설명되어 있습니다.
+ IAM 정책에 `aws:SourceIp` 조건이 있습니다. *AWS Identity and Access Management 사용 설명서*의 [소스 IP를 바탕으로 AWS에 대한 AWS 액세스 거부](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html)의 권장 사항을 따라야 합니다. 또한 [5단계: IAM 사용자 또는 역할에 필요한 권한 부여](custom-setup-orcl.md#custom-setup-orcl.iam-user)에 설명된 S3 권한이 호출자에게 있는지 확인합니다.
+ CEV 매니페스트에 나열된 설치 미디어 파일이 S3 버킷에 없습니다.
+ RDS Custom에서 설치 파일의 SHA-256 체크섬을 알 수 없습니다.

  제공된 파일의 SHA-256 체크섬이 Oracle 웹 사이트의 SHA-256 체크섬과 일치하는지 확인해야 합니다. 체크섬이 일치하는 경우 [AWS 지원팀](https://aws.amazon.com/premiumsupport)에 문의하여 실패한 CEV 이름, 파일 이름 및 체크섬을 제공합니다.
+ OPatch 버전이 패치 파일과 호환되지 않습니다. 다음과 같은 메시지가 표시될 수 있습니다. `OPatch is lower than minimum required version. Check that the version meets the requirements for all patches, and try again`. Oracle 패치를 적용하려면 호환되는 버전의 OPatch 유틸리티를 사용해야 합니다. 패치의 추가 정보 파일에서 필요한 Opatch 유틸리티의 버전을 찾을 수 있습니다. My Oracle 지원에서 최신 OPatch 유틸리티를 다운로드하고 CEV를 다시 생성해 보세요.
+ CEV 매니페스트에 지정된 패치의 순서가 잘못되었습니다.

RDS 이벤트는 RDS 콘솔(탐색 창에서 **이벤트(Events)** 선택)에서 보거나 `describe-events` AWS CLI 명령을 사용하여 볼 수 있습니다. 기본 지속 시간은 60분입니다. 이벤트가 반환되지 않으면 다음 예제와 같이 기간이 더 길게 지정됩니다.

```
aws rds describe-events --duration 360
```

현재 Amazon S3에서 파일을 가져와 CEV를 생성하는 MediaImport 서비스가 AWS CloudTrail에 통합되어 있지 않습니다. 이로 인해 CloudTrail에서 Amazon RDS에 대한 데이터 로깅을 설정하면 `CreateCustomDbEngineVersion` 이벤트와 같이 MediaImport 서비스에 대한 호출이 로깅되지 않습니다.

단, Amazon S3 버킷에 액세스하는 API 게이트웨이에서의 호출은 확인할 수 있습니다. 이러한 호출은 `CreateCustomDbEngineVersion` 이벤트의 MediaImport 서비스에서 전송됩니다.

## RDS Custom for Oracle에서 지원되지 않는 구성 문제 해결
<a name="custom-troubleshooting.fix-unsupported"></a>

공유 책임 모델에서는 RDS Custom for Oracle DB 인스턴스를 `unsupported-configuration` 상태로 전환시키는 구성 문제는 사용자가 해결해야 합니다. AWS 인프라와 관련된 문제인 경우 콘솔 또는 AWS CLI를 사용하여 해결합니다. 운영 체제 또는 데이터베이스 구성에 문제가 있는 경우 호스트에 로그인하여 해결합니다.

**참고**  
이 섹션에서는 RDS Custom for Oracle에서 지원되지 않는 구성 문제를 해결하는 방법을 알아봅니다. RDS Custom for SQL Server에 관한 자세한 내용은 [RDS Custom for SQL Server에서 지원되지 않는 구성 문제 해결](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.fix-unsupported) 섹션을 참조하세요.

다음 테이블에는 지원 경계에서 보내는 알림 이벤트와 이를 해결하는 방법에 대한 설명이 나와 있습니다. 이러한 알림과 지원 경계는 변경될 수 있습니다. 지원 경계의 배경은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 섹션을 참조하세요. 이벤트 설명은 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 섹션을 참조하세요.


| 이벤트 ID | 구성 | RDS 이벤트 메시지 | 작업 | 
| --- | --- | --- | --- | 
|  `SP-O0000`  |  지원되지 않는 수동 구성  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성]으로 설정된 이유는 다음과 같습니다. *이유*.  |  이 문제를 해결하려면 지원 사례를 생성하세요.  | 

**AWS 리소스(인프라)**


| 이벤트 ID | 구성 | RDS 이벤트 메시지 | 작업 | 
| --- | --- | --- | --- | 
|  SP-O1001  |  Amazon Elastic Block Store(Amazon EBS) 볼륨  |  *volume\$1id* EBS 볼륨이 EC2 인스턴스 *ec2\$1id*에 추가되었습니다. 이 문제를 해결하려면 인스턴스에서 지정된 볼륨을 분리하세요.  |  RDS Custom은 Amazon Machine Image(AMI)에서 생성된 루트 볼륨 외에 2가지 유형의 EBS 볼륨을 생성하여 EC2 인스턴스에 연결합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) DB 인스턴스를 생성할 때 지정한 스토리지 구성이 데이터 볼륨을 구성합니다. 지원 경계는 다음을 모니터링합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) EBS 볼륨 세부 정보와 RDS Custom for Oracle DB 인스턴스 세부 정보의 볼륨 유형을 비교하려면 다음 CLI 명령을 사용합니다. <pre>aws rds describe-db-instances \ <br />    --db-instance-identifier db-instance-name | grep StorageType</pre>  | 
|  SP-O1002  |  Amazon Elastic Block Store(Amazon EBS) 볼륨  |  EBS 볼륨 *volume\$1id*가 EC2 인스턴스 [*ec2\$1id*]에서 분리되었습니다. 이 인스턴스에서 원본 볼륨을 분리할 수 없습니다. 이 문제를 해결하려면 *volume\$1id*를 *ec2\$1id*에 다시 연결하세요.  |  RDS Custom은 Amazon Machine Image(AMI)에서 생성된 루트 볼륨 외에 2가지 유형의 EBS 볼륨을 생성하여 EC2 인스턴스에 연결합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) DB 인스턴스를 생성할 때 지정한 스토리지 구성이 데이터 볼륨을 구성합니다. 지원 경계는 다음을 모니터링합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) EBS 볼륨 세부 정보와 RDS Custom for Oracle DB 인스턴스 세부 정보의 볼륨 유형을 비교하려면 다음 CLI 명령을 사용합니다. <pre>aws rds describe-db-instances \ <br />    --db-instance-identifier db-instance-name | grep StorageType</pre>  | 
|  SP-O1003  |  Amazon Elastic Block Store(Amazon EBS) 볼륨  |  EC2 인스턴스 *ec2\$1id*에 연결된 원래 EBS *volume\$1id*가 크기는 [*X*]에서 [*Y*]로, 유형은 [*N*]에서 [*M*]으로, 혹은 IOPS는 [*J*]에서 [*K*]로 수정되었습니다. 이 문제를 해결하려면 수정 내용을 되돌리세요.  |  RDS Custom은 Amazon Machine Image(AMI)에서 생성된 루트 볼륨 외에 2가지 유형의 EBS 볼륨을 생성하여 EC2 인스턴스에 연결합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) DB 인스턴스를 생성할 때 지정한 스토리지 구성이 데이터 볼륨을 구성합니다. 지원 경계는 다음을 모니터링합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) EBS 볼륨 세부 정보와 RDS Custom for Oracle DB 인스턴스 세부 정보의 볼륨 유형을 비교하려면 다음 CLI 명령을 사용합니다. <pre>aws rds describe-db-instances \ <br />    --db-instance-identifier db-instance-name | grep StorageType</pre>  | 
|  SP-O1004  |  Amazon EC2 인스턴스 상태  |  자동 복구로 인해 EC2 인스턴스 [*ec2\$1id*]가 손상된 상태가 되었습니다. 이 문제를 해결하려면 [인스턴스 복구 실패 문제 해결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-recover.html#TroubleshootingInstanceRecovery)을 참조하세요.  |  DB 인스턴스의 상태를 확인하려면 콘솔을 사용하거나 다음 AWS CLI 명령을 실행합니다. <pre>aws rds describe-db-instances \ <br />    --db-instance-identifier db-instance-name |grep DBInstanceStatus </pre>  | 
|  SP-O1005  |  Amazon EC2 인스턴스 속성  |  EC2 인스턴스 [*ec2\$1id*]가 [*att1*] 속성이 [*val-old*]에서 [*val-new*]로, [*att2*] 속성이 [*val-old*]에서 [*val-new*]로 수정되었습니다. 이 문제를 해결하려면 원래 값으로 되돌리세요.  |  | 
|  SP-O1006  |  Amazon EC2 인스턴스 상태  |  EC2 인스턴스 [*ec2\$1id*]가 종료되었거나 찾을 수 없습니다. 이 문제를 해결하려면 RDS Custom DB 인스턴스를 삭제하세요.  |  지원 경계는 EC2 인스턴스 상태 변경 알림을 모니터링합니다. EC2 인스턴스는 항상 실행 중이어야 합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html)  | 
|  SP-O1007  |  Amazon EC2 인스턴스 상태  |  EC2 인스턴스 [*ec2\$1id*]가 중지되었습니다. 이 문제를 해결하려면 인스턴스를 시작하세요.  |  지원 경계는 EC2 인스턴스 상태 변경 알림을 모니터링합니다. EC2 인스턴스는 항상 실행 중이어야 합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html)  | 
|  SP-1008  |  Amazon SQS 권한  |  Amazon SQS에 대한 권한이 누락되었습니다. IAM 인스턴스 프로파일, VPC 엔드포인트 정책 및 종속 서비스 연결에 대한 권한을 확인한 다음 다시 시도하세요.  |   호스트와 연결된 IAM 프로파일에 다음 권한이 있는지 확인하여 이 문제를 해결할 수 있습니다. <pre>"SQS:SendMessage"<br />"SQS:ReceiveMessage"<br />"SQS:DeleteMessage"<br />"SQS:GetQueueUrl"</pre>  | 
|  SP-1009  |  Amazon Simple Queue Service(Amazon SQS)  |  [%s] SQS 대기열이 삭제되어 복구할 수 없습니다. 이 문제를 해결하려면 대기열을 다시 생성하세요.  |  Amazon SQS 대기열을 다시 생성합니다.  | 

**운영 체제**


| 이벤트 ID | 구성 | RDS 이벤트 메시지 | 작업 | 
| --- | --- | --- | --- | 
|  SP-O2001  |  RDS Custom 에이전트 상태  |  RDS Custom 에이전트가 EC2 인스턴스 [*ec2\$1id*]에서 실행되지 않습니다. 에이전트가 [*ec2\$1id*]에서 실행되고 있는지 확인하세요.  |  RDS Custom for Oracle에서 DB 인스턴스는 RDS Custom 에이전트가 중지되면 지원 경계를 벗어나게 됩니다. 에이전트는 30초마다 `IamAlive` 지표를 Amazon CloudWatch에 게시합니다. 지표가 30초 동안 게시되지 않은 경우 경보가 트리거됩니다. 또한, 지원 경계는 호스트의 RDS Custom 에이전트 프로세스 상태를 30분마다 모니터링합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) RDS Custom 에이전트가 다시 실행되면 `IamAlive` 지표가 Amazon CloudWatch에 게시되고 경보가 `OK` 상태로 전환됩니다. 이 스위치는 지원 경계에 에이전트가 실행 중임을 알립니다.  | 
|  `SP-O2002`  |  AWS Systems Manager 에이전트(SSM 에이전트) 상태  |  EC2 인스턴스 [*ec2\$1id*]의 Systems Manager 에이전트에 연결할 수 없습니다. 네트워크, 에이전트 및 IAM 권한을 올바르게 구성했는지 확인하세요.    |  SSM 에이전트는 항상 실행 중이어야 합니다. RDS Custom 에이전트는 Systems Manager 에이전트가 실행 중인지 확인하는 역할을 합니다. SSM 에이전트가 종료되었다가 다시 시작된 경우 RDS Custom 에이전트는 CloudWatch에 지표 `SSM_Agent_Restarted_Or_NotFound`를 게시합니다. RDS Custom 에이전트에는 이전 3분 동안 재시작된 경우 경보가 트리거되도록 구성된 지표 `do-not-delete-rds-custom-ssm-agent-restarted-or-notfound-ec2-id`에 대한 경보가 지정되어 있습니다. 또한 지원 경계는 호스트의 SSM 에이전트 프로세스 상태를 30분마다 모니터링합니다. 자세한 내용은 [SSM Agent 문제 해결](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html)을 참조하세요.  | 
|  `SP-O2003`  |  AWS Systems Manager 에이전트(SSM 에이전트) 상태  |  EC2 인스턴스 [*ec2\$1id*]의 Systems Manager 에이전트가 여러 번 충돌했습니다. 자세한 내용은 SSM 에이전트 문제 해결 문서를 참조하세요.  |  자세한 내용은 [SSM Agent 문제 해결](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html)을 참조하세요.  | 
|  SP-O2004  |  OS 시간대  |  EC2 인스턴스 [*ec2\$1id*]의 시간대가 변경되었습니다. 이 문제를 해결하려면 시간대를 이전 설정인 [*previous-time-zone*]으로 되돌리세요. 그런 다음 RDS 옵션 그룹을 사용하여 시간대를 변경합니다.  |  RDS 자동화가 옵션 그룹을 사용하지 않고 호스트의 시간대가 변경되었음을 감지했습니다. 이러한 호스트 수준 변경으로 인해 RDS 자동화가 실패하여 EC2 인스턴스가 `unsupported-configuration` 상태로 전환될 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) DB 인스턴스를 30분 안에 사용할 수 있게 됩니다. 나중에 범위를 벗어나지 않도록 하려면 옵션 그룹을 통해 시간대를 수정하세요. 자세한 내용은 [Oracle 시간대](custom-managing.timezone.md) 섹션을 참조하세요.  | 
|  SP-O2005  |  `sudo` 구성  |  EC2 인스턴스 [*ec2\$1id*]의 sudo 구성에 필요한 권한이 없습니다. 이 문제를 해결하려면 sudo 구성의 최근 변경 사항을 되돌리세요.  |  지원 경계는 특정 OS 사용자가 호스트에서 특정 명령을 실행할 수 있는지 확인합니다. `sudo` 구성을 모니터링하고 이를 지원되는 상태와 비교합니다. `sudo` 구성이 지원되지 않으면 RDS Custom은 해당 구성을 지원되는 이전 상태로 되돌려 덮어쓰려고 시도합니다. 시도가 성공하면 RDS Custom은 다음 알림을 보냅니다. RDS Custom이 구성을 성공적으로 덮어썼습니다. 덮어쓰기에 실패하면 DB 인스턴스가 지원되지 않는 구성 상태로 유지됩니다. 이 문제를 해결하려면 `sudoers.d/` 파일 내에서 변경 사항을 되돌리거나 권한을 수정합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 지원 경계에서 지원되는 `sudo` 구성이 확인되면 30분 이내에 RDS Custom for Oracle DB 인스턴스를 사용할 수 있습니다.  | 
|  SP-O2006  |  S3 버킷 접근성  |  RDS Custom 자동화가 EC2 인스턴스 [*ec2\$1id*]의 S3 버킷에서 파일을 다운로드할 수 없습니다. 네트워킹 구성을 확인하고 인스턴스가 S3와의 연결을 허용하는지 확인하세요.  |  | 
|  SP-2007  |  고가용성 소프트웨어 솔루션 버전  |  인스턴스의 HA 솔루션이 예상 버전과 다릅니다. 이 문제를 해결하려면 AWS Support 사례를 생성하세요.  |  AWS Support 사례를 만듭니다.  | 

**데이터베이스**: 


| 이벤트 ID | 구성 | RDS 이벤트 메시지 | 작업 | 
| --- | --- | --- | --- | 
|  SP-O3001  |  데이터베이스 보관 지연 대상  |  EC2 인스턴스 [*ec2\$1id*]의 ARCHIVE\$1LAG\$1TARGET 파라미터가 권장 범위 *value\$1range*를 벗어났습니다. 이 문제를 해결하려면 파라미터를 value\$1range 내의 값으로 설정하세요.    |  지원 경계는 `ARCHIVE_LAG_TARGET` 데이터베이스 파라미터를 모니터링하여 DB 인스턴스의 최신 복원 가능 시간이 적절한 범위 내에 있는지 확인합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) DB 인스턴스를 30분 안에 사용할 수 있게 됩니다.  | 
|  SP-O3002  |  Oracle Data Guard 역할  |  데이터베이스 역할 [*role\$1name*]이 EC2 인스턴스 [*ec2\$1id*]의 Oracle Data Guard에서 지원되지 않습니다. 이 문제를 해결하려면 DATABASE\$1ROLE 파라미터를 PRIMARY 또는 PHYSICAL STANDBY로 설정하세요.  |  지원 경계는 15초마다 현재 데이터베이스 역할을 모니터링하고 데이터베이스 역할이 변경된 경우 CloudWatch 알림을 보냅니다. Oracle Data Guard `DATABASE_ROLE` 파라미터는 `PRIMARY` 또는 `PHYSICAL STANDBY`여야 합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 지원 경계에서 데이터베이스 역할이 지원됨이 확인되면 15초 이내에 RDS Custom for Oracle DB 인스턴스를 사용할 수 있게 됩니다.  | 
|  SP-O3003  |  데이터베이스 상태  |  Oracle 데이터베이스의 SMON 프로세스가 좀비 상태입니다. 이 문제를 해결하려면 EC2 인스턴스 [*ec2\$1id*]에서 데이터베이스를 수동으로 복구하고 데이터베이스를 연 다음 즉시 백업하세요. 도움이 더 필요하면 지원에 문의하세요.  |  지원 경계는 DB 인스턴스 상태를 모니터링하며, 1시간 전과 하루 동안의 재시작 횟수를 모니터링합니다. 인스턴스가 여전히 존재하더라도 인스턴스와 상호 작용할 수 없는 경우 알림이 표시됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) DB 인스턴스가 다시 시작된 후 RDS Custom 에이전트는 DB 인스턴스가 더 이상 응답하지 않는 상태가 아님을 감지합니다. 지원 경계에 DB 인스턴스 상태를 재평가하도록 알립니다.  | 
|  SP-O3004  |  데이터베이스 로그 모드  |  EC2 인스턴스 [*ec2\$1id*]의 데이터베이스 로그 모드가 [*value\$1b*]로 변경되었습니다. 이 문제를 해결하려면 로그 모드를 [*value\$1a*]로 설정하세요.    |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) RDS Custom 에이전트가 DB 인스턴스를 자동으로 다시 시작하고 로그 모드를 `ARCHIVELOG`로 설정합니다. DB 인스턴스를 30분 안에 사용할 수 있게 됩니다.  | 
|  SP-O3005  |  Oracle home path  |  EC2 인스턴스 [*ec2\$1id*]의 Oracle home이 *new\$1path*로 변경되었습니다. 이 문제를 해결하려면 설정을 *old\$1path*로 되돌리세요.  |  | 
|  SP-O3006  |  데이터베이스 고유 이름  |  EC2 인스턴스 [*ec2\$1id*]의 데이터베이스 고유 이름이 *new\$1value*로 변경되었습니다. 이 문제를 해결하려면 이름을 *old\$1value*로 되돌리세요.    |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) RDS Custom 에이전트가 DB 인스턴스를 자동으로 다시 시작하고 로그 모드를 `ARCHIVELOG`로 설정합니다. DB 인스턴스를 30분 안에 사용할 수 있게 됩니다.  | 

## RDS Custom for Oracle 업그레이드 문제 해결
<a name="custom-troubleshooting-upgrade"></a>

RDS Custom for Oracle 인스턴스 업그레이드에 실패할 수 있습니다. 아래에는 RDS Custom DB for Oracle DB 인스턴스를 업그레이드하는 중에 사용할 수 있는 몇 가지 중요한 기술, 파일 및 명령이 나와 있습니다.
+ DB 인스턴스의 `/tmp` 디렉터리에 있는 업그레이드 출력 로그 파일을 검토합니다. 로그 이름은 DB 엔진 버전에 따라 다릅니다. 예를 들어 `catupgrd` 또는 `catup` 문자열이 포함된 로그가 표시될 수 있습니다.
+ `/rdsdbdata/log/trace` 디렉터리에 있는 `alert.log` 파일을 검토합니다.
+ `root` 디렉터리에서 다음 `grep` 명령을 실행하여 업그레이드 OS 프로세스를 추적합니다. 이 명령은 로그 파일이 기록되는 위치를 표시하고 업그레이드 프로세스의 상태를 확인합니다.

  ```
  ps -aux | grep upg
  ```

  다음은 샘플 출력을 보여줍니다.

  ```
  root     18884  0.0  0.0 235428  8172 ?        S<   17:03   0:00 /usr/bin/sudo -u rdsdb /rdsdbbin/scripts/oracle-control ORCL op_apply_upgrade_sh RDS-UPGRADE/2.upgrade.sh
  rdsdb    18886  0.0  0.0 153968 12164 ?        S<   17:03   0:00 /usr/bin/perl -T -w /rdsdbbin/scripts/oracle-control ORCL op_apply_upgrade_sh RDS-UPGRADE/2.upgrade.sh
  rdsdb    18887  0.0  0.0 113196  3032 ?        S<   17:03   0:00 /bin/sh /rdsdbbin/oracle/rdbms/admin/RDS-UPGRADE/2.upgrade.sh
  rdsdb    18900  0.0  0.0 113196  1812 ?        S<   17:03   0:00 /bin/sh /rdsdbbin/oracle/rdbms/admin/RDS-UPGRADE/2.upgrade.sh
  rdsdb    18901  0.1  0.0 167652 20620 ?        S<   17:03   0:07 /rdsdbbin/oracle/perl/bin/perl catctl.pl -n 4 -d /rdsdbbin/oracle/rdbms/admin -l /tmp catupgrd.sql
  root     29944  0.0  0.0 112724  2316 pts/0    S+   18:43   0:00 grep --color=auto upg
  ```
+ 다음 SQL 쿼리를 실행하여 구성 요소의 현재 상태를 확인하고 데이터베이스 버전 및 DB 인스턴스에 설치된 옵션을 찾습니다.

  ```
  SET LINESIZE 180
  COLUMN COMP_ID FORMAT A15
  COLUMN COMP_NAME FORMAT A40 TRUNC
  COLUMN STATUS FORMAT A15 TRUNC
  SELECT COMP_ID, COMP_NAME, VERSION, STATUS FROM DBA_REGISTRY ORDER BY 1;
  ```

  다음과 유사하게 출력됩니다.

  ```
  COMP_NAME                                STATUS               PROCEDURE
  ---------------------------------------- -------------------- --------------------------------------------------
  Oracle Database Catalog Views            VALID                DBMS_REGISTRY_SYS.VALIDATE_CATALOG
  Oracle Database Packages and Types       VALID                DBMS_REGISTRY_SYS.VALIDATE_CATPROC
  Oracle Text                              VALID                VALIDATE_CONTEXT
  Oracle XML Database                      VALID                DBMS_REGXDB.VALIDATEXDB
  
  4 rows selected.
  ```
+ 다음 SQL 쿼리를 실행하여 업그레이드 프로세스를 방해할 수 있는 유효하지 않은 객체가 있는지 확인합니다.

  ```
  SET PAGES 1000 LINES 2000
  COL OBJECT FOR A40
  SELECT SUBSTR(OWNER,1,12) OWNER,
         SUBSTR(OBJECT_NAME,1,30) OBJECT,
         SUBSTR(OBJECT_TYPE,1,30) TYPE, STATUS,
         CREATED
  FROM   DBA_OBJECTS 
  WHERE  STATUS <>'VALID' 
  AND    OWNER IN ('SYS','SYSTEM','RDSADMIN','XDB');
  ```

## RDS Custom for Oracle 복제본 승격 문제 해결
<a name="custom-troubleshooting-promote"></a>

콘솔, `promote-read-replica` AWS CLI 명령 또는 `PromoteReadReplica` API를 사용하여 RDS Custom for Oracle의 관리형 Oracle 복제본을 승격할 수 있습니다. 기본 DB 인스턴스를 삭제하고 모든 복제본이 정상이면 RDS Custom for Oracle은 관리형 복제본을 독립 실행형 인스턴스로 자동 승격합니다. 복제본이 자동화를 일시 중지했거나 지원 경계 밖에 있는 경우 RDS Custom이 자동으로 승격할 수 있으려면 먼저 복제본을 수정해야 합니다. 자세한 내용은 [RDS Custom for Oracle 복제본을 독립 실행형 DB 인스턴스로 승격](custom-rr.promoting.md) 섹션을 참조하세요.

다음 상황에서는 복제본 프로모션 워크플로가 중단될 수 있습니다.
+ 기본 DB 인스턴스가 `STORAGE_FULL` 상태입니다.
+ 기본 데이터베이스는 모든 온라인 다시 실행 로그를 아카이브할 수 없습니다.
+ Oracle 복제본에서 아카이브된 다시 실행 로그 파일과 기본 데이터베이스 간에 차이가 있습니다.

**중단된 워크플로에 응답하려면 다음과 같이 하세요.**

1. Oracle 복제본 DB 인스턴스의 다시 실행 로그 간격을 동기화합니다.

1. 읽기 전용 복제본을 적용된 최신 다시 실행 로그로 강제 승격시킵니다. SQL\$1Plus에서 다음 명령을 실행합니다.

   ```
   ALTER DATABASE ACTIVATE STANDBY DATABASE;
   SHUTDOWN IMMEDIATE
   STARTUP
   ```

1. 지원에 문의하여 DB 인스턴스를 `available` 상태로 전환하도록 요청하세요.

# Amazon RDS Custom for Oracle의 알려진 문제
<a name="custom-known-issues"></a>

RDS Custom for Oracle 작업을 수행할 경우 DB 인스턴스와 관련하여 다음과 같은 문제에 유의하세요.
+ 루트 또는 dbbin 볼륨의 크기 조정은 지원되지 않습니다.
**주의**  
루트 또는 dbbin 볼륨의 크기를 수동으로 조정하지 않는 것이 좋습니다. 패치 적용 후에도 지속되는 데이터 볼륨에 모든 구성을 저장하고 RDS 스토리지 크기 조정 API만 사용하여 볼륨 크기를 조정하는 것이 좋습니다.
+ 일부 RDS API는 Oracle Linux 7을 사용하는 AMI와 같이 데이터베이스 인스턴스가 이전 AMI에 있는 경우 차단될 수 있습니다. 이 문제를 해결하려면 OS 패치를 사용하여 DB 인스턴스를 최신 AMI로 패치하세요. 자세한 내용은 [CEV 업그레이드 옵션](custom-upgrading.md#custom-upgrading.overview.cev-options) 섹션을 참조하세요.
+ RDS 작업을 수행하기 전에 AWS 계정에 컴퓨팅 및 스토리지에 대한 할당량이 충분한지 확인합니다.
+ 데이터베이스가 생성 상태이고 데이터베이스 또는 Amazon EC2 호스트에 적극적으로 로그인하여 명령을 실행하는 경우 데이터베이스 만들기가 완료되지 않을 수 있습니다.
+ 제어 파일 멀티플렉싱은 읽기 전용 복제본 문제 때문에 현재 지원되지 않습니다. 읽기 전용 복제본을 만들기 전에 소스 데이터베이스의 `CONTROL_FILES` 초기화 파라미터에 파일 이름을 하나만 지정해야 합니다.
+ 데이터베이스 모드를 `PHYSICAL STANDBY`(탑재됨 또는 읽기 전용)에서 `SNAPSHOT STANDBY`(읽기/쓰기로 변환)로 변경할 수 없습니다.
+ AWS 계정이 서비스 제어 정책(SCP)이 있는 AWS 조직의 일부이고 SCP에 조건 키가 포함된 경우 RDS Custom for Oracle DB 인스턴스가 다음 오류와 함께 만들어지지 않을 수 있습니다.

  ```
  You can't create the DB instance because of incompatible resources. 
  The IAM instance profile role [AWSRDSCustomInstanceRole1-us-east-1] is missing the following permissions: 
  EFFECT [Allow] on ACTION(S) [ssm:DescribeAssociation, ssm:DescribeDocument, ssm:GetConnectionStatus, 
    ssm:GetDeployablePatchSnapshotForInstance, ssmmessages:OpenControlChannel, ssm:GetParameters, 
    ssm:ListInstanceAssociations, ssm:PutConfigurePackageResult, ssmmessages:CreateControlChannel, 
    ssm:GetParameter, ssm:UpdateAssociationStatus, ssm:GetManifest, ssmmessages:CreateDataChannel, 
    ssm:PutInventory, ssm:UpdateInstanceInformation, ssm:DescribeInstanceInformation, 
    ssmmessages:OpenDataChannel, ssm:GetDocument, ssm:ListAssociations, ssm:PutComplianceItems, 
    ssm:UpdateInstanceAssociationStatus] for RESOURCE(S) [], EFFECT [Allow] on ACTION(S) [ec2messages:DeleteMessage, 
    ec2messages:FailMessage, ec2messages:GetEndpoint, ec2messages:AcknowledgeMessage, ec2messages:GetMessages, 
    ec2messages:SendReply] for RESOURCE(S) [], EFFECT [Allow] on ACTION(S) [logs:CreateLogStream, 
    logs:DescribeLogStreams, logs:PutRetentionPolicy, logs:PutLogEvents]
  ```

  이 문제를 해결하려면 지원에 티켓을 만듭니다.

## 데이터베이스 사용자 계정의 알려진 문제
<a name="custom-known-issues-accounts"></a>

다음 사항에 주의하세요.
+ `RDSADMIN` 및 `RDS_DATAGUARD`와 같이 문자열 `RDS`로 시작하는 데이터베이스 사용자 계정은 제거하지 마세요. RDS Custom for Oracle은 자동화를 위해 `RDS` 계정을 사용합니다. 이 사용자 계정을 제거하면 RDS Custom이 인스턴스를 지원되지 않는 구성 상태로 이동합니다.
+ RDS Custom for Oracle DB 인스턴스의 마스터 사용자 이름은 `ModifyDBInstance` API를 사용하여 변경할 수 없습니다.
+ RDS Custom for Oracle은 모든 DB 인스턴스에서 사용자 계정 자격 증명을 교체합니다. 자세한 내용은 [규정 준수 프로그램을 위한 RDS Custom for Oracle 자격 증명](custom-security.cred-rotation.md) 섹션을 참조하세요. 온프레미스 기본/대기 구성을 사용하는 경우 자격 증명 교체가 다음 리소스에 영향을 미칠 수 있습니다.
  + 수동으로 만든 대기 RDS Custom for Oracle 인스턴스

    이 문제를 해결하려면 수동 대기 데이터베이스를 삭제한 다음 API 직접 호출을 사용하여 Oracle 읽기 전용 복제본을 만듭니다. 수동 대기 데이터베이스의 보안 암호를 수동으로 관리하여 소스 DB 인스턴스와 일치하도록 합니다.
  + 수동으로 만든 교차 리전 읽기 전용 복제본

    이 문제를 해결하려면 기본 DB 인스턴스와 일치하도록 보안 암호를 수동으로 유지합니다.

## 파라미터 및 구성 파일의 알려진 문제
<a name="custom-known-issues-files"></a>
+ 조정 컴퓨팅, OS 업그레이드 및 RDS Custom이 루트 볼륨을 대체하는 기타 작업을 수행한 후에 `crontab` 파일을 구성해야 합니다. `crontab`을 백업해 두는 것이 좋습니다.
+ `listener.ora` 파일을 구성할 때 다음 지침을 참고하세요.
  + 파일의 모든 항목이 한 줄에 있는지 확인합니다. 이 접근 방식은 인스턴스 만들기 중 들여쓰기 문제를 방지합니다.
  + `GLOBAL_DBNAME`이 `SID_NAME`의 값과 동일한지 확인합니다.
  + `LISTENER`의 값이 `L_dbname_001` 명명 규칙을 따르는지 확인합니다.
  + `listener.ora` 파일이 데이터베이스 이름에 대한 연결을 유지하는지 확인합니다. RDS Custom은 이 연결을 사용하여 데이터베이스 시작을 확인합니다. 이 파일을 잘못 수정하면 조정 컴퓨팅 또는 패치 적용과 같은 작업이 실패할 수 있습니다.

    다음 예는 올바르게 구성된 `listener.ora`를 보여줍니다.

    ```
    ADR_BASE_L_ORCL_001=/rdsdbdata/log/
    USE_SID_AS_SERVICE_L_ORCL_001=ON
    SID_LIST_L_ORCL_001=(SID_LIST = (SID_DESC = (SID_NAME = ORCL)(GLOBAL_DBNAME = ORCL) (ORACLE_HOME = /rdsdbbin/oracle.19.custom.r1.EE.1)))
    SUBSCRIBE_FOR_NODE_DOWN_EVENT_L_ORCL_001=OFF
    L_ORCL_001=(DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(PORT = XXXX)(HOST = x.x.x.x))) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(PORT = XXXX)(HOST = 127.0.0.1))))
    ```
+ 서버 파라미터 파일이나 초기화 파라미터 파일에서는 설명이 지원되지 않습니다.
+ 서버 파라미터 파일(`/rdsdbdata/config/oracle_pfile`)에서 다음 초기화 파라미터를 선언해야 합니다.
  + `MEMORY_MAX_TARGET`
  + `MEMORY_TARGET`
  + `PGA_AGGREGATE_TARGET`
  + `PROCESSES`
  + `SGA_TARGET`
  + `USE_LARGE_PAGES`

  이전 파라미터가 `/rdsdbdata/config/oracle_pfile`에서 선언되지 않은 경우 읽기 전용 복제본 생성 및 컴퓨팅 규모 조정이 실패할 수 있습니다.
+ 서버 파라미터 파일, 감사 파일,`listener.ora`, `tnsnames.ora` 또는 `sqlnet.ora` 같은 구성 파일의 기호 링크는 삭제할 수 없습니다. 또한 이러한 파일의 디렉터리 구조도 수정할 수 없습니다. RDS Custom 자동화에서는 이러한 파일이 특정 디렉터리 구조에 존재할 것으로 예상합니다.

  초기화 파라미터 파일에서 서버 파라미터 파일을 생성하려면 다음 구문을 사용합니다.

  ```
  CREATE SPFILE='/rdsdbdata/admin/$ORACLE_SID/pfile/spfile$ORACLE_SID.ora' 
      FROM PFILE='/rdsdbdata/config/oracle_pfile';
  ```

# RDS Custom for SQL Server 작업
<a name="working-with-custom-sqlserver"></a>

아래에서는 RDS Custom for SQL Server DB 인스턴스의 관리 및 유지 관리에 대한 지침을 확인할 수 있습니다.

**Topics**
+ [RDS for SQL Server 워크플로](custom-sqlserver.workflow.md)
+ [Amazon RDS Custom for SQL Server 요구 사항 및 제한](custom-reqs-limits-MS.md)
+ [Amazon RDS Custom for SQL Server를 위한 환경 설정](custom-setup-sqlserver.md)
+ [RDS Custom for SQL Server에서 기존 보유 미디어 사용(BYOM)](custom-sqlserver.byom.md)
+ [RDS Custom for SQL Server 사용자 지정 엔진 버전 작업](custom-cev-sqlserver.md)
+ [Amazon RDS Custom for SQL Server의 DB 인스턴스 생성 및 연결](custom-creating-sqlserver.md)
+ [Amazon RDS Custom for SQL Server DB 인스턴스 관리](custom-managing-sqlserver.md)
+ [RDS Custom for SQL Server를 사용하여 Microsoft Active Directory 작업](custom-sqlserver-WinAuth.md)
+ [RDS Custom for SQL Server에 대한 다중 AZ 배포 구성 및 관리](custom-sqlserver-multiaz.md)
+ [Amazon RDS Custom for SQL Server DB 인스턴스 백업 및 복원](custom-backup-sqlserver.md)
+ [Amazon RDS Custom for SQL Server DB 스냅샷 복사](custom-copying-snapshot-sqlserver.md)
+ [온프레미스 데이터베이스를 SQL Server용 Amazon RDS Custom으로 마이그레이션](custom-migrating.md)
+ [RDS Custom for SQL Server 운영 체제 업데이트](custom-os-upgrade.md)
+ [Amazon RDS Custom for SQL Server DB 인스턴스 업그레이드](custom-upgrading-sqlserver.md)
+ [Amazon RDS Custom for SQL Server의 DB 문제 해결](custom-troubleshooting-sqlserver.md)

# RDS for SQL Server 워크플로
<a name="custom-sqlserver.workflow"></a>

다음 다이어그램은 RDS Custom for SQL Server의 일반적인 워크플로를 보여 줍니다.

![\[RDS Custom for SQL Server 아키텍처\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/custom_sqlserver_architecture_v2.png)


단계는 다음과 같습니다.

1. RDS Custom에서 제공하는 엔진 버전에서 RDS Custom for SQL Server DB 인스턴스를 생성합니다.

   자세한 내용은 [RDS Custom for SQL Server DB 인스턴스 생성](custom-creating-sqlserver.md#custom-creating-sqlserver.create)을 참조하세요.

1. 애플리케이션을 RDS Custom DB 인스턴스 엔드포인트에 연결합니다.

   자세한 내용은 [AWS Systems Manager를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating-sqlserver.ssm.md) 및 [RDP를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating-sqlserver.rdp.md) 섹션을 참조하세요.

1. (선택 사항) 호스트에 액세스하여 소프트웨어를 커스터마이징합니다.

1. RDS Custom 자동화로 생성된 알림 및 메시지를 모니터링합니다.

## DB instance for RDS Custom 생성
<a name="custom-sqlserver.workflow.instance"></a>

`create-db-instance` 명령을 사용하여 RDS Custom DB 인스턴스를 생성할 수 있습니다. 생성 절차는 Amazon RDS 인스턴스를 생성과 유사합니다. 하지만 일부 파라미터는 다릅니다. 자세한 내용은 [Amazon RDS Custom for SQL Server의 DB 인스턴스 생성 및 연결](custom-creating-sqlserver.md)을 참조하세요.

## 데이터베이스 연결
<a name="custom-sqlserver.workflow.db-connection"></a>

Amazon RDS DB 인스턴스와 마찬가지로 RDS Custom for SQL Server DB 인스턴스는 VPC에 있습닏. 애플리케이션은 RDS Custom for SQL Server와 마찬가지로 SQL 서버 관리 제품군(SSMS)과 같은 클라이언트를 사용하여 RDS Custom 인스턴스에 연결합니다.

## RDS Custom 커스터마이징
<a name="custom-sqlserver.workflow.customization"></a>

RDS Custom 호스트에 액세스하여 소프트웨어를 설치하거나 커스터마이징할 수 있습니다. 변경 사항과 RDS Custom 자동화 간의 충돌을 방지하려면 지정된 기간 동안 자동화를 일시 중지하면 됩니다. 이 기간 동안 RDS Custom은 모니터링 또는 인스턴스 복구를 수행하지 않습니다. 기간이 만료되면 RDS Custom은 전체 자동화를 재개합니다. 자세한 내용은 [RDS Custom 자동화 일시 중지 및 다시 시작](custom-managing-sqlserver.pausing.md)을 참조하세요.

# Amazon RDS Custom for SQL Server 요구 사항 및 제한
<a name="custom-reqs-limits-MS"></a>

다음에서 빠른 참조를 위해 Amazon RDS Custom for SQL Server 요구 사항 및 제한 사항에 대한 요약을 확인할 수 있습니다. 요구 사항 및 제한 사항은 관련 섹션에도 표시됩니다.

**Topics**
+ [리전 및 버전 사용 가능 여부](#custom-reqs-limits-MS.RegionVersionAvailability)
+ [RDS Custom for SQL Server 일반 요구 사항](#custom-reqs-limits.reqsMS)
+ [RDS Custom for SQL Server DB 인스턴스 클래스 지원](custom-reqs-limits.instancesMS.md)
+ [RDS Custom for SQL Server 제한 사항](#custom-reqs-limits.limitsMS)
+ [RDS Custom for SQL Server DB 인스턴스에 대한 문자 집합 및 데이터 정렬 설정](custom-reqs-limits-MS.collation.md)
+ [RDS Custom for SQL Server DB 인스턴스의 현지 시간대](custom-reqs-limits-MS.TimeZone.md)
+ [RDS Custom for SQL Server에서 Service Master Key 사용](custom-sqlserver-features.smk.md)
+ [RDS Custom for SQL Server에서 변경 데이터 캡처(CDC) 지원](custom-sqlserver-features.cdc.md)

## 리전 및 버전 사용 가능 여부
<a name="custom-reqs-limits-MS.RegionVersionAvailability"></a>

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전마다 다릅니다. Amazon RDS Custom for SQL Server에서 사용할 수 있는 Amazon RDS의 버전 및 리전에 대한 자세한 내용은 [RDS Custom for SQL Server를 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq) 섹션을 참조하세요.

## RDS Custom for SQL Server 일반 요구 사항
<a name="custom-reqs-limits.reqsMS"></a>

Amazon RDS Custom for Server에 대한 다음 요구 사항을 준수해야 합니다.
+ [RDS Custom for SQL Server DB 인스턴스 클래스 지원](custom-reqs-limits.instancesMS.md)에 표시된 인스턴스 클래스를 사용합니다. 지원되는 스토리지 유형은 gp2, gp3, io1 및 io2 Block Express 유형의 SSD(Solid State Drive)뿐입니다. io1, gp2, gp3의 최대 스토리지 한도는 16TiB인 반면 io2는 64TiB를 지원합니다.
+ RDS Custom DB instance 생성을 위해 대칭 암호화 AWS KMS 키를 가지고 있는지 확인하세요. 자세한 내용은 [대칭 암호화 AWS KMS 키 보유 여부 확인](custom-setup-sqlserver.md#custom-setup-sqlserver.cmk)을 참조하세요.
+ AWS Identity and Access Management (IAM) 역할과 인스턴스 프로파일을 생성해야 합니다. 자세한 내용은 [수동으로 IAM 역할과 인스턴스 프로파일 생성](custom-setup-sqlserver.md#custom-setup-sqlserver.iam) 및 [AWS Management Console을 사용한 자동 인스턴스 프로파일 생성](custom-setup-sqlserver.md#custom-setup-sqlserver.instanceProfileCreation)(을)를 참조하세요.
+ RDS Custom이 다른 AWS 서비스에 액세스하는 데 사용할 수 있는 네트워킹 구성을 제공해야 합니다. 특정 요구 사항은 [2단계: 네트워킹, 인스턴스 프로파일 및 암호화 구성](custom-setup-sqlserver.md#custom-setup-sqlserver.iam-vpc) 섹션을 참조하세요.
+ RDS Custom과 Amazon RDS DB 인스턴스의 합산 수가 할당량 한도를 초과할 수 없습니다. 예를 들어, 할당량이 40개의 DB 인스턴스인 경우 RDS Custom for Server DB 인스턴스 20개와 Amazon RDS DB 인스턴스 20개를 보유할 수 있습니다.
+ RDS Custom은 이름이 `do-not-delete-rds-custom-`으로 시작하는 AWS CloudTrail 추적을 자동으로 생성합니다. RDS Custom 지원 경계는 CloudTrail의 이벤트에 따라 작업이 RDS Custom 자동화에 영향을 미치는지 여부를 결정합니다. RDS Custom은 첫 번째 DB 인스턴스를 생성할 때 추적을 생성합니다. 기존 CloudTrail을 사용하려면 AWS Support에 문의하세요. 자세한 내용은 [AWS CloudTrail](custom-concept.md#custom-concept.components.CloudTrail) 섹션을 참조하세요.

# RDS Custom for SQL Server DB 인스턴스 클래스 지원
<a name="custom-reqs-limits.instancesMS"></a>

[describe-orderable-db-instance-options](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/describe-orderable-db-instance-options.html) 명령을 사용하여 리전에서 DB 인스턴스 클래스가 지원되는지 확인합니다.

RDS Custom for SQL Server는 다음 테이블에 나와 있는 DB 인스턴스 클래스를 지원합니다.


| SQL Server 에디션 | RDS 고객 지원 | 
| --- | --- | 
|  Enterprise Edition  |  db.r5.large-db.r5.24xlarge db.r5b.xlarge–db.r5b.24xlarge db.m5.xlarge-db.m5.24xlarge db.r6i.xlarge–db.r6i.32xlarge db.m6i.xlarge–db.m6i.32xlarge db.x2iedn.xlarge–db.x2iedn.32xlarge  | 
|  Standard Edition  |  db.r5.large-db.r5.24xlarge db.r5b.large–db.r5b.8xlarge db.m5.large-db.m5.24xlarge db.r6i.large–db.r6i.8xlarge db.m6i.large–db.m6i.8xlarge db.x2iedn.xlarge–db.x2iedn.8xlarge  | 
|  Developer Edition  |  db.r5.large-db.r5.24xlarge db.r5b.xlarge–db.r5b.24xlarge db.m5.xlarge-db.m5.24xlarge db.r6i.xlarge–db.r6i.32xlarge db.m6i.xlarge–db.m6i.32xlarge db.x2iedn.xlarge–db.x2iedn.32xlarge  | 
|  Web Edition  |  db.r5.large–db.r5.4xlarge db.m5.large-db.m5.4xlarge db.r6i.large–db.r6i.4xlarge db.m6i.large–db.m6i.4xlarge db.r5b.large–db.r5b.4xlarge  | 

다음 권장 사항은 db.x2iedn 클래스 유형에 적용됩니다.
+ 생성 시 로컬 스토리지는 원시 및 할당되지 않은 디바이스입니다. 이 인스턴스 클래스와 함께 DB 인스턴스를 사용하기 전에 먼저 로컬 스토리지를 마운트하고 포맷해야 합니다. 그런 다음 최적의 성능을 보장하기 위해 `tempdb`를 구성합니다. 자세한 내용은 [Optimize tempdb performance in Amazon RDS Custom for SQL Server using local instance storage](https://aws.amazon.com/blogs/database/optimize-tempdb-performance-in-amazon-rds-custom-for-sql-server-using-local-instance-storage/)를 참조하세요.
+ 컴퓨팅 규모 조정, 인스턴스 교체, 스냅샷 복원 또는 시점 복구(PITR)와 같은 DB 인스턴스 작업을 실행하면 로컬 스토리지는 원시 및 할당되지 않은 상태로 되돌아갑니다. 이러한 상황에서는 드라이브를 다시 마운트하고, 다시 포맷하고, 재구성하고, `tempdb`를 사용하여 기능을 복원해야 합니다.
+ 다중 AZ 인스턴스의 경우 대기 DB 인스턴스에서 구성을 수행하는 것이 좋습니다. 이렇게 하면 구성이 대기 인스턴스에 이미 설정되어 있기 때문에 장애 조치가 발생하더라도 시스템이 문제 없이 계속 작동합니다.

## RDS Custom for SQL Server 제한 사항
<a name="custom-reqs-limits.limitsMS"></a>

RDS Custom for SQL Server에는 다음과 같은 제한 사항이 적용됩니다.
+ Amazon RDS for RDS Custom for SQL Server DB 인스턴스에서는 읽기 전용 복제본을 생성할 수 없습니다. 그러나 다중 AZ 배포를 사용하여 고가용성을 자동으로 구성할 수 있습니다. 자세한 내용은 [RDS Custom for SQL Server에 대한 다중 AZ 배포 구성 및 관리](custom-sqlserver-multiaz.md) 섹션을 참조하세요.
+ 기존 RDS Custom for SQL Server DB 인스턴스의 DB 인스턴스 식별자는 수정할 수 없습니다.
+ 사용자 지정 엔진 버전(CEV)을 사용하여 생성되지 않은 RDS Custom for SQL Server DB 인스턴스의 경우 Microsoft Windows 운영 체제에 대한 변경의 지속성을 보장할 수 없습니다. 예를 들어 스냅샷 또는 특정 시점 복원 작업을 시작하면 이러한 변경 내용이 손실됩니다. RDS Custom for SQL Server DB 인스턴스가 CEV를 사용하여 생성된 경우에는 이러한 변경 내용이 지속됩니다.
+ 일부 옵션은 지원되지 않습니다. 예를 들어 RDS Custom for SQL Server DB 인스턴스를 생성할 때 다음과 같은 작업을 수행할 수 없습니다.
  + DB 인스턴스 클래스의 코어당 CPU 코어 및 스레드 수를 변경합니다.
  + 스토리지 자동 조정을 활성화합니다.
  + 고유한 DB 파라미터 그룹, 옵션 그룹 또는 문자 집합을 지정합니다.
  + Performance Insights 또는 Database Insights를 켭니다.
  + 마이너 버전 자동 업그레이드를 활성화합니다.
+ 최대 DB 인스턴스 스토리지는 64TiB입니다.
+ RDS Custom for SQL Server에는 RDS 프록시를 사용할 수 없습니다.
+ RDS Custom for SQL Server DB 인스턴스에는 `describe-reserved-db-instances` API를 사용할 수 없습니다.

# RDS Custom for SQL Server DB 인스턴스에 대한 문자 집합 및 데이터 정렬 설정
<a name="custom-reqs-limits-MS.collation"></a>

## 개요
<a name="custom-reqs-limits-MS.collation.overview"></a>

RDS Custom for SQL Server DB 인스턴스를 사용하면 데이터를 저장하고 정렬하는 방법을 결정하는 문자 집합 및 데이터 정렬 설정을 구성할 수 있습니다. 문자 집합은 허용되는 문자를 정의하는 반면, 데이터 정렬은 데이터 정렬 및 비교를 위한 규칙을 지정합니다. 다국어 데이터로 작업하거나 특정 정렬 요구 사항이 있는 애플리케이션에 적절한 문자 집합과 데이터 정렬을 설정하는 것이 중요합니다. 예를 들어 액센트 표시된 문자를 처리하고 언어별 정렬 규칙을 정의하거나 서로 다른 로캘 전반에서 데이터 무결성을 유지해야 할 수 있습니다. 다음 섹션에서는 RDS Custom for SQL Server DB 인스턴스의 문자 집합 및 데이터 정렬 지원에 대한 정보를 제공합니다.

RDS Custom for SQL Server는 SQL\$1라틴, 일본어, 독일어 및 아랍어 로케일의 기존 인코딩과 UTF-8 인코딩 모두에서 다양한 서버 데이터 정렬을 지원합니다. 기본 서버 데이터 정렬은 `SQL_Latin1_General_CP1_CI_AS`이지만 지원되는 다른 데이터 정렬을 선택하여 사용할 수 있습니다. RDS for SQL Server에서 사용하는 것과 동일한 절차를 사용하여 데이터 정렬을 선택할 수 있습니다. 자세한 내용은 [Amazon RDS for Microsoft SQL Server의 데이터 정렬 및 문자 세트 관리](Appendix.SQLServer.CommonDBATasks.Collation.md) 섹션을 참조하세요.

## 고려 사항
<a name="custom-reqs-limits-MS.collation.considerations"></a>

RDS Custom for SQL Server에서 서버 데이터 정렬을 사용할 때는 다음과 같은 요구 사항 및 제한 사항이 적용됩니다.
+ RDS Custom for SQL Server DB 인스턴스를 생성할 때 서버 데이터 정렬을 설정할 수 있습니다. DB 인스턴스를 생성한 후에는 서버 수준 데이터 정렬을 수정할 수 없습니다.
+ DB 스냅샷에서 복원하거나 시점 복구(PITR)를 수행할 때는 서버 수준 데이터 정렬을 수정할 수 없습니다.
+ RDS Custom for SQL Server CEV에서 DB 인스턴스를 생성할 때 DB 인스턴스는 CEV의 서버 데이터 정렬을 상속하지 않습니다. 대신 기본 서버 데이터 정렬인 `SQL_Latin1_General_CP1_CI_AS`가 사용됩니다. RDS Custom for SQL Server CEV에서 기본이 아닌 서버 데이터 정렬을 구성한 후 새 DB 인스턴스에서도 동일한 서버 데이터 정렬을 사용하려면 CEV에서 DB 인스턴스를 생성할 때 동일한 데이터 정렬을 선택해야 합니다.
**참고**  
DB 인스턴스를 생성할 때 선택한 데이터 정렬이 CEV의 데이터 정렬과 다른 경우, 새 RDS Custom for SQL Server DB 인스턴스의 Microsoft SQL Server 시스템 데이터베이스가 업데이트된 데이터 정렬을 사용하도록 재구축됩니다. 재구축 프로세스는 새 RDS Custom for SQL Server DB 인스턴스에서만 수행되며 CEV 자체에는 영향을 주지 않습니다. CEV의 시스템 데이터베이스에 대한 이전 수정 사항은 시스템 데이터베이스가 재구축된 후 새 RDS Custom for SQL Server DB 인스턴스에 유지되지 않습니다. 일부 수정 사항의 예로는 `master` 데이터베이스의 사용자 정의 객체, `msdb` 데이터베이스의 예약된 작업 또는 CEV `model` 데이터베이스의 기본 데이터베이스 설정 변경 등이 있습니다. 새 RDS Custom for SQL Server DB 인스턴스가 생성된 후 수정 내용을 수동으로 다시 생성할 수 있습니다.
+ RDS Custom for SQL Server 사용자 지정 엔진 버전(CEV)에서 DB 인스턴스를 생성하고 CEV와 다른 데이터 정렬을 선택하는 경우, 새 DB 인스턴스에서 Microsoft SQL Server 시스템 데이터베이스를 재구축할 수 있도록 CEV 생성에 사용되는 골든 이미지(AMI)가 다음 요구 사항을 충족하는지 확인합니다.
  + SQL Server 2022의 경우 `setup.exe` 파일이 `C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQL2022\setup.exe` 경로에 있는지 확인합니다.
  + SQL Server 2019의 경우 `setup.exe` 파일이 다음 경로에 있는지 확인합니다. `C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\SQL2019\setup.exe` 
  + `master`, `model` 및 `msdb` 데이터베이스의 데이터 및 로그 템플릿 사본은 기본 위치에 있어야 합니다. 자세한 정보는 Microsoft 공개 문서의 [시스템 데이터베이스 재구축](https://learn.microsoft.com/en-us/sql/relational-databases/databases/rebuild-system-databases?view=sql-server-ver16#Restrictions         )을 참조하세요.
  + SQL Server 데이터베이스 엔진이 `NT Service\MSSQLSERVER ` 또는 `NT AUTHORITY\NETWORK SERVICE`를 서비스 계정으로 사용하는지 확인합니다. DB 인스턴스에 기본이 아닌 서버 데이터 정렬을 구성할 때 다른 계정은 `C:\` 드라이브에 대한 필수 권한을 갖지 않게 됩니다.
+ 새 DB 인스턴스에 대해 선택한 서버 데이터 정렬이 CEV에 구성된 데이터 정렬과 동일한 경우, 새 RDS Custom for SQL Server DB 인스턴스의 Microsoft SQL Server 시스템 데이터베이스는 재구축 프로세스를 거치지 않습니다. CEV의 시스템 데이터베이스에 대한 이전 수정 사항은 자동으로 새 RDS Custom for SQL Server DB 인스턴스에 적용됩니다.

## 지원되는 데이터 정렬
<a name="custom-reqs-limits-MS.collation.supportedCollations"></a>

데이터 정렬을 다음 표에 나열된 값 중 하나로 설정할 수 있습니다.


| 콜레이션 | 설명 | 
| --- |--- |
| Arabic\$1100\$1BIN | Arabic-100, 바이너리 정렬 | 
| Arabic\$1100\$1BIN2 | Arabic-100, 이진 코드 포인트 비교 정렬 | 
| Arabic\$1100\$1CI\$1AI | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Arabic\$1100\$1CI\$1AI\$1KS | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1SC | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1SC\$1UTF8 | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1WS | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1WS\$1SC | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Arabic\$1100\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CI\$1AI\$1SC | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CI\$1AI\$1SC\$1UTF8 | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CI\$1AI\$1WS | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Arabic\$1100\$1CI\$1AI\$1WS\$1SC | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Arabic\$1100\$1CI\$1AI\$1WS\$1SC\$1UTF8 | Arabic-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CI\$1AS | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Arabic\$1100\$1CI\$1AS\$1KS | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1SC | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1SC\$1UTF8 | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1WS | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1WS\$1SC | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Arabic\$1100\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CI\$1AS\$1SC | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CI\$1AS\$1SC\$1UTF8 | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CI\$1AS\$1WS | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Arabic\$1100\$1CI\$1AS\$1WS\$1SC | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Arabic\$1100\$1CI\$1AS\$1WS\$1SC\$1UTF8 | Arabic-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CS\$1AI | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Arabic\$1100\$1CS\$1AI\$1KS | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1SC | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1SC\$1UTF8 | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1WS | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1WS\$1SC | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Arabic\$1100\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CS\$1AI\$1SC | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CS\$1AI\$1SC\$1UTF8 | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CS\$1AI\$1WS | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Arabic\$1100\$1CS\$1AI\$1WS\$1SC | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Arabic\$1100\$1CS\$1AI\$1WS\$1SC\$1UTF8 | Arabic-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CS\$1AS | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Arabic\$1100\$1CS\$1AS\$1KS | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1SC | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1SC\$1UTF8 | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1WS | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1WS\$1SC | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Arabic\$1100\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CS\$1AS\$1SC | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CS\$1AS\$1SC\$1UTF8 | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1100\$1CS\$1AS\$1WS | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Arabic\$1100\$1CS\$1AS\$1WS\$1SC | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Arabic\$1100\$1CS\$1AS\$1WS\$1SC\$1UTF8 | Arabic-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Arabic\$1BIN | 아랍어, 이진 정렬 | 
| Arabic\$1BIN2 | 아랍어, 이진 코드 포인트 비교 정렬 | 
| Arabic\$1CI\$1AI | 아랍어, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Arabic\$1CI\$1AI\$1KS | 아랍어, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Arabic\$1CI\$1AI\$1KS\$1WS | 아랍어, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Arabic\$1CI\$1AI\$1WS | 아랍어, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Arabic\$1CI\$1AS | 아랍어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Arabic\$1CI\$1AS\$1KS | 아랍어, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Arabic\$1CI\$1AS\$1KS\$1WS | 아랍어, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Arabic\$1CI\$1AS\$1WS | 아랍어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Arabic\$1CS\$1AI | 아랍어, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Arabic\$1CS\$1AI\$1KS | 아랍어, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Arabic\$1CS\$1AI\$1KS\$1WS | 아랍어, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Arabic\$1CS\$1AI\$1WS | 아랍어, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Arabic\$1CS\$1AS | 아랍어, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Arabic\$1CS\$1AS\$1KS | 아랍어, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Arabic\$1CS\$1AS\$1KS\$1WS | 아랍어, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Arabic\$1CS\$1AS\$1WS | 아랍어, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Chinese\$1PRC\$1BIN2 | 중국어-중화인민공화국어, 이진 코드 포인트 비교 정렬 | 
| Chinese\$1PRC\$1CI\$1AS | 중국어-중화인민공화국어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Chinese\$1Taiwan\$1Stroke\$1CI\$1AS | 중국어-대만어-스트로크, 소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Danish\$1Norwegian\$1CI\$1AS | 덴마크어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Finnish\$1Swedish\$1CI\$1AS | 핀란드어-스웨덴어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| French\$1CI\$1AS | 프랑스어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1BIN | German-PhoneBook-100, 이진 정렬 | 
| German\$1PhoneBook\$1100\$1BIN2 | German-PhoneBook-100, 이진 코드 포인트 비교 정렬 | 
| German\$1PhoneBook\$1100\$1CI\$1AI | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1SC | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1WS | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1WS\$1SC | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1SC | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1WS | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1WS\$1SC | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CI\$1AI\$1WS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AS | German-PhoneBook-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS | German-PhoneBook-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1SC | German-PhoneBook-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1WS | German-PhoneBook-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1WS\$1SC | German-PhoneBook-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1SC | German-PhoneBook-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1WS | German-PhoneBook-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1WS\$1SC | German-PhoneBook-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CI\$1AS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AI | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1SC | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1WS | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1WS\$1SC | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1SC | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1WS | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1WS\$1SC | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CS\$1AI\$1WS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AS | German-PhoneBook-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS | German-PhoneBook-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1SC | German-PhoneBook-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1WS | German-PhoneBook-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1WS\$1SC | German-PhoneBook-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| German\$1PhoneBook\$1100\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | German-PhoneBook-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| German\$1PhoneBook\$1BIN | German-PhoneBook, 이진 정렬 | 
| German\$1PhoneBook\$1BIN2 | German-PhoneBook, 이진 코드 포인트 비교 정렬 | 
| German\$1PhoneBook\$1CI\$1AI | German-PhoneBook, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1CI\$1AI\$1KS | German-PhoneBook, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1CI\$1AI\$1KS\$1WS | German-PhoneBook, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1CI\$1AI\$1WS | German-PhoneBook, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1CI\$1AS | German-PhoneBook, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1CI\$1AS\$1KS | German-PhoneBook, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1CI\$1AS\$1KS\$1WS | German-PhoneBook, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1CI\$1AS\$1WS | German-PhoneBook, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1CS\$1AI | German-PhoneBook, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1CS\$1AI\$1KS | German-PhoneBook, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1CS\$1AI\$1KS\$1WS | German-PhoneBook, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1CS\$1AI\$1WS | German-PhoneBook, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1CS\$1AS | German-PhoneBook, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1CS\$1AS\$1KS | German-PhoneBook, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| German\$1PhoneBook\$1CS\$1AS\$1KS\$1WS | German-PhoneBook, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| German\$1PhoneBook\$1CS\$1AS\$1WS | German-PhoneBook, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Hebrew\$1BIN | 히브리어, 이진 정렬 | 
| Hebrew\$1CI\$1AS | 히브리어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$190\$1BIN | Japanese-90, 이진 정렬 | 
| Japanese\$190\$1BIN2 | Japanese-90, 이진 코드 포인트 비교 정렬 | 
| Japanese\$190\$1CI\$1AI | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$190\$1CI\$1AI\$1KS | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1SC | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1SC\$1UTF8 | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1WS | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1WS\$1SC | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$190\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CI\$1AI\$1SC | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$190\$1CI\$1AI\$1SC\$1UTF8 | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CI\$1AI\$1WS | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$190\$1CI\$1AI\$1WS\$1SC | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$190\$1CI\$1AI\$1WS\$1SC\$1UTF8 | Japanese-90, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CI\$1AS | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$190\$1CI\$1AS\$1KS | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1SC | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1SC\$1UTF8 | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1WS | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1WS\$1SC | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$190\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CI\$1AS\$1SC | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$190\$1CI\$1AS\$1SC\$1UTF8 | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CI\$1AS\$1WS | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$190\$1CI\$1AS\$1WS\$1SC | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$190\$1CI\$1AS\$1WS\$1SC\$1UTF8 | Japanese-90, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CS\$1AI | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$190\$1CS\$1AI\$1KS | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1SC | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1SC\$1UTF8 | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1WS | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1WS\$1SC | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$190\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CS\$1AI\$1SC | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$190\$1CS\$1AI\$1SC\$1UTF8 | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CS\$1AI\$1WS | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$190\$1CS\$1AI\$1WS\$1SC | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$190\$1CS\$1AI\$1WS\$1SC\$1UTF8 | Japanese-90, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CS\$1AS | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$190\$1CS\$1AS\$1KS | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1SC | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1SC\$1UTF8 | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1WS | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1WS\$1SC | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$190\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CS\$1AS\$1SC | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$190\$1CS\$1AS\$1SC\$1UTF8 | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$190\$1CS\$1AS\$1WS | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$190\$1CS\$1AS\$1WS\$1SC | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$190\$1CS\$1AS\$1WS\$1SC\$1UTF8 | Japanese-90, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1BIN | 일본어, 이진 정렬 | 
| Japanese\$1BIN2 | 일본어, 이진 코드 포인트 비교 정렬 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1BIN | Japanese-Bushu-Kakusu-100, 이진 정렬 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1BIN2 | Japanese-Bushu-Kakusu-100, 이진 코드 포인트 비교 정렬 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1WS | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1WS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1WS | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1WS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AI\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1WS | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1WS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1WS | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1WS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CI\$1AS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1WS | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1WS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1WS | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1WS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AI\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1WS | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1WS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1WS | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1WS\$1SC | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1Bushu\$1Kakusu\$1100\$1CS\$1AS\$1WS\$1SC\$1UTF8 | Japanese-Bushu-Kakusu-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1BIN | Japanese-Bushu-Kakusu-140, 이진 정렬 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1BIN2 | Japanese-Bushu-Kakusu-140, 이진 코드 포인트 비교 정렬 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1WS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1WS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1WS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AI\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1WS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1WS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CI\$1AS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1WS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1WS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1WS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AI\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1WS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1WS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1WS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1WS\$1VSS | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1Bushu\$1Kakusu\$1140\$1CS\$1AS\$1WS\$1VSS\$1UTF8 | Japanese-Bushu-Kakusu-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1CI\$1AI | 일본어, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1CI\$1AI\$1KS | 일본어, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1CI\$1AI\$1KS\$1WS | 일본어, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1CI\$1AI\$1WS | 일본어, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1CI\$1AS | 일본어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1CI\$1AS\$1KS | 일본어, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1CI\$1AS\$1KS\$1WS | 일본어, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1CI\$1AS\$1WS | 일본어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1CS\$1AI | 일본어, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1CS\$1AI\$1KS | 일본어, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1CS\$1AI\$1KS\$1WS | 일본어, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1CS\$1AI\$1WS | 일본어, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1CS\$1AS | 일본어, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1CS\$1AS\$1KS | 일본어, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1CS\$1AS\$1KS\$1WS | 일본어, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1CS\$1AS\$1WS | 일본어, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1Unicode\$1BIN | Japanese-Unicode, 이진 정렬 | 
| Japanese\$1Unicode\$1BIN2 | Japanese-Unicode, 이진 코드 포인트 비교 정렬 | 
| Japanese\$1Unicode\$1CI\$1AI | Japanese-Unicode, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CI\$1AI\$1KS | Japanese-Unicode, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CI\$1AI\$1KS\$1WS | Japanese-Unicode, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1Unicode\$1CI\$1AI\$1WS | Japanese-Unicode, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1Unicode\$1CI\$1AS | Japanese-Unicode, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CI\$1AS\$1KS | Japanese-Unicode, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CI\$1AS\$1KS\$1WS | Japanese-Unicode, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1Unicode\$1CI\$1AS\$1WS | Japanese-Unicode, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1Unicode\$1CS\$1AI | Japanese-Unicode, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CS\$1AI\$1KS | Japanese-Unicode, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CS\$1AI\$1KS\$1WS | Japanese-Unicode, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1Unicode\$1CS\$1AI\$1WS | Japanese-Unicode, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CS\$1AS | Japanese-Unicode, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CS\$1AS\$1KS | Japanese-Unicode, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1Unicode\$1CS\$1AS\$1KS\$1WS | Japanese-Unicode, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1Unicode\$1CS\$1AS\$1WS | Japanese-Unicode, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1100\$1BIN | Japanese-XJIS-100, 이진 정렬 | 
| Japanese\$1XJIS\$1100\$1BIN2 | Japanese-XJIS-100, 이진 코드 포인트 비교 정렬 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1SC | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1WS | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1WS\$1SC | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1SC | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1WS | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1WS\$1SC | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CI\$1AI\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1SC | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1WS | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1WS\$1SC | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1SC | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1WS | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1WS\$1SC | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CI\$1AS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1SC | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1WS | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1WS\$1SC | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1KS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1SC | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1WS | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1WS\$1SC | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CS\$1AI\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1SC | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1WS | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1WS\$1SC | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1KS\$1WS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1SC | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1SC\$1UTF8 | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Japanese\$1XJIS\$1100\$1CS\$1AS\$1WS | Japanese-XJIS-100, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분 | 
| Japanese\$1XJIS\$1140\$1BIN | Japanese-XJIS-140, 이진 정렬 | 
| Japanese\$1XJIS\$1140\$1BIN2 | Japanese-XJIS-140, 이진 코드 포인트 비교 정렬 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1VSS | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1WS | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1WS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1WS\$1VSS | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1VSS | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1WS | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1WS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1WS\$1VSS | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AI\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS | 일본어-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS | 일본어-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1UTF8 | 일본어-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1VSS | 일본어-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1VSS\$1UTF8 | 일본어-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1WS | 일본어-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1WS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1WS\$1VSS | 일본어-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1UTF8 | 일본어-XJIS-140, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1VSS | 일본어-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1WS | Japanese-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1WS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1WS\$1VSS | Japanese-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CI\$1AS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1VSS | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1WS | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1WS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1WS\$1VSS | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1VSS | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1WS | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1WS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1WS\$1VSS | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AI\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1VSS | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| 일본어\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS\$1VSS | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1VSS | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1WS | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1WS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분, UTF8 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1WS\$1VSS | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분 | 
| Japanese\$1XJIS\$1140\$1CS\$1AS\$1WS\$1VSS\$1UTF8 | Japanese-XJIS-140, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분, 보조 문자, 변형 선택기 구분, UTF8 | 
| Korean\$1Wansung\$1CI\$1AS | 한국어-완성형, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Latin1\$1General\$1100\$1BIN | 라틴어1-일반-100, 이진 정렬 | 
| Latin1\$1General\$1100\$1BIN2 | 라틴어1-일반-100, 이진 코드 포인트 비교 정렬 | 
| Latin1\$1General\$1100\$1BIN2\$1UTF8 | Latin1-General-100, 이진 코드 포인트 비교 정렬, UTF8 | 
| Latin1\$1General\$1100\$1CI\$1AS | 라틴어1-일반-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Latin1\$1General\$1100\$1CI\$1AS\$1SC\$1UTF8 | Latin1-General-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, UTF8 | 
| Latin1\$1General\$1BIN | 라틴어1-일반, 이진 정렬 | 
| Latin1\$1General\$1BIN2 | 라틴어1-일반, 이진 코드 포인트 비교 정렬 | 
| Latin1\$1General\$1CI\$1AI | 라틴어1-일반, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Latin1\$1General\$1CI\$1AS | 라틴어1-일반, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Latin1\$1General\$1CI\$1AS\$1KS | 라틴어1-일반, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분 | 
| Latin1\$1General\$1CS\$1AS | 라틴어1-일반, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| Modern\$1Spanish\$1CI\$1AS | 현대-스페인어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 
| SQL\$11xCompat\$1CP850\$1CI\$1AS | 라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 49 | 
| SQL\$1Latin1\$1General\$1CP1\$1CI\$1AI | 라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 1252의 SQL Server 정렬 순서 54 | 
| SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS | 라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 1252의 SQL Server 정렬 순서 52 | 
| SQL\$1Latin1\$1General\$1CP1\$1CS\$1AS | 라틴어1-일반, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 1252의 SQL Server 정렬 순서 51 | 
| SQL\$1Latin1\$1General\$1CP1250\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1250의 SQL Server 정렬 순서 82 | 
| SQL\$1Latin1\$1General\$1CP1250\$1CS\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1250의 SQL Server 정렬 순서 81 | 
| SQL\$1Latin1\$1General\$1CP1251\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1251의 SQL Server 정렬 순서 106 | 
| SQL\$1Latin1\$1General\$1CP1251\$1CS\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1251의 SQL Server 정렬 순서 105 | 
| SQL\$1Latin1\$1General\$1CP1253\$1CI\$1AI | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1253의 SQL Server 정렬 순서 124 | 
| SQL\$1Latin1\$1General\$1CP1253\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1253의 SQL Server 정렬 순서 114 | 
| SQL\$1Latin1\$1General\$1CP1253\$1CS\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1253의 SQL Server 정렬 순서 113 | 
| SQL\$1Latin1\$1General\$1CP1254\$1CI\$1AS | 터키어, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1254의 SQL Server 정렬 순서 130 | 
| SQL\$1Latin1\$1General\$1CP1254\$1CS\$1AS | 터키어, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1254의 SQL Server 정렬 순서 129 | 
| SQL\$1Latin1\$1General\$1CP1255\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1255의 SQL Server 정렬 순서 138 | 
| SQL\$1Latin1\$1General\$1CP1255\$1CS\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1255의 SQL Server 정렬 순서 137 | 
| SQL\$1Latin1\$1General\$1CP1256\$1CI\$1AS | 라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 1256의 SQL Server 정렬 순서 146 | 
| SQL\$1Latin1\$1General\$1CP1256\$1CS\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1256의 SQL Server 정렬 순서 145 | 
| SQL\$1Latin1\$1General\$1CP1257\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1257의 SQL Server 정렬 순서 154 | 
| SQL\$1Latin1\$1General\$1CP1257\$1CS\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1257의 SQL Server 정렬 순서 153 | 
| SQL\$1Latin1\$1General\$1CP437\$1BIN | Latin1-General, 유니코드 데이터의 경우 이진 정렬, 비유니코드 데이터의 경우 코드 페이지 437의 SQL Server 정렬 순서 30 | 
| SQL\$1Latin1\$1General\$1CP437\$1BIN2 | Latin1-General, 유니코드 데이터의 경우 이진 코드 포인트 비교 정렬, 비유니코드 데이터의 경우 코드 페이지 437의 SQL Server 정렬 순서 30 | 
| SQL\$1Latin1\$1General\$1CP437\$1CI\$1AI | 라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 437의 SQL Server 정렬 순서 34 | 
| SQL\$1Latin1\$1General\$1CP437\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 437의 SQL Server 정렬 순서 32 | 
| SQL\$1Latin1\$1General\$1CP437\$1CS\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 437의 SQL Server 정렬 순서 31 | 
| SQL\$1Latin1\$1General\$1CP850\$1BIN | Latin1-General, 유니코드 데이터의 경우 이진 정렬, 비유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 40 | 
| SQL\$1Latin1\$1General\$1CP850\$1BIN2 | 라틴어1-일반, 유니코드 데이터의 경우 이진 코드 포인트 비교, 비 유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 40 | 
| SQL\$1Latin1\$1General\$1CP850\$1CI\$1AI | 라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 44 | 
| SQL\$1Latin1\$1General\$1CP850\$1CI\$1AS | 라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 42 | 
| SQL\$1Latin1\$1General\$1CP850\$1CS\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 41 | 
| SQL\$1Latin1\$1General\$1Pref\$1CP1\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1252의 SQL Server 정렬 순서 53 | 
| SQL\$1Latin1\$1General\$1Pref\$1CP437\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 437의 SQL Server 정렬 순서 33 | 
| SQL\$1Latin1\$1General\$1Pref\$1CP850\$1CI\$1AS | Latin1-General, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 43 | 
| Thai\$1CI\$1AS | 프랑스어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분 | 

# RDS Custom for SQL Server DB 인스턴스의 현지 시간대
<a name="custom-reqs-limits-MS.TimeZone"></a>

RDS Custom for SQL Server DB 인스턴스의 시간대가 기본적으로 설정되어 있습니다. 현재 기본값은 협정 세계시(UTC)입니다. DB 인스턴스의 시간대를 애플리케이션의 시간대와 일치하도록 현지 시간대로 설정할 수 있습니다.

DB 인스턴스를 처음 만들 때 시간대를 설정합니다. [AWS Management Console](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html), Amazon RDS API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html.html) 작업 또는 AWS CLI [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 명령을 사용하여 DB 인스턴스를 생성할 수 있습니다.

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

시점 복원을 요청할 경우 복원 시간을 지정합니다. 시간은 현지 시간대로 표시됩니다. 자세한 내용은 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

다음은 DB 인스턴스에 대해 현지 시간대를 설정할 때 적용되는 제한 사항입니다.
+ 인스턴스 생성 중에 DB 인스턴스의 시간대를 구성할 수 있지만 기존 RDS Custom for SQL Server DB 인스턴스의 시간대는 수정할 수 없습니다.
+ 기존 RDS Custom for SQL Server DB 인스턴스의 시간대가 수정된 경우 RDS Custom은 DB 인스턴스 상태를 `unsupported-configuration`으로 변경하고 이벤트 알림을 보냅니다.
+ DB 인스턴스의 스냅샷을 다른 시간대의 DB 인스턴스로 복원할 수 없습니다.
+ 한 표준 시간대의 백업 파일을 다른 표준 시간대로 복원하지 않는 것이 좋습니다. 한 표준 시간대의 백업 파일을 다른 표준 시간대로 복원하는 경우 쿼리와 애플리케이션을 감사하여 표준 시간대 변경의 영향을 확인해야 합니다. 자세한 내용은 [기본 백업 및 복원 기능을 사용하여 SQL Server 데이터베이스 가져오기 및 내보내기](SQLServer.Procedural.Importing.md) 섹션을 참조하세요.

## 지원되는 시간대
<a name="custom-reqs-limits-MS.TimeZone.Zones"></a>

현지 시간대를 다음 표에 나열된 값 중 하나로 설정할 수 있습니다.


| 시간대 | 표준 시간 오프셋 | 설명 | 참고 | 
| --- | --- | --- | --- | 
| 아프가니스탄 표준시 | (UTC\$104:30) | 카불 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 알래스카 표준시 | (UTC–09:00) | 알래스카 |  | 
| 알류샨 표준시 | (UTC–10:00) | 알류샨 열도 |  | 
| 알타이 표준시 | (UTC\$107:00) | 바르나울, 고르노알타이스크 |  | 
| 아랍 표준시 | (UTC\$103:00) | 쿠웨이트, 리야드 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 아라비아 표준시 | (UTC\$104:00) | 아부다비, 무스카트 |  | 
| 아랍 표준시 | (UTC\$103:00) | 바그다드 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 아르헨티나 표준시 | (UTC–03:00) | 부에노스아이레스 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 아스트라한 표준시 | (UTC\$104:00) | 아스트라한, 울랴노브스크 |  | 
| 대서양 표준시 | (UTC–04:00) | 대서양 표준시(캐나다) |  | 
| AUS 중부 표준시 | (UTC\$109:30) | 다윈 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 오스트레일리아 중부 표준시 | (UTC\$108:45) | 유클라 |  | 
| AUS 동부 표준시 | (UTC\$110:00) | 캔버라, 멜버른, 시드니 |  | 
| 아제르바이잔 표준시 | (UTC\$104:00) | 바쿠 |  | 
| 아조레스 표준시 | (UTC–01:00) | 아조레스 |  | 
| 바이아 표준시 | (UTC–03:00) | 살바도르 |  | 
| 방글라데시 표준시 | (UTC\$106:00) | 다카 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 벨라루스 표준시 | (UTC\$103:00) | 민스크 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 부건빌 표준시 | (UTC\$111:00) | 부겐빌 섬 |  | 
| 캐나다 중부 표준시 | (UTC–06:00) | 서스캐처원 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 카포베르데 표준시 | (UTC–01:00) | 카포베르데 섬 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 코카서스 표준시 | (UTC\$104:00) | 예레반 |  | 
| 중부 오스트레일리아 표준시 | (UTC\$109:30) | 애들레이드 |  | 
| 중앙 아메리카 표준시 | (UTC–06:00) | 중앙 아메리카 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 중앙 아시아 표준시 | (UTC\$106:00) | 아스타나 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 브라질 중부 표준시 | (UTC–04:00) | 쿠이아바 |  | 
| 중앙 유럽 표준시 | (UTC\$101:00) | 베오그라드, 브라티슬라바, 부다페스트, 류블랴나, 프라하 |  | 
| 중앙 유럽 표준시 | (UTC\$101:00) | 사라예보, 스코페, 바르샤바, 자그레브 |  | 
| 중앙 태평양 표준시 | (UTC\$111:00) | 솔로몬 제도, 뉴칼레도니아 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 중부 표준시 | (UTC–06:00) | 중부 표준시(미국과 캐나다) |  | 
| 중부 표준시(멕시코) | (UTC–06:00) | 과달라하라, 멕시코 시티, 몬테레이 |  | 
| 채텀 섬 표준시 | (UTC\$112:45) | 채텀 섬 |  | 
| 중국 표준시 | (UTC\$108:00) | 베이징, 충칭, 홍콩 특별 행정구, 우루무치 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 쿠바 표준시 | (UTC–05:00) | 하바나 |  | 
| 날짜 변경선 표준시 | (UTC–12:00) | 날짜 변경선 서쪽 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| E. 아프리카 표준시 | (UTC\$103:00) | 나이로비 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| E. 오스트레일리아 표준시 | (UTC\$110:00) | 브리즈번 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| E. 유럽 표준시 | (UTC\$102:00) | 키시나우 |  | 
| E. 남아메리카 표준시 | (UTC–03:00) | 브라질리아 |  | 
| 이스터 섬 표준시 | (UTC–06:00) | 이스터 섬 |  | 
| 동부 표준시 | (UTC–05:00) | 동부 표준시(미국과 캐나다) |  | 
| 동부 표준시(멕시코) | (UTC–05:00) | 체투말 |  | 
| 이집트 표준시 | (UTC\$102:00) | 카이로 |  | 
| 예카테린부르크 표준시 | (UTC\$105:00) | 예카테린부르크 |  | 
| 피지 표준시 | (UTC\$112:00) | 피지 |  | 
| FLE 표준시 | (UTC\$102:00) | 헬싱키, 키예프, 리가, 소피아, 탈린, 빌뉴스 |  | 
| 그루지야 표준시 | (UTC\$104:00) | 트빌리시 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| GMT 표준시 | (UTC) | 더블린, 에든버러, 리스본, 런던 |  이 시간대는 그리니치 표준시(GMT)와 다릅니다. 이 시간대는 일광 절약 시간을 준수합니다. | 
| 그린란드 표준시 | (UTC–03:00) | 그린란드 |  | 
| 그리니치 표준시 | (UTC) | 몬로비아, 레이캬비크 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| GTB 표준시 | (UTC\$102:00) | 아테네, 부쿠레슈티 |  | 
| 아이티 표준시 | (UTC–05:00) | 아이티 |  | 
| 하와이 표준시 | (UTC–10:00) | 하와이 |  | 
| 인도 표준시 | (UTC\$105:30) | 첸나이, 콜카타, 뭄바이, 뉴델리 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 이란 표준시 | (UTC\$103:30) | 테헤란 |  | 
| 이스라엘 표준시 | (UTC\$102:00) | 예루살렘 |  | 
| 요르단 표준시 | (UTC\$102:00) | 암만 |  | 
| 칼리닌그라드 표준시 | (UTC\$102:00) | 칼리닌그라드 |  | 
| 캄차카 표준시 | (UTC\$112:00) | 페트로파블로프스크-캄차스키 – 이전 |  | 
| 대한민국 표준시 | (UTC\$109:00) | 서울 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 리비아 표준시 | (UTC\$102:00) | 트리폴리 |  | 
| 라인 제도 표준시 | (UTC\$114:00) | 키리티마티 섬 |  | 
| 로드하우 표준시 | (UTC\$110:30) | 로드하우 섬 |  | 
| 마가단 표준시 | (UTC\$111:00) | 마가단 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 마가야네스 표준시 | (UTC–03:00) | 푼타 아레나스 |  | 
| 마키저스 표준시 | (UTC–09:30) | 마르케사스 제도 |  | 
| 모리셔스 표준시 | (UTC\$104:00) | 포트루이스 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 중동 표준시 | (UTC\$102:00) | 베이루트 |  | 
| 몬테비데오 표준시 | (UTC–03:00) | 몬테비데오 |  | 
| 모로코 표준시 | (UTC\$101:00) | 카사블랑카 |  | 
| 산지 표준시 | (UTC–07:00) | 산지 표준시(미국과 캐나다) |  | 
| 산지 표준시(멕시코) | (UTC–07:00) | 치와와, 라파스, 마사틀란 |  | 
| 미얀마 표준시 | (UTC\$106:30) | 양곤(랑군) | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| N. 중앙 아시아 표준시 | (UTC\$107:00) | 노보시비르스크 |  | 
| 나미비아 표준시 | (UTC\$102:00) | 빈트후크 |  | 
| 네팔 표준시 | (UTC\$105:45) | 카트만두 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 뉴질랜드 표준시 | (UTC\$112:00) | 오클랜드, 웰링턴 |  | 
| 뉴펀들랜드 표준시 | (UTC–03:30) | 뉴펀들랜드 |  | 
| 노퍽 표준시 | (UTC\$111:00) | 노퍽 섬 |  | 
| 북아시아 동부 표준시 | (UTC\$108:00) | 이르쿠츠크 |  | 
| 북아시아 표준시 | (UTC\$107:00) | 크라스노야르스크 |  | 
| 북한 표준시 | (UTC\$109:00) | 평양 |  | 
| 옴스크 표준시 | (UTC\$106:00) | 옴스크 |  | 
| 태평양 SA 표준시 | (UTC–03:00) | 산티아고 |  | 
| 태평양 표준시 | (UTC–08:00) | 태평양 표준시(미국과 캐나다) |  | 
| 태평양 표준시(멕시코) | (UTC–08:00) | 바하 캘리포니아 |  | 
| 파키스탄 표준시 | (UTC\$105:00) | 이슬라마바드, 카라치 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 파라과이 표준시 | (UTC–04:00) | 아순시온 |  | 
| 로맨스 표준시 | (UTC\$101:00) | 브뤼셀, 코펜하겐, 마드리드, 파리 |  | 
| 러시아 표준 시간대 10 | (UTC\$111:00) | 초쿠르다흐 |  | 
| 러시아 표준 시간대 11 | (UTC\$112:00) | 아나디리, 페트로파블로프스크-캄차스키 |  | 
| 러시아 표준 시간대 3 | (UTC\$104:00) | 이젭스크, 사마라 |  | 
| 러시아 표준시 | (UTC\$103:00) | 모스크바, 상트페테르부르크, 볼고그라드 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| SA 동부 표준시 | (UTC–03:00) | 카옌, 포르탈레자 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 태평양 SA 표준시 | (UTC–05:00) | 보고타, 리마, 키토, 리오 브랑코 |  이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| SA 서부 표준시 | (UTC–04:00) | 조지타운, 라파스, 마노스, 산후안 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 생피에르 표준시 | (UTC–03:00) | 세인트 피에르 미켈론 |  | 
| 사할린 표준시 | (UTC\$111:00) | 사할린 |  | 
| 사모아 표준시 | (UTC\$113:00) | 사모아 |  | 
| 상투메 표준시 | (UTC\$101:00) | 상투메 |  | 
| 사라토프 표준시 | (UTC\$104:00) | 사라토프 |  | 
| 동남아시아 표준시 | (UTC\$107:00) | 방콕, 하노이, 자카르타 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 싱가포르 표준시 | (UTC\$108:00) | 쿠알라룸푸르, 싱가포르 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 남아프리카 표준시 | (UTC\$102:00) | 하라레, 프리토리아 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 스리랑카 표준시 | (UTC\$105:30) | 스리자야와르데네푸라 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 수단 표준시 | (UTC\$102:00) | 하르툼 |  | 
| 시리아 표준시 | (UTC\$102:00) | 다마스쿠스 |  | 
| 타이베이 표준시 | (UTC\$108:00) | 타이베이 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 태즈메이니아 표준시 | (UTC\$110:00) | 호바트 |  | 
| 토칸틴스 표준시 | (UTC–03:00) | 아라구아이나 |  | 
| 도쿄 표준시 | (UTC\$109:00) | 오사카, 삿포로, 도쿄 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 톰스크 표준시 | (UTC\$107:00) | 톰스크 |  | 
| 통가 표준시 | (UTC\$113:00) | 누쿠알로파 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 트란스바이칼 표준시 | (UTC\$109:00) | 치타 |  | 
| 터키 표준시 | (UTC\$103:00) | 이스탄불 |  | 
| 터크스 케이커스 표준시 | (UTC–05:00) | 터크스 케이커스 |  | 
| 울란바토르 표준시 | (UTC\$108:00) | 울란바토르 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 미국 동부 표준시 | (UTC–05:00) | 인디애나(동부) |  | 
| 미국 산지 표준시 | (UTC–07:00) | 애리조나 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| UTC | UTC | 협정 세계시 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| UTC–02 | (UTC–02:00) | 협정 세계시–02 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| UTC–08 | (UTC–08:00) | 협정 세계시–08 |  | 
| UTC–09 | (UTC–09:00) | 협정 세계시–09 |  | 
| UTC–11 | (UTC–11:00) | 협정 세계시–11 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| UTC\$112 | (UTC\$112:00) | 협정 세계시\$112 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| UTC\$113 | (UTC\$113:00) | 협정 세계시\$113 |  | 
| 베네수엘라 표준시 | (UTC–04:00) | 카라카스 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 블라디보스토크 표준시 | (UTC\$110:00) | 블라디보스토크 |  | 
| 볼고그라드 표준시 | (UTC\$104:00) | 볼고그라드 |  | 
| W. 오스트레일리아 표준시 | (UTC\$108:00) | 퍼스 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| W. 중앙 아프리카 표준시 | (UTC\$101:00) | 서중앙 아프리카 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| W. 유럽 표준시 | (UTC\$101:00) | 암스테르담, 베를린, 베른, 로마, 스톡홀름, 비엔나 |  | 
| W. 몽골 표준시 | (UTC\$107:00) | 호브드 |  | 
| 서아시아 표준시 | (UTC\$105:00) | 아슈하바트, 타슈켄트 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 웨스트 뱅크 표준시 | (UTC\$102:00) | 가자, 헤브론 |  | 
| 서태평양 표준시 | (UTC\$110:00) | 괌, 포트모르즈비 | 이 시간대는 일광 절약 시간을 준수하지 않습니다. | 
| 야쿠츠크 표준시 | (UTC\$109:00) | 야쿠츠크 |  | 

# RDS Custom for SQL Server에서 Service Master Key 사용
<a name="custom-sqlserver-features.smk"></a>

RDS Custom for SQL Server는 Service Master Key(SMK) 사용을 지원합니다. RDS Custom은 RDS Custom for SQL Server DB 인스턴스의 수명 주기 내내 동일한 SMK를 유지합니다. 동일한 SMK를 유지함으로써 DB 인스턴스는 연결된 서버 암호 및 보안 인증 정보와 같이 SMK로 암호화된 객체를 사용할 수 있습니다. 다중 AZ 배포를 사용하는 경우 RDS Custom은 기본 및 보조 DB 인스턴스 간에 SMK를 동기화하고 유지 관리합니다.

**Topics**
+ [리전 및 버전 사용 가능 여부](#custom-sqlserver-features.smk.list)
+ [지원되는 기능](#custom-sqlserver-features.smk.supportedfeatures)
+ [TDE 사용](#custom-sqlserver-features.smk.tde)
+ [기능 구성](#custom-sqlserver-features.smk.configuringfeatures)
+ [요구 사항 및 제한 사항](#custom-sqlserver-features.smk.reqlimits)

## 리전 및 버전 사용 가능 여부
<a name="custom-sqlserver-features.smk.list"></a>

RDS Custom for SQL Server를 사용하는 모든 리전에서 SMK 사용이 지원되며, RDS Custom에서 제공되는 모든 SQL Server 버전에서 사용할 수 있습니다. RDS Custom for SQL Server에서 사용할 수 있는 Amazon RDS의 버전 및 리전에 대한 자세한 내용은 [RDS Custom for SQL Server를 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq) 섹션을 참조하세요.

## 지원되는 기능
<a name="custom-sqlserver-features.smk.supportedfeatures"></a>

RDS Custom for SQL Server에서 SMK를 사용하는 경우 다음과 같은 기능이 지원됩니다.
+ TDE(Transparent Data Encryption)
+ 열 수준 암호화
+ 데이터베이스 메일
+ 연결된 서버
+ SSIS(SQL Server Integration Services)

## TDE 사용
<a name="custom-sqlserver-features.smk.tde"></a>

SMK를 사용하면 스토리지에 데이터를 쓰기 전에 데이터를 암호화한 뒤에 데이터를 스토리지에서 읽을 때 다시 자동으로 해독하는 투명한 데이터 암호화(TDE)를 구성할 수 있습니다. RDS for SQL Server와 달리 RDS Custom for SQL Server DB 인스턴스에서 TDE를 구성할 때 옵션 그룹을 사용할 필요가 없습니다. 대신 인증서와 데이터베이스 암호화 키를 생성한 후 다음 명령을 실행하여 데이터베이스 수준에서 TDE를 활성화할 수 있습니다.

```
ALTER DATABASE [myDatabase] SET ENCRYPTION ON;
```

 RDS for SQL Server와 함께 TDE를 사용하는 방법에 대한 자세한 내용은 [SQL Server에서 TDE(투명한 데이터 암호화) 지원](Appendix.SQLServer.Options.TDE.md) 섹션을 확인하세요.

 Microsoft SQL Server의 TDE에 대한 자세한 내용은 Microsoft 설명서의 [투명한 데이터 암호화](https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption?view=sql-server-ver15)를 참조하세요.

## 기능 구성
<a name="custom-sqlserver-features.smk.configuringfeatures"></a>

RDS Custom for SQL Server에서 SMK를 사용하는 기능을 구성하는 자세한 단계는 Amazon RDS 데이터베이스 블로그의 다음 게시물을 참조하세요.
+ 연결된 서버: [RDS Custom for SQL Server에서 연결된 서버 구성](https://aws.amazon.com/blogs/database/configure-linked-servers-on-amazon-rds-custom-for-sql-server/).
+ SSIS: [SSIS 패키지를 RDS Custom for SQL Server로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-microsoft-sql-server-ssis-packages-to-amazon-rds-custom-for-sql-server/).
+ TDE: [RDS Custom for SQL Server에서 TDE를 사용하여 데이터 보호](https://aws.amazon.com/blogs/database/secure-your-data-at-rest-on-amazon-rds-custom-for-sql-server-using-transparent-data-encryption-tde-or-column-level-encryption-cle/).

## 요구 사항 및 제한 사항
<a name="custom-sqlserver-features.smk.reqlimits"></a>

RDS Custom for SQL Server DB 인스턴스와 함께 SMK를 사용하는 경우 다음과 같은 요구 사항 및 제한 사항을 염두에 두세요.
+ DB 인스턴스에서 SMK를 재생성하는 경우 즉시 수동 DB 스냅샷을 생성해야 합니다. 가능하면 SMK를 다시 생성하지 않는 것이 좋습니다.
+ 서버 인증서 및 데이터베이스 마스터 키 암호의 백업을 유지해야 합니다. 이러한 백업을 유지 관리하지 않으면 데이터가 손실될 수 있습니다.
+ SSIS를 구성하는 경우 컴퓨팅 규모 조정 또는 호스트 교체 시 SSM 문서를 사용하여 RDS Custom for SQL Server DB 인스턴스를 도메인에 조인해야 합니다.
+ TDE 또는 열 암호화가 활성화되면 데이터베이스 백업이 자동으로 암호화됩니다. 스냅샷 복원 또는 특정 시점 복구를 수행하면 소스 DB 인스턴스의 SMK가 복원되어 복원에 필요한 데이터를 해독하고 복원된 인스턴스의 데이터를 다시 암호화하기 위해 새 SMK가 생성됩니다.

 Microsoft SQL Server의 Service Master Key에 대한 자세한 내용은 Microsoft 설명서의 [SQL Server 및 데이터베이스 암호화 키](https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/sql-server-and-database-encryption-keys-database-engine?view=sql-server-ver15)를 참조하세요.

# RDS Custom for SQL Server에서 변경 데이터 캡처(CDC) 지원
<a name="custom-sqlserver-features.cdc"></a>

## 개요
<a name="custom-sqlserver-features.cdc.overview"></a>

RDS Custom for SQL Server는 변경 데이터 캡처(CDC)에 대한 기본 지원을 제공하므로 SQL Server 테이블에서 데이터 수정 사항을 추적하고 캡처할 수 있습니다. CDC는 후속 검색 및 분석을 위해 이러한 변경 사항에 대한 자세한 메타데이터를 저장합니다. CDC 기능에 대한 자세한 내용은 Microsoft 설명서의 [Change data capture](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture)를 참조하세요.

SQL Server에서 CDC 작업을 수행하려면 `sys.servers`의 *로컬 서버*(`server_id` = 0인 로컬 서버)와 `SERVERPROPERTY('ServerName')` 식별자 간에 일치하는 값이 필요합니다. RDS Custom for SQL Server는 인스턴스의 수명 주기 동안 이 동기화를 자동으로 유지하여 유지 관리 또는 복구 작업 중에 호스트가 교체되더라도 지속적인 CDC 작동을 보장합니다.

**중요**  
다중 AZ 인스턴스 장애 조치 후 `SERVERPROPERTY('Servername')` 함수는 네트워크/컴퓨터 이름의 변경 사항을 자동으로 반영합니다. 그러나 `@@SERVERNAME` 함수는 `MSSQLSERVER` 서비스가 다시 시작될 때까지 이전 서버 이름을 유지합니다. @@SERVERNAME 쿼리는 장애 조치 후 이전 서버 이름을 반환합니다. 장애 조치 후 정확한 서버 이름을 얻으려면 다음 SQL 쿼리를 사용하세요.  

```
SELECT name FROM sys.servers WHERE server_id=0
```
이 쿼리는 서비스를 다시 시작할 필요 없이 최신 서버 이름 정보를 제공합니다.

## 리전 및 버전 사용 가능 여부
<a name="custom-sqlserver-features.cdc.regionAvail"></a>

CDC 기능은 RDS Custom for SQL Server를 사용할 수 있는 모든 AWS 리전과 RDS Custom에서 지원하는 모든 SQL Server 버전에서 지원됩니다. RDS Custom for SQL Server가 지원되는 버전 및 리전에 대한 자세한 내용은 [RDS Custom for SQL Server를 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq) 섹션을 참조하세요.

## 요구 사항 및 제한 사항
<a name="custom-sqlserver-features.cdc.reqsLims"></a>

RDS Custom for SQL Server에서 CDC를 구현할 때는 다음 주요 고려 사항에 유의하세요.
+ MS Replication과 같은 기능을 사용하도록 `sys.servers`에서 `@@SERVERNAME` 및/또는 *로컬 서버*를 수동으로 설정한 경우 `sys.servers`의 로컬 서버(`server_id = 0`이 있는 로컬 서버) 값이 `*.rds.amazonaws.com` 또는 `*.awsrds.*.com`과 일치하는 형식으로 설정했다면 RDS Custom for SQL Server는 `SERVERPROPERTY('ServerName')`와 일치하도록 수정을 시도하지 않습니다.
+ 원격 로그인 또는 연결된 서버가 이전 호스트 이름을 적극적으로 사용하는 동안에는 RDS가 `sys.servers`의 로컬 서버(`server_id = 0`가 있는 로컬 서버)를 새 호스트 이름으로 수정할 수 없습니다. 이 제한은 두 가지 시나리오에 적용됩니다.
  + 연결된 서버가 이전 호스트 이름과 연결된 원격 로그인을 사용하여 로컬 서버에 대한 연결을 설정하는 경우
  + RDS Custom for SQL Server 인스턴스가 게시자 또는 배포자 역할을 하고 이전 호스트 이름과 연결된 로그인을 구독자 인스턴스에 연결한 경우

## 문제 해결
<a name="custom-sqlserver-features.cdc.Troubleshooting"></a>

이전 서버 이름과 연결된 원격 로그인 또는 연결된 로그인을 식별하려면 다음 쿼리를 사용하세요. 적절한 CDC 기능을 보장하려면 결과를 검증하고 이러한 로그인을 제거하세요.

```
SELECT * FROM sys.remote_logins WHERE server_id=0
```

or

```
select sss.srvname,ssp.name,srl.remote_name  from sys.server_principals ssp 
inner join sys.remote_logins srl on srl.local_principal_id=ssp.principal_id
inner join sys.sysservers sss  on srl.server_id = sss.srvid
where sss.srvname = @@SERVERNAME
```

# Amazon RDS Custom for SQL Server를 위한 환경 설정
<a name="custom-setup-sqlserver"></a>

Amazon RDS Custom for SQL Server DB 인스턴스용 DB 인스턴스를 생성하고 관리하기 전에 다음 작업을 수행해야 합니다.

**Contents**
+ [RDS Custom for SQL Server 설정에 필요한 사전 조건](#custom-setup-sqlserver.review)
  + [AWS Management Console을 사용한 자동 인스턴스 프로파일 생성](#custom-setup-sqlserver.instanceProfileCreation)
+ [1단계: IAM 보안 주체에 필요한 권한 부여](#custom-setup-sqlserver.iam-user)
+ [2단계: 네트워킹, 인스턴스 프로파일 및 암호화 구성](#custom-setup-sqlserver.iam-vpc)
  + [CloudFormation을 사용한 구성](#custom-setup-sqlserver.cf)
    + [CloudFormation에 필요한 파라미터](#custom-setup-sqlserver.cf.params)
    + [CloudFormation 템플릿 파일 다운로드](#custom-setup-sqlserver.cf.download)
    + [CloudFormation을 사용하여 리소스 구성](#custom-setup-sqlserver.cf.config)
  + [수동으로 구성](#custom-setup-sqlserver.manual)
    + [대칭 암호화 AWS KMS 키 보유 여부 확인](#custom-setup-sqlserver.cmk)
    + [수동으로 IAM 역할과 인스턴스 프로파일 생성](#custom-setup-sqlserver.iam)
      + [AWSRDSCustomSQLServerInstanceRole IAM 역할 생성](#custom-setup-sqlserver.iam.create-role)
      + [AWSRDSCustomSQLServerInstanceRole에 액세스 정책 추가](#custom-setup-sqlserver.iam.add-policy)
      + [RDS Custom for SQL Server 인스턴스 프로파일 생성](#custom-setup-sqlserver.iam.create-profile)
      + [RDS Custom for SQL Server 인스턴스 프로파일에 AWSRDSCustomSQLServerInstanceRole 추가](#custom-setup-sqlserver.iam.add-profile)
    + [VPC 수동 구성](#custom-setup-sqlserver.vpc)
      + [VPC 보안 그룹 구성](#custom-setup-sqlserver.vpc.sg)
      + [종속 AWS 서비스의 엔드포인트 구성](#custom-setup-sqlserver.vpc.endpoints)
      + [인스턴스 메타데이터 서비스 구성](#custom-setup-sqlserver.vpc.imds)
+ [크로스 인스턴스 제한 사항](#custom-setup-sqlserver.cross-instance-restriction)

**참고**  
사전 조건을 설정하고 Amazon RDS Custom for SQL Server를 시작하는 방법에 대한 단계별 튜토리얼을 보려면 [Get started with Amazon RDS Custom for SQL Server using an CloudFormation template (Network setup)](https://aws.amazon.com/blogs/database/get-started-with-amazon-rds-custom-for-sql-server-using-an-aws-cloudformation-template-network-setup/) 및 [ Explore the prerequisites required to create an Amazon RDS Custom for SQL Server instance](https://aws.amazon.com/blogs/database/explore-the-prerequisites-required-to-create-an-amazon-rds-custom-for-sql-server-instance/)를 참조하세요.

## RDS Custom for SQL Server 설정에 필요한 사전 조건
<a name="custom-setup-sqlserver.review"></a>

RDS Custom for SQL Server DB 인스턴스를 생성하기 전에 환경이 이 주제에 설명된 요구 사항을 충족하는지 확인합니다. CloudFormation 템플릿을 사용하여 AWS 계정 내에서 사전 조건을 설정할 수도 있습니다. 자세한 내용은 [CloudFormation을 사용한 구성](#custom-setup-sqlserver.cf) 섹션을 참조하세요.

RDS Custom for SQL Server를 사용하려면 다음과 같은 사전 조건을 구성해야 합니다.
+ 인스턴스 생성에 필요한 AWS Identity and Access Management(IAM) 권한을 구성합니다. RDS에 `create-db-instance` 요청을 수행하는 데 필요한 AWS Identity and Access Management(IAM) 사용자 또는 역할입니다.
+ RDS Custom for SQL Server DB 인스턴스에서 요구하는 사전 조건 리소스를 구성합니다.
  + RDS Custom 인스턴스의 암호화에 필요한 AWS KMS 키를 구성합니다. RDS Custom을 사용하려면 인스턴스 생성 시 암호화를 위한 고객 관리형 키가 필요합니다. RDS Custom DB 인스턴스 생성 요청 시 KMS 키 ARN, ID, 별칭 ARN 또는 별칭 이름이 `kms-key-id` 파라미터로 전달됩니다.
  + RDS Custom for SQL Server DB 인스턴스 내에서 필요한 권한을 구성합니다. RDS Custom은 DB 인스턴스 생성 시 인스턴스 프로파일을 DB 인스턴스에 연결하고 이를 DB 인스턴스 내 자동화에 사용합니다. 인스턴스 프로파일 이름은 RDS Custom 생성 요청에서 `custom-iam-instance-profile`로 설정됩니다. AWS Management Console에서 인스턴스 프로파일을 생성하거나 인스턴스 프로파일을 수동으로 생성할 수 있습니다. 자세한 내용은 [AWS Management Console을 사용한 자동 인스턴스 프로파일 생성](#custom-setup-sqlserver.instanceProfileCreation) 및 [수동으로 IAM 역할과 인스턴스 프로파일 생성](#custom-setup-sqlserver.iam)(을)를 참조하세요.
  + RDS Custom for SQL Server의 요구 사항에 따라 네트워킹 설정을 구성합니다. RDS Custom 인스턴스는 인스턴스 생성 시 제공하는 서브넷(DB 서브넷 그룹으로 구성)에 있습니다. 이러한 서브넷은 RDS Custom 인스턴스가 RDS 자동화에 필요한 서비스와 통신할 수 있도록 허용해야 합니다.

**참고**  
위에서 언급한 요구 사항에 대해 계정 수준 권한을 제한하는 서비스 제어 정책(SCP)이 없어야 합니다.  
사용 중인 계정이 AWS Organization의 일부인 경우 계정 수준 권한을 제한하는 서비스 제어 정책(SCP)이 있을 수 있습니다. SCP가 다음 절차를 사용하여 생성한 사용자 및 역할에 대한 권한을 제한하지 않도록 합니다.  
SCP에 대한 자세한 내용은 *AWS Organizations 사용 설명서*에서 [서비스 제어 정책(SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)을 참조하세요. [describe-organization](https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organization.html) AWS CLI 명령을 사용하여 계정이 AWS Organization의 일부인지 확인합니다.  
AWS Organizations에 대한 자세한 내용을 알아보려면 *AWS Organizations Organizations 사용 설명서*의 [AWS Organizations란 무엇입니까?](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)를 참조하세요.

RDS Custom for SQL Server에 적용되는 일반 요구 사항은 [RDS Custom for SQL Server 일반 요구 사항](custom-reqs-limits-MS.md#custom-reqs-limits.reqsMS) 섹션을 참조하세요.

### AWS Management Console을 사용한 자동 인스턴스 프로파일 생성
<a name="custom-setup-sqlserver.instanceProfileCreation"></a>

RDS Custom을 사용하여 RDS Custom for SQL Server DB 인스턴스를 시작하려면 인스턴스 프로파일을 생성하고 구성해야 합니다. AWS Management Console을 사용하면 한 번에 새 인스턴스 프로파일을 만들고 연결할 수 있습니다. 이 옵션은 **데이터베이스 생성**, **스냅샷 복원** 및 **특정 시점으로 복원** 콘솔 페이지의 RDS Custom 보안 섹션에서 사용할 수 있습니다. **새 인스턴스 프로파일 생성**을 선택하여 인스턴스 프로파일 이름 접미사를 제공합니다. AWS Management Console은 RDS Custom 자동화 작업에 필요한 권한이 있는 새 인스턴스 프로파일을 생성합니다. 새 인스턴스 프로파일을 자동으로 만들려면 로그인한 AWS Management Console 사용자에게 `iam:CreateInstanceProfile`, `iam:AddRoleToInstanceProfile`, `iam:CreateRole` 및 `iam:AttachRolePolicy` 권한이 있어야 합니다.

**참고**  
이 옵션은 AWS Management Console에서만 사용할 수 있습니다. CLI 또는 SDK를 사용하는 경우 RDS Custom 제공 CloudFormation 템플릿을 사용하거나 인스턴스 프로파일을 수동으로 생성하세요. 자세한 내용은 [수동으로 IAM 역할과 인스턴스 프로파일 생성](#custom-setup-sqlserver.iam) 섹션을 참조하세요.

## 1단계: IAM 보안 주체에 필요한 권한 부여
<a name="custom-setup-sqlserver.iam-user"></a>

RDS Custom 인스턴스를 생성하기에 충분한 액세스 권한을 가지고 있는지 확인하세요. 콘솔 또는 CLI를 사용하여 RDS Custom for SQL Server DB 인스턴스를 생성하는 데 필요한 IAM 역할 또는 IAM 사용자(**IAM 보안 주체라고 함)는 DB 인스턴스를 성공적으로 생성하기 위해 다음 정책 중 하나를 가지고 있어야 합니다.
+ `AdministratorAccess` 정책
+ 다음과 같은 추가 권한이 있는 `AmazonRDSFullAccess` 정책:

  ```
  iam:SimulatePrincipalPolicy
  cloudtrail:CreateTrail
  cloudtrail:StartLogging
  s3:CreateBucket
  s3:PutBucketPolicy
  s3:PutBucketObjectLockConfiguration
  s3:PutBucketVersioning 
  kms:CreateGrant
  kms:DescribeKey
  kms:Decrypt
  kms:ReEncryptFrom
  kms:ReEncryptTo
  kms:GenerateDataKeyWithoutPlaintext
  kms:GenerateDataKey
  ec2:DescribeImages
  ec2:RunInstances
  ec2:CreateTags
  ```

  RDS Custom은 인스턴스 생성 시 이러한 권한을 사용합니다. 이러한 권한은 RDS Custom 작업에 필요한 리소스를 계정에 구성합니다.

  `kms:CreateGrant` 권한에 대한 자세한 내용은 [AWS KMS key 관리](Overview.Encryption.Keys.md) 섹션을 참조하세요.

다음 샘플 JSON 정책은 필요한 권한을 부여합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ValidateIamRole",
            "Effect": "Allow",
            "Action": "iam:SimulatePrincipalPolicy",
            "Resource": "*"
        },
        {
            "Sid": "CreateCloudTrail",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:CreateTrail",
                "cloudtrail:StartLogging"
            ],
            "Resource": "arn:aws:cloudtrail:*:*:trail/do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketPolicy",
                "s3:PutBucketObjectLockConfiguration",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateKmsGrant",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}
```

------

IAM 보안 주체가 사용자 지정 엔진 버전(CEV)을 사용하려면 다음과 같은 추가 권한이 필요합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfigureKmsKeyEncryptionPermission",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo",
                "kms:GenerateDataKeyWithoutPlaintext",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key_id"
        },
        {
            "Sid": "CreateEc2Instance",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeImages",
                "ec2:RunInstances",
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

인스턴스를 생성할 때 사용하는 계정의 ID로 *111122223333*을 바꿉니다. 인스턴스를 생성할 때 사용하는 AWS 리전으로 *us-east-1*을 바꿉니다. 고객 관리형 키 ID로 *key\$1id*를 바꿉니다. 필요에 따라 키를 여러 개 추가할 수 있습니다.

EC2 인스턴스를 시작하는 데 필요한 리소스 수준 권한에 대한 자세한 내용은 [인스턴스 실행(RunInstances)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-runinstances)을 참조하세요.

또한 IAM 보안 주체는 IAM 역할에 `iam:PassRole` 권한이 필요합니다. RDS Custom DB 인스턴스를 생성하려면 요청의 `custom-iam-instance-profile` 파라미터에 전달된 인스턴스 프로파일에 첨부해야 합니다. 인스턴스 프로파일과 연결된 역할은 나중에 [2단계: 네트워킹, 인스턴스 프로파일 및 암호화 구성](#custom-setup-sqlserver.iam-vpc)에서 생성됩니다.

**참고**  
서비스 제어 정책(SCP), 권한 경계 또는 IAM 보안 주체와 연결된 세션 정책에서 이전에 나열된 권한을 제한하지 않는지 확인합니다.

## 2단계: 네트워킹, 인스턴스 프로파일 및 암호화 구성
<a name="custom-setup-sqlserver.iam-vpc"></a>

다음 프로세스 중 하나를 사용하여 IAM 인스턴스 프로파일 역할, Virtual Private Cloud(VPC) 및 AWS KMS 대칭 암호화 키를 구성할 수 있습니다.
+ [CloudFormation을 사용한 구성](#custom-setup-sqlserver.cf) (권장)
+ [수동으로 구성](#custom-setup-sqlserver.manual)

**참고**  
계정이 AWS Organizations에 속한 경우 서비스 제어 정책(SCP)에서 인스턴스 프로파일 역할에 필요한 권한을 제한하지 않는지 확인해야 합니다.  
이 주제의 네트워킹 구성은 공개적으로 액세스할 수 없는 DB 인스턴스에서 가장 잘 작동하도록 설계되었습니다. VPC 외부에서 이러한 DB 인스턴스에 직접 연결할 수 없습니다.

### CloudFormation을 사용한 구성
<a name="custom-setup-sqlserver.cf"></a>

설정을 간소화하기 위해 CloudFormation 템플릿 파일을 사용하여 CloudFormation 스택을 만들 수 있습니다. CloudFormation 템플릿은 RDS Custom의 요구 사항에 따라 모든 네트워킹, 인스턴스 프로파일, 암호화 리소스를 생성합니다.

스택을 생성하는 방법은 *CloudFormation 사용 설명서*의 [CloudFormation 콘솔에서 스택 생성](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)을 참조하세요.

CloudFormation 템플릿을 사용하여 Amazon RDS Custom for SQL Server를 시작하는 방법에 대한 자습서는 *AWS 데이터베이스 블로그*에서 [CloudFormation 템플릿을 사용하여 Amazon RDS Custom for SQL Server 시작하기](https://aws.amazon.com/blogs/database/get-started-with-amazon-rds-custom-for-sql-server-using-an-aws-cloudformation-template-network-setup/)를 참조하세요.

**Topics**
+ [CloudFormation에 필요한 파라미터](#custom-setup-sqlserver.cf.params)
+ [CloudFormation 템플릿 파일 다운로드](#custom-setup-sqlserver.cf.download)
+ [CloudFormation을 사용하여 리소스 구성](#custom-setup-sqlserver.cf.config)

#### CloudFormation에 필요한 파라미터
<a name="custom-setup-sqlserver.cf.params"></a>

CloudFormation으로 RDS Custom 사전 조건 리소스를 구성하려면 다음 파라미터가 필요합니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)

#### CloudFormation으로 생성된 리소스
<a name="custom-setup-sqlserver.cf.list"></a>

기본 설정을 사용하여 CloudFormation 스택을 성공적으로 생성하면 AWS 계정에 다음 리소스가 생성됩니다.
+ RDS Custom에서 관리하는 데이터의 암호화를 위한 대칭 암호화 KMS 키입니다.
+ 인스턴스 프로파일은 RDS Custom에서 요구하는 권한을 제공하기 위해 `AmazonRDSCustomInstanceProfileRolePolicy`를 통해 IAM 역할에 연결됩니다. 자세한 내용은 **AWS 관리형 정책 참조 안내서의 [AmazonRDSCustomServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSCustomServiceRolePolicy.html)를 참조하세요.
+ CIDR 범위가 CloudFormation 파라미터로 지정된 VPC입니다. 기본값은 `10.0.0.0/16`입니다.
+ 파라미터에 CIDR 범위가 지정된 2개의 프라이빗 서브넷과 AWS 리전에 있는 2개의 서로 다른 가용 영역입니다. 서브넷 CIDR의 기본값은 `10.0.128.0/20` 및 `10.0.144.0/20`입니다.
+ 파라미터에 CIDR 범위가 지정된 퍼블릭 서브넷 1개. 서브넷 CIDR의 기본값은 10.0.0.0/20입니다. EC2 인스턴스는 이 서브넷에 있으며 RDS Custom 인스턴스에 연결하는 데 사용할 수 있습니다.
+ Amazon 도메인 이름 시스템(DNS) 서버에 대한 도메인 이름 확인 기능이 있는 VPC에 설정된 DHCP 옵션입니다.
+ 2개의 프라이빗 서브넷과 연결되며 인터넷에 액세스할 수 없는 라우팅 테이블입니다.
+ 퍼블릭 서브넷과 연결되며 인터넷에 액세스할 수 있는 라우팅 테이블
+ 퍼블릭 서브넷에 대한 인터넷 액세스를 허용하기 위해 VPC와 연결되는 인터넷 게이트웨이
+ 두 프라이빗 서브넷과 연결되는 네트워크 액세스 제어 목록(ACL)과 HTTPS와 VPC 내의 DB 포트로 제한된 액세스
+ RDS Custom 인스턴스와 연결할 VPC 보안 그룹입니다. 아웃바운드 HTTPS의 경우 RDS Custom과 EC2 인스턴스 보안 그룹의 인바운드 DB 포트에 필요한 AWS 서비스 엔드포인트로 액세스가 제한됩니다.
+ 퍼블릭 서브넷의 EC2 인스턴스에 연결되는 VPC 보안 그룹. 아웃바운드 DB 포트의 경우 액세스가 RDS Custom 인스턴스 보안 그룹으로 제한됩니다.
+ RDS Custom에 필요한 AWS 서비스 엔드포인트에 대해 생성된 VPC 엔드포인트와 연결할 VPC 보안 그룹입니다.
+ RDS Custom 인스턴스가 생성되는 DB 서브넷 그룹입니다. 이 템플릿으로 생성된 2개의 프라이빗 서브넷이 DB 서브넷 그룹에 추가됩니다.
+ RDS Custom에 필요한 각 AWS 서비스 엔드포인트에 대한 VPC 엔드포인트입니다.

가용성 구성을 multi-az로 설정하면 위 목록 외에도 다음과 같은 리소스가 생성됩니다.
+ 프라이빗 서브넷 간 통신을 허용하는 네트워크 ACL 규칙
+ RDS Custom 인스턴스와 연결된 VPC 보안 그룹 내 다중 AZ 포트에 대한 인바운드 및 아웃바운드 액세스
+ 다중 AZ 통신에 필요한 AWS 서비스 엔드포인트로의 VPC 엔드포인트 연결

또한 RDP 액세스 구성을 설정하면 다음과 같은 리소스가 생성됩니다.
+ 소스 IP 주소에서 퍼블릭 서브넷에 대한 RDP 액세스 구성:
  + 소스 IP에서 퍼블릭 서브넷으로의 RDP 연결을 허용하는 네트워크 ACL 규칙
  + 소스 IP에서 EC2 인스턴스와 연결된 VPC 보안 그룹으로의 RDP 포트 인그레스 액세스
+ 퍼블릭 서브넷의 EC2 인스턴스에서 프라이빗 서브넷의 RDS Custom 인스턴스로의 RDP 액세스 구성:
  + 퍼블릭 서브넷에서 프라이빗 서브넷으로의 RDP 연결을 허용하는 네트워크 ACL 규칙
  + EC2 인스턴스와 연결된 VPC 보안 그룹에서 RDS Custom 인스턴스와 연결된 VPC 보안 그룹으로의 RDP 포트에 대한 인바운드 액세스

다음 절차에 따라 RDS Custom for SQL Server용 CloudFormation 스택을 생성합니다.

#### CloudFormation 템플릿 파일 다운로드
<a name="custom-setup-sqlserver.cf.download"></a>

**템플릿 파일을 다운로드하려면**

1. [custom-sqlserver-onboard.zip](samples/custom-sqlserver-onboard.zip) 링크의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 열고 **Save Link As**(다른 이름으로 링크 저장)를 선택합니다.

1. 파일을 컴퓨터에 저장하고 압축을 풉니다.

#### CloudFormation을 사용하여 리소스 구성
<a name="custom-setup-sqlserver.cf.config"></a>

**CloudFormation을 사용하여 리소스를 구성하려면**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 스택 생성 마법사를 시작하려면 **스택 생성(Create Stack)**을 선택합니다.

   **스택 생성(Create Stack)** 페이지가 표시됩니다.

1. **사전 조건 - 템플릿 준비(Prerequisite - Prepare template)**에서 **템플릿 준비 완료**를 선택합니다.

1. **템플릿 지정(Specify template)**에서 다음 작업을 수행합니다.

   1. **템플릿 소스**로 **템플릿 파일 업로드**를 선택합니다.

   1. **파일 선택**에서 올바른 파일을 찾아 선택합니다.

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

   **스택 세부 정보 지정(Specify stack details)** 페이지가 나타납니다.

1. **스택 이름**에 **rds-custom-sqlserver**을 입력합니다.

1. **파라미터(Parameters)**에서 다음을 수행합니다.

   1. 기본 옵션을 유지하려면 **다음(Next)**을 선택합니다.

   1. 옵션을 변경하려면 적절한 가용성 구성, 네트워킹 구성 및 RDP 액세스 구성을 선택한 후 **다음**을 선택합니다.

      파라미터를 변경하기 전에 각 파라미터에 대한 설명을 주의 깊게 살펴봅니다.
**참고**  
이 CloudFormation 스택에서 하나 이상의 다중 AZ 인스턴스를 생성하는 경우, CloudFormation 스택 파라미터 **사전 조건 설정을 위한 가용성 구성 선택**이 `Multi-AZ`로 설정되어 있는지 확인하세요. CloudFormation 스택을 단일 AZ로 생성하는 경우, 첫 번째 다중 AZ 인스턴스를 생성하기 전에 CloudFormation 스택을 다중 AZ 구성으로 업데이트하세요.

1. **스택 옵션 구성** 페이지에서 **다음**을 선택합니다.

1. **rds-custom-sqlserver 검토(Review rds-custom-sqlserver)** 페이지에서 다음을 수행합니다.

   1. **기능**에서 ****이 사용자 지정 이름을 사용하여 CloudFormation이 IAM 리소스를 생성할 수 있음에 동의합니다**** 확인란을 선택합니다.

   1. **스택 생성**을 선택합니다.

**참고**  
이 CloudFormation 스택에서 생성된 리소스를 리소스 페이지에서 직접 업데이트하지 마세요. 이렇게 하면 CloudFormation 템플릿을 사용하여 이러한 리소스에 향후 업데이트를 적용할 수 없습니다.

CloudFormation은 RDS Custom for SQL Server에 필요한 리소스를 생성합니다. 스택 생성에 실패하면 **이벤트(Events)** 탭에서 실패한 리소스 생성 및 상태 이유를 확인할 수 있습니다.

콘솔의 이 CloudFormation 스택에 대한 **출력(Outputs)** 탭에는 RDS Custom for SQL Server DB 인스턴스를 생성하기 위해 파라미터로 전달할 모든 리소스 정보가 있어야 합니다. RDS Custom DB 인스턴스용 CloudFormation에서 생성한 VPC 보안 그룹과 DB 서브넷 그룹을 사용해야 합니다. 기본적으로 RDS는 기본 VPC 보안 그룹을 연결하려고 하는데, 여기에 필요한 액세스 권한이 없을 수 있습니다.

CloudFormation을 사용하여 리소스를 만든 경우 [수동으로 구성](#custom-setup-sqlserver.manual)을 건너뛸 수 있습니다.

#### CloudFormation 스택 업데이트
<a name="custom-setup-sqlserver.cf.update"></a>

CloudFormation 스택을 만든 후 일부 구성을 업데이트할 수도 있습니다. 업데이트할 수 있는 구성은 다음과 같습니다.
+ RDS Custom for SQL Server에 대한 가용성 구성
  + **사전 조건 설정을 위한 가용성 구성 선택**: 단일 AZ 구성과 다중 AZ 구성 간에 전환하려면 이 파라미터를 업데이트하세요. 하나 이상의 다중 AZ 인스턴스에 대해 이 CloudFormation 스택을 사용하는 경우 다중 AZ 구성을 선택하도록 스택을 업데이트해야 합니다.
+ RDS Custom for SQL Server에 대한 RDP 액세스 구성
  + 소스의 IPv4 CIDR 블록: 이 파라미터를 업데이트하여 소스의 IPv4 CIDR 블록(또는 IP 주소 범위)을 업데이트할 수 있습니다. 이 파라미터를 공백으로 설정하면 소스 CIDR 블록에서 퍼블릭 서브넷으로의 RDP 액세스 구성이 제거됩니다.
  + RDS Custom for SQL Server에 대한 RDP 액세스 설정: EC2 인스턴스에서 RDS Custom for SQL Server 인스턴스로의 RDP 연결을 활성화하거나 비활성화합니다.

#### CloudFormation 스택 삭제
<a name="custom-setup-sqlserver.cf.delete"></a>

스택에서 리소스를 사용하는 모든 RDS Custom 인스턴스를 삭제한 후 CloudFormation 스택을 삭제할 수 있습니다. RDS Custom은 CloudFormation 스택을 추적하지 않으므로 스택 리소스를 사용하는 DB 인스턴스가 있는 경우 스택 삭제를 차단하지 않습니다. 스택을 삭제할 때 스택 리소스를 사용하는 RDS Custom DB 인스턴스가 없는지 확인하세요.

**참고**  
CloudFormation 스택을 삭제하면 KMS 키를 제외하고 스택에서 생성된 모든 리소스가 삭제됩니다. KMS 키는 삭제 대기 중 상태가 되고 30일 후에 삭제됩니다. KMS 키를 유지하려면 30일 유예 기간 동안 [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) 작업을 수행합니다.

### 수동으로 구성
<a name="custom-setup-sqlserver.manual"></a>

리소스를 수동으로 구성하도록 선택한 경우 다음 태스크를 수행합니다.

**참고**  
설정을 간소화하려는 경우, 수동 구성 대신 CloudFormation 템플릿 파일을 사용하여 CloudFormation 스택을 만들 수 있습니다. 자세한 내용은 [CloudFormation을 사용한 구성](#custom-setup-sqlserver.cf) 섹션을 참조하세요.  
AWS CLI를 사용하여 이 섹션을 완료할 수도 있습니다. 사용하려면 최신 CLI를 다운로드하고 설치하세요.

**Topics**
+ [대칭 암호화 AWS KMS 키 보유 여부 확인](#custom-setup-sqlserver.cmk)
+ [수동으로 IAM 역할과 인스턴스 프로파일 생성](#custom-setup-sqlserver.iam)
+ [VPC 수동 구성](#custom-setup-sqlserver.vpc)

#### 대칭 암호화 AWS KMS 키 보유 여부 확인
<a name="custom-setup-sqlserver.cmk"></a>

대칭 암호화 AWS KMS key는 RDS Custom에 필수입니다. RDS Custom for SQL Server DB 인스턴스를 생성할 때는 KMS 키 식별자를 `kms-key-id` 파라미터로 제공해야 합니다. 자세한 내용은 [Amazon RDS Custom for SQL Server의 DB 인스턴스 생성 및 연결](custom-creating-sqlserver.md) 섹션을 참조하세요.

다음과 같은 옵션이 있습니다.
+ 기존에 AWS 계정에 고객 관리형 KMS 키가 있는 경우 RDS Custom과 함께 사용할 수 있습니다. 별도로 조치를 취할 필요가 없습니다.
+ 다른 RDS Custom 엔진에 대해 고객 관리형 대칭 암호화 KMS 키를 이미 생성한 경우 동일한 KMS 키를 재사용할 수 있습니다. 별도로 조치를 취할 필요가 없습니다.
+ 계정에 사용 중이던 고객 관리형 대칭 암호화 KMS 키가 없는 경우 *AWS Key Management Service 개발자 가이드*의 [키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) 지침에 따라 KMS 키를 생성합니다.
+ CEV 또는 RDS Custom DB 인스턴스를 생성하고 있으며 KMS 키가 다른 AWS 계정에 있는 경우 반드시 AWS CLI를 사용해야 합니다. 교차 계정 KMS 키에는 AWS 콘솔을 사용할 수 없습니다.

**중요**  
RDS Custom은 AWS 관리형 KMS 키를 지원하지 않습니다.

사용하는 대칭 암호화 키는 `kms:Decrypt` 및 `kms:GenerateDataKey` 작업에 액세스할 수 있는 권한을 IAM 인스턴스 프로파일의 AWS Identity and Access Management(IAM) 역할에 제공해야 합니다. 계정에 대칭 암호화 키를 새로 사용하는 경우에는 변경할 필요가 없습니다. 아니면 대칭 암호화 키의 정책이 이러한 작업에 액세스할 권한을 부여할 수 있는지 확인하세요.

자세한 내용은 [4단계: RDS Custom for Oracle의 IAM 구성](custom-setup-orcl.md#custom-setup-orcl.iam-vpc) 섹션을 참조하세요.

#### 수동으로 IAM 역할과 인스턴스 프로파일 생성
<a name="custom-setup-sqlserver.iam"></a>

인스턴스 프로파일을 수동으로 생성하고 이를 사용하여 RDS Custom 인스턴스를 시작할 수 있습니다. AWS Management Console에서 인스턴스를 생성하려는 경우 이 섹션을 건너뛰세요. AWS Management Console을 사용하면 인스턴스 프로파일을 생성하여 RDS Custom DB 인스턴스에 연결할 수 있습니다. 자세한 내용은 [AWS Management Console을 사용한 자동 인스턴스 프로파일 생성](#custom-setup-sqlserver.instanceProfileCreation) 섹션을 참조하세요.

인스턴스 프로파일을 수동으로 생성할 때는 인스턴스 프로파일 이름을 `custom-iam-instance-profile` 파라미터로 `create-db-instance` CLI 명령에 전달하세요. RDS Custom은 이 인스턴스 프로파일과 연결된 역할을 사용하여 자동화를 실행함으로써 인스턴스를 관리합니다.

**RDS Custom for SQL Server에 대한 IAM 인스턴스 프로파일과 IAM 역할을 생성하려면**

1. Amazon EC2에서 역할을 위임하는 데 사용할 수 있는 신뢰 정책을 통해 이름이 `AWSRDSCustomSQLServerInstanceRole`인 IAM 역할을 생성합니다.

1. AWS 관리형 정책 `AmazonRDSCustomInstanceProfileRolePolicy`를 `AWSRDSCustomSQLServerInstanceRole`에 추가합니다.

1. 이름이 `AWSRDSCustomSQLServerInstanceProfile`인 RDS Custom for SQL Server의 IAM 인스턴스 프로파일을 생성합니다.

1. 인스턴스 프로파일에 `AWSRDSCustomSQLServerInstanceRole` 역할을 추가합니다.

##### AWSRDSCustomSQLServerInstanceRole IAM 역할 생성
<a name="custom-setup-sqlserver.iam.create-role"></a>

다음 예제에서는 `AWSRDSCustomSQLServerInstanceRole` 역할을 생성합니다. 신뢰 정책을 사용하면 Amazon EC2가 역할을 위임하도록 할 수 있습니다.

```
aws iam create-role \
    --role-name AWSRDSCustomSQLServerInstanceRole \
    --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                  "Service": "ec2.amazonaws.com"
              }
            }
          ]
        }'
```

##### AWSRDSCustomSQLServerInstanceRole에 액세스 정책 추가
<a name="custom-setup-sqlserver.iam.add-policy"></a>

필요한 권한을 제공하려면 AWS 관리형 정책 `AmazonRDSCustomInstanceProfileRolePolicy`를 `AWSRDSCustomSQLServerInstanceRole`에 연결하세요. `AmazonRDSCustomInstanceProfileRolePolicy`는 RDS Custom 인스턴스가 메시지를 송수신하고 다양한 자동화 작업을 수행할 수 있도록 합니다.

**참고**  
SCP 또는 인스턴스 프로파일 역할과 관련된 권한 경계가 액세스 정책의 권한을 제한하지 않는지 확인합니다.

다음 예에서는 AWS 관리형 정책 `AmazonRDSCustomInstanceProfileRolePolicy`를 `AWSRDSCustomSQLServerInstanceRole` 역할에 연결합니다.

```
aws iam attach-role-policy \
    --role-name AWSRDSCustomSQLServerInstanceRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonRDSCustomInstanceProfileRolePolicy
```

##### RDS Custom for SQL Server 인스턴스 프로파일 생성
<a name="custom-setup-sqlserver.iam.create-profile"></a>

인스턴스 프로파일은 단일 IAM 역할을 포함하는 컨테이너입니다. RDS Custom은 인스턴스 프로파일을 사용하여 인스턴스에 역할을 전달합니다.

AWS Management Console을 사용하여 Amazon EC2 역할을 생성하는 경우, 콘솔이 자동으로 인스턴스 프로파일을 생성하여 역할 생성 시 역할과 동일한 이름을 부여합니다. 다음과 같이 인스턴스 프로파일을 생성하고 이름을 `AWSRDSCustomSQLServerInstanceProfile`로 지정합니다.

```
aws iam create-instance-profile \
    --instance-profile-name AWSRDSCustomSQLServerInstanceProfile
```

##### RDS Custom for SQL Server 인스턴스 프로파일에 AWSRDSCustomSQLServerInstanceRole 추가
<a name="custom-setup-sqlserver.iam.add-profile"></a>

이전에 만든 `AWSRDSCustomSQLServerInstanceProfile` 프로파일에 `AWSRDSCustomInstanceRoleForRdsCustomInstance` 역할을 추가합니다.

```
aws iam add-role-to-instance-profile \
    --instance-profile-name AWSRDSCustomSQLServerInstanceProfile \
    --role-name AWSRDSCustomSQLServerInstanceRole
```

#### VPC 수동 구성
<a name="custom-setup-sqlserver.vpc"></a>

RDS Custom DB 인스턴스는 Amazon EC2 인스턴스 또는 Amazon RDS 인스턴스와 마찬가지로 Amazon VPC 서비스를 기반으로 하는 Virtual Private Cloud(VPC)에 있습니다. 자체 VPC를 제공하고 구성해야 인스턴스 네트워킹 설정을 완벽하게 제어할 수 있습니다.

RDS Custom은 DB 인스턴스에서 다른 AWS 서비스로 통신을 전송합니다. RDS Custom DB 인스턴스를 생성하는 서브넷에서 다음 서비스에 액세스할 수 있는지 확인합니다.
+ Amazon CloudWatch(`com.amazonaws.region.monitoring`)
+ Amazon CloudWatch Logs(`com.amazonaws.region.logs`)
+ Amazon CloudWatch Events(`com.amazonaws.region.events`)
+ Amazon EC2(`com.amazonaws.region.ec2` 및 `com.amazonaws.region.ec2messages`)
+ Amazon S3(`com.amazonaws.region.s3`)
+ AWS Secrets Manager (`com.amazonaws.region.secretsmanager`)
+ AWS Systems Manager (`com.amazonaws.region.ssm` 및 `com.amazonaws.region.ssmmessages`)

다중 AZ 배포를 생성하는 경우
+ Amazon Simple Queue Service(`com.amazonaws.region.sqs`)

필요한 서비스와 RDS Custom이 통신할 수 없는 경우 다음 이벤트가 게시됩니다.

```
Database instance in incompatible-network. SSM Agent connection not available. Amazon RDS can't connect to the dependent AWS services.
```

```
Database instance in incompatible-network. Amazon RDS can't connect to dependent AWS services. Make sure port 443 (HTTPS) allows outbound connections, and try again. "Failed to connect to the following services: s3 events"
```

`incompatible-network` 오류를 방지하려면 RDS Custom DB 인스턴스와 AWS 서비스 간의 통신과 관련된 VPC 구성 요소가 다음 요구 사항을 충족하는지 확인합니다.
+ DB 인스턴스는 포트 443에서 다른 AWS 서비스로 아웃바운드 연결을 생성할 수 있습니다.
+ VPC는 RDS Custom DB 인스턴스에서 시작된 요청에 대한 수신 응답을 허용합니다.
+ RDS Custom는 각 AWS 서비스에 대한 엔드포인트의 도메인 이름을 정확하게 확인할 수 있습니다.

다른 RDS Custom DB 엔진의 VPC를 이미 구성한 경우 해당 VPC를 재사용하고 이 프로세스를 건너뛸 수 있습니다.

**Topics**
+ [VPC 보안 그룹 구성](#custom-setup-sqlserver.vpc.sg)
+ [종속 AWS 서비스의 엔드포인트 구성](#custom-setup-sqlserver.vpc.endpoints)
+ [인스턴스 메타데이터 서비스 구성](#custom-setup-sqlserver.vpc.imds)

##### VPC 보안 그룹 구성
<a name="custom-setup-sqlserver.vpc.sg"></a>

*보안 그룹*은 VPC 인스턴스에 대한 가상 방화벽 역할을 하며 인바운드 및 아웃바운드 트래픽을 모두 제어합니다. RDS Custom DB 인스턴스에는 네트워크 인터페이스에 연결되어 인스턴스를 보호하는 보안 그룹이 있습니다. 보안 그룹이 HTTPS를 통해 RDS Custom과 다른 AWS 서비스 간의 트래픽을 허용하는지 확인해야 합니다. 인스턴스 생성 요청 시 이 보안 그룹을 `vpc-security-group-ids` 파라미터로 전달합니다.

**RDS Custom의 보안 그룹을 구성하는 방법**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/vpc](https://console.aws.amazon.com/vpc)에서 Amazon VPC 콘솔을 엽니다.

1. RDS Custom에서 기본 보안 그룹을 사용하거나 고유한 보안 그룹을 생성하도록 허용합니다.

   자세한 지침은 [보안 그룹을 생성하여 VPC 내부의 DB 인스턴스에 대한 액세스를 제공](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup) 섹션을 참조하세요.

1. 보안 그룹이 포트 443에서 아웃바운드 연결을 허용하는지 확인합니다. RDS Custom에서 종속 AWS 서비스와 통신하려면 이 포트가 필요합니다.

1. 프라이빗 VPC가 있고 VPC 엔드포인트를 사용하는 경우 DB 인스턴스와 연결된 보안 그룹이 포트 443에서 VPC 엔드포인트로의 아웃바운드 연결을 허용하는지 확인합니다. 또한 VPC 엔드포인트와 연결된 보안 그룹이 DB 인스턴스에서 포트 443의 인바운드 연결을 허용하는지 확인합니다.

   수신 연결을 허용하지 않으면 RDS Custom 인스턴스가 AWS Systems Manager 및 Amazon EC2 엔드포인트에 연결할 수 없습니다. 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [Virtual Private Cloud 엔드포인트 생성](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html)을 참조하세요.

1. RDS Custom for SQL Server 다중 AZ 인스턴스의 경우 DB 인스턴스와 연결된 보안 그룹이 포트 1120에서 이 보안 그룹 자체에 인바운드 및 아웃바운드 연결을 허용하는지 확인합니다. 이는 다중 AZ RDS Custom for SQL Server DB 인스턴스의 피어 호스트 연결에 필요합니다.

보안 그룹에 대한 자세한 내용은 *Amazon VPC 개발자 안내서*의 [VPC의 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)을 참조하세요.

##### 종속 AWS 서비스의 엔드포인트 구성
<a name="custom-setup-sqlserver.vpc.endpoints"></a>

다음 지침에 따라 모든 서비스에 대한 엔드포인트를 VPC에 추가하는 것이 좋습니다. 그러나 VPC가 AWS 서비스 엔드포인트와 통신할 수 있도록 하는 모든 솔루션을 사용할 수 있습니다. 예를 들어, 네트워크 주소 변환(NAT) 또는 AWS Direct Connect를 사용할 수 있습니다.

**RDS Custom이 작동하는 AWS 서비스의 엔드포인트를 구성하려면**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 탐색 모음에서 리전 선택기를 사용하여 AWS 리전을 선택합니다.

1. 탐색 창에서 **엔드포인트**를 선택합니다. 기본 창에서 **Create Endpoint**(엔드포인트 생성)를 선택합니다.

1. **서비스 범주(Service category)**에서 **AWS 서비스**를 선택합니다.

1. **서비스 이름**으로 테이블에 나와 있는 엔드포인트를 선택합니다.

1. **VPC**에서 VPC를 선택합니다.

1. **서브넷**에서 포함하고자 하는 각 가용 영역의 서브넷을 선택합니다.

   VPC 엔드포인트는 여러 가용 영역을 아우를 수 있습니다. AWS는 선택한 각 서브넷에 VPC 엔드포인트에 대한 탄력적 네트워크 인터페이스를 생성합니다. 각 네트워크 인터페이스에는 도메인 이름 시스템(DNS) 호스트 이름과 프라이빗 IP 주소가 있습니다.

1. **보안 그룹(Security group)**에서 보안 그룹을 선택하거나 새로 만듭니다.

   보안 그룹을 사용하면 엔드포인트에 대한 액세스를 제어하므로 방화벽을 사용하는 것과 마찬가지입니다. 보안 그룹이 포트 443에서 DB 인스턴스로부터 인바운드 연결을 허용하는지 확인합니다. VPC 보안 그룹에 대한 자세한 내용은 [Amazon VPC 사용 설명서](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)의 *VPC의 보안 그룹*을 참조하세요.

1. 필요에 따라 정책을 VPC 엔드포인트에 연결할 수 있습니다. 엔드포인트정책은 연결 중인 AWS 서비스에 대한 액세스를 제어할 수 있습니다. 기본 정책은 모든 요청이 엔드포인트를 통과하도록 허용합니다. 사용자 지정 정책을 사용하는 경우 정책에서 DB 인스턴스의 요청이 허용되는지 확인합니다.

1. **엔드포인트 생성**을 선택합니다.

다음 테이블에서는 VPC가 아웃바운드 통신에 사용해야 하는 엔드포인트 목록을 찾는 방법을 안내합니다.


| 서비스 | 엔드포인트 형식 | 참고 및 링크 | 
| --- | --- | --- | 
|  AWS Systems Manager  |  다음 엔드포인트 형식을 사용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  |  각 리전의 엔드포인트 목록은 *Amazon Web Services 일반 참조*에서 [AWS Systems Manager 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/ssm.html)을 참조하세요.  | 
|  AWS Secrets Manager  |  `secretsmanager.region.amazonaws.com` 엔드포인트 형식을 사용합니다.  |  각 리전의 엔드포인트 목록은 *Amazon Web Services 일반 참조*에서 [AWS Secrets Manager 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/asm.html)을 참조하세요.  | 
|  Amazon CloudWatch  |  다음 엔드포인트 형식을 사용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  | 모든 리전의 엔드포인트 목록은 다음을 참조하세요.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html) | 
|  Amazon EC2  |  다음 엔드포인트 형식을 사용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  |  각 리전의 엔드포인트 목록은 *Amazon Web Services 일반 참조*의 [Amazon Elastic Compute Cloud 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/ec2-service.html)을 참조하세요.  | 
|  Amazon S3  |  `s3.region.amazonaws.com` 엔드포인트 형식을 사용합니다.  |  각 리전의 엔드포인트 목록은 *Amazon Web Services 일반 참조*에서 [Amazon Simple Storage Service 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/s3.html)을 참조하세요. Amazon S3용 게이트웨이 엔드포인트에 대해 자세히 알아보려면 *Amazon VPC 개발자 가이드*에서 [Amazon S3용 엔드포인트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html)를 참조하세요. 액세스 포인트를 생성하는 방법은 *Amazon VPC 개발자 안내서*의 [액세스 포인트 생성](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/access-points-create-ap.html)을 참조하세요. Amazon S3용 게이트웨이 엔드포인트를 생성하는 방법은 [게이트웨이 VPC 엔드포인트](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html)를 참조하세요.  | 
|  Amazon Simple Queue Service  | sqs.region.amazonaws.com 엔드포인트 형식 사용 | 각 리전의 엔드포인트 목록은 [Amazon Simple Queue Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/sqs-service.html)를 참조하세요. | 

##### 인스턴스 메타데이터 서비스 구성
<a name="custom-setup-sqlserver.vpc.imds"></a>

인스턴스가 다음을 수행할 수 있는지 확인하세요.
+ 인스턴스 메타데이터 서비스 버전 2(IMDSv2)를 사용하여 인스턴스 메타데이터 서비스에 액세스합니다.
+ 포트 80(HTTP)을 통한 IMDS 링크 IP 주소로의 아웃바운드 통신을 허용합니다.
+ IMDSv2 링크인 `http://169.254.169.254`에서 인스턴스 메타데이터를 요청합니다.

자세한 내용은 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)Amazon EC2 사용 설명서의 *IMDSv2 사용*을 참조하세요.

## 크로스 인스턴스 제한 사항
<a name="custom-setup-sqlserver.cross-instance-restriction"></a>

위 단계에 따라 인스턴스 프로파일을 만들면 AWS 관리형 정책 `AmazonRDSCustomInstanceProfileRolePolicy`를 사용하여 RDS Custom에 필요한 권한을 제공하므로 인스턴스 관리 및 모니터링을 자동화할 수 있습니다. 이 관리형 정책은 RDS Custom이 자동화를 실행하는 데 필요한 리소스에만 권한을 부여하도록 합니다. 관리형 정책을 사용하여 새 기능을 지원하고 수동 개입 없이 기존 인스턴스 프로파일에 자동으로 적용되도록 하여 보안 요구 사항을 충족하는 것이 좋습니다. 자세한 내용은 [AWS AWS 관리형 정책: AmazonRDSCustomInstanceProfileRolePolicy](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-security-iam-awsmanpol.html#rds-security-iam-awsmanpol-AmazonRDSCustomInstanceProfileRolePolicy)를 참조하세요.

`AmazonRDSCustomInstanceProfileRolePolicy` 관리형 정책은 인스턴스 프로파일을 크로스 계정 액세스로 제한하지만, 동일한 계정 내 RDS Custom 인스턴스에서 일부 RDS Custom 관리 리소스에 대한 액세스는 허용할 수 있습니다. 요구 사항에 따라 권한 경계를 사용하여 크로스 인스턴스 액세스를 추가로 제한할 수 있습니다. 권한 경계는 ID 기반 정책을 통해 엔터티에 부여할 수 있는 최대 권한을 정의하지만, 그 자체로 권한을 부여하지는 않습니다. 자세한 내용은 [경계를 사용한 유효 권한 평가](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html#access_policies_boundaries-eval-logic)를 참조하세요.

예를 들어 다음 경계 정책은 인스턴스 프로파일 역할이 특정 AWS KMS 키에만 액세스하도록 제한하고 다른 AWS KMS 키를 사용하는 인스턴스 전체에서 RDS Custom 관리형 리소스에 대한 액세스를 제한합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyOtherKmsKeyAccess",
            "Effect": "Deny",
            "Action": "kms:*",
            "NotResource": "arn:aws:kms:us-east-1:111122223333:key/KMS_key_ID"
        }
    ]
}
```

------

**참고**  
`AmazonRDSCustomInstanceProfileRolePolicy`기 RDS Custom에 부여하는 권한을 권한 경계가 차단하지 않도록 하세요.

# RDS Custom for SQL Server에서 기존 보유 미디어 사용(BYOM)
<a name="custom-sqlserver.byom"></a>

RDS Custom for SQL Server는 라이선스 포함(LI) 및 기존 보유 미디어 사용(BYOM)이라는 두 가지 라이선스 모델을 지원합니다.

**BYOM을 사용하여 다음 작업을 수행할 수 있습니다.**

1. 지원되는 누적 업데이트 (CU)와 함께 자체 Microsoft SQL Server 바이너리를 AWS EC2 Windows AMI에 제공하고 설치합니다.

1. AMI를 골든 이미지로 저장합니다. 골든 이미지는 사용자 지정 엔진 버전(CEV)을 생성하는 데 사용할 수 있는 템플릿입니다.

1. 골든 이미지로 CEV를 만듭니다.

1. CEV를 사용하여 새 RDS Custom for SQL Server DB 인스턴스를 생성합니다.

그러면 Amazon RDS가 사용자를 대신해 DB 인스턴스를 관리합니다.

**참고**  
또한 라이선스 포함(LI) RDS Custom for SQL Server DB 인스턴스가 있는 경우 이 DB 인스턴스의 SQL Server 소프트웨어를 BYOM과 함께 사용할 수 없습니다. 자체 SQL Server 바이너리를 BYOM에 가져와야 합니다.

## RDS Custom for SQL Server에서 BYOM 사용 시 요구 사항
<a name="custom-sqlserver.byom.requirements"></a>

RDS Custom for SQL Server를 사용하는 사용자 지정 엔진 버전에 대한 일반 요구 사항이 BYOM에도 적용됩니다. 자세한 내용은 [RDS Custom for SQL Server CEV 요구 사항](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.Requirements) 섹션을 참조하세요.

BYOM을 사용할 때는 다음과 같은 추가 요구 사항을 충족해야 합니다.
+ 지원되는 다음 에디션(SQL Server 2022 또는 2019 Enterprise, Standard, Developer Edition) 중 하나를 사용하세요.
+ SQL Server 시스템 관리자(SA) 서버 역할 권한을 `NT AUTHORITY\SYSTEM`에 부여합니다.
+ SSM 연결을 허용하려면 TCP 포트 1433과 UDP 포트 1434를 엽니다.

## RDS Custom for SQL Server에서 BYOM 사용 시 제한 사항
<a name="custom-sqlserver.byom.limitations"></a>

RDS Custom for SQL Server에 대한 일반 제한 사항이 BYOM에도 적용됩니다. 자세한 내용은 [Amazon RDS Custom for SQL Server 요구 사항 및 제한](custom-reqs-limits-MS.md) 섹션을 참조하세요.

BYOM에는 다음과 같은 추가 제한 사항이 적용됩니다.
+ 기본 SQL Server 인스턴스(MSSQLSERVER)만 지원됩니다. 이름이 지정된 SQL Server 인스턴스는 지원되지 않습니다. RDS Custom for SQL Server는 기본 SQL Server 인스턴스만 검색하고 모니터링합니다.
+ 각 AMI에서는 SQL Server를 한 번만 설치할 수 있습니다. 서로 다른 SQL Server 버전을 여러 개 설치하는 것은 지원되지 않습니다.
+ SQL Server Web Edition은 BYOM에서 지원되지 않습니다.
+ SQL Server 에디션의 평가 버전은 BYOM에서 지원되지 않습니다. SQL Server를 설치할 때 평가 버전 사용 확인란을 선택하지 마시기 바랍니다.
+ 기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전 리전에 따라 다릅니다. 자세한 내용은 [RDS Custom for SQL Server CEV에 대한 리전 가용성](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.RegionVersionAvailability) 및 [RDS Custom for SQL Server CEV에 대한 버전 지원](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.VersionSupport)(을)를 참조하세요.

## BYOM을 사용하여 RDS Custom for SQL Server DB 인스턴스 생성
<a name="custom-sqlserver.byom.creating"></a>

BYOM을 사용하여 RDS Custom for SQL Server DB 인스턴스를 준비하고 생성하려면 [기존 보유 미디어를 사용(BYOM)하여 CEV 준비](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.byom) 섹션을 참조하세요.

# RDS Custom for SQL Server 사용자 지정 엔진 버전 작업
<a name="custom-cev-sqlserver"></a>

RDS Custom for SQL Server용 *사용자 지정 엔진 버전(CEV)*은 Microsoft SQL Server가 포함된 Amazon Machine Image(AMI)입니다.

**CEV 워크플로의 기본 단계는 다음과 같습니다.**

1. CEV의 기본 이미지로 사용할 AWS EC2 Windows AMI를 선택합니다. 사전 설치된 Microsoft SQL Server를 사용하거나 자체 미디어를 가져와 SQL Server를 직접 설치할 수 있습니다.

1. 운영 체제(OS)에 다른 소프트웨어를 설치하고 기업 요구 사항에 맞게 OS 및 SQL Server의 구성을 사용자 지정합니다.

1. AMI를 골든 이미지로 저장

1. 골든 이미지로 커스텀 엔진 버전(CEV)을 만듭니다.

1. CEV를 사용하여 새 RDS Custom for SQL Server DB 인스턴스를 생성합니다.

이렇게 하면 Amazon RDS가 사용자를 대신해 이러한 DB 인스턴스를 관리합니다.

CEV를 사용하면 OS와 데이터베이스의 기본 구성을 원하는 대로 유지할 수 있습니다. CEV를 사용하면 타사 에이전트 설치 또는 기타 OS 사용자 지정 같은 호스트 구성이 RDS Custom for SQL Server DB 인스턴스에서 유지됩니다. CEV를 사용하면 동일한 구성의 RDS Custom for SQL Server DB 플릿을 빠르게 배포할 수 있습니다.

**Topics**
+ [RDS Custom for SQL Server용 CEV 생성 준비](custom-cev-sqlserver.preparing.md)
+ [RDS Custom for SQL Server CEV 생성](custom-cev-sqlserver.create.md)
+ [RDS Custom for SQL Server용 CEV 수정](custom-cev-sqlserver-modifying.md)
+ [Amazon RDS Custom for SQL Server의 CEV 세부 정보 보기](custom-viewing-sqlserver.md)
+ [RDS Custom for SQL Server용 CEV 삭제](custom-cev-sqlserver-deleting.md)

# RDS Custom for SQL Server용 CEV 생성 준비
<a name="custom-cev-sqlserver.preparing"></a>

사전 설치된 라이선스 포함(LI) Microsoft SQL Server가 속한 Amazon Machine Image(AMI)를 사용하거나 자체 SQL Server 설치 미디어(BYOM)가 설치될 AMI를 사용하여 CEV를 생성할 수 있습니다.

## CEV 준비
<a name="custom-cev-sqlserver.preparing.types"></a>

다음 절차에 따라 기존 보유 미디어 사용(BYOM) 또는 사전 설치된 Microsoft SQL Server(LI)를 사용하여 CEV를 생성합니다.

### 기존 보유 미디어를 사용(BYOM)하여 CEV 준비
<a name="custom-cev-sqlserver.preparing.byom"></a>

다음 단계에서는 **Windows Server 2019 Base**가 포함된 AMI를 예로 사용합니다.

**BYOM을 사용하여 CEV를 만드는 방법**

1. Amazon EC2 콘솔 대시보드에서 **인스턴스 시작**을 선택합니다.

1. **이름**에 인스턴스 이름을 입력합니다.

1. 빠른 시작에서 **Windows**를 선택합니다.

1. **Microsoft Windows Server 2019 Base**를 선택합니다.

1. 적절한 인스턴스 유형, 키 페어, 네트워크 및 스토리지 설정을 선택하고 인스턴스를 시작합니다.

1. EC2 인스턴스를 시작하거나 생성한 후 4단계에서 올바른 Windows AMI를 선택했는지 확인합니다.

   1. Amazon EC2 콘솔에서 EC2 인스턴스를 선택합니다.

   1. **세부 정보** 섹션에서 **사용 작업**을 확인하고 해당 작업이 **RunInstances:0002**로 설정되어 있는지 확인합니다.  
![\[BYOM용 RunInstances:0002를 사용하는 Windows AMI입니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/cev-sqlserver-byom-ec2runinstances.png)

1. EC2 인스턴스에 로그인하고 SQL Server 설치 미디어를 해당 인스턴스에 복사합니다.
**참고**  
SQL Server Developer 에디션을 사용하여 CEV를 구축하는 경우 [Microsoft Visual Studio 구독](https://my.visualstudio.com/Downloads?q=sqlserver%20developer)을 사용하여 설치 미디어를 구해야 할 수 있습니다.

1. SQL Server를 설치합니다. 다음을 수행하세요.

   1. [RDS Custom for SQL Server에서 BYOM 사용 시 요구 사항](custom-sqlserver.byom.md#custom-sqlserver.byom.requirements) 및 [RDS Custom for SQL Server CEV에 대한 버전 지원](#custom-cev-sqlserver.preparing.VersionSupport)를 검토합니다.

   1. 인스턴스 루트 디렉터리를 기본값인 `C:\Program Files\Microsoft SQL Server\`로 설정합니다. 이 디렉터리를 변경하지 마세요.

   1. SQL Server 데이터베이스 엔진 계정 이름을 `NT Service\MSSQLSERVER` 또는 `NT AUTHORITY\NETWORK SERVICE`로 설정합니다.

   1. SQL Server 시작 모드를 **수동**으로 설정합니다.

   1. SQL Server 인증 모드를 **혼합**으로 선택합니다.

   1. 기본 데이터 디렉터리 및 TempDB 위치에 대한 기존 설정을 그대로 유지합니다.

1. SQL Server 시스템 관리자(SA) 서버 역할 권한을 `NT AUTHORITY\SYSTEM`에 부여합니다.

   ```
   1. USE [master]
   2. GO
   3. EXEC master..sp_addsrvrolemember @loginame = N'NT AUTHORITY\SYSTEM' , @rolename = N'sysadmin'
   4. GO
   ```

1. 추가 소프트웨어를 설치하거나 요구 사항에 맞게 OS 및 데이터베이스 구성을 사용자 지정합니다.

1. EC2 인스턴스에서 Sysprep을 실행합니다. 자세한 내용은 [Create an Amazon EC2 AMI using Windows Sysprep](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-create-win-sysprep.html)을 참조하세요.

1. 설치된 SQL Server 버전, 기타 소프트웨어 및 사용자 지정이 포함된 AMI를 저장합니다. 이것이 골든 이미지가 됩니다.

1. 생성한 이미지의 AMI ID를 제공하여 새 CEV를 생성합니다. 자세한 단계는 [RDS Custom for SQL Server CEV 생성](custom-cev-sqlserver.create.md) 섹션을 참조하세요.

1. CEV를 사용하여 새 RDS Custom for SQL Server DB 인스턴스를 생성합니다. 자세한 단계는 [CEV에서 RDS Custom for SQL Server DB 인스턴스 생성](custom-cev-sqlserver.create.md#custom-cev-sqlserver.create.newdbinstance) 섹션을 참조하세요.

### 사전 설치된 SQL Server(LI)를 사용하여 CEV 준비
<a name="custom-cev-sqlserver.preparing.licenseincluded"></a>

사전 설치된 Microsoft SQL Server(LI)를 사용하여 CEV를 생성하는 다음 단계에서는 **SQL Server CU20** 릴리스 번호가 `2023.05.10`인 AMI를 예로 사용합니다. CEV를 생성할 때는 릴리스 번호가 가장 최신인 AMI를 선택하세요. 이렇게 하면 지원되는 버전의 Windows Server 및 SQL Server를 최신 누적 업데이트(CU)와 함께 사용할 수 있습니다.

**사전 설치된 Microsoft SQL Server(LI)를 사용하여 CEV를 만드는 방법**

1. 라이선스 포함(LI) Microsoft Windows Server 및 SQL Server가 있는 최신 AWS EC2 Windows Amazon Machine Image(AMI)를 선택합니다.

   1. [Windows AMI 버전 기록](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-windows-ami-version-history.html)에서 **CU20**을 검색합니다.

   1. 릴리스 번호를 기록해 두세요. SQL Server 2019 CU20의 릴리스 번호는 `2023.05.10`입니다.  
![\[SQL Server 2019 CU20에 대한 AMI 버전 기록 결과.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/rds_custom_sqlserver_cev_find_ami_history_li_cu20.png)

   1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

   1. Amazon EC2 콘솔의 왼쪽 탐색 창에서 **Images**(이미지)를 선택하고 **AMIs**를 선택합니다.

   1. **퍼블릭 이미지**를 선택합니다.

   1. 검색 상자에 `2023.05.10`를 입력합니다. AMI 목록이 나타납니다.

   1. 검색 상자에 `Windows_Server-2019-English-Full-SQL_2019`를 입력하여 결과를 필터링합니다. 다음과 같은 결과가 표시됩니다.  
![\[SQL Server 2019 CU20을 사용하는 지원되는 AMI.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/rds_custom_sqlserver_cev_find_ami_li_cu.png)

   1. 사용할 SQL Server 에디션이 있는 AMI를 선택합니다.

1. 선택한 AMI에서 EC2 인스턴스를 생성하거나 시작합니다.

1. EC2 인스턴스에 로그인하여 추가 소프트웨어를 설치하거나 요구 사항에 맞게 OS 및 데이터베이스 구성을 사용자 지정합니다.

1. EC2 인스턴스에서 Sysprep을 실행합니다. Sysprep을 사용한 AMI 준비에 대한 자세한 내용은 [Sysprep을 사용하여 표준화된 Amazon Machine Image(AMI) 생성](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html#sysprep-using-ec2launchv2)을 참조하세요.

1. 설치된 SQL Server 버전, 기타 소프트웨어 및 사용자 지정이 포함된 AMI를 저장합니다. 이것이 골든 이미지가 됩니다.

1. 생성한 이미지의 AMI ID를 제공하여 새 CEV를 생성합니다. CEV 생성에 대한 자세한 단계는 [RDS Custom for SQL Server CEV 생성](custom-cev-sqlserver.create.md) 섹션을 참조하세요.

1. CEV를 사용하여 새 RDS Custom for SQL Server DB 인스턴스를 생성합니다. 자세한 단계는 [CEV에서 RDS Custom for SQL Server DB 인스턴스 생성](custom-cev-sqlserver.create.md#custom-cev-sqlserver.create.newdbinstance) 섹션을 참조하세요.

## RDS Custom for SQL Server CEV에 대한 리전 가용성
<a name="custom-cev-sqlserver.preparing.RegionVersionAvailability"></a>

RDS Custom for SQL Server에 대한 사용자 지정 엔진 버전(CEV) 지원은 다음 AWS 리전에서 제공됩니다.
+ 미국 동부(오하이오)
+ 미국 동부(버지니아 북부)
+ 미국 서부(오레곤)
+ 미국 서부(캘리포니아 북부)
+ 아시아 태평양(뭄바이)
+ 아시아 태평양(오사카)
+ 아시아 태평양(서울)
+ 아시아 태평양(싱가포르)
+ 아시아 태평양(시드니)
+ 아시아 태평양(도쿄)
+ 캐나다(중부)
+ 유럽(프랑크푸르트)
+ 유럽(아일랜드)
+ 유럽(런던)
+ 유럽(파리)
+ 유럽(스톡홀름)
+ 남아메리카(상파울루)

## RDS Custom for SQL Server CEV에 대한 버전 지원
<a name="custom-cev-sqlserver.preparing.VersionSupport"></a>

RDS Custom for SQL Server용 CEV 생성은 다음 AWS EC2 Windows AMI에서 지원됩니다.
+ 사전 설치된 미디어를 사용하는 CEV의 경우 라이선스 포함(LI) Microsoft Windows Server 2019(OS) 및 SQL Server 2022 또는 2019가 포함된 AWS EC2 Windows AMI
+ 기존 보유 미디어를 사용(BYOM)하는 CEV의 경우 Microsoft Windows Server 2019(OS)가 포함된 AWS EC2 Windows AMI

RDS Custom for SQL Server용 CEV 생성은 다음 운영 체제(OS) 및 데이터베이스 에디션에 지원됩니다.
+ 사전 설치된 미디어를 사용하는 CEV의 경우:
  + SQL Server 2,022 Enterprise, Standard 또는 Web과 CU9, CU13, CU14-GDR, CU15-GDR, CU16, CU17, CU18, CU19, CU19-GDR, CU20-GDR, CU21-GDR, CU22 및 CU22-GDR.
  + SQL Server 2019 Enterprise, Standard 또는 Web과 CU8, CU17, CU18, CU20, CU24, CU26, CU28-GDR, CU29-GDR, CU30, CU32 및 CU32-GDR.
+ 기존 보유 미디어를 사용(BYOM)하는 CEV의 경우:
  + SQL Server 2022 Enterprise, Standard 또는 Developer와 CU9, CU13, CU14-GDR, CU15-GDR, CU16, CU17, CU18, CU19, CU19-GDR, CU20-GDR, CU21-GDR, CU22 및 CU22-GDR.
  + SQL Server 2019 Enterprise, Standard 또는 Developer와 CU8, CU17, CU18, CU20, CU24, CU26, CU28-GDR, CU29-GDR, CU30, CU32 및 CU32-GDR.
+ 사전 설치된 미디어 또는 기존 보유 미디어를 사용(BYOM)하는 CEV의 경우 OS로 Windows Server 2019가 유일하게 지원됨

자세한 내용은 [AWS Windows AMI 버전 기록](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ec2-windows-ami-version-history.html)을 참조하세요.

## RDS Custom for SQL Server CEV 요구 사항
<a name="custom-cev-sqlserver.preparing.Requirements"></a>

다음 요구 사항은 RDS Custom for SQL Server용 CEV 생성에 적용됩니다.
+ CEV를 생성하는 데 사용하는 AMI는 RDS Custom for SQL Server에서 지원하는 OS 및 데이터베이스 구성을 기반으로 해야 합니다. 지원되는 구성에 대한 자세한 내용은 [Amazon RDS Custom for SQL Server 요구 사항 및 제한](custom-reqs-limits-MS.md) 섹션을 참조하세요.
+ CEV에는 고유한 이름이 있어야 합니다. 기존 CEV와 이름이 같은 CEV는 생성할 수 없습니다.
+ SQL Server *메이저 버전 \$1 마이너 버전 \$1 사용자 지정 문자열*이라는 이름 지정 패턴을 사용하여 CEV 이름을 지정해야 합니다. *메이저 버전\$1마이너 버전*은 AMI와 함께 제공된 SQL Server 버전과 일치해야 합니다. 예를 들어 SQL Server 2019 CU17을 사용하는 AMI의 이름은 **15.00.4249.2.my\$1cevtest**로 지정할 수 있습니다.
+ Sysprep을 사용한 AMI를 준비해야 합니다. Sysprep을 사용한 AMI 준비에 대한 자세한 내용은 [Sysprep을 사용하여 표준화된 Amazon Machine Image(AMI) 생성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-create-win-sysprep.html)을 참조하세요.
+ AMI의 수명 주기를 관리할 책임은 사용자에게 있습니다. CEV에서 생성된 RDS Custom for SQL Server DB 인스턴스에는 AMI 사본이 저장되지 않습니다. CEV를 생성하는 데 사용한 AMI에 대한 포인터를 유지합니다. RDS Custom for SQL Server DB 인스턴스가 계속 작동하려면 AMI가 있어야 합니다.

## RDS Custom for SQL Server CEV 제한 사항
<a name="custom-cev-sqlserver.preparing.Limitations"></a>

RDS Custom for SQL Server를 사용하는 사용자 지정 엔진 버전에는 다음과 같은 제한 사항이 적용됩니다.
+ 연결된 DB 인스턴스 또는 DB 스냅샷 같은 리소스가 있는 경우 CEV를 삭제할 수 없습니다.
+ RDS Custom for SQL Server DB 인스턴스를 생성하려면 CEV는 상태가 `pending-validation`, `available`, `failed` 또는 `validating`이어야 합니다. CEV 상태가 `incompatible-image-configuration`인 경우에는 CEV를 사용하여 RDS Custom for SQL Server DB 인스턴스를 생성할 수 없습니다.
+ 새 CEV를 사용하도록 RDS Custom for SQL Server DB 인스턴스를 수정하려면 CEV 상태가 `available`이어야 합니다.
+ 기존 RDS Custom for SQL Server DB 인스턴스에서 AMI 또는 CEV를 생성할 수 없습니다.
+ 다른 AMI를 사용하도록 기존 CEV를 수정할 수는 없습니다. 그러나 RDS Custom for SQL Server DB 인스턴스를 수정하여 다른 CEV를 사용할 수는 있습니다. 자세한 내용은 [RDS Custom for SQL Server DB 인스턴스 수정](custom-managing.modify-sqlserver.md) 섹션을 참조하세요.
+ DB 인스턴스 생성 중에 제공된 KMS 키와 다른 고객 관리형 KMS 키로 AMI 또는 CEV를 암호화하는 것은 지원되지 않습니다.
+ CEV의 교차 리전 복사는 지원되지 않습니다.
+ CEV의 교차 계정 복사는 지원되지 않습니다.
+ 삭제한 CEV는 복원 또는 복구할 수 없습니다. 하지만 동일한 AMI에서 새 CEV를 생성할 수 있습니다.
+ RDS Custom for SQL Server DB 인스턴스는 SQL Server 데이터베이스 파일을 *D:\$1* 드라이브에 저장합니다. CEV와 연결된 AMI는 Microsoft SQL Server 시스템 데이터베이스 파일을 *C:\$1* 드라이브에 저장해야 합니다.
+ RDS Custom for SQL Server DB 인스턴스는 SQL Server 구성 변경 사항을 유지합니다. CEV에서 생성한 RDS Custom for SQL Server DB 인스턴스에서 실행 중인 운영 체제의 구성 변경 사항은 유지되지 않습니다. OS의 구성을 영구적으로 변경하고 이를 새 기본 구성으로 유지해야 하는 경우, 새 CEV를 생성한 다음 새 CEV를 사용하도록 DB 인스턴스를 수정하십시오.
**중요**  
새 CEV를 사용하도록 RDS Custom for SQL Server DB 인스턴스를 수정하는 작업은 오프라인 작업입니다. 즉시 수정을 수행하거나 주간 유지 관리 기간 중에 수정하도록 예약할 수 있습니다.
+ CEV를 수정할 때 Amazon RDS는 해당 수정 사항을 관련 RDS Custom for SQL Server DB 인스턴스에 푸시하지 않습니다. 신규 또는 업데이트된 CEV를 사용하려면 각 RDS Custom for SQL Server DB 인스턴스를 수정해야 합니다. 자세한 내용은 [RDS Custom for SQL Server DB 인스턴스 수정](custom-managing.modify-sqlserver.md) 섹션을 참조하세요.
+ 
**중요**  
CEV에서 사용하는 AMI가 삭제되면 호스트 교체가 필요할 수 있는 모든 수정(예: 컴퓨팅 크기 조정)이 실패하게 됩니다. 이렇게 되면 RDS Custom for SQL Server DB 인스턴스가 RDS 지원 경계 외부에 배치됩니다. CEV와 연결된 AMI는 삭제하지 않는 것이 좋습니다.

# RDS Custom for SQL Server CEV 생성
<a name="custom-cev-sqlserver.create"></a>

AWS Management Console 또는 AWS CLI를 사용하여 사용자 지정 엔진 버전(CEV)을 생성할 수 있습니다. 그런 다음 CEV를 사용하여 RDS Custom for SQL Server DB 인스턴스를 생성할 수 있습니다.

Amazon Machine Image(AMI)가 CEV와 동일한 AWS 계정 및 리전에 있는지 확인합니다. 그렇지 않으면 CEV 생성 프로세스가 실패합니다.

자세한 내용은 [Amazon RDS Custom for SQL Server의 DB 인스턴스 생성 및 연결](custom-creating-sqlserver.md) 단원을 참조하십시오.

**중요**  
CEV를 만드는 단계는 사전 설치된 SQL Server로 만든 AMI 및 기존 보유 미디어를 사용(BYOM)하여 만든 AMI와 동일합니다.

## 콘솔
<a name="custom-cev-sqlserver.create.console"></a>

**CEV를 생성하는 방법**

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

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

   **사용자 지정 엔진 버전(Custom engine versions)** 페이지에는 현재 존재하는 모든 CEV가 표시됩니다. CEV를 생성하지 않았다면 테이블은 비어 있습니다.

1. **Create custom engine version**(사용자 지정 엔진 버전 생성)을 선택합니다.

1. **Engine type**(엔진 유형)에서 **Microsoft SQL Server**를 선택합니다.

1. **에디션**에서 사용할 DB 엔진 에디션을 선택합니다.

1. **Major version**(메이저 버전)에서 AMI에 설치된 메이저 엔진 버전을 선택합니다.

1. **버전 세부 정보(Version details)**의 **사용자 지정 엔진 버전 이름(Custom engine version name)**에 유효한 이름을 입력합니다.

   이름 형식은 `major-engine-version.minor-engine-version.customized_string`입니다. 1\$150개의 영숫자, 밑줄, 대시 및 마침표를 사용할 수 있습니다. 예를 들어, **15.00.4249.2.my\$1cevtest**을 이름으로 입력할 수 있습니다.

   필요에 따라 CEV에 대한 설명을 입력합니다.

1. **Installation Media**(설치 미디어)에서 CEV를 생성할 때 사용할 AMI ID를 찾거나 입력합니다.

1. **Tags**(태그) 섹션에서 CEV를 식별하는 태그를 추가합니다.

1. **Create custom engine version**(사용자 지정 엔진 버전 생성)을 선택합니다.

**사용자 지정 엔진 버전(Custom engine versions)** 페이지가 표시됩니다. CEV가 **pending-validation**(검증 보류 중) 상태로 표시됩니다.

## AWS CLI
<a name="custom-cev-sqlserver.create.CEV"></a>

AWS CLI를 사용하여 CEV를 생성하려면 [create-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/create-custom-db-engine-version.html) 명령을 실행합니다.

다음 옵션이 필요합니다.
+ `--engine`
+ `--engine-version`
+ `--image-id`

다음 옵션도 지정할 수 있습니다.
+ `--description`
+ `--region`
+ `--tags`

다음 예제에서는 `15.00.4249.2.my_cevtest`이라는 CEV를 생성합니다. CEV의 이름이 주요 엔진 버전 번호로 시작하는지 확인하세요.

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

```
1. aws rds create-custom-db-engine-version \
2.     --engine custom-sqlserver-ee \
3.     --engine-version 15.00.4249.2.my_cevtest \
4.     --image-id ami-0r93cx31t5r596482 \                    
5.     --description "Custom SQL Server EE 15.00.4249.2 cev test"
```
다음 부분 출력은 엔진, 파라미터 그룹 및 기타 정보를 보여줍니다.  

```
 1. "DBEngineVersions": [
 2.     {
 3.     "Engine": "custom-sqlserver-ee",
 4.     "MajorEngineVersion": "15.00",
 5.     "EngineVersion": "15.00.4249.2.my_cevtest",
 6.     "DBEngineDescription": "Microsoft SQL Server Enterprise Edition for RDS Custom for SQL Server",
 7.     "DBEngineVersionArn": "arn:aws:rds:us-east-1:<my-account-id>:cev:custom-sqlserver-ee/15.00.4249.2.my_cevtest/a1234a1-123c-12rd-bre1-1234567890",
 8.     "DBEngineVersionDescription": "Custom SQL Server EE 15.00.4249.2 cev test",
 9.                                                       
10.     "Image": [
11.         "ImageId": "ami-0r93cx31t5r596482",
12.         "Status": "pending-validation"
13.      ],
14.     "CreateTime": "2022-11-20T19:30:01.831000+00:00",
15.     "SupportsLogExportsToCloudwatchLogs": false,
16.     "SupportsReadReplica": false,
17.     "Status": "pending-validation",
18.     "SupportsParallelQuery": false,
19.     "SupportsGlobalDatabases": false,
20.     "TagList": []
21.     }
22. ]
```

CEV 생성 프로세스가 실패하면 RDS Custom for SQL Server가 `Creation failed for custom engine version major-engine-version.cev_name` 메시지와 함께 `RDS-EVENT-0198`을 발급합니다. 메시지에는 실패(예: 이벤트가 누락된 파일 인쇄) 관련 세부 정보가 포함되어 있습니다. CEV 생성 문제 해결 아이디어를 찾으려면 [RDS Custom for SQL Server의 CEV 오류 문제 해결](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.cev) 단원을 참조하세요.

## CEV에서 RDS Custom for SQL Server DB 인스턴스 생성
<a name="custom-cev-sqlserver.create.newdbinstance"></a>

CEV를 성공적으로 생성하면 **CEV status**(CEV 상태)에 `pending-validation`이 표시됩니다. 이제 CEV를 사용하여 새 RDS Custom for SQL Server DB 인스턴스를 생성할 수 있습니다. CEV에서 새 RDS Custom for SQL Server DB 인스턴스를 생성하려면 [RDS Custom for SQL Server DB 인스턴스 생성](custom-creating-sqlserver.md#custom-creating-sqlserver.create) 단원을 참조하세요.

## CEV의 수명 주기
<a name="custom-cev-sqlserver.create.lifecycle"></a>

CEV 수명 주기에는 다음 상태가 포함됩니다.


****  

| CEV 상태 | 설명 | 문제 해결 제안 | 
| --- | --- | --- | 
| `pending-validation` | CEV가 생성되었고 연결된 AMI의 검증이 보류 중입니다. CEV는 RDS Custom for SQL Server DB 인스턴스가 생성될 때까지 `pending-validation` 상태를 유지됩니다. | 기존 작업이 없는 경우 CEV에서 새 RDS Custom for SQL Server DB 인스턴스를 생성하세요. RDS Custom for SQL Server DB 인스턴스를 생성할 때 시스템은 CEV에 연결된 AMI 검증을 시도합니다.  | 
| `validating` | 새 CEV를 기반으로 하는 RDS Custom for SQL Server DB 인스턴스의 생성 작업이 진행 중입니다. RDS Custom for SQL Server DB 인스턴스를 생성할 때 시스템은 CEV의 연결된 AMI를 검증하려고 합니다. | RDS Custom for SQL Server DB 인스턴스 생성 작업이 완료될 때까지 기다리세요. RDS EVENTS 콘솔을 사용하여 문제 해결을 위한 세부 이벤트 메시지를 검토할 수 있습니다.  | 
| `available` | CEV가 성공적으로 검증되었습니다. CEV에서 RDS Custom for SQL Server DB 인스턴스가 성공적으로 생성되면 CEV가 `available` 상태가 됩니다. | CEV는 추가 검증을 하지 않아도 됩니다. CEV는 RDS Custom for SQL Server DB 인스턴스를 추가로 생성하거나 기존 인스턴스를 수정하는 데 사용할 수 있습니다. | 
| `inactive` | CEV가 비활성 상태로 수정되었습니다. | 이 CEV에서는 RDS Custom DB 인스턴스를 생성하거나 업그레이드할 수 없습니다. 또한 이 CEV에서는 DB 스냅샷을 복원하여 새로운 RDS Custom DB 인스턴스를 생성할 수 없습니다. 상태를 `ACTIVE`로 변경하는 방법에 대한 자세한 내용은 [RDS Custom for SQL Server용 CEV 수정](custom-cev-sqlserver-modifying.md) 단원을 참조하세요. | 
| `failed` | AMI를 검증하기 전에 이 CEV의 DB 인스턴스 생성 단계가 실패했습니다. 또는 CEV에서 사용하는 기본 AMI가 사용 가능한 상태가 아닙니다. | 시스템에서 DB 인스턴스를 생성할 수 없는 근본 원인을 해결하세요. 자세한 오류 메시지를 확인하고 새 DB 인스턴스를 다시 생성해 보세요. CEV에서 사용하는 기본 AMI가 사용 가능한 상태인지 확인하세요. | 
| `incompatible-image-configuration` | AMI를 검증하는 중 오류가 발생했습니다. | 오류의 기술적 세부 정보를 확인하세요. 이 CEV를 사용하여 AMI를 다시 검증할 수는 없습니다. 다음을 검토하세요. 권장 사항: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-cev-sqlserver.create.html) 올바른 정보를 사용하여 새 CEV를 생성합니다. 필요한 경우 지원되는 AMI를 사용하여 새 EC2 인스턴스를 생성하고 이 인스턴스에서 Sysprep 프로세스를 실행합니다.  | 

# RDS Custom for SQL Server용 CEV 수정
<a name="custom-cev-sqlserver-modifying"></a>

AWS Management Console 또는 AWS CLI를 사용하여 CEV를 수정하고, CEV 설명 또는 가용 상태를 수정할 수 있습니다. CEV는 다음 상태 값 중 하나를 가집니다.
+ `available` - 이 CEV를 사용하여 새로운 RDS Custom DB 인스턴스를 생성하거나 DB 인스턴스를 업그레이드할 수 있습니다. 이 상태는 새로 생성된 CEV의 기본 상태입니다.
+ `inactive` - 이 CEV에서는 RDS Custom DB 인스턴스를 생성하거나 업그레이드할 수 없습니다. 이 CEV에서는 DB 스냅샷을 복원하여 새로운 RDS Custom DB 인스턴스를 생성할 수 없습니다.

CEV 상태를 `available`에서 `inactive`로, 또는 `inactive`에서 `available`로 변경할 수 있습니다. 상태를 `INACTIVE`로 변경하면 CEV를 실수로 사용하는 일을 방지하고 중단된 CEV를 다시 사용할 수 있습니다.

## 콘솔
<a name="custom-cev-sqlserver-modifying.console"></a>

**CEV를 수정하는 방법**

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

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

1. 수정하려는 설명 또는 상태가 지정된 CEV를 선택합니다.

1. **작업**에서 **수정**을 선택합니다.

1. 다음을 원하는 대로 변경합니다.
   + **CEV 상태 설정(CEV status settings)**에서 새로운 가용 상태를 선택합니다.
   + **버전 설명(Version description)**에 새로운 설명을 입력합니다.

1. **CEV 수정(Modify CEV)**을 선택합니다.

   CEV가 사용 중인 경우 콘솔에 **CEV 상태를 수정할 수 없습니다(You can't modify the CEV status)**가 표시됩니다. 문제를 해결한 후 다시 시도하세요.

**사용자 지정 엔진 버전(Custom engine versions)** 페이지가 표시됩니다.

## AWS CLI
<a name="custom-cev-sqlserver-modifying.cli"></a>

AWS CLI를 사용하여 CEV를 수정하려면 [modify-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-custom-db-engine-version.html) 명령을 실행합니다. [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 실행하여 수정할 CEV를 찾을 수 있습니다.

다음 옵션이 필요합니다.
+ `--engine`
+ `--engine-version cev`(*`cev`*는 수정하려는 사용자 지정 엔진 버전의 이름)
+ `--status`` status`(*`status`*는 CEV에 할당하려는 가용 상태)

다음 예제에서는 이름이 `15.00.4249.2.my_cevtest`로 지정된 CEV를 현재 상태에서 `inactive`로 변경합니다.

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

```
1. aws rds modify-custom-db-engine-version \
2.     --engine custom-sqlserver-ee \ 
3.     --engine-version 15.00.4249.2.my_cevtest \
4.     --status inactive
```
Windows의 경우:  

```
1. aws rds modify-custom-db-engine-version ^
2.     --engine custom-sqlserver-ee ^
3.     --engine-version 15.00.4249.2.my_cevtest ^
4.     --status inactive
```

새 CEV를 사용하도록 RDS Custom for SQL Server DB 인스턴스를 수정하려면 [새 CEV를 사용하도록 RDS Custom for SQL Server DB 인스턴스 수정](custom-cev-sqlserver-modifying-dbinstance.md) 섹션을 참조하세요.

# 새 CEV를 사용하도록 RDS Custom for SQL Server DB 인스턴스 수정
<a name="custom-cev-sqlserver-modifying-dbinstance"></a>

기존 RDS Custom for SQL Server DB 인스턴스를 수정하여 다른 CEV를 사용할 수 있습니다. 다음과 같은 변경을 적용할 수 있습니다.
+ CEV 변경
+ DB 인스턴스 클래스 변경
+ 백업 보존 기간 및 백업 기간 변경
+ 유지 관리 기간 변경

## 콘솔
<a name="custom-cev-sqlserver-modifying-dbinstance.CON"></a>

**RDS Custom for SQL Server DB 인스턴스를 수정하는 방법**

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

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 수정하려는 DB 인스턴스를 선택합니다.

1. **Modify**(수정)를 선택합니다.

1. 필요에 따라 다음과 같이 변경합니다.

   1. **DB 엔진 버전**(DB engine version)에서 다른 CEV를 선택합니다.

   1. **DB 인스턴스 클래스(DB instance class)** 값을 변경합니다. 지원되는 클래스는 [RDS Custom for SQL Server DB 인스턴스 클래스 지원](custom-reqs-limits.instancesMS.md) 섹션을 참조하세요.

   1. **백업 보존 기간(Backup retention period)** 값을 변경합니다.

   1. **백업 기간(Backup window)**의 경우 **시작 시간(Start time)**과 **기간(Duration)** 값을 설정합니다.

   1. **DB 인스턴스 유지 관리 기간(DB instance maintenance window)**의 경우 **시작일(Start day)**, **시작 시간(Start time)**, **기간(Duration)** 값을 설정합니다.

1. **계속(Continue)**을 선택합니다.

1. **즉시 적용(Apply immediately)** 또는 **예약된 다음 유지 관리 기간에 적용(Apply during the next scheduled maintenance window)**을 선택합니다.

1. **Modify DB instance**(DB 인스턴스 수정)를 선택합니다.
**참고**  
특정 CEV의 DB 인스턴스를 다른 CEV로 수정하는 경우(예를 들어 마이너 버전 업그레이드를 하는 경우), SQL Server 시스템 데이터베이스와 관련 데이터 및 구성은 현재 RDS Custom for SQL Server DB 인스턴스의 항목이 그대로 유지됩니다.

## AWS CLI
<a name="custom-cev-sqlserver-modifying-dbinstance.CLI"></a>

AWS CLI로 DB 인스턴스를 수정해 다른 CEV를 사용할 수 있게 하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-custom-db-engine-version.html) 명령을 실행합니다.

다음 옵션이 필요합니다.
+ `--db-instance-identifier`
+ `--engine-version cev`(*`cev`*는 DB 인스턴스의 변경 대상인 사용자 지정 엔진 버전의 이름입니다).

다음 예제에서는 `my-cev-db-instance`라는 이름의 CEV를 사용하도록 `15.00.4249.2.my_cevtest_new`라는 이름의 DB 인스턴스를 수정하고 변경 사항을 즉시 적용합니다.

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

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier my-cev-db-instance \ 
3.     --engine-version 15.00.4249.2.my_cevtest_new \
4.     --apply-immediately
```
Windows의 경우:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier my-cev-db-instance ^
3.     --engine-version 15.00.4249.2.my_cevtest_new ^
4.     --apply-immediately
```

# Amazon RDS Custom for SQL Server의 CEV 세부 정보 보기
<a name="custom-viewing-sqlserver"></a>

AWS Management Console 또는 AWS CLI를 사용하여 CEV에 대한 세부 정보를 볼 수 있습니다.

## 콘솔
<a name="custom-viewing-sqlserver.console"></a>

**CEV 세부 정보를 보려면**

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

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

   **사용자 지정 엔진 버전(Custom engine versions)** 페이지에는 현재 존재하는 모든 CEV가 표시됩니다. CEV를 생성한 적이 없으면 페이지가 비어 있습니다.

1. 보려는 CEV의 이름을 선택합니다.

1. 세부 정보를 보려면 **Configuration**(구성)을 선택합니다.  
![\[CEV의 구성 세부 정보를 봅니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/rds_custom_sqlserver_cev_viewdetails.PNG)

## AWS CLI
<a name="custom-viewing-sqlserver.CEV"></a>

AWS CLI를 사용하여 CEV에 대한 세부 정보를 보려면 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 실행합니다.

다음 옵션도 지정할 수 있습니다.
+ `--include-all`, 수명 주기 상태가 있는 모든 CEV를 볼 수 있습니다. `--include-all` 옵션이 없으면 `available` 수명 주기 상태의 CEV만 반환됩니다.

```
aws rds describe-db-engine-versions --engine custom-sqlserver-ee --engine-version 15.00.4249.2.my_cevtest --include-all
{
    "DBEngineVersions": [
        {
            "Engine": "custom-sqlserver-ee",
            "MajorEngineVersion": "15.00",
            "EngineVersion": "15.00.4249.2.my_cevtest",
            "DBParameterGroupFamily": "custom-sqlserver-ee-15.0",
            "DBEngineDescription": "Microsoft SQL Server Enterprise Edition for custom RDS",
            "DBEngineVersionArn": "arn:aws:rds:us-east-1:{my-account-id}:cev:custom-sqlserver-ee/15.00.4249.2.my_cevtest/a1234a1-123c-12rd-bre1-1234567890",
            "DBEngineVersionDescription": "Custom SQL Server EE 15.00.4249.2 cev test",
            "Image": {
                "ImageId": "ami-0r93cx31t5r596482",
                "Status": "pending-validation"
            },
            "DBEngineMediaType": "AWS Provided",
            "CreateTime": "2022-11-20T19:30:01.831000+00:00",
            "ValidUpgradeTarget": [],
            "SupportsLogExportsToCloudwatchLogs": false,
            "SupportsReadReplica": false,
            "SupportedFeatureNames": [],
            "Status": "pending-validation",
            "SupportsParallelQuery": false,
            "SupportsGlobalDatabases": false,
            "TagList": [],
            "SupportsBabelfish": false
        }
    ]
}
```

필터를 사용하여 특정 수명 주기 상태의 CEV를 볼 수 있습니다. 예를 들어 수명 주기 상태가 `pending-validation`, `available` 또는 `failed`인 CEV를 볼 수 있습니다.

```
aws rds describe-db-engine-versions engine custom-sqlserver-ee
                region us-west-2 include-all query 'DBEngineVersions[?Status == pending-validation || 
                Status == available || Status == failed]'
```

# RDS Custom for SQL Server용 CEV 삭제
<a name="custom-cev-sqlserver-deleting"></a>

AWS Management Console 또는 AWS CLI를 사용하여 CEV를 삭제할 수 있습니다. 이 작업은 일반적으로 몇 분 정도 걸립니다.

CEV를 삭제하기 전에 CEV가 다음 중 하나에 속하지 않는지 확인하세요.
+ RDS Custom DB 인스턴스
+ RDS Custom DB 인스턴스의 스냅샷
+ RDS Custom DB 인스턴스의 자동 백업

## 콘솔
<a name="custom-cev-sqlserver-deleting.console"></a>

**CEV를 삭제하는 방법**

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

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

1. 삭제하려는 설명 또는 상태가 지정된 CEV를 선택합니다.

1. **작업**에 대해 **삭제**를 선택합니다.

   ***cev\$1name*을 삭제하시겠습니까?(Delete cev\$1name?)** 대화 상자가 표시됩니다.

1. **delete me**를 입력한 다음 **삭제**를 선택합니다.

   **사용자 지정 엔진 버전(Custom engine versions)** 페이지의 배너에서 CEV가 삭제 중임을 표시합니다.

## AWS CLI
<a name="custom-cev-sqlserver-deleting.console.cli"></a>

AWS CLI를 사용하여 CEV를 삭제하려면 [delete-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-custom-db-engine-version.html) 명령을 실행합니다.

다음 옵션이 필요합니다.
+ `--engine custom-sqlserver-ee`
+ `--engine-version cev`(*cev*는 삭제할 사용자 지정 엔진 버전의 이름)

다음 예제에서는 이름이 `15.00.4249.2.my_cevtest`인 CEV를 삭제합니다.

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

```
1. aws rds delete-custom-db-engine-version \
2.     --engine custom-sqlserver-ee \
3.     --engine-version 15.00.4249.2.my_cevtest
```
Windows의 경우:  

```
1. aws rds delete-custom-db-engine-version ^
2.     --engine custom-sqlserver-ee ^
3.     --engine-version 15.00.4249.2.my_cevtest
```

# Amazon RDS Custom for SQL Server의 DB 인스턴스 생성 및 연결
<a name="custom-creating-sqlserver"></a>

RDS Custom DB 인스턴스를 생성한 다음 AWS Systems Manager 또는 원격 데스크톱 프로토콜(RDP)을 사용하여 연결할 수 있습니다.

**중요**  
RDS Custom for SQL Server DB 인스턴스를 생성하거나 연결하기 전에 [Amazon RDS Custom for SQL Server를 위한 환경 설정](custom-setup-sqlserver.md)에 나와 있는 작업을 완료해야 합니다.  
RDS Custom DB 인스턴스를 생성할 때 태그를 지정할 수 있지만, RDS Custom 자동화에 필요한 `AWSRDSCustom` 태그를 생성하거나 수정해서는 안 됩니다. 자세한 내용은 [RDS Custom for SQL Server 리소스 태깅](custom-managing-sqlserver.tagging.md) 섹션을 참조하세요.  
RDS Custom for SQL Server DB 인스턴스를 처음 생성할 때 다음 오류가 표시될 수 있습니다. 서비스 연결 역할이 생성되고 있습니다. 나중에 다시 시도해 주세요. 이 경우에는 몇 분 정도 기다렸다가 다시 DB 인스턴스를 생성하면 됩니다.

**Topics**
+ [RDS Custom for SQL Server DB 인스턴스 생성](#custom-creating-sqlserver.create)
+ [RDS Custom 서비스 연결 역할](custom-creating-sqlserver.slr.md)
+ [AWS Systems Manager를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating-sqlserver.ssm.md)
+ [RDP를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating-sqlserver.rdp.md)

## RDS Custom for SQL Server DB 인스턴스 생성
<a name="custom-creating-sqlserver.create"></a>

AWS Management Console 또는 AWS CLI를 사용하여 SQL Server DB 인스턴스용 Amazon RDS Custom을 생성할 수 있습니다. 생성 절차는 Amazon RDS DB 인스턴스를 생성하는 절차와 유사합니다.

자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.

### 콘솔
<a name="custom-creating-sqlserver.CON"></a>

**RDS Custom for SQL Server DB 인스턴스를 생성하는 방법**

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

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. **데이터베이스 생성**을 선택합니다.

1. 데이터베이스 생성 방법으로 **표준 생성(Standard Create)**을 선택합니다.

1. **엔진 옵션(Engine options)**에서 엔진 유형으로 **Microsoft SQL Server**를 선택합니다.

1. **데이터베이스 관리 유형(Database management type)**에서 **Amazon RDS Custom**을 선택합니다.

1. **에디션(Edition)** 섹션에서 사용하려는 DB 엔진 에디션을 선택합니다.

1. (선택 사항) CEV에서 DB 인스턴스를 만들어야 하는 경우 **Use custom engine version (CEV)**(사용자 지정 엔진 버전(CEV) 사용) 확인란을 선택합니다. 드롭다운 목록에서 CEV를 선택합니다.

1. **데이터베이스 버전**은 기본값 버전을 유지합니다.

1. **Templates**(템플릿)의 경우, **Production**(프로덕션)을 선택합니다.

1. **설정(Settings)** 섹션에서 고유한 **DB 인스턴스 식별자(DB instance identifier)** 이름을 입력합니다.

1. 마스터 암호를 입력하려면 다음과 같이 하세요.

   1. **Settings**(설정) 섹션에서 **Credential Settings**(보안 인증 정보 설정)를 엽니다.

   1. **Auto generate a password**(암호 자동 생성) 확인란의 선택을 취소합니다.

   1. **마스터 사용자 이름(Master username)** 값을 변경하고 **마스터 암호(Master password)** 및 **암호 확인(Confirm password)**에 동일한 암호를 입력합니다.

   기본적으로 새로운 RDS Custom DB 인스턴스는 마스터 사용자를 위해 자동 생성된 암호를 사용합니다.

1. **DB 인스턴스 크기(DB instance size)** 섹션에서 **DB 인스턴스 클래스(DB instance class)** 값을 선택합니다.

   지원되는 클래스는 [RDS Custom for SQL Server DB 인스턴스 클래스 지원](custom-reqs-limits.instancesMS.md) 섹션을 참조하세요.

1. **스토리지(Storage)** 설정을 선택합니다.

1. **RDS Custom 보안**을 위해서는 다음을 수행합니다.

   1. **IAM 인스턴스 프로파일**에 RDS Custom for SQL Server DB 인스턴스의 인스턴스 프로파일을 선택하는 옵션이 두 개 있습니다.

      1. **새 인스턴스 프로파일 생성**을 선택하고 인스턴스 프로파일 이름 접미사를 제공합니다. 자세한 내용은 [AWS Management Console을 사용한 자동 인스턴스 프로파일 생성](custom-setup-sqlserver.md#custom-setup-sqlserver.instanceProfileCreation) 섹션을 참조하세요.

      1. 기존 인스턴스 프로파일을 선택합니다. 드롭다운 목록에서 `AWSRDSCustom`으로 시작하는 인스턴스 프로파일을 선택합니다.

   1. **암호화(Encryption)**의 경우 **키 ARN 입력(Enter a key ARN)**을 선택하여 사용 가능한 AWS KMS 키를 나열합니다. 그런 다음 목록에서 키를 선택합니다.

      AWS KMS 키는 RDS Custom에 필수입니다. 자세한 내용은 [대칭 암호화 AWS KMS 키 보유 여부 확인](custom-setup-sqlserver.md#custom-setup-sqlserver.cmk) 섹션을 참조하세요.

1. 나머지 섹션에서 원하는 대로 RDS Custom DB 인스턴스 설정을 지정합니다. 각 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 섹션을 참조하세요. 다음 설정은 콘솔에 표시되지 않으며 지원되지 않습니다.
   + **프로세서 기능**
   + **Storage autoscaling(스토리지 Autoscaling**
   + **가용성 및 지속성(Availability & durability**
   + **데이터베이스 인증(Database authentication)**의 **암호 및 Kerberos 인증(Password and Kerberos authentication)** 옵션(**암호 인증(Password authentication)**만 지원)
   + **추가 구성(Additional configuration)**의 **데이터베이스 옵션(Database options)** 그룹
   + **성능 개선 도우미** 
   + **로그 내보내기**
   + **마이너 버전 자동 업그레이드 활성화**
   + **삭제 방지**

   **백업 보존 기간**은 지원되지만, **0일**을 선택할 수 없습니다.

1. **Create database**(데이터베이스 생성)를 선택합니다.

   **자격 증명 세부 정보 보기(View credential details)** 버튼이 **데이터베이스** 페이지에 표시됩니다.

   RDS Custom DB 인스턴스의 마스터 사용자 이름 및 암호를 보려면 **자격 증명 세부 정보 보기(View credential details)**를 선택합니다.

   DB 인스턴스를 마스터 사용자로 연결하려면 화면에 나타난 사용자 이름과 암호를 사용합니다.
**중요**  
마스터 사용자 암호를 다시 볼 수는 없습니다. 따라서 기록을 해두지 않으면 이를 변경해야 합니다. RDS Custom DB 인스턴스가 사용 가능한 상태가 되고 난 후에 마스터 사용자 암호를 변경하려면 DB 인스턴스를 수정하면 됩니다. DB 인스턴스 수정에 대한 자세한 내용은 [Amazon RDS Custom for SQL Server DB 인스턴스 관리](custom-managing-sqlserver.md) 섹션을 참조하세요.

1. **데이터베이스(Databases)**를 선택하여 RDS Custom DB 인스턴스 목록을 확인합니다.

1. 방금 생성한 RDS Custom DB 인스턴스를 선택합니다.

   RDS 콘솔에 새로운 RDS Custom DB 인스턴스의 세부 정보가 표시됩니다.
   + RDS Custom DB 인스턴스를 만들고 사용할 준비가 될 때까지 DB 인스턴스의 상태는 **생성 중(creating)**입니다. 상태가 **available**로 변경되면 DB 인스턴스에 연결할 수 있습니다. 할당된 인스턴스 클래스 및 스토리지에 따라 새 DB 인스턴스를 사용할 수 있게 되기까지 몇 분 정도 걸릴 수 있습니다.
   + **역할(Role)**에는 **인스턴스(RDS Custom)(Instance (RDS Custom))** 값이 있습니다.
   + **RDS Custom 자동화 모드(RDS Custom automation mode)**에는 **완전 자동화(Full automation)** 값이 있습니다. 이 설정은 DB 인스턴스가 자동 모니터링 및 인스턴스 복구를 제공함을 의미합니다.

### AWS CLI
<a name="custom-creating-sqlserver.CLI"></a>

[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 명령을 사용하여 RDS Custom DB 인스턴스를 생성합니다.

다음 옵션이 필요합니다.
+ `--db-instance-identifier`
+ `--db-instance-class`(지원되는 인스턴스 클래스 목록은 섹션 참조)[RDS Custom for SQL Server DB 인스턴스 클래스 지원](custom-reqs-limits.instancesMS.md)
+ `--engine`(`custom-sqlserver-ee`, `custom-sqlserver-se` 또는 `custom-sqlserver-web`)
+ `--kms-key-id`
+ `--custom-iam-instance-profile`

다음 예제에서는 `my-custom-instance`라는 RDS Custom for SQL Server DB 인스턴스를 생성합니다. 백업 보존 기간은 3일로 설정합니다.

**참고**  
사용자 지정 엔진 버전(CEV)에서 DB 인스턴스를 만들려면 `--engine-version` 파라미터에 기존 CEV 이름을 제공합니다. 예: `--engine-version 15.00.4249.2.my_cevtest`

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

```
 1. aws rds create-db-instance \
 2.     --engine custom-sqlserver-ee \
 3.     --engine-version 15.00.4073.23.v1 \
 4.     --db-instance-identifier my-custom-instance \
 5.     --db-instance-class db.m5.xlarge \
 6.     --allocated-storage 20 \
 7.     --db-subnet-group mydbsubnetgroup \
 8.     --master-username myuser \
 9.     --master-user-password mypassword \
10.     --backup-retention-period 3 \
11.     --no-multi-az \
12.     --port 8200 \
13.     --kms-key-id mykmskey \
14.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance
```
Windows의 경우:  

```
 1. aws rds create-db-instance ^
 2.     --engine custom-sqlserver-ee ^
 3.     --engine-version 15.00.4073.23.v1 ^
 4.     --db-instance-identifier my-custom-instance ^
 5.     --db-instance-class db.m5.xlarge ^
 6.     --allocated-storage 20 ^
 7.     --db-subnet-group mydbsubnetgroup ^
 8.     --master-username myuser ^
 9.     --master-user-password mypassword ^
10.     --backup-retention-period 3 ^
11.     --no-multi-az ^
12.     --port 8200 ^
13.     --kms-key-id mykmskey ^
14.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance
```
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

`describe-db-instances` 명령을 사용하여 인스턴스에 대한 세부 정보를 가져옵니다.

```
1. aws rds describe-db-instances --db-instance-identifier my-custom-instance
```

다음 부분 출력은 엔진, 파라미터 그룹 및 기타 정보를 보여줍니다.

```
 1. {
 2.     "DBInstances": [
 3.         {
 4.             "PendingModifiedValues": {},
 5.             "Engine": "custom-sqlserver-ee",
 6.             "MultiAZ": false,
 7.             "DBSecurityGroups": [],
 8.             "DBParameterGroups": [
 9.                 {
10.                     "DBParameterGroupName": "default.custom-sqlserver-ee-15",
11.                     "ParameterApplyStatus": "in-sync"
12.                 }
13.             ],
14.             "AutomationMode": "full",
15.             "DBInstanceIdentifier": "my-custom-instance",
16.             "TagList": []
17.         }
18.     ]
19. }
```

# RDS Custom 서비스 연결 역할
<a name="custom-creating-sqlserver.slr"></a>

*서비스 연결 역할*을 사용하여 AWS 계정의 리소스에 대한 Amazon RDS Custom 액세스 권한을 부여합니다. 필요한 권한을 수동으로 추가할 필요가 없어 RDS Custom을 보다 쉽게 사용할 수 있습니다. RDS Custom은 서비스 연결 역할의 권한을 정의하므로, 달리 정의하지 않으면 RDS Custom만 해당 역할을 맡을 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며, 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

RDS Custom DB 인스턴스를 생성하면 Amazon RDS 및 RDS Custom 서비스 연결 역할이 모두 생성되어(존재하지 않았던 경우) 사용됩니다. 자세한 내용은 [Amazon RDS에 서비스 연결 역할 사용](UsingWithRDS.IAM.ServiceLinkedRoles.md) 단원을 참조하십시오.

RDS Custom for SQL Server DB 인스턴스를 처음 생성할 때 다음 오류가 표시될 수 있습니다. 서비스 연결 역할이 생성되고 있습니다. 나중에 다시 시도해 주세요. 이 경우에는 몇 분 정도 기다렸다가 다시 DB 인스턴스를 생성하면 됩니다.

# AWS Systems Manager를 사용하여 RDS Custom DB 인스턴스에 연결
<a name="custom-creating-sqlserver.ssm"></a>

RDS Custom DB 인스턴스를 생성한 후 AWS Systems Manager 세션 관리자를 사용하여 연결할 수 있습니다. 세션 관리자는 브라우저 기반 셸이나 AWS CLI를 통해 Amazon EC2 인스턴스를 관리하는 데 사용할 수 있는 Systems Manager 기능입니다. 자세한 내용은 [AWS Systems Manager 세션 관리자](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)를 참조하세요.

## 콘솔
<a name="custom-creating-sqlserver.ssm.CON"></a>

**세션 관리자를 사용하여 DB 인스턴스에 연결하는 방법**

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

1. 탐색 창에서 **데이터베이스(Databases)**를 선택한 후 연결하려는 RDS Custom DB 인스턴스를 선택합니다.

1. **Configuration**(구성)을 선택합니다.

1. DB 인스턴스의 **리소스 ID(Resource ID)** 값을 기록해 둡니다. 예를 들어, 리소스 ID는 `db-ABCDEFGHIJKLMNOPQRS0123456`일 수 있습니다.

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **Instances**(인스턴스)를 선택합니다.

1. EC2 인스턴스의 이름을 찾은 다음 연결된 인스턴스 ID를 선택합니다. 예를 들어, 인스턴스 ID는 `i-abcdefghijklm01234`일 수 있습니다.

1. **연결**을 선택합니다.

1. **세션 관리자(Session Manager)**를 선택합니다.

1. **Connect**(연결)를 선택합니다.

   세션에 대한 창이 열립니다.

## AWS CLI
<a name="custom-creating-sqlserver.ssm.CLI"></a>

AWS CLI를 사용하여 RDS Custom DB 인스턴스에 연결할 수 있습니다. 이 기술을 사용하려면 AWS CLI용 세션 관리자 플러그인이 필요합니다. 플러그인 설치 방법은 [AWS CLI용 세션 관리자 플러그인 설치](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)를 참조하세요.

RDS Custom DB 인스턴스의 DB 리소스 ID를 찾으려면 `[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)`를 사용합니다.

```
aws rds describe-db-instances \
    --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
    --output text
```

다음 샘플 출력은 RDS Custom 인스턴스의 리소스 ID를 보여줍니다. 접두사는 `db-`입니다.

```
db-ABCDEFGHIJKLMNOPQRS0123456
```

DB 인스턴스의 EC2 인스턴스 ID를 찾으려면 `aws ec2 describe-instances`를 사용합니다. 다음 예제에는 리소스 ID로 `db-ABCDEFGHIJKLMNOPQRS0123456`이 사용됩니다.

```
aws ec2 describe-instances \
    --filters "Name=tag:Name,Values=db-ABCDEFGHIJKLMNOPQRS0123456" \
    --output text \
    --query 'Reservations[*].Instances[*].InstanceId'
```

다음 샘플 출력에는 EC2 인스턴스 ID가 나와 있습니다.

```
i-abcdefghijklm01234
```

`--target` 파라미터의 EC2 인스턴스 ID를 제공하는 `aws ssm start-session` 명령을 사용합니다.

```
aws ssm start-session --target "i-abcdefghijklm01234"
```

성공적으로 연결되면 다음과 같이 표시됩니다.

```
Starting session with SessionId: yourid-abcdefghijklm1234
[ssm-user@ip-123-45-67-89 bin]$
```

# RDP를 사용하여 RDS Custom DB 인스턴스에 연결
<a name="custom-creating-sqlserver.rdp"></a>

RDS Custom DB 인스턴스를 생성한 후 RDP 클라이언트를 사용하여 이 인스턴스에 연결할 수 있습니다. 이 절차는 Amazon EC2 인스턴스에 연결하는 절차와 동일합니다. 자세한 내용은 [Windows 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html)을 참조하세요.

DB 인스턴스에 연결하려면 인스턴스와 연결된 키 페어가 필요합니다. 키 페어는 RDS Custom에서 생성합니다. 페어 이름은 접두사 `do-not-delete-rds-custom-DBInstanceIdentifier`를 사용하며, AWS Secrets Manager는 프라이빗 키를 비밀 키로 저장합니다.

다음 단계의 작업을 완료합니다.

1. [RDP 연결을 허용하도록 DB 인스턴스 구성](#custom-creating-sqlserver.rdp.port).

1. [비밀 키 검색](#custom-creating-sqlserver.rdp.key).

1. [RDP 유틸리티를 사용하여 EC2 인스턴스에 연결](#custom-creating-sqlserver.rdp.connect).

## RDP 연결을 허용하도록 DB 인스턴스 구성
<a name="custom-creating-sqlserver.rdp.port"></a>

RDP 연결을 허용하려면 VPC 보안 그룹을 구성하고 호스트에 방화벽 규칙을 설정합니다.

### VPC 보안 그룹 구성
<a name="custom-creating-sqlserver.rdp.port.vpc"></a>

DB 인스턴스와 연결된 VPC 보안 그룹이 전송 제어 프로토콜(TCP)용 포트 3389에서 인바운드 연결을 허용하는지 확인합니다. VPC 보안 그룹을 구성하는 방법은 [VPC 보안 그룹 구성](custom-setup-sqlserver.md#custom-setup-sqlserver.vpc.sg) 섹션을 참조하세요.

### 호스트에서 방화벽 규칙 설정
<a name="custom-creating-sqlserver.rdp.port.firewall"></a>

TCP용 포트 3389에서 인바운드 연결을 허용하려면 호스트에 방화벽 규칙을 설정합니다. 다음 예제에서 이 작업을 수행하는 방법을 보여줍니다.

특정 `-Profile` 값(`Public`, `Private` 또는 `Domain`)을 사용하는 것이 좋습니다. `Any`을 사용하면 세 값을 모두 지정하는 것입니다. 쉼표로 구분된 값 조합을 지정할 수도 있습니다. 방화벽 규칙 설정에 대한 자세한 내용은 Microsoft 설명서의 [Set-NetFirewallRule](https://docs.microsoft.com/en-us/powershell/module/netsecurity/set-netfirewallrule?view=windowsserver2019-ps)을 참조하세요.

**Systems Manager 세션 관리자를 사용하여 방화벽 규칙을 설정하는 방법**

1. [AWS Systems Manager를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating-sqlserver.ssm.md)에 표시된 대로 세션 관리자에 연결합니다.

1. 다음 명령을 실행합니다.

   ```
   Set-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)" -Direction Inbound -LocalAddress Any -Profile Any
   ```

**Systems Manager CLI 명령을 사용하여 방화벽 규칙 설정**

1. 다음 명령을 사용하여 호스트에서 RDP를 엽니다.

   ```
   OPEN_RDP_COMMAND_ID=$(aws ssm send-command --region $AWS_REGION \
       --instance-ids $RDS_CUSTOM_INSTANCE_EC2_ID \
       --document-name "AWS-RunPowerShellScript" \
       --parameters '{"commands":["Set-NetFirewallRule -DisplayName \"Remote Desktop - User Mode (TCP-In)\" -Direction Inbound -LocalAddress Any -Profile Any"]}' \
       --comment "Open RDP port" | jq -r ".Command.CommandId")
   ```

1. 출력에서 반환된 명령 ID를 사용하여 이전 명령의 상태를 가져옵니다. 다음 쿼리를 사용하여 명령 ID를 반환하려면 jq 플러그인이 설치되어 있는지 확인합니다.

   ```
   aws ssm list-commands \
       --region $AWS_REGION \
       --command-id $OPEN_RDP_COMMAND_ID
   ```

## 비밀 키 검색
<a name="custom-creating-sqlserver.rdp.key"></a>

AWS Management Console 또는 AWS CLI 중 하나를 사용하여 비밀 키를 검색할 수 있습니다.

### 콘솔
<a name="custom-creating-sqlserver.rdp.key.CON"></a>

**비밀 키를 검색하는 방법**

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

1. 탐색 창에서 **데이터베이스(Databases)**를 선택한 후 연결하려는 RDS Custom DB 인스턴스를 선택합니다.

1. **Configuration**(구성) 탭을 선택합니다.

1. DB 인스턴스의 **DB 인스턴스 ID**를 기록해 둡니다(예: `my-custom-instance`).

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **Instances**(인스턴스)를 선택합니다.

1. EC2 인스턴스의 이름을 찾은 다음 연결된 인스턴스 ID를 선택합니다.

   이 예제에서 인스턴스 ID는 `i-abcdefghijklm01234`입니다.

1. **세부 정보(Details)**에서 **키 페어 이름(Key pair name)**을 찾습니다. 페어 이름에는 DB 식별자가 포함됩니다. 이 예제에서 페어 이름은 `do-not-delete-rds-custom-my-custom-instance-0d726c`입니다.

1. 인스턴스 요약에서 **퍼블릭 IPv4 DNS(Public IPv4 DNS)**를 찾습니다. 예를 들어, 퍼블릭 DNS는 `ec2-12-345-678-901.us-east-2.compute.amazonaws.com`일 수 있습니다.

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 AWS Secrets Manager 콘솔을 엽니다.

1. 키 페어와 이름이 같은 비밀 키를 선택합니다.

1. **Retrieve secret value**(보안 암호 값 검색)를 선택합니다.

### AWS CLI
<a name="custom-creating-sqlserver.rdp.key.CLI"></a>

**프라이빗 키를 검색하는 방법**

1. `aws rds describe-db-instances` 명령을 호출하여 RDS Custom DB 인스턴스 목록을 가져옵니다

   ```
   aws rds describe-db-instances \
       --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
       --output text
   ```

1. 샘플 출력에서 DB 인스턴스 식별자를 선택합니다(예: `do-not-delete-rds-custom-my-custom-instance`).

1. `aws ec2 describe-instances` 명령을 호출하여 DB 인스턴스의 EC2 인스턴스 ID를 찾습니다. 다음 예제에서는 EC2 인스턴스 이름을 사용하여 DB 인스턴스를 설명합니다.

   ```
   aws ec2 describe-instances \
       --filters "Name=tag:Name,Values=do-not-delete-rds-custom-my-custom-instance" \
       --output text \
       --query 'Reservations[*].Instances[*].InstanceId'
   ```

   다음 샘플 출력에는 EC2 인스턴스 ID가 나와 있습니다.

   ```
   i-abcdefghijklm01234
   ```

1. EC2 인스턴스 ID를 지정하여 다음 예제에서와 같이 키 이름을 찾습니다.

   ```
   aws ec2 describe-instances \
       --instance-ids i-abcdefghijklm01234 \
       --output text \
       --query 'Reservations[*].Instances[*].KeyName'
   ```

   다음 샘플 출력은 접두사 `do-not-delete-rds-custom-DBInstanceIdentifier`를 사용하는 키 이름을 보여줍니다.

   ```
   do-not-delete-rds-custom-my-custom-instance-0d726c
   ```

## RDP 유틸리티를 사용하여 EC2 인스턴스에 연결
<a name="custom-creating-sqlserver.rdp.connect"></a>

**Amazon EC2 사용 설명서의 [RDP를 사용하여 Windows 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#connect-rdp)에 나와 있는 절차를 따릅니다. 이 절차에서는 프라이빗 키가 포함된 .pem 파일을 생성한 것으로 가정합니다.

# Amazon RDS Custom for SQL Server DB 인스턴스 관리
<a name="custom-managing-sqlserver"></a>

Amazon RDS Custom for SQL Server은 Amazon RDS DB 인스턴스에 대한 일반적인 관리 작업의 하위 집합을 지원합니다. 그런 다음 AWS Management Console 및 AWS CLI를 사용하여 지원되는 RDS Custom for SQL Server 관리 작업에 대한 지침을 확인할 수 있습니다.

**Topics**
+ [RDS Custom 자동화 일시 중지 및 다시 시작](custom-managing-sqlserver.pausing.md)
+ [RDS Custom for SQL Server DB 인스턴스 수정](custom-managing.modify-sqlserver.md)
+ [RDS Custom for SQL Server DB 인스턴스 스토리지 수정](custom-managing-sqlserver.storage-modify.md)
+ [RDS Custom for SQL Server 리소스 태깅](custom-managing-sqlserver.tagging.md)
+ [RDS Custom for SQL Server DB 인스턴스 삭제](#custom-managing-sqlserver.deleting)
+ [RDS Custom for SQL Server DB 인스턴스 시작 및 중지](custom-managing-sqlserver.startstop.md)

# RDS Custom 자동화 일시 중지 및 다시 시작
<a name="custom-managing-sqlserver.pausing"></a>

RDS Custom은 RDS Custom for SQL Server DB 인스턴스에 대한 모니터링 및 인스턴스 복구를 자동으로 제공합니다. 인스턴스를 사용자 지정해야 하는 경우 다음을 수행하세요.

1. 지정된 기간 동안 RDS Custom 자동화를 일시 중지합니다. 일시 중지하면 사용자 지정한 인스턴스가 RDS Custom 자동화를 방해하지 않도록 할 수 있습니다.

1. 필요에 따라 RDS Custom for SQL Server DB 인스턴스를 사용자 지정합니다.

1. 다음 중 하나를 수행하세요.
   + 수동으로 자동화를 다시 시작합니다.
   + 일시 중지 기간이 끝날 때까지 기다립니다. 이 경우 RDS Custom은 모니터링 및 인스턴스 복구를 자동으로 재개합니다.

**중요**  
RDS Custom for SQL Server DB 인스턴스를 수정할 때 지원되는 자동화 작업은 자동화 일시 중지 및 재개입니다.

## 콘솔
<a name="custom-managing.pausing.console"></a>

**RDS Custom 자동화를 일시 중지하거나 다시 시작하는 방법**

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

1. 탐색 창에서 **데이터베이스(Databases)**를 선택한 다음 변경하려는 RDS Custom DB 인스턴스를 선택합니다.

1. **Modify**(수정)를 선택합니다. **Modify DB instance**(DB 인스턴스 수정) 페이지가 나타납니다.

1. **RDS Custom 자동화 모드(RDS Custom automation mode)**로 다음 옵션 중 하나를 선택합니다.
   + **일시 중지됨(Paused)**을 선택하면 RDS Custom DB 인스턴스에 대한 모니터링 및 인스턴스 복구가 일시 중지됩니다. **자동화 모드 지속 시간(Automation mode duration)**으로 원하는 일시 중지 기간(분)을 입력합니다. 최소값은 60분(기본값)입니다. 최대값은 1,440분입니다.
   + **완전 자동화(Full automation)**를 선택하면 자동화가 재개됩니다.

1. **계속(Continue)**을 선택하여 수정 사항을 요약한 내용을 확인합니다.

   RDS Custom에서 변경 사항을 즉시 적용한다는 메시지가 표시됩니다.

1. 변경 내용이 정확할 경우 **DB 인스턴스 수정(Modify DB instance)**을 선택합니다. 또는 **뒤로**를 선택하여 변경 내용을 편집하거나 **취소**를 선택하여 변경 내용을 취소합니다.

   RDS 콘솔에 수정 사항에 대한 세부 정보가 표시됩니다. 자동화를 일시 중지한 경우 RDS Custom DB 인스턴스의 **상태(Status)**가 **자동화 일시 중지됨(Automation paused)**으로 표시됩니다.

1. (선택 사항) 탐색 창에서 **데이터베이스(Databases)**를 선택한 후 RDS Custom DB 인스턴스를 선택합니다.

   **요약(Summary)** 창에서 **RDS Custom 자동화 모드(RDS Custom automation mode)**는 자동화 상태를 나타냅니다. 자동화가 일시 중지되면 값이 **일시 중지됨(Paused)이 됩니다. *num*분 후에 자동화가 재개됩니다**.

## AWS CLI
<a name="custom-managing-sqlserver.pausing.CLI"></a>

RDS Custom 자동화를 일시 중지하거나 재개하려면 `modify-db-instance` AWS CLI 명령을 사용합니다. 필수 파라미터 `--db-instance-identifier`를 사용하여 DB 인스턴스를 식별합니다. 다음 파라미터를 사용하여 자동화 모드를 제어합니다.
+ `--automation-mode`는 DB 인스턴스의 일시 정지 상태를 지정합니다. 유효한 값은 자동화를 일시 중지하는 `all-paused`와 다시 재개하는 `full`입니다.
+ `--resume-full-automation-mode-minutes`는 일시 중지 기간을 지정합니다. 기본값은 60분입니다.

**참고**  
`--no-apply-immediately` 또는 `--apply-immediately`에 관계없이 RDS Custom은 가능한 한 빨리 비동기식으로 수정 사항을 적용합니다.

명령 응답에서 `ResumeFullAutomationModeTime`은 재개 시간을 UTC 타임스탬프로 나타냅니다. 자동화 모드가 `all-paused`인 경우 `modify-db-instance`를 사용하여 자동화 모드를 재개하거나 일시 중지 기간을 연장할 수 있습니다. 다른 `modify-db-instance` 옵션은 지원되지 않습니다.

다음 예제에서는 `my-custom-instance`에 대한 자동화를 90분 동안 일시 중지합니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode all-paused \
    --resume-full-automation-mode-minutes 90
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode all-paused ^
    --resume-full-automation-mode-minutes 90
```

다음 예제에서는 일시 중지 기간을 30분 더 연장합니다. 30분이 `ResumeFullAutomationModeTime`에 표시된 원래 시간에 추가됩니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode all-paused \
    --resume-full-automation-mode-minutes 30
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode all-paused ^
    --resume-full-automation-mode-minutes 30
```

다음 예제에서는 `my-custom-instance`에 대한 전체 자동화를 재개합니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --automation-mode full \
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --automation-mode full
```
다음 부분 샘플 출력에서 보류 중인 `AutomationMode` 값은 `full`입니다.  

```
{
    "DBInstance": {
        "PubliclyAccessible": true,
        "MasterUsername": "admin",
        "MonitoringInterval": 0,
        "LicenseModel": "bring-your-own-license",
        "VpcSecurityGroups": [
            {
                "Status": "active",
                "VpcSecurityGroupId": "0123456789abcdefg"
            }
        ],
        "InstanceCreateTime": "2020-11-07T19:50:06.193Z",
        "CopyTagsToSnapshot": false,
        "OptionGroupMemberships": [
            {
                "Status": "in-sync",
                "OptionGroupName": "default:custom-oracle-ee-19"
            }
        ],
        "PendingModifiedValues": {
            "AutomationMode": "full"
        },
        "Engine": "custom-oracle-ee",
        "MultiAZ": false,
        "DBSecurityGroups": [],
        "DBParameterGroups": [
            {
                "DBParameterGroupName": "default.custom-oracle-ee-19",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        ...
        "ReadReplicaDBInstanceIdentifiers": [],
        "AllocatedStorage": 250,
        "DBInstanceArn": "arn:aws:rds:us-west-2:012345678912:db:my-custom-instance",
        "BackupRetentionPeriod": 3,
        "DBName": "ORCL",
        "PreferredMaintenanceWindow": "fri:10:56-fri:11:26",
        "Endpoint": {
            "HostedZoneId": "ABCDEFGHIJKLMNO",
            "Port": 8200,
            "Address": "my-custom-instance.abcdefghijk.us-west-2.rds.amazonaws.com"
        },
        "DBInstanceStatus": "automation-paused",
        "IAMDatabaseAuthenticationEnabled": false,
        "AutomationMode": "all-paused",
        "EngineVersion": "19.my_cev1",
        "DeletionProtection": false,
        "AvailabilityZone": "us-west-2a",
        "DomainMemberships": [],
        "StorageType": "gp2",
        "DbiResourceId": "db-ABCDEFGHIJKLMNOPQRSTUVW",
        "ResumeFullAutomationModeTime": "2020-11-07T20:56:50.565Z",
        "KmsKeyId": "arn:aws:kms:us-west-2:012345678912:key/aa111a11-111a-11a1-1a11-1111a11a1a1a",
        "StorageEncrypted": false,
        "AssociatedRoles": [],
        "DBInstanceClass": "db.m5.xlarge",
        "DbInstancePort": 0,
        "DBInstanceIdentifier": "my-custom-instance",
        "TagList": []
    }
```

# RDS Custom for SQL Server DB 인스턴스 수정
<a name="custom-managing.modify-sqlserver"></a>

RDS Custom for SQL Server DB 인스턴스를 수정하는 절차는 Amazon RDS에서와 유사하지만, 변경할 수 있는 내용은 다음으로 제한됩니다.
+ DB 인스턴스 클래스 변경
+ 백업 보존 기간 및 백업 기간 변경
+ 유지 관리 기간 변경
+ 새로운 버전을 사용할 수 있을 때 DB 엔진 버전 업그레이드
+ 할당된 스토리지, 프로비저닝된 IOPS, 스토리지 유형 변경
+ 다중 AZ 배포 허용 및 제거

RDS Custom for SQL Server DB 인스턴스를 수정할 때는 다음과 같은 제한이 적용됩니다.
+ Custom DB 옵션 및 파라미터 그룹은 지원되지 않습니다.
+ RDS Custom DB 인스턴스에 수동으로 연결하는 모든 스토리지 볼륨은 지원 경계를 벗어납니다.

  자세한 내용은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 단원을 참조하십시오.

## 콘솔
<a name="custom-managing.modify-sqlserver.CON"></a>

**RDS Custom for SQL Server DB 인스턴스를 수정하는 방법**

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

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 수정하려는 DB 인스턴스를 선택합니다.

1. **Modify**(수정)를 선택합니다.

1. 필요에 따라 다음과 같이 변경합니다.

   1. **DB engine version**(DB 엔진 버전)에서 새 버전을 선택합니다.

   1. **DB 인스턴스 클래스(DB instance class)** 값을 변경합니다. 지원되는 클래스는 [RDS Custom for SQL Server DB 인스턴스 클래스 지원](custom-reqs-limits.instancesMS.md) 섹션을 참조하세요.

   1. **백업 보존 기간(Backup retention period)** 값을 변경합니다.

   1. **백업 기간(Backup window)**의 경우 **시작 시간(Start time)**과 **기간(Duration)** 값을 설정합니다.

   1. **DB 인스턴스 유지 관리 기간(DB instance maintenance window)**의 경우 **시작일(Start day)**, **시작 시간(Start time)**, **기간(Duration)** 값을 설정합니다.

1. **계속(Continue)**을 선택합니다.

1. **즉시 적용(Apply immediately)** 또는 **예약된 다음 유지 관리 기간에 적용(Apply during the next scheduled maintenance window)**을 선택합니다.

1. **Modify DB instance**(DB 인스턴스 수정)를 선택합니다.

## AWS CLI
<a name="custom-managing.modify-sqlserver.CLI"></a>

RDS Custom for SQL Server DB 인스턴스를 수정하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 명령을 사용하면 됩니다. 필요한 경우 다음 파라미터를 설정합니다.
+ `--db-instance-class` - 지원되는 클래스는 [RDS Custom for SQL Server DB 인스턴스 클래스 지원](custom-reqs-limits.instancesMS.md) 섹션을 참조하세요.
+ `--engine-version` - 업그레이드할 데이터베이스 엔진의 버전 번호입니다.
+ `--backup-retention-period` - 자동화된 백업을 유지하는 기간으로, 0\$135일까지 설정할 수 있습니다.
+ `--preferred-backup-window` - 자동화된 백업이 생성되는 일일 시간 범위입니다.
+ `--preferred-maintenance-window` - 시스템 유지 관리를 실행할 수 있는 주 단위 기간(UTC)입니다.
+ `--apply-immediately` – `--apply-immediately`를 사용하여 스토리지 변경 사항을 바로 적용합니다.

  그 밖에 다음 유지 관리 기간에 스토리지 변경 사항을 적용하려면 `--no-apply-immediately`(기본값)를 사용합니다.

# RDS Custom for SQL Server DB 인스턴스 스토리지 수정
<a name="custom-managing-sqlserver.storage-modify"></a>

RDS Custom for SQL Server DB 인스턴스의 스토리지 수정은 Amazon RDS DB 인스턴스의 스토리지 수정과 유사하지만 다음 작업만 수행할 수 있습니다.
+ 할당된 스토리지 크기를 늘립니다.
+ 스토리지 유형을 변경합니다. 범용 또는 프로비저닝된 IOPS 같은 사용 가능한 스토리지 유형을 사용할 수 있습니다. 프로비저닝된 IOPS는 gp3, io1 및 io2 Block Express 스토리지 유형에서 지원됩니다.
+ 프로비저닝된 IOPS를 지원하는 볼륨 유형을 사용하는 경우 프로비저닝된 IOPS를 변경합니다.

RDS Custom for SQL Server DB 인스턴스의 스토리지 수정에는 다음과 같은 제한이 적용됩니다.
+ RDS Custom for SQL Server에 할당된 최소 스토리지 크기는 20GiB입니다. io1, gp2, gp3의 최대 스토리지 한도는 16TiB인 반면 io2는 64TiB를 지원합니다.
+ Amazon RDS와 마찬가지로 할당된 스토리지를 줄일 수는 없는데, 이는 Amazon Elastic Block Store(Amazon EBS) 볼륨의 제한입니다. 자세한 내용은 [Amazon RDS DB 인스턴스 스토리지 작업](USER_PIOPS.StorageTypes.md) 섹션을 참조하세요.
+ RDS Custom for SQL Server DB 인스턴스에는 스토리지 autoscaling이 지원되지 않습니다.
+ RDS Custom DB 인스턴스에 수동으로 연결하는 스토리지 볼륨은 스토리지 크기 조정 대상으로 간주되지 않습니다. RDS에서 제공하는 기본 데이터 볼륨, 즉 D 드라이브만 스토리지 크기 조정 대상으로 간주됩니다.

  자세한 내용은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 섹션을 참조하세요.
+ 스토리지 크기 조정은 일반적으로 DB 인스턴스의 중단이나 성능 저하를 일으키지 않습니다. DB 인스턴스에 대한 스토리지 크기를 수정하면 DB 인스턴스의 상태가 **스토리지 최적화**로 됩니다.
+ 스토리지 최적화는 몇 시간이 걸릴 수 있습니다. 6시간 또는 인스턴스에서 스토리지 최적화가 완료된 시간 둘 중 더 긴 시간 동안은 스토리지를 추가로 수정할 수 없습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 스토리지 작업](USER_PIOPS.StorageTypes.md) 섹션을 참조하세요.

스토리지에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 스토리지](CHAP_Storage.md) 단원을 참조하세요.

스토리지 수정에 대한 일반적인 정보는 [Amazon RDS DB 인스턴스 스토리지 작업](USER_PIOPS.StorageTypes.md) 섹션을 참조하세요.

**중요**  
Amazon EC2 콘솔 또는 Amazon EBS 콘솔 또는 API를 사용하여 RDS Custom for SQL Server DB 인스턴스의 스토리지를 수정하지 마세요. Amazon RDS 콘솔 또는 API 외부에서 직접 스토리지를 수정하면 데이터베이스가 `unsupported-configuration` 상태가 됩니다.  
Amazon EC2 또는 Amazon EBS를 사용하여 직접 스토리지를 변경하는 경우 Amazon RDS는 데이터베이스 인스턴스 상태를 추적하거나 관리할 수 없습니다. 이로 인해 다음가 같은 문제가 발생할 수 있습니다.  
고가용성 장애 조치 메커니즘이 제대로 작동하지 않음
데이터베이스 복제 설정이 중단됨
중복 기능이 실패함
데이터베이스를 지원되는 상태로 유지하려면 Amazon RDS 콘솔 또는 API를 통해서만 스토리지를 수정하세요. 복구 단계는 [RDS Custom for SQL Server에서 지원되지 않는 구성 문제 해결](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.fix-unsupported) 섹션을 참조하세요.

## 콘솔
<a name="custom-managing.storage-modify.CON"></a>

**RDS Custom for SQL Server DB 인스턴스 스토리지를 수정하는 방법**

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

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 수정하려는 DB 인스턴스를 선택합니다.

1. **Modify**(수정)를 선택합니다.

1. 필요에 따라 다음과 같이 변경합니다.

   1. **Allocated storage**(할당된 스토리지)에 새로운 값을 입력합니다. 현재 값보다 커야 하며 20GiB\$116TiB여야 합니다.

   1. **스토리지 유형(Storage type)** 값을 변경합니다. 범용 또는 프로비저닝된 IOPS 같은 사용 가능한 스토리지 유형을 사용할 수 있습니다. 프로비저닝된 IOPS는 gp3, io1 및 io2 Block Express 스토리지 유형에서 지원됩니다.

   1. 프로비저닝된 IOPS를 지원하는 볼륨 유형을 지정하는 경우 **프로비저닝된 IOPS** 값을 정의할 수 있습니다.

1. **Continue**(계속)를 선택합니다.

1. **즉시 적용(Apply immediately)** 또는 **예약된 다음 유지 관리 기간에 적용(Apply during the next scheduled maintenance window)**을 선택합니다.

1. **Modify DB instance**(DB 인스턴스 수정)를 선택합니다.

## AWS CLI
<a name="custom-managing-sqlserver.storage-modify.CLI"></a>

RDS Custom for SQL Server DB 인스턴스의 스토리지를 수정하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 명령을 사용하면 됩니다. 필요한 경우 다음 파라미터를 설정합니다.
+ `--allocated-storage` - DB 인스턴스에 할당할 스토리지 크기(GiB)입니다. 현재 값보다 커야 하며 20\$116,384GiB여야 합니다.
+ `--storage-type` - 스토리지 유형(예: gp2, gp3, io1 또는 io2)입니다.
+ `--iops` - DB 인스턴스의 프로비저닝된 IOPS입니다. 프로비저닝된 IOPS를 지원하는 스토리지 유형(예: gp3, io1, io2)에만 지정할 수 있습니다.
+ `--apply-immediately` – `--apply-immediately`를 사용하여 스토리지 변경 사항을 바로 적용합니다.

  그 밖에 다음 유지 관리 기간에 스토리지 변경 사항을 적용하려면 `--no-apply-immediately`(기본값)를 사용합니다.

다음 예에서는 my-custom-instance의 스토리지 크기를 200GiB로, 스토리지 유형을 io1로, 프로비저닝된 IOPS를 3000으로 변경합니다.

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --storage-type io1 \
    --iops 3000 \
    --allocated-storage 200 \
    --apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --storage-type io1 ^
    --iops 3000 ^
    --allocated-storage 200 ^
    --apply-immediately
```

# RDS Custom for SQL Server 리소스 태깅
<a name="custom-managing-sqlserver.tagging"></a>

Amazon RDS 리소스와 마찬가지로 RDS Custom 리소스에 태그를 지정할 수 있지만, 몇 가지 중요한 차이점이 있습니다.
+ RDS Custom 자동화에 필요한 `AWSRDSCustom` 태그를 생성하거나 수정해서는 안 됩니다. 이렇게 하면 자동화가 중단될 수 있습니다.
+ `Name` 태그는 접두사가 `do-not-delete-rds-custom`인 RDS Custom 리소스에 추가됩니다. 고객이 전달한 키 값을 덮어씁니다.
+ 생성 중에 RDS Custom DB 인스턴스에 추가된 태그는 다른 모든 관련 RDS Custom 리소스로 전파됩니다.
+ DB 인스턴스 생성 후 RDS Custom 리소스에 태그를 추가하면 태그가 전파되지 않습니다.

리소스 태그 지정에 대한 일반적인 정보는 [Amazon RDS 리소스에 태그 지정](USER_Tagging.md) 섹션을 참조하세요.

## RDS Custom for SQL Server DB 인스턴스 삭제
<a name="custom-managing-sqlserver.deleting"></a>

RDS Custom for SQL Server DB 인스턴스를 삭제하려면 다음을 수행하세요.
+ DB 인스턴스 이름을 입력합니다.
+ DB 인스턴스의 최종 DB 스냅샷을 생성하는 옵션을 선택하거나 선택 취소합니다.
+ 자동화된 백업을 유지하는 옵션을 선택하거나 선택 취소합니다.

콘솔이나 CLI를 사용하여 RDS Custom for SQL Server DB 인스턴스를 삭제할 수 있습니다. 해당 DB 인스턴스를 삭제하는 데 필요한 시간은 백업 보존 기간(즉, 삭제할 백업 수), 삭제되는 데이터의 양과 최종 스냅샷 생성 여부에 따라 달라질 수 있습니다.

**주의**  
RDS Custom for SQL Server DB 인스턴스를 삭제하면 EC2 인스턴스 및 관련 Amazon EBS 볼륨이 영구적으로 삭제됩니다. 이러한 리소스를 종료하거나 삭제해서는 안 됩니다. 종료하거나 삭제하면 삭제 및 최종 스냅샷 생성이 실패할 수 있습니다.

**참고**  
DB 인스턴스가 `creating`, `failed`, `incompatible-create`, `incompatible-restore` 또는 `incompatible-network` 상태일 때는 최종 DB 스냅샷을 생성할 수 없습니다. 자세한 내용은 [ Amazon RDSDB 인스턴스 상태 보기](accessing-monitoring.md#Overview.DBInstance.Status) 단원을 참조하십시오.

**중요**  
최종 스냅샷을 선택하는 경우 DB 인스턴스 삭제가 진행되는 동안 DB 인스턴스에 데이터를 쓰지 않는 것이 좋습니다. 일단 DB 인스턴스 삭제가 시작되면 데이터 변경 사항이 최종 스냅샷에 캡처되지 않을 수 있습니다.

### 콘솔
<a name="custom-managing-sqs.deleting.console"></a>

**RDS Custom DB 인스턴스를 삭제하는 방법**

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

1. 탐색 창에서 **Databases**(데이터베이스)를 선택한 후 삭제하려는 RDS Custom for SQL Server DB 인스턴스를 선택합니다. RDS Custom for SQL Server DB 인스턴스는 **Instance (RDS Custom for SQL Server)**(인스턴스(RDS Custom for SQL Server))를 표시합니다.

1. **작업**에 대해 **삭제**를 선택합니다.

1. 최종 스냅샷을 생성하려면 **Create final snapshot**(최종 스냅샷 생성)을 선택하고 **Final snapshot name**(최종 스냅샷 이름)에 이름을 입력합니다.

1. 자동 백업을 보관하려면 **Retain automated backups**(자동 백업 보관)를 선택합니다.

1. 상자에 **delete me**를 입력합니다.

1. **삭제**를 선택합니다.

### AWS CLI
<a name="custom-managing-sqs.deleting.CLI"></a>

[delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html) AWS CLI 명령을 사용하여 RDS Custom for SQL Server DB 인스턴스를 삭제할 수 있습니다. 필수 파라미터 `--db-instance-identifier`를 사용하여 DB 인스턴스를 식별합니다. 나머지 파라미터는 Amazon RDS DB 인스턴스와 동일합니다.

다음 예제에서는 이름이 `my-custom-instance`인 RDS Custom for SQL Server DB 인스턴스를 삭제하고 최종 스냅샷을 생성하며 자동 백업을 유지합니다.

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

```
aws rds delete-db-instance \
    --db-instance-identifier my-custom-instance \
    --no-skip-final-snapshot \
    --final-db-snapshot-identifier my-custom-instance-final-snapshot \
    --no-delete-automated-backups
```
Windows의 경우:  

```
aws rds delete-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --no-skip-final-snapshot ^
    --final-db-snapshot-identifier my-custom-instance-final-snapshot ^
    --no-delete-automated-backups
```

최종 스냅샷을 찍으려면 `--final-db-snapshot-identifier` 옵션이 필요하며 이 옵션을 지정해야 합니다.

최종 스냅샷을 건너뛰려면 명령에서 `--no-skip-final-snapshot` 옵션 및 `--final-db-snapshot-identifier` 옵션 대신 `--skip-final-snapshot` 옵션을 지정합니다.

자동 백업을 삭제하려면 명령에서 `--no-delete-automated-backups` 옵션 대신 `--delete-automated-backups` 옵션을 지정합니다.

# RDS Custom for SQL Server DB 인스턴스 시작 및 중지
<a name="custom-managing-sqlserver.startstop"></a>

RDS Custom for SQL Server DB 인스턴스를 시작 및 중지할 수 있습니다. RDS Custom for SQL Server DB 인스턴스를 중지 및 시작할 때도 RDS for SQL Server DB 인스턴스의 일반적인 요구 사항 및 제한 사항이 동일하게 적용됩니다. 자세한 내용은 [Amazon RDS DB 인스턴스의 일시적 중지](USER_StopInstance.md) 단원을 참조하십시오.

RDS Custom for SQL Server DB 인스턴스를 시작 및 중지할 때도 다음과 같은 고려 사항이 적용됩니다.
+ DB 인스턴스가 `STOPPED` 상태인 동안에는 RDS Custom for SQL Server DB 인스턴스의 EC2 인스턴스 속성을 수정하는 작업이 지원되지 않습니다.
+ 단일 가용 영역에 구성되어 있는 경우 RDS Custom for SQL Server DB 인스턴스를 중지 및 시작할 수 있습니다. 다중 AZ 구성에서는 RDS Custom for SQL Server DB 인스턴스를 중지할 수 없습니다.
+ RDS Custom for SQL Server DB 인스턴스를 중지할 때 `SYSTEM` 스냅샷이 생성됩니다. RDS Custom for SQL Server DB 인스턴스를 다시 시작하면 스냅샷이 자동 삭제됩니다.
+ RDS Custom for SQL Server DB 인스턴스를 중지할 때 EC2 인스턴스를 삭제하면 RDS Custom for SQL Server DB 인스턴스가 다시 시작될 때 `C:` 드라이브가 교체됩니다.
+ RDS Custom for SQL Server DB 인스턴스를 중지해도 인스턴스 유형을 수정하지 않는 한 `C:\` 드라이브, 호스트 이름 및 사용자 지정 구성은 그대로 유지됩니다.
+ 다음 작업을 수행하면 RDS Custom에서 DB 인스턴스를 지원 경계가 아닌 영역에 배치하게 되며, 이 경우에도 DB 인스턴스 시간에 대한 요금이 부과됩니다.
  + Amazon RDS가 중지되어 있는 동안 기본 EC2 인스턴스를 시작합니다. 문제를 해결하려면 `start-db-instance` Amazon RDS API를 호출하거나, EC2를 중지하여 RDS Custom 인스턴스가 `STOPPED` 상태가 되도록 합니다.
  + RDS Custom for SQL Server DB 인스턴스가 `ACTIVE` 상태일 때 기본 EC2 인스턴스를 중지합니다.

DB 인스턴스의 중지 및 시작에 관한 자세한 내용은 [Amazon RDS DB 인스턴스의 일시적 중지](USER_StopInstance.md) 및 [이전에 중지된 Amazon RDS DB 인스턴스 시작](USER_StartInstance.md) 단원을 참조하세요.

# RDS Custom for SQL Server를 사용하여 Microsoft Active Directory 작업
<a name="custom-sqlserver-WinAuth"></a>

RDS Custom for SQL Server를 사용하면 인스턴스를 자체 관리형 Active Directory(AD) 또는 AWS Managed Microsoft AD에 조인할 수 있습니다. 이는 온프레미스 데이터 센터, Amazon EC2 또는 다른 클라우드 서비스 공급자와 같이 AD가 호스팅되는 위치에 관계없이 적용됩니다.

사용자 및 서비스 인증의 경우, 중간 도메인 및 포리스트 신뢰를 사용하지 않고도 RDS Custom for SQL Server DB 인스턴스에서 NTLM 또는 Kerberos 인증을 사용할 수 있습니다. 사용자가 자체 조인된 Active Directory로 RDS Custom for SQL Server DB 인스턴스에서 인증을 시도하면 인증 요청이 자체 관리형 AD 또는 사용자가 지정한 AWS Managed Microsoft AD로 전달됩니다.

다음 섹션에서는 RDS Custom for SQL Server에 자체 관리형 Active Directory 및 AWS 관리형 Active Directory를 사용하여 작업하는 정보를 찾을 수 있습니다.

**Topics**
+ [리전 및 버전 사용 가능 여부](#custom-sqlserver-WinAuth.Regions)
+ [자체 관리형 또는 온프레미스 AD 구성](custom-sqlserver-WinAuth.config-Self-Managed.md)
+ [Directory Service를 사용하여 Microsoft Active Directory 구성](custom-sqlserver-WinAuth.config-ADS.md)
+ [네트워크 구성 포트 규칙](custom-sqlserver-WinAuth.NWConfigPorts.md)
+ [네트워크 검증](custom-sqlserver-WinAuth.NWValidation.md)
+ [RDS Custom for SQL Server 인스턴스에 대한 Windows 인증 설정](custom-sqlserver-WinAuth.settingUp.md)
+ [도메인에서 DB 인스턴스 관리](custom-sqlserver-WinAuth.ManagingDBI.md)
+ [도메인 멤버십 이해](custom-sqlserver-WinAuth.Understanding.md)
+ [Active Directory 문제 해결](custom-sqlserver-WinAuth.Troubleshoot.md)

## 리전 및 버전 사용 가능 여부
<a name="custom-sqlserver-WinAuth.Regions"></a>

RDS Custom for SQL Server는 RDS Custom for SQL Server가 지원되는 모든 리전에서 NTLM 또는 Kerberos를 사용하여 자체 관리형 AD 및 AWS Managed Microsoft AD를 모두 지원합니다. 자세한 내용은 [RDS Custom을 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md) 단원을 참조하십시오.

# 자체 관리형 또는 온프레미스 AD 구성
<a name="custom-sqlserver-WinAuth.config-Self-Managed"></a>

온프레미스 또는 자체 관리형 Microsoft AD를 RDS Custom for SQL Server DB 인스턴스에 조인하려면 Active Domain을 다음과 같이 구성해야 합니다.
+ 자체 관리형 또는 온프레미스 AD에서 RDS Custom for SQL Server DB 인스턴스와 연결된 VPC의 서브넷을 정의합니다. VPC의 서브넷과 AD 사이트의 서브넷 간에 충돌이 없는지 확인합니다.
+ AD 도메인 컨트롤러의 도메인 기능 수준은 Windows Server 2008 R2 이상입니다.
+ AD 도메인 이름은 단일 레이블 도메인(SLD) 형식일 수 없습니다. RDS Custom for SQL Server는 SLD 도메인을 지원하지 않습니다.
+ AD의 정규화된 도메인 이름(FQDN)이 47자를 초과하면 안 됩니다.

## 네트워크 연결 구성
<a name="custom-sqlserver-WinAuth.config-Self-Managed.network"></a>

다음과 같은 방식으로 자체 관리형 또는 온프레미스 AD 네트워크 연결을 구성합니다.
+ RDS Custom for SQL Server 인스턴스가 실행 중인 Amazon VPC와 AD 간의 연결을 설정합니다. Direct Connect, Site-to-Site VPN, AWS Transit Gateway 및 VPC 피어링을 사용합니다.
+ 자체 관리형 또는 온프레미스 AD에 대해 RDS Custom for SQL Server 보안 그룹 및 네트워크 ACL 포트의 트래픽을 허용합니다. 자세한 내용은 [네트워크 구성 포트 규칙](custom-sqlserver-WinAuth.NWConfigPorts.md) 섹션을 참조하세요.  
![\[Microsoft SQL Server Windows 인증 디렉터리\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/custom-sqs-SM-NC.png)

## DNS 확인 구성
<a name="custom-sqlserver-WinAuth.config-Self-Managed.DNS"></a>

자체 관리형 또는 온프레미스 AD를 사용하여 DNS 확인을 구성하려면 다음 요구 사항을 설정합니다.
+ 자체 호스팅된 Active Directory의 정규화된 도메인 이름(FQDN)을 확인하도록 VPC 내에서 DNS 확인을 구성합니다. FQDN의 예는 `corp.example.local`입니다. DNS 확인을 구성하려면 Amazon Route 53 아웃바운드 엔드포인트 및 해석기 규칙이 있는 특정 도메인에 대한 쿼리를 전달하도록 VPC DNS 해석기를 구성합니다. 자세한 내용은 [DNS 레코드를 확인하도록 Route 53 Resolver 아웃바운드 엔드포인트 구성](https://repost.aws/knowledge-center/route53-resolve-with-outbound-endpoint)을 참조하세요.
+ VPC와 온프레미스 리소스를 모두 활용하는 워크로드의 경우 온프레미스에서 호스팅되는 DNS 레코드를 확인해야 합니다. 온프레미스 리소스는 AWS에서 호스팅되는 이름을 확인해야 할 수 있습니다.

  하이브리드 클라우드 설정을 생성하려면 해석기 엔드포인트와 조건부 전달을 사용하여 온프레미스 리소스와 사용자 지정 VPC 간의 DNS 쿼리를 확인합니다. 자세한 내용은 *Amazon Route 53 개발자 안내서*의 [VPC와 네트워크 간 DNS 쿼리 해석](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-overview-DSN-queries-to-vpc.html)을 참조하세요.

**중요**  
RDS Custom for SQL Server에서 네트워크 인터페이스의 DNS 해석기 설정을 수정하면 DNS 지원 VPC 엔드포인트가 더 이상 제대로 작동하지 않습니다. 인터넷 액세스가 없는 프라이빗 서브넷 내의 인스턴스에는 DNS 지원 VPC 엔드포인트가 필요합니다.

# Directory Service를 사용하여 Microsoft Active Directory 구성
<a name="custom-sqlserver-WinAuth.config-ADS"></a>

AWS Managed Microsoft AD는 AWS에서 완전 관리형 Microsoft Active Directory를 생성하며, Windows Server 2019에 의해 구동되고 2012 R2 포리스트 및 도메인 기능 수준에서 작동합니다. Directory Service는 Amazon VPC의 서로 다른 서브넷에 도메인 컨트롤러를 생성하여 장애가 발생하더라도 디렉터리를 쉽게 사용할 수 있도록 합니다.

AWS Managed Microsoft AD를 사용하여 디렉터리를 생성하려면 *AWS Directory Service 관리 안내서*의 [AWS Managed Microsoft AD 시작하기](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html)를 참조하세요.

## 네트워크 연결 구성
<a name="custom-sqlserver-WinAuth.config-ADS.network"></a>

### 디렉터리와 DB 인스턴스 사이에 VPC 간 트래픽 활성화
<a name="custom-sqlserver-WinAuth.config-ADS.network.x-vpc"></a>

디렉터리와 DB 인스턴스를 동일한 VPC에 배치하려면 이 단계를 건너뛰고 [네트워크 구성 포트 규칙](custom-sqlserver-WinAuth.NWConfigPorts.md)의 다음 단계로 이동하세요.

디렉터리와 DB 인스턴스를 서로 다른 VPC에 배치하려면 VPC 피어링 또는 AWS Transit Gateway를 사용하여 VPC 간 트래픽을 구성하세요. VPC 피어링 사용에 대한 자세한 내용은 *Amazon VPC 피어링 가이드*의 [VPC 피어링이란 무엇인가요?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) 및 *Amazon VPC Transit Gateways*의 [AWS Transit Gateway란 무엇인가요?](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)를 참조하세요.

**VPC 피어링을 사용하여 VPC 간 트래픽 활성화**

1. 네트워크 트래픽이 양방향으로 흐를 수 있도록 적절한 VPC 라우팅 규칙을 설정합니다.

1. DB 인스턴스의 보안 그룹이 디렉터리의 보안 그룹에서 인바운드 트래픽을 수신할 수 있도록 허용합니다. 자세한 내용은 [네트워크 구성 포트 규칙](custom-sqlserver-WinAuth.NWConfigPorts.md) 섹션을 참조하세요.

1. 네트워크 액세스 제어 목록(ACL)은 트래픽을 차단해서는 안 됩니다.

다른 AWS 계정가 디렉터리를 소유하는 경우 디렉터리를 공유해야 합니다. *AWS Directory Service 관리 안내서*의 [자습서: 원활한 EC2 도메인 조인을 위해 AWS Managed Microsoft AD 공유](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html)에 따라 RDS Custom for SQL Server 인스턴스가 있는 AWS 계정와 디렉터리를 공유합니다.

**AWS 계정 간에 디렉터리 공유**

1. DB 인스턴스용 계정을 사용하여 Directory Service 콘솔에 로그인하고 계속하기 전에 도메인이 `SHARED` 상태가 되었는지 확인합니다.

1. DB 인스턴스용 계정을 사용하여 Directory Service 콘솔에 로그인한 후 **디렉터리 ID** 값을 기록해 둡니다. 이 ID를 사용하여 DB 인스턴스를 도메인에 조인합니다.

## DNS 확인 구성
<a name="custom-sqlserver-WinAuth.config-ADS.DNS"></a>

AWS Managed Microsoft AD를 사용하여 디렉터리를 생성하면 Directory Service가 자동으로 두 개의 도메인 컨트롤러를 생성하고 사용자를 대신하여 DNS 서비스를 추가합니다.

기존 AWS Managed Microsoft AD가 있거나 RDS Custom for SQL Server DB 인스턴스가 아닌 다른 VPC에서 시작할 계획이 있는 경우 Route 53 아웃바운드 및 해석기 규칙이 있는 특정 도메인에 대한 쿼리를 전달하도록 VPC DNS 해석기를 구성합니다. [DNS 레코드를 확인하도록 Route 53 Resolver 아웃바운드 엔드포인트 구성](https://repost.aws/knowledge-center/route53-resolve-with-outbound-endpoint)을 참조하세요.

# 네트워크 구성 포트 규칙
<a name="custom-sqlserver-WinAuth.NWConfigPorts"></a>

다음 네트워크 구성을 충족하는지 확인합니다.
+ RDS Custom for SQL Server DB 인스턴스를 생성하려는 Amazon VPC와 자체 관리형 Active Directory 또는 AWS Managed Microsoft AD 간에 연결이 구성되었습니다. 자체 관리형 Active Directory의 경우, AWS Direct Connect, AWS VPN, VPC 피어링 또는 AWS Transit Gateway를 사용하여 연결을 설정합니다. AWS Managed Microsoft AD의 경우, VPC 피어링을 사용하여 연결을 설정합니다.
+ RDS Custom for SQL Server DB 인스턴스를 만드는 서브넷의 보안 그룹과 VPC 네트워크 ACL이 다음 다이어그램에 표시된 방향으로 포트를 통한 트래픽을 허용하는지 확인합니다.  
![\[Microsoft Active Directory 네트워크 구성 포트 규칙입니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/custom_sqlserver_ActiveDirectory_Requirements_NetworkConfig.png)

  다음 테이블에는 각 포트의 역할이 나와 있습니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-sqlserver-WinAuth.NWConfigPorts.html)
+ 일반적으로 도메인 DNS 서버는 AD 도메인 컨트롤러에 있습니다. 이 기능을 사용하기 위해 VPC DHCP 옵션 세트를 구성할 필요는 없습니다. 자세한 정보는 *Amazon VPC 사용 설명서*의 [DHCP 옵션 세트](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)를 참조하세요.

**중요**  
VPC 네트워크 ACL을 사용하는 경우 RDS Custom for SQL Server DB 인스턴스의 동적 포트(49152\$165535)를 통한 아웃바운드 트래픽도 허용해야 합니다. 이러한 트래픽 규칙이 각 AD 도메인 컨트롤러, DNS 서버 및 RDS Custom for SQL Server DB 인스턴스에 적용되는 방화벽에도 반영되는지 확인하세요.  
VPC 보안 그룹에서는 네트워크 트래픽이 시작되는 방향으로만 포트를 열어야 하지만, 대부분의 Windows 방화벽과 VPC 네트워크 ACL에서는 포트가 양방향으로 열려 있어야 합니다.

# 네트워크 검증
<a name="custom-sqlserver-WinAuth.NWValidation"></a>

RDS Custom 인스턴스를 자체 관리형 또는 AWS Managed Microsoft AD에 조인하기 전에 RDS Custom for SQL Server 인스턴스를 시작하려는 위치와 동일한 VPC의 EC2 인스턴스에서 다음을 확인합니다.
+ 정규화된 도메인 이름(FQDN)을 도메인 컨트롤러 IP로 확인할 수 있는지 확인합니다.

  ```
  nslookup corp.example.com
  ```

  명령은 유사한 출력을 반환해야 합니다.

  ```
  Server:  ip-10-0-0-2.us-west-2.compute.internal
  Address:  25.0.0.2
  
  Non-authoritative answer:
  Name:    corp.example.com
  Addresses:  40.0.9.25 (DC1 IP)
              40.0.50.123 (DC2 IP)
  ```
+ RDS Custom 인스턴스를 시작하는 VPC의 EC2 인스턴스에서 AWS 서비스를 확인합니다.

  ```
  $region='input-your-aws-region'
  $domainFQDN='input-your-domainFQDN'
   
  function Test-DomainPorts {
      param (
          [string]$Domain,
          [array]$Ports
      )
   
      foreach ($portInfo in $Ports) {
          try {
              $conn = New-Object System.Net.Sockets.TcpClient
              $connectionResult = $conn.BeginConnect($Domain, $portInfo.Port, $null, $null)
              $success = $connectionResult.AsyncWaitHandle.WaitOne(1000) # 1 second timeout
              if ($success) {
                  $conn.EndConnect($connectionResult)
                  $result = $true
              } else {
                  $result = $false
              }
          }
          catch {
              $result = $false
          }
          finally {
              if ($null -ne $conn) {
                  $conn.Close()
              }
          }
          Write-Host "$($portInfo.Description) port open: $result"
      }
  }
   
  # Check if ports can be reached 
  $ports = @(
      @{Port = 53;   Description = "DNS"},
      @{Port = 88;   Description = "Kerberos"},
      @{Port = 389;  Description = "LDAP"},
      @{Port = 445;  Description = "SMB"},
      @{Port = 5985; Description = "WinRM"},
      @{Port = 636;  Description = "LDAPS"},
      @{Port = 3268; Description = "Global Catalog"},
      @{Port = 3269; Description = "Global Catalog over SSL"},
      @{Port = 9389; Description = "AD DS"}
  )
   
  function Test-DomainReachability {
      param (
          [string]$DomainName
      )
      
      try {
          $dnsResults = Resolve-DnsName -Name $DomainName -ErrorAction Stop
          Write-Host "Domain $DomainName is successfully resolving to following IP addresses: $($dnsResults.IpAddress)"
          Write-Host ""
          return $true
      } 
      catch {
          Write-Host ""
          Write-Host "Error Message: $($_.Exception.Message)"
          Write-Host "Domain $DomainName reachability check failed, please Configure DNS resolution"
          return $false
      }
  }
   
  $domain = (Get-WmiObject Win32_ComputerSystem).Domain
  if ($domain -eq 'WORKGROUP') {
      Write-Host ""    
      Write-Host "Host $env:computername is still part of WORKGROUP and not part of any domain"
      }
  else {
      Write-Host ""
      Write-Host "Host $env:computername is joined to $domain domain"
      Write-Host ""
      }
   
   
  $isReachable = Test-DomainReachability -DomainName $domainFQDN  
  if ($isReachable) {
      write-Host "Checking if domain $domainFQDN is reachable on required ports  "
      Test-DomainPorts -Domain $domainFQDN -Ports $ports
  }
  else {
      Write-Host "Port check skipped. Domain not reachable"
  }   
   
   
   
  # Get network adapter configuration
  $networkConfig = Get-WmiObject Win32_NetworkAdapterConfiguration | 
                   Where-Object { $_.IPEnabled -eq $true } |
                   Select-Object -First 1
   
  # Check DNS server settings
  $dnsServers = $networkConfig.DNSServerSearchOrder
   
  if ($dnsServers) {
      Write-Host "`nDNS Server settings:"
      foreach ($server in $dnsServers) {
          Write-Host "  - $server"
      }
  } else {
      Write-Host "`nNo DNS servers configured or unable to retrieve DNS server information."
  }
   
  write-host ""
   
  # Checks reachability to dependent services
  $services = "s3", "ec2", "secretsmanager", "logs", "events", "monitoring", "ssm", "ec2messages", "ssmmessages"
   
  function Get-TcpConnectionAsync {
      param (
          $ServicePrefix,
          $region
      )
      $endpoint = "${ServicePrefix}.${region}.amazonaws.com"
      $tcp = New-Object Net.Sockets.TcpClient
      $result = $false
   
      try {
          $connectTask = $tcp.ConnectAsync($endpoint, 443)
          $timedOut = $connectTask.Wait(3000)
          $result = $tcp.Connected
      } 
      catch {
          $result = $false
      } 
      return $result
  }
   
  foreach ($service in $services) {
      $validationResult = Get-TcpConnectionAsync -ServicePrefix $service -Region $region
      Write-Host "Reachability to $service is $validationResult"
  }
  ```

  `TcpTestSucceeded` 값은 `s3`, `ec2`, `secretsmanager`, `logs`, `events`, `monitoring`, `ssm`, `ec2messages`, `ssmmessages`에 대해 `True`를 반환해야 합니다.

# RDS Custom for SQL Server 인스턴스에 대한 Windows 인증 설정
<a name="custom-sqlserver-WinAuth.settingUp"></a>

AD 도메인에 조인된 RDS Custom for SQL Server DB 인스턴스를 소유한 AWS 계정에 대해 전용 OU 및 해당 OU 범위의 서비스 보안 인증을 만드는 것이 좋습니다. 전용 OU 및 서비스 보안 인증을 지정하면 권한 충돌을 피하고 최소 권한 원칙을 따릅니다.

Active Directory 수준 그룹 정책은 AWS 자동화 및 권한과 충돌할 수 있습니다. RDS Custom for SQL Server에 대해 생성한 OU에만 적용되는 GPO를 선택하는 것이 좋습니다.
+ 자체 관리형 또는 온프레미스 AD에서 OU 및 AD 도메인 사용자를 생성하려면 도메인 컨트롤러를 도메인 관리자로 연결할 수 있습니다.
+ Directory Service 디렉터리에서 사용자 및 그룹을 생성하려면 관리 인스턴스에 연결하고 사용자 및 그룹 생성 권한이 있는 사용자로 로그인해야 합니다. 자세한 내용은 *AWS Directory Service 관리 안내서*의 [AWS Managed Microsoft AD에서의 사용자 및 그룹 관리](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html)를 참조하세요.
+ Amazon EC2 Windows Server 인스턴스에서 Active Directory를 관리하려면 EC2 인스턴스에서 Active Directory 도메인 서비스 및 Active Directory Lightweight Directory 서비스 도구를 설치해야 합니다. 자세한 내용은 *AWS Directory Service 관리 안내서*의 [AWS Managed Microsoft AD용 Active Directory 관리 도구 설치](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_install_ad_tools.html)를 참조하세요.
+ 이러한 도구는 관리가 용이하도록 RDS Custom for SQL Server DB 인스턴스가 아닌 별도의 EC2 인스턴스에 설치하는 것이 좋습니다.

AD 도메인 서비스 계정의 요구 사항은 다음과 같습니다.
+ AD 도메인에는 컴퓨터를 도메인에 연결할 수 있는 권한이 위임된 서비스 계정이 있어야 합니다. 도메인 서비스 계정은 특정 작업을 수행할 권한이 위임된 AD의 사용자 계정입니다.
+ RDS Custom for SQL Server에 조인하려는 조직 단위의 도메인 서비스 계정에 다음 권한을 위임합니다.
  + 검증된 DNS 호스트 이름 쓰기 기능
  + 서비스 보안 주체 이름에 쓸 수 있는 검증된 기능
  + 컴퓨터 객체 생성 및 삭제
+ 자체 관리형 및 온프레미스 AD의 경우 도메인 서비스 계정은 ‘AWS위임 도메인 이름 시스템 관리자’ 그룹의 멤버여야 합니다.
+ AWS Managed Microsoft AD의 경우 도메인 서비스 계정은 ‘DnsAdmins’ 그룹의 멤버여야 합니다.

이러한 권한은 컴퓨터 객체를 자체 관리형 AD 및 AWS Managed Microsoft AD에 조인하는 데 필요한 최소 권한 집합입니다. 자세한 내용은 Microsoft Windows Server 설명서의 [오류: 제어를 위임받은 관리자가 아닌 사용자가 컴퓨터를 도메인 컨트롤러에 조인하려고 하면 액세스가 거부됨](https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/access-denied-when-joining-computers) 항목을 참조하세요.

**중요**  
DB 인스턴스를 만든 후에는 RDS Custom for SQL Server가 조직 단위(OU)에서 생성한 컴퓨터 객체를 옮기지 마세요. 연결된 객체를 이동하면 RDS Custom for SQL Server DB 인스턴스가 잘못 구성될 수 있습니다. Amazon RDS에서 생성한 컴퓨터 객체를 이동해야 하는 경우 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 사용하여 컴퓨터 객체의 원하는 위치로 도메인 파라미터를 수정하세요.

**Topics**
+ [1단계: AD에서 조직 단위(OU) 생성](#custom-sqlserver-WinAuth.settingUp.CreateOU)
+ [2단계: AD 도메인 사용자 생성](#custom-sqlserver-WinAuth.settingUp.ADuser)
+ [3단계: 자체 관리형 또는 AWS Managed Microsoft AD에서 AD 사용자에게 제어 권한 위임](#custom-sqlserver-WinAuth.settingUp.Delegate)
+ [4단계: 보안 암호 생성](#custom-sqlserver-WinAuth.settingUp.ASM)
+ [5단계: RDS Custom for SQL Server DB 인스턴스 생성 또는 수정](#custom-sqlserver-WinAuth.settingUp.CreateDBInstance)
+ [6단계: Windows 인증 SQL Server 로그인 생성](#custom-sqlserver-WinAuth.settingUp.CreateLogins)
+ [7단계: Kerberos 또는 NTLM 인증 사용](#custom-sqlserver-WinAuth.settingUp.KerbNTLM)

## 1단계: AD에서 조직 단위(OU) 생성
<a name="custom-sqlserver-WinAuth.settingUp.CreateOU"></a>

다음 단계에 따라 AD에서 조직 단위를 생성합니다.

**AD에서 OU 생성**

1. 도메인 관리자로 도메인 AD에 연결합니다.

1. **Active Directory 사용자 및 컴퓨터**를 열고 OU를 생성할 도메인을 선택합니다.

1. 도메인을 마우스 오른쪽 버튼으로 클릭하고 **새로 만들기**를 선택한 다음 **조직 단위**를 선택합니다.

1. OU 이름을 입력합니다.

   **컨테이너가 실수로 삭제되지 않도록 보호**를 활성화합니다.

1. **확인**을 선택합니다. 새 OU는 도메인 아래에 표시됩니다.

AWS Managed Microsoft AD의 경우 이 OU의 이름은 디렉터리 생성 시 입력한 NetBIOS 이름에 근거를 둡니다. 이 OU는 AWS가 소유하며, 전체 제어 권한을 부여한 모든 AWS 관련 디렉터리 객체가 포함됩니다. 기본적으로 이 OU에는 **컴퓨터와 사용자**라는 두 개의 하위 OU가 있습니다. RDS Custom이 생성하는 새 OU는 NetBIOS를 기반으로 하는 OU의 하위 OU입니다.

## 2단계: AD 도메인 사용자 생성
<a name="custom-sqlserver-WinAuth.settingUp.ADuser"></a>

도메인 사용자 보안 인증 정보는 Secrets Manager에서 보안 암호로 사용됩니다.

**AD에서 AD 도메인 사용자 생성**

1. **Active Directory 사용자 및 컴퓨터**를 열고 사용자를 생성할 도메인과 OU를 선택합니다.

1. **사용자** 객체를 마우스 오른쪽 버튼으로 클릭하고 **새로 만들기**, **사용자** 순으로 선택합니다.

1. 사용자의 이름, 성 및 로그인 이름을 입력합니다. **다음**을 클릭합니다.

1. 사용자의 암호를 입력합니다. **다음 로그인 시 사용자가 암호를 변경해야 함** 또는 **계정이 비활성화됨**을 선택하지 마세요. **다음**을 클릭합니다.

1. **확인**을 클릭합니다. 새 사용자는 도메인 아래에 표시됩니다.

## 3단계: 자체 관리형 또는 AWS Managed Microsoft AD에서 AD 사용자에게 제어 권한 위임
<a name="custom-sqlserver-WinAuth.settingUp.Delegate"></a>

**도메인의 AD 도메인 사용자에게 제어 권한을 위임하려면**

1. **Active Directory 사용자 및 컴퓨터** MMC 스냅인을 열고 도메인을 선택합니다.

1. 이전에 만든 OU를 마우스 오른쪽 버튼으로 클릭하고 **제어 위임**을 선택합니다.

1. **제어 위임 마법사**에서 **다음**을 클릭합니다.

1. **사용자 또는 그룹** 섹션에서 **추가**를 클릭합니다.

1. **사용자, 컴퓨터 또는 그룹 선택**에서 생성한 AD 사용자를 입력하고 **이름 확인**을 클릭합니다. AD 사용자 확인에 성공하면 **확인**을 클릭합니다.

1. **사용자 또는 그룹** 섹션에서 AD 사용자가 추가되었는지 확인하고 **다음**을 클릭합니다.

1. **위임할 작업** 섹션에서 **위임할 사용자 지정 작업 생성**을 선택하고 **다음**을 클릭합니다.

1. **Active Directory 객체 유형** 섹션에서:

   **폴더의 다음 객체만**을 선택합니다.

   **컴퓨터 객체**를 선택합니다.

   **이 폴더에서 선택한 객체 생성**을 선택합니다.

   **이 폴더에서 선택한 객체 삭제**를 선택하고 **다음**을 클릭합니다.

1. **권한** 섹션에서:

   **일반**을 선택한 상태로 유지합니다.

   **DNS 호스트 이름에 대한 검증된 쓰기**를 선택합니다.

   **서비스 보안 주체 이름에 대한 검증된 쓰기**를 선택하고 **다음**을 클릭합니다.

1. **제어 위임 마법사를 완료하려면**에서 설정을 확인한 다음 **마침**을 클릭합니다.

## 4단계: 보안 암호 생성
<a name="custom-sqlserver-WinAuth.settingUp.ASM"></a>

Active Directory에 포함하려는 RDS Custom for SQL Server DB 인스턴스가 포함된 동일한 AWS 계정 및 리전에 보안 암호를 만들어야 합니다. [2단계: AD 도메인 사용자 생성](#custom-sqlserver-WinAuth.settingUp.ADuser)에서 생성된 AD 도메인 사용자의 자격 증명을 저장합니다.

------
#### [ Console ]
+ AWS Secrets Manager에서 **새 암호 저장**을 선택합니다.
+ **보안 암호 유형**에서 **다른 유형의 보안 암호**를 선택합니다.
+ **키/값 쌍**의 경우 2개의 키를 추가합니다.
  + 첫 번째 키 값에는 `SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME`을 입력하고 AD 사용자의 사용자 이름(도메인 접두사 제외)을 입력합니다.
  + 두 번째 키에 `SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD`를 입력하고 도메인에 AD 사용자의 암호를 입력합니다.
+ **암호화 키**에 RDS Custom for SQL Server 인스턴스를 생성하는 데 사용한 것과 동일한 AWS KMS 키를 입력합니다.
+ **보안 암호 이름**에서 `do-not-delete-rds-custom-`으로 시작하는 보안 암호 이름을 선택하여 인스턴스 프로파일이 이 보안 암호에 액세스할 수 있도록 합니다. 보안 암호에 다른 이름을 선택하려면 **보안 암호 이름**에 액세스하도록 `RDSCustomInstanceProfile`을 업데이트합니다.
+ (선택 사항) **설명**에 보안 암호 이름에 대한 설명을 입력합니다.
+ 태그 `Key="AWSRDSCustom",Value="custom-sqlserver"` 추가 
+ **저장**을 클릭한 후 **다음**을 클릭합니다.
+ **교체 설정 구성**에서 기본값을 유지하고 **다음**을 선택합니다.
+ 보안 암호 설정을 검토하고 **저장**을 클릭합니다.
+ 새 보안 암호를 선택하고 **보안 암호 ARN**의 값을 복사합니다. 다음 단계에서 이를 사용하여 Active Directory를 설정합니다.

------
#### [ CLI ]

CLI에서 다음 명령을 실행하여 보안 암호를 생성합니다.

```
# Linux based
aws secretsmanager create-secret \
--name do-not-delete-rds-custom-DomainUserCredentails \ 
--description "Active directory user credentials for managing RDS Custom" \ 
--secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" \
--kms-key-id <RDSCustomKMSKey> \
--tags Key="AWSRDSCustom",Value="custom-sqlserver"

# Windows based
aws secretsmanager create-secret ^
--name do-not-delete-rds-custom-DomainUserCredentails ^ 
--description "Active directory user credentials for managing RDS Custom" ^
--secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" ^
--kms-key-id <RDSCustomKMSKey> ^
--tags Key="AWSRDSCustom",Value="custom-sqlserver"
```

------

## 5단계: RDS Custom for SQL Server DB 인스턴스 생성 또는 수정
<a name="custom-sqlserver-WinAuth.settingUp.CreateDBInstance"></a>

디렉터리에서 사용할 RDS Custom for SQL Server DB 인스턴스를 생성하거나 수정합니다. 콘솔, CLI 또는 RDS API를 사용하여 DB 인스턴스를 디렉터리에 연결할 수 있습니다. 이 작업을 다음 중 한 가지 방법으로 수행할 수 있습니다.
+ 콘솔, [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) CLI 명령 또는 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) RDS API 작업을 사용하여 새 SQL Server DB 인스턴스를 생성합니다.

  지침은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ 콘솔, [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 명령 또는 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 작업을 사용하여 기존 SQL Server DB 인스턴스를 수정합니다.

  지침은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.
+ 콘솔, [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) CLI 명령 또는 [RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) RDS API 작업을 사용하여 DB 스냅샷에서 SQL Server DB 인스턴스를 복원합니다.

  지침은 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 섹션을 참조하세요.
+ 콘솔, [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) CLI 명령 또는 [RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) RDS API 작업을 사용하여 SQL Server DB 인스턴스를 특정 시점으로 복구합니다.

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

**참고**  
RDS Custom for SQL Server 인스턴스가 이미 AD에 수동으로 조인된 경우 [네트워크 구성 포트 규칙](custom-sqlserver-WinAuth.NWConfigPorts.md), [네트워크 검증](custom-sqlserver-WinAuth.NWValidation.md)의 설정을 확인하고 1\$14단계를 완료합니다. 도메인 조인 보안 인증 정보 및 구성이 RDS Custom에 등록되어 CNAME를 모니터링, 등록 및 복구 작업을 수행할 수 있도록 `--domain-fqdn`, `--domain-ou` 및 `--domain-auth-secret-arn`을 AD로 업데이트합니다.

AWS CLI를 사용하는 경우 생성한 도메인 디렉터리를 DB 인스턴스에서 사용하려면 다음과 같은 파라미터가 필요합니다.
+ `--domain-fqdn` 파라미터에는 자체 관리형 AD의 정규화된 도메인 이름을 사용합니다.
+ `--domain-ou` 파라미터에는 자체 관리형 AD에서 만든 OU를 사용합니다.
+ `--domain-auth-secret-arn` 파라미터에는 생성한 **보안 암호 ARN**의 값을 사용합니다.

**중요**  
자체 관리형 AD 도메인에 조인하거나 자체 관리형 AD 도메인 또는 AWS Managed Microsoft AD에서 제거하도록 DB 인스턴스를 수정한 경우 변경 사항이 적용되려면 DB 인스턴스를 재부팅해야 합니다. 변경 사항을 즉시 적용하거나 다음 유지 관리 기간까지 기다릴 수 있습니다. **즉시 적용** 옵션을 선택하면 단일 AZ DB 인스턴스에 가동 중단이 발생합니다. 다중 AZ DB 클러스터는 재부팅을 완료하기 전에 장애 조치를 수행합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

다음 CLI 명령은 새 RDS Custom for SQL Server DB 인스턴스를 만들어 자체 관리형 또는 AWS Managed Microsoft AD 도메인에 조인합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds create-db-instance  \
--engine custom-sqlserver-se \
--engine-version 15.00.4312.2.v1 \
--db-instance-identifier my-custom-instance \
--db-instance-class db.m5.large \
--allocated-storage 100 --storage-type io1 --iops 1000 \
--master-username my-master-username \
--master-user-password my-master-password \
--kms-key-id  my-RDSCustom-key-id \
--custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance  \
--domain-fqdn "corp.example.com" \
--domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" \
--domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" \
--db-subnet-group-name my-DB-subnet-grp \
--vpc-security-group-ids  my-securitygroup-id \
--no-publicly-accessible \
--backup-retention-period 3 \
--port 8200 \
--region us-west-2 \
--no-multi-az
```

Windows의 경우:

```
aws rds create-db-instance  ^
--engine custom-sqlserver-se ^
--engine-version 15.00.4312.2.v1 ^
--db-instance-identifier my-custom-instance ^
--db-instance-class db.m5.large ^
--allocated-storage 100 --storage-type io1 --iops 1000 ^
--master-usernamemy-master-username ^
--master-user-password my-master-password ^
--kms-key-id  my-RDSCustom-key-id ^
--custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance  ^
--domain-fqdn "corp.example.com" ^
--domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" ^
--domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" ^
--db-subnet-group-name my-DB-subnet-grp ^
--vpc-security-group-ids  my-securitygroup-id ^
--no-publicly-accessible ^
--backup-retention-period 3 ^
--port 8200 ^
--region us-west-2 ^
--no-multi-az
```

**중요**  
AWS Managed Microsoft AD에 대한 NetBIOS가 **corpexample**인 경우 OU 자체로 표시됩니다. 이전에 생성된 새 OU는 중첩 OU로 표시됩니다. AWS Managed Microsoft AD의 경우 `--domain-ou`을 `"OU=RDSCustomOU,OU=corpexample,DC=corp,DC=example,DC=com"`으로 설정합니다.

다음 명령은 Active Directory 도메인을 사용하도록 기존 RDS Custom for SQL Server DB 인스턴스를 수정합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --domain-fqdn "corp.example.com" \
    --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" \
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" \
```

Windows의 경우:

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --domain-fqdn "corp.example.com" ^
    --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" ^
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" ^
```

다음 CLI 명령은 Active Directory 도메인에서 RDS Custom for SQL Server DB 인스턴스를 제거합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --disable-domain
```

Windows의 경우:

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --disable-domain
```

콘솔을 사용하여 인스턴스를 생성하거나 수정할 때 **Microsoft SQL Server Windows 인증 활성화**를 클릭하여 다음 옵션을 확인합니다.

![\[Microsoft SQL Server Windows 인증 디렉터리\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/custom-sqs-WinAuth.png)


도메인 FQDN이 도메인 컨트롤러 IP 주소로 확인되고 있는지 확인하는 것은 사용자의 책임입니다. 도메인 컨트롤러 IP가 확인되지 않으면 도메인 조인 작업은 실패하지만 RDS Custom for SQL Server 인스턴스 만들기에 성공합니다. 문제 해결 정보는 [Active Directory 문제 해결](custom-sqlserver-WinAuth.Troubleshoot.md)를 참조하세요.

## 6단계: Windows 인증 SQL Server 로그인 생성
<a name="custom-sqlserver-WinAuth.settingUp.CreateLogins"></a>

다른 DB 인스턴스의 경우와 같은 방법으로 Amazon RDS 마스터 사용자 보안 인증 정보를 사용하여 SQL Server DB 인스턴스에 연결합니다. DB 인스턴스는 AD 도메인에 조인되므로 SQL Server 로그인 및 사용자를 프로비저닝할 수 있습니다. 이 작업은 AD 도메인의 AD 사용자 및 그룹 유틸리티에서 수행합니다. 데이터베이스 권한은 이러한 Windows 로그인에 부여되거나 취소되는 표준 SQL Server 권한을 통해 관리됩니다.

AD 사용자가 SQL Server로 인증하려면 AD 사용자 또는 사용자가 속한 Active Directory 그룹에 대한 SQL Server Windows 로그인이 있어야 합니다. 세분화된 액세스 제어는 이러한 SQL Server 로그인에 대한 권한을 부여하거나 취소하여 처리합니다. SQL Server 로그인이 없거나 이러한 로그인이 있는 AD 그룹에 속하지 않은 AD 사용자는 SQL Server DB 인스턴스에 액세스할 수 없습니다.

AD SQL Server 로그인을 생성하려면 `ALTER ANY LOGIN` 권한이 필요합니다. 이 권한으로 로그인을 생성하지 않은 경우 SQL Server 인증을 사용하여 DB 인스턴스의 마스터 사용자로 연결하고 마스터 사용자의 맥락에서 AD SQL Server 로그인을 생성합니다.

다음과 같은 데이터 정의 언어(DDL) 명령을 실행하여 AD 사용자 또는 그룹에 대한 SQL Server 로그인을 생성할 수 있습니다.

```
USE [master]
GO
CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
GO
```

도메인의 사용자(사람 및 애플리케이션)는 이제 Windows 인증을 사용하여 도메인이 조인된 클라이언트 컴퓨터의 RDS Custom for SQL Server 인스턴스에 연결할 수 있습니다.

## 7단계: Kerberos 또는 NTLM 인증 사용
<a name="custom-sqlserver-WinAuth.settingUp.KerbNTLM"></a>

### RDS 엔드포인트를 사용한 NTLM 인증
<a name="custom-sqlserver-WinAuth.settingUp.KerbNTLM.NTLM"></a>

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

계획된 데이터베이스 유지 관리 또는 예기치 않은 서비스 중단이 발생할 경우 Amazon RDS가 최신 보조 데이터베이스로 자동으로 장애 조치를 수행하므로 수동 개입 없이 작업을 빠르게 재개할 수 있습니다. 기본 인스턴스 및 보조 인스턴스는 동일한 엔드포인트를 사용합니다. 이 엔드포인트의 물리적 네트워크 주소는 장애 조치 프로세스의 일환으로 보조로 전환됩니다. 장애 조치가 발생하는 경우 애플리케이션을 다시 구성할 필요가 없습니다.

### Kerberos 인증
<a name="custom-sqlserver-WinAuth.settingUp.KerbNTLM.Kerb"></a>

RDS Custom for SQL Server에 대한 Kerberos 기반 인증을 수행하려면 특정 서비스 보안 주체 이름(SPN)에 연결해야 합니다. 그러나 장애 조치 이벤트 후 애플리케이션이 새 SPN을 인식하지 못할 수 있습니다. 이를 해결하기 위해 RDS Custom for SQL Server는 Kerberos 기반 엔드포인트를 제공합니다.

Kerberos 기반 엔드포인트는 특정 형식을 따릅니다. RDS 엔드포인트가 `rds-instance-name.account-region-hash.aws-region.rds.amazonaws.com`인 경우 해당 Kerberos 기반 엔드포인트는 `rds-instance-name.account-region-hash.aws-region.awsrds.fully qualified domain name (FQDN)`입니다.

예를 들어 RDS 엔드포인트가 `ad-test.cocv6zwtircu.us-east-1.rds.amazonaws.com`이고 도메인 이름이 `corp-ad.company.com`인 경우 Kerberos 기반 엔드포인트는 `ad-test.cocv6zwtircu.us-east-1.awsrds.corp-ad.company.com`입니다.

이 Kerberos 기반 엔드포인트는 기본 SQL Server 인스턴스의 새 SPN을 가리키도록 엔드포인트가 자동으로 업데이트되므로 장애 조치 이벤트 후에도 Kerberos를 사용하여 SQL Server 인스턴스로 인증하는 데 사용할 수 있습니다.

### CNAME 찾기
<a name="custom-sqlserver-WinAuth.settingUp.KerbNTLM.CNAME"></a>

CNAME를 찾으려면 도메인 컨트롤러에 연결하고 **DNS Manager**를 엽니다. **정방향 조회 영역** 및 FQDN으로 이동합니다.

**awsrds**, **aws-region**, **계정 및 리전별 해시**를 탐색합니다.

RDS Custom EC2 인스턴스를 연결하고 CNAME를 사용하여 로컬에서 데이터베이스에 연결하려고 하면 연결에서 Kerberos 대신 NTLM 인증을 사용합니다.

원격 클라이언트에서 CNAME를 연결한 후 NTLM 연결이 반환되면 필요한 포트가 허용 목록에 있는지 확인합니다.

연결에서 Kerberos를 사용 중인지 확인하려면 다음 쿼리를 실행합니다.

```
SELECT net_transport, auth_scheme
    FROM sys.dm_exec_connections
    WHERE session_id = @@SSPID;
```

# 도메인에서 DB 인스턴스 관리
<a name="custom-sqlserver-WinAuth.ManagingDBI"></a>

 콘솔, AWS CLI 또는 Amazon RDS API를 사용하여 DB 인스턴스 및 DB 인스턴스와 도메인과의 관계를 관리할 수 있습니다. 예를 들어, DB 인스턴스를 도메인 내로, 도메인 외부로 또는 도메인 간에 이동할 수 있습니다.

 예를 들어 Amazon RDS API를 사용하여 다음을 수행할 수 있습니다.
+  실패한 멤버십에 대한 도메인 조인을 다시 시도하려면 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 작업을 사용하고 현재 멤버십의 디렉터리 ID를 지정합니다.
+  멤버십에 대한 IAM 역할 이름을 업데이트하려면 `ModifyDBInstance` API 작업을 사용하고 현재 멤버십의 디렉터리 ID 및 새 IAM 역할을 지정합니다.
+  도메인에서 DB 인스턴스를 제거하려면 `ModifyDBInstance` API 작업을 사용하고 `none`을 도메인 파라미터로 지정합니다.
+  한 도메인에서 다른 도메인으로 DB 인스턴스를 이동하려면 `ModifyDBInstance` API 작업을 사용하여 새 도메인의 도메인 식별자를 도메인 파라미터로 지정합니다.
+  각 DB 인스턴스에 대한 멤버십을 나열하려면 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/DescribeDBInstances.html) API 작업을 사용합니다.

## RDS Custom for SQL Server DB 인스턴스 복원 및 Active Directory 도메인에 추가
<a name="custom-sqlserver-WinAuth.ManagingDBI.Restoring"></a>

DB 스냅샷을 복원하거나 SQL Server DB 인스턴스에 대한 특정 시점 복구(PITR)를 수행한 후 Active Directory 도메인에 추가할 수 있습니다. DB 인스턴스가 복원된 후 [5단계: RDS Custom for SQL Server DB 인스턴스 생성 또는 수정](custom-sqlserver-WinAuth.settingUp.md#custom-sqlserver-WinAuth.settingUp.CreateDBInstance)에 설명된 프로세스를 사용하여 DB 인스턴스를 AD 도메인에 추가하도록 인스턴스를 수정합니다.

# 도메인 멤버십 이해
<a name="custom-sqlserver-WinAuth.Understanding"></a>

 DB 인스턴스를 생성하거나 수정한 경우 해당 인스턴스는 도메인의 구성원이 됩니다. AWS 콘솔은 DB 인스턴스에 대한 도메인 멤버십의 상태를 나타냅니다. DB 인스턴스의 상태는 다음 중 한 가지가 될 수 있습니다.
+  **joined** – 인스턴스가 도메인의 구성원입니다.
+  **joining** – 인스턴스가 도메인 구성원이 되기 위한 과정을 진행하고 있습니다.
+  **pending-join** – 인스턴스 멤버십이 보류 중입니다.
+  **pending-maintenance-join** - AWS에서 다음 예약된 유지 관리 기간 동안 인스턴스를 도메인의 멤버로 만들려고 시도합니다.
+  **pending-removal** – 도메인에서 인스턴스 제거 작업이 보류 중입니다.
+  **pending-maintenance-removal** - AWS에서 다음 예약된 유지 관리 기간 동안 도메인에서 인스턴스를 제거하려고 시도합니다.
+  **failed** – 구성 문제가 발생하여 인스턴스가 도메인에 조인되지 않았습니다. 인스턴스 수정 명령을 다시 실행하기 전에 구성을 확인하고 수정합니다.
+  **removing** – 인스턴스를 도메인에서 제거하고 있습니다.

네트워크 연결 문제 또는 잘못된 IAM 역할로 인해 도메인 구성원 되기 요청이 실패할 수 있습니다. 예를 들어, DB 인스턴스를 생성하거나 기존 인스턴스를 수정하여 DB 인스턴스가 도메인의 멤버가 되려는 시도를 못하게 할 수 있습니다. 이 경우 명령을 다시 실행하여 DB 인스턴스를 생성 또는 수정하거나 새로 생성된 인스턴스를 수정하여 도메인에 조인할 수 있습니다.

# Active Directory 문제 해결
<a name="custom-sqlserver-WinAuth.Troubleshoot"></a>

다음은 AD를 설정하거나 수정할 때 발생할 수 있는 문제입니다.


| 오류 코드 | 설명 | 일반적인 원인 | 문제 해결 제안 | 
| --- | --- | --- | --- | 
| 오류 2/0x2 | 시스템이 지정된 파일을 찾을 수 없습니다. | `—domain-ou` 파라미터로 지정된 조직 단위(OU)의 형식 또는 위치가 잘못되었습니다. AWS Secrets Manager를 통해 지정된 도메인 서비스 계정에는 OU에 가입하는 데 필요한 권한이 없습니다. | `—domain-ou` 파라미터를 검토합니다. 도메인 서비스 계정에 OU에 대한 올바른 권한이 있는지 확인합니다. | 
| 오류 5/0x5 | 액세스가 거부되었습니다. | 도메인 서비스 계정에 대한 권한이 잘못 구성되었거나 컴퓨터 계정이 이미 도메인에 있습니다. | 도메인의 도메인 서비스 계정 권한을 검토하고 RDS 컴퓨터 계정이 도메인에 중복되지 않았는지 확인합니다. RDS Custom for SQL Server DB 인스턴스에서 `SELECT @@SERVERNAME`을 실행하여 RDS 컴퓨터 계정의 이름을 확인할 수 있습니다. 다중 AZ를 사용하는 경우 장애 조치를 사용하여 재부팅한 다음 RDS 컴퓨터 계정을 다시 확인합니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 단원을 참조하십시오. | 
| 오류 87/0x57 | 파라미터가 올바르지 않습니다. | AWS Secrets Manager를 통해 지정된 도메인 서비스 계정에 올바른 권한이 없습니다. 사용자 프로필도 손상되었을 수 있습니다. | 도메인 서비스 계정의 요구 사항을 검토합니다. | 
| 오류 234/0xEA | 지정된 조직 단위(OU)가 없습니다. | `—domain-ou` 파라미터로 지정된 OU가 AD에 존재하지 않습니다. | `—domain-ou` 파라미터를 검토하고 지정된 OU가 AD에 있는지 확인합니다. | 
| 오류 1326/0x52E | 사용자 이름 또는 암호가 잘못되었습니다. | AWS Secrets Manager에 제공된 도메인 서비스 계정 보안 인증 정보에 알 수 없는 사용자 이름이나 잘못된 암호가 있습니다. AD에서 도메인 계정을 사용하지 않도록 설정할 수도 있습니다. | AWS Secrets Manager에 제공된 보안 인증 정보가 올바르고 Active Directory에서 도메인 계정이 활성화되어 있는지 확인합니다. | 
| 오류 1355/0x54B | 지정된 도메인이 존재하지 않거나 해당 주소를 찾을 수 없습니다. | 도메인이 중지되었거나, 지정된 DNS IP 집합에 연결할 수 없거나, 지정된 FQDN에 연결할 수 없습니다. | `—domain-dns-ips` 및 `—domain-fqdn` 파라미터를 검토하여 올바른지 확인합니다. RDS Custom for SQL Server DB 인스턴스의 네트워킹 구성을 검토하고 AD에 연결할 수 있는지 확인합니다. | 
| 오류 1722/0x6BA | RPC 서버를 사용할 수 없습니다. | AD 도메인의 RPC 서비스에 연결하는 중 문제가 발생했습니다. 서비스 또는 네트워크 문제일 수 있습니다. | RPC 서비스가 도메인 컨트롤러에서 실행되고 있고 TCP 포트 `135` 및 `49152-65535`에서 RDS Custom for SQL Server DB 인스턴스의 도메인에 연결할 수 있는지 확인합니다. | 
| 오류 2224/0x8B0 | 계정이 이미 있습니다. | AD에 추가하려는 컴퓨터 계정이 이미 있습니다. | RDS Custom for SQL Server DB 인스턴스에서 `SELECT @@SERVERNAME`을 실행하여 컴퓨터 계정을 식별한 다음 AD에서 해당 계정을 신중히 제거합니다. | 
| 오류 2242/0x8c2 | 이 사용자의 암호가 만료되었습니다. | AWS Secrets Manager를 통해 지정한 도메인 서비스 계정의 암호가 만료되었습니다. | RDS Custom for SQL Server DB 인스턴스를 AD에 가입시키는 데 사용되는 도메인 서비스 계정의 암호를 업데이트합니다. | 

# RDS Custom for SQL Server에 대한 다중 AZ 배포 구성 및 관리
<a name="custom-sqlserver-multiaz"></a>

 RDS Custom for SQL Server에 대한 다중 AZ DB 인스턴스 배포에서 Amazon RDS는 자동으로 서로 다른 가용 영역에 동기식 대기 복제본을 프로비저닝하고 유지합니다. 기본 DB 인스턴스는 가용 영역 전체에서 대기 복제본으로 동기식으로 복제되어 데이터 중복성을 제공합니다.

**중요**  
RDS Custom for SQL Server에 대한 다중 AZ 배포는 RDS for SQL Server에 대한 다중 AZ 배포와 다릅니다. RDS for SQL Server에 대한 다중 AZ와 달리, RDS Custom은 사용자의 계정 내에서 실행되는데 이는 권한이 필요하므로 다중 AZ DB 인스턴스를 만들기 전에 RDS Custom for SQL Server의 사전 조건을 설정해야 합니다.  
사전 조건을 완료하지 않으면 다중 AZ DB 인스턴스가 실행되지 않거나, 단일 AZ DB 인스턴스로 자동으로 되돌아갈 수 있습니다. 사전 조건에 대한 자세한 내용은 [RDS Custom for SQL Server를 사용한 다중 AZ 배포의 사전 조건](custom-sqlserver-multiaz.prerequisites.md) 단원을 참조하세요.

DB 인스턴스를 고가용성으로 실행하면 계획된 시스템 유지 관리 중 가용성을 높일 수 있습니다. 계획된 데이터베이스 유지 관리 또는 예기치 않은 서비스 중단이 발생할 경우, Amazon RDS가 최신 보조 DB 인스턴스로 자동으로 장애 조치를 수행합니다. 이 기능을 통해 수동 개입 없이 데이터베이스 작업을 빠르게 재개할 수 있습니다. 기본 인스턴스 및 예비 인스턴스는 동일한 엔드포인트를 사용합니다. 이 엔드포인트의 물리적 네트워크 주소는 장애 조치 프로세스의 일환으로 보조 복제본으로 전환됩니다. 장애 조치가 발생하는 경우 애플리케이션을 다시 구성할 필요가 없습니다.

![\[RDS Custom for SQL Server는 다중 AZ를 지원합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/custom-sqlserver-multiaz-architecture.png)


RDS Custom DB 인스턴스 생성 시 다중 AZ를 지정하여 RDS Custom for SQL Server 다중 AZ 배포를 생성할 수 있습니다. 콘솔을 사용하여 DB 인스턴스를 수정하고 다중 AZ 옵션을 지정함으로써 기존 RDS Custom for SQL Server DB 인스턴스를 다중 AZ 배포로 변환할 수 있습니다. 또한, AWS CLI 또는 Amazon RDS API를 사용하여 다중 AZ DB 인스턴스 배포를 지정할 수도 있습니다.

RDS 콘솔에 예비 복제본(보조 AZ)의 가용 영역이 표시됩니다. `describe-db-instances` CLI 명령 또는 `DescribeDBInstances` API 작업을 사용하여 보조 AZ를 찾을 수도 있습니다.

다중 AZ DB 인스턴스 배포를 사용하는 RDS Custom for SQL Server DB 인스턴스는 단일 AZ 배포에 비해 쓰기 및 커밋 대기 시간이 길어질 수 있습니다. 이러한 대기 시간 증가는 DB 인스턴스 간의 동기 데이터 복제로 인해 발생할 수 있습니다. AWS는 가용 영역 간 지연 시간이 짧은 네트워크 연결을 제공하도록 설계되었지만 배포가 예비 복제본으로 장애 조치될 경우 지연 시간이 변경될 수 있습니다.

**참고**  
프로덕션 워크로드의 경우 빠르고 일관된 성능을 제공할 수 있도록 프로비저닝된 IOPS(초당 입/출력 작업)와 함께 DB 인스턴스 클래스를 사용하는 것이 좋습니다. DB 인스턴스 클래스에 대한 자세한 내용은 [Amazon RDS Custom for SQL Server 요구 사항 및 제한](custom-reqs-limits-MS.md) 섹션을 참조하세요.

**Topics**
+ [리전 및 버전 사용 가능 여부](#custom-sqlserver-multiaz.regionversion)
+ [RDS Custom for SQL Server를 사용한 다중 AZ 배포의 제한 사항](#custom-sqlserver-multiaz.limitations)
+ [RDS Custom for SQL Server를 사용한 다중 AZ 배포의 사전 조건](custom-sqlserver-multiaz.prerequisites.md)
+ [RDS Custom for SQL Server에 대한 다중 AZ 배포 생성](#custom-sqlserver-multiaz.creating)
+ [RDS Custom for SQL Server 단일 AZ 배포를 다중 AZ 배포로 수정](custom-sqlserver-multiaz.modify-saztomaz.md)
+ [RDS Custom for SQL Server 다중 AZ 배포를 단일 AZ 배포로 수정하려면](custom-sqlserver-multiaz.modify-maztosaz.md)
+ [RDS Custom for SQL Server 다중 AZ 배포에 대한 장애 조치 프로세스](custom-sqlserver-multiaz.failover.md)

## 리전 및 버전 사용 가능 여부
<a name="custom-sqlserver-multiaz.regionversion"></a>

다음과 같은 SQL Server 에디션의 경우 RDS Custom for SQL Server에 대한 다중 AZ 배포가 지원됩니다.
+ SQL Server 2022 및 2019: Enterprise, Standard, Web, Developer Edition

**참고**  
RDS Custom for SQL Server의 다중 AZ 배포는 SQL Server 2019 CU8(15.00.4073.23) 이하 버전에서는 지원되지 않습니다.

RDS Custom for SQL Server에 대한 다중 AZ 배포는 RDS Custom for SQL Server를 사용하는 모든 리전에서 사용할 수 있습니다. RDS Custom for SQL Server에 대한 다중 AZ 배포를 리전에서 사용할 수 있는지에 대한 자세한 내용은 [RDS Custom for SQL Server를 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq)를 참조하세요.

## RDS Custom for SQL Server를 사용한 다중 AZ 배포의 제한 사항
<a name="custom-sqlserver-multiaz.limitations"></a>

RDS Custom for SQL Server를 사용한 다중 AZ 배포에는 다음과 같은 제한 사항이 있습니다.
+ 리전 간 다중 AZ 배포는 지원되지 않습니다.
+ 보조 DB 인스턴스가 데이터베이스 읽기 작업을 허용하도록 구성할 수 없습니다.
+ 다중 AZ 배포와 함께 사용자 지정 엔진 버전(CEV)을 사용할 경우 보조 DB 인스턴스도 동일한 CEV를 사용합니다. 보조 DB 인스턴스는 다른 CEV를 사용할 수 없습니다.

# RDS Custom for SQL Server를 사용한 다중 AZ 배포의 사전 조건
<a name="custom-sqlserver-multiaz.prerequisites"></a>

기존 RDS Custom for SQL Server 단일 AZ 배포가 있을 경우, 이 배포를 다중 AZ 배포로 수정하기 전에 다음과 같은 추가 사전 조건이 필요합니다. 사전 조건을 수동으로 완료하거나 제공된 CloudFormation 템플릿을 사용하여 완료하도록 선택할 수 있습니다. 최신 CloudFormation 템플릿에는 단일 AZ 배포와 다중 AZ 배포를 위한 사전 조건이 포함되어 있습니다.

**중요**  
설정을 간소화하려면 네트워크 설정 지침에 제공된 최신 CloudFormation 템플릿 파일을 사용하여 사전 조건을 생성하는 것이 좋습니다. 자세한 내용은 [CloudFormation을 사용한 구성](custom-setup-sqlserver.md#custom-setup-sqlserver.cf) 단원을 참조하십시오.

**참고**  
기존 RDS Custom for SQL Server 단일 AZ 배포를 다중 AZ 배포로 수정하는 경우 이러한 사전 조건을 완료해야 합니다. 사전 조건을 완료하지 않으면 다중 AZ 설정이 실패합니다. 사전 조건을 완료하려면 [RDS Custom for SQL Server 단일 AZ 배포를 다중 AZ 배포로 수정](custom-sqlserver-multiaz.modify-saztomaz.md)의 단계를 따릅니다.
+ 포트 1120을 허용하도록 RDS 보안 그룹 인바운드 및 아웃바운드 규칙을 업데이트합니다.
+ 프라이빗 네트워크 액세스 제어 목록(ACL)에 DB 인스턴스 VPC의 TCP 포트 `0-65535`를 허용하는 규칙을 추가합니다.
+ RDS Custom for SQL Server DB 인스턴스가 SQS와 통신할 수 있도록 새 Amazon SQS VPC 엔드포인트를 생성합니다.
+ 인스턴스 프로파일 역할에서 SQS 권한을 업데이트합니다.

## RDS Custom for SQL Server에 대한 다중 AZ 배포 생성
<a name="custom-sqlserver-multiaz.creating"></a>

RDS Custom for SQL Server 다중 AZ 배포를 생성하려면 [Amazon RDS Custom for SQL Server의 DB 인스턴스 생성 및 연결](custom-creating-sqlserver.md)의 단계를 따릅니다.

**중요**  
설정을 간소화하려면 네트워크 설정 지침에 제공된 최신 CloudFormation 템플릿 파일을 사용하는 것이 좋습니다. 자세한 내용은 [CloudFormation을 사용한 구성](custom-setup-sqlserver.md#custom-setup-sqlserver.cf) 단원을 참조하십시오.

다중 AZ 배포 생성을 완료하려면 몇 분 정도 걸립니다.

# RDS Custom for SQL Server 단일 AZ 배포를 다중 AZ 배포로 수정
<a name="custom-sqlserver-multiaz.modify-saztomaz"></a>

기존 RDS Custom for SQL Server DB 인스턴스를 단일 AZ 배포에서 다중 AZ 배포로 수정할 수 있습니다. DB 인스턴스를 수정할 경우 Amazon RDS는 여러 가지 작업을 수행합니다.
+ 기본 DB 인스턴스의 스냅샷을 생성합니다.
+ 스냅샷에서 스탠바이 복제본용 새 볼륨을 생성합니다. 이러한 볼륨은 백그라운드에서 초기화되며 데이터가 완전히 초기화된 후에 최대 볼륨 성능이 달성됩니다.
+ 기본 DB 인스턴스와 보조 DB 인스턴스 간의 동기 블록 수준 복제를 활성화합니다.

**중요**  
사용량이 가장 많은 기간에는 프로덕션 DB 인스턴스의 RDS Custom for SQL Server DB 인스턴스를 단일 AZ에서 다중 AZ 배포로 수정하지 않는 것이 좋습니다.

AWS는 스냅샷을 사용하여 대기 인스턴스를 생성하면 단일 AZ에서 다중 AZ로 변환할 때 가동 중지 시간을 피할 수 있지만, 다중 AZ로 변환하는 동안과 이후에 성능에 영향을 미칠 수 있습니다. 이는 쓰기 대기 시간에 민감한 워크로드에 상당한 영향을 미칠 수 있습니다. 이 기능을 사용하면 스냅샷에서 대용량 볼륨을 신속하게 복원할 수 있지만, 이 경우 동기식 복제로 인해 I/O 작업의 지연 시간이 증가할 수 있습니다. 이러한 지연 시간은 데이터베이스 성능에 영향을 줄 수 있습니다.

**참고**  
2024년 8월 29일 이전에 RDS Custom for SQL Server DB 인스턴스를 생성한 경우 수정하기 전에 최신 마이너 버전으로 패치합니다.  
SQL Server 2019 인스턴스의 경우 DB 엔진 버전을 `15.00.4410.1.v1` 이상으로 업그레이드합니다.
SQL Server 2022 인스턴스의 경우 DB 엔진 버전을 `16.00.4150.1.v1` 이상으로 업그레이드합니다.

**Topics**
+ [CloudFormation을 사용하여 단일 AZ를 다중 AZ 배포로 수정하기 위한 사전 조건 구성](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf)
+ [단일 AZ를 다중 AZ 배포로 수동으로 수정하기 위한 사전 조건 구성](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.manual)
+ [RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 수정합니다.](#custom-sqlserver-multiaz.modify-saztomaz-afterprereqs)

## CloudFormation을 사용하여 단일 AZ를 다중 AZ 배포로 수정하기 위한 사전 조건 구성
<a name="custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf"></a>

다중 AZ 배포를 사용하려면 사전 조건이 포함된 최신 CloudFormation 템플릿을 적용하거나, 최신 사전 조건을 수동으로 구성해야 합니다. 최신 CloudFormation 사전 조건 템플릿을 이미 적용한 경우에는 이 단계를 건너뛰어도 됩니다.

CloudForma를 사용하여 RDS Custom for SQL Server 다중 AZ 배포를 구성하려면

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 스택 생성 마법사를 시작하려면 단일 AZ 배포를 만드는 데 사용했던 기존 스택을 선택하고 **Update**(업데이트)를 선택합니다.

   **스택 업데이트** 페이지가 표시됩니다.

1. **사전 조건 - 템플릿 준비**에서 **현재 템플릿 교체**를 선택합니다.

1. **템플릿 지정(Specify template)**에서 다음 작업을 수행합니다.

   1. 최신 CloudFormation 템플릿 파일을 다운로드합니다. [custom-sqlserver-onboard.zip](samples/custom-sqlserver-onboard.zip) 링크의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 열고 **Save Link As**(다른 이름으로 링크 저장)를 선택합니다.

   1. `custom-sqlserver-onboard.json` 파일을 컴퓨터에 저장하고 압축을 풉니다.

   1. **템플릿 소스**로 **템플릿 파일 업로드**를 선택합니다.

   1. **파일 선택(Choose file)**에서 `custom-sqlserver-onboard.json`을 찾아 선택합니다.

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

   **스택 세부 정보 지정(Specify stack details)** 페이지가 나타납니다.

1. 기본 옵션을 유지하려면 **다음(Next)**을 선택합니다.

   **고급 옵션** 페이지가 나타납니다.

1. 기본 옵션을 유지하려면 **다음(Next)**을 선택합니다.

1. 기본 옵션을 유지하려면 **다음(Next)**을 선택합니다.

1. **변경 사항 검토** 페이지에서 다음을 수행합니다.

   1. **기능**에서 ****이 사용자 지정 이름을 사용하여 CloudFormation이 IAM 리소스를 생성할 수 있음에 동의합니다**** 확인란을 선택합니다.

   1. **제출**을 선택합니다.

1. 업데이트가 성공했는지 확인합니다. 작업이 성공하면 `UPDATE_COMPLETE`가 표시됩니다.

업데이트가 실패하면 업데이트 프로세스에 지정된 새 구성이 모두 롤백됩니다. 기존 리소스는 계속 사용할 수 있습니다. 예를 들어 번호가 18과 19인 네트워크 ACL 규칙을 추가했는데 같은 번호로 된 기존 규칙이 있는 경우, 업데이트 시 `Resource handler returned message: "The network acl entry identified by 18 already exists.`라는 오류가 반환됩니다. 이러한 시나리오가 발생하면 18보다 작은 숫자를 사용하도록 기존 ACL 규칙을 수정한 후 업데이트를 다시 시도해볼 수 있습니다.

## 단일 AZ를 다중 AZ 배포로 수동으로 수정하기 위한 사전 조건 구성
<a name="custom-sqlserver-multiaz.modify-saztomaz-prereqs.manual"></a>

**중요**  
설정을 간소화하려면 네트워크 설정 지침에 제공된 최신 CloudFormation 템플릿 파일을 사용하는 것이 좋습니다. 자세한 내용은 [CloudFormation을 사용하여 단일 AZ를 다중 AZ 배포로 수정하기 위한 사전 조건 구성](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf) 섹션을 참조하세요.

사전 조건을 수동으로 구성하도록 선택한 경우 다음 태스크를 수행합니다.

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. **Endpoint**(엔드포인트)를 선택합니다. **엔드포인트 생성**페이지가 나타납니다.

1. **서비스 범주**에서 **AWS 서비스**를 선택합니다.

1. **서비스**에서 *SQS를* 검색합니다.

1. **VPC**에서 RDS Custom for SQL Server DB 인스턴스가 배포된 VPC를 선택합니다.

1. **서브넷**에서 RDS Custom for SQL Server DB 인스턴스가 배포된 서브넷을 선택합니다.

1. **보안 그룹**에서 *-vpc-endpoint-sg* 그룹을 선택합니다.

1. **정책**에서 **사용자 지정**을 선택합니다.

1. 사용자 지정 정책에서 *AWS 파티션*, *리전*, *accountId*, *IAM-Instance-role*을 고유한 값으로 바꿉니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Condition": {
                   "StringLike": {
                       "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver"
                   }
               },
               "Action": [
                   "SQS:SendMessage",
                   "SQS:ReceiveMessage",
                   "SQS:DeleteMessage",
                   "SQS:GetQueueUrl"
               ],
               "Resource": "arn:aws:sqs:us-east-1:111122223333:do-not-delete-rds-custom-*",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/{IAM-Instance-role}"
               }
           }
       ]
   }
   ```

------

1.  Amazon SQS에 액세스할 수 있는 권한으로 **인스턴스 프로파일**을 업데이트합니다. *AWS 파티션*, *리전*, *accountId*를 고유한 값으로 바꿉니다.

   ```
                           {
       "Sid": "SendMessageToSQSQueue",
       "Effect": "Allow",
       "Action": [
         "SQS:SendMessage",
         "SQS:ReceiveMessage",
         "SQS:DeleteMessage",                                    
         "SQS:GetQueueUrl"
   
       ],
       "Resource": [
         {
           "Fn::Sub": "arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:do-not-delete-rds-custom-*"
         }
       ],
       "Condition": {
         "StringLike": {
           "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver"
         }
       }
     } 
                           >
   ```

1. 포트 1120을 허용하도록 Amazon RDS 보안 그룹 인바운드 및 아웃바운드 규칙을 업데이트합니다.

   1. **보안 그룹**에서 *-rds-custom-instance-sg* 그룹을 선택합니다.

   1. **인바운드 규칙**의 경우 소스 *-rds-custom-instance-sg* 그룹의 포트 *1120*을 허용하는 **사용자 지정 TCP** 규칙을 만듭니다.

   1. **아웃바운드 규칙**의 경우 대상 *-rds-custom-instance-sg* 그룹의 포트 *1120*을 허용하는 **사용자 지정 TCP** 규칙을 만듭니다.

1. 프라이빗 네트워크 액세스 제어 목록(ACL)에 DB 인스턴스 소스 서브넷의 TCP 포트 `0-65535`를 허용하는 규칙을 추가합니다.
**참고**  
**인바운드 규칙** 및 **아웃바운드** 규칙을 생성할 때는 기존의 가장 높은 **규칙 번호**를 기록해 둡니다. 새로 생성하는 규칙의 **규칙 번호** 100보다 작아야 하며 기존 **규칙 번호**와 일치하지 않아야 합니다.

   1. **네트워크 ACL**에서 *-private-network-acl* 그룹을 선택합니다.

   1. **인바운드 규칙**의 경우 *privatesubnet1* 및 *privatesubnet2*에서 나오는 소스와 함께 TCP 포트 `0-65535`를 허용하는 **모든 TCP** 규칙을 생성합니다.

   1. **아웃바운드 규칙**의 경우 대상인 *privatesubnet1* 및 *privatesubnet2*로 향하는 TCP 포트 `0-65535`를 허용하는 **모든 TCP** 규칙을 생성합니다.

## RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 수정합니다.
<a name="custom-sqlserver-multiaz.modify-saztomaz-afterprereqs"></a>

사전 조건을 완료한 후에는 RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 RDS Custom for SQL Server DB 인스턴스를 단일 AZ에서 다중 AZ 배포로 수정할 수 있습니다.

### 콘솔
<a name="custom-sqlserver-multiaz.modify-saztomaz.Console"></a>

**RDS Custom for SQL Server 단일 AZ 배포를 다중 AZ 배포로 수정하려면**

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

1. Amazon RDS 콘솔에서 **데이터베이스**를 선택합니다.

   **데이터베이스** 창이 표시됩니다.

1. 수정하려는 RDS Custom for SQL Server DB 인스턴스를 선택합니다.

1. **작업**에서 **다중 AZ 배포로 변환**을 선택합니다.

1. **확인** 페이지에서 **즉시 적용**을 선택하여 변경 사항을 즉시 적용합니다. 이 옵션을 선택하면 다운타임이 발생하지 않지만 성능이 영향을 받을 수 있습니다. 다음 유지 관리 기간에 업데이트를 적용하도록 선택할 수도 있습니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 섹션을 참조하세요.

1. **확인** 페이지에서 **다중 AZ로 변환**을 선택합니다.

### AWS CLI
<a name="custom-sqlserver-multiaz.modify-saztomaz.CLI"></a>

AWS CLI를 사용하여 다중 AZ DB 인스턴스 배포로 변환하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 호출하고 `--multi-az` 옵션을 설정합니다. DB 인스턴스 식별자와 수정하려는 기타 옵션 값을 지정합니다. 각 옵션에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_ModifyInstance.Settings.md) 섹션을 참조하세요.

**Example**  
다음 코드는 `--multi-az` 옵션을 포함하여 `mycustomdbinstance`를 수정합니다. 변경 사항은 `--no-apply-immediately`를 사용하여 다음 유지 관리 기간에 적용됩니다. 변경 사항을 바로 적용하려면 `--apply-immediately`를 사용합니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 섹션을 참조하세요.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mycustomdbinstance \
    --multi-az \
    --no-apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mycustomdbinstance ^
    --multi-az  \ ^
    --no-apply-immediately
```

### RDS API
<a name="custom-sqlserver-multiaz.modify-saztomaz.API"></a>

RDS API를 사용하여 다중 AZ DB 인스턴스 배포로 변환하려면 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 호출하고 `MultiAZ` 파라미터를 true로 설정합니다.

# RDS Custom for SQL Server 다중 AZ 배포를 단일 AZ 배포로 수정하려면
<a name="custom-sqlserver-multiaz.modify-maztosaz"></a>

기존 RDS Custom for SQL Server DB 인스턴스를 다중 AZ 배포에서 단일 AZ 배포로 수정할 수 있습니다.

## 콘솔
<a name="custom-sqlserver-multiaz.modify-maztosaz.Console"></a>

**RDS Custom for SQL Server DB 인스턴스를 다중 AZ 배포에서 단일 AZ 배포로 수정할 수 있습니다.**

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

1. Amazon RDS 콘솔에서 **데이터베이스**를 선택합니다.

   **데이터베이스** 창이 표시됩니다.

1. 수정하려는 RDS Custom for SQL Server DB 인스턴스를 선택합니다.

1. **다중 AZ 배포**의 경우 **No**(아니요)를 선택합니다.

1. **확인** 페이지에서 **즉시 적용**을 선택하여 변경 사항을 즉시 적용합니다. 이 옵션을 선택하면 다운타임이 발생하지 않지만 성능이 영향을 받을 수 있습니다. 다음 유지 관리 기간에 업데이트를 적용하도록 선택할 수도 있습니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 단원을 참조하십시오.

1. **확인** 페이지에서 **DB 인스턴스 수정**을 선택합니다.

## AWS CLI
<a name="custom-sqlserver-multiaz.modify-maztosaz.CLI"></a>

AWS CLI를 사용하여 다중 AZ 배포를 단일 AZ 배포로 수정하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 호출하고 `--no-multi-az` 옵션을 포함합니다. DB 인스턴스 식별자와 수정하려는 기타 옵션 값을 지정합니다. 각 옵션에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_ModifyInstance.Settings.md) 단원을 참조하세요.

**Example**  
다음 코드는 `--no-multi-az` 옵션을 포함하여 `mycustomdbinstance`를 수정합니다. 변경 사항은 `--no-apply-immediately`를 사용하여 다음 유지 관리 기간에 적용됩니다. 변경 사항을 바로 적용하려면 `--apply-immediately`를 사용합니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 단원을 참조하십시오.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mycustomdbinstance \
    --no-multi-az  \
    --no-apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mycustomdbinstance ^
    --no-multi-az \ ^
    --no-apply-immediately
```

## RDS API
<a name="custom-sqlserver-multiaz.modify-maztosaz.API"></a>

RDS API를 사용하여 다중 AZ 배포를 단일 AZ 배포로 수정하려면 [modify-db-instance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 호출하고 `MultiAZ` 파라미터를 `false`로 설정합니다.

# RDS Custom for SQL Server 다중 AZ 배포에 대한 장애 조치 프로세스
<a name="custom-sqlserver-multiaz.failover"></a>

계획되거나 계획되지 않은 DB 인스턴스의 운영 중단으로 인해 인프라 장애가 발생한 경우, 다중 AZ를 설정하면 Amazon RDS는 자동으로 다른 가용 영역의 대기 복제본으로 전환됩니다. 장애 조치가 완료되는 데 소요되는 시간은 프라이머리 DB 인스턴스를 사용할 수 없게 된 시점의 데이터베이스 활동 및 기타 조건에 따라 달라집니다. 장애 조치에 소요되는 시간은 일반적으로 60\$1120초입니다. 그러나 트랜잭션의 규모가 크거나 복구 프로세스가 복잡한 경우 장애 조치에 소요되는 시간이 증가할 수 있습니다. 장애 조치가 완료되면 RDS 콘솔에 새 가용 영역이 표시되는 데 시간이 더 걸릴 수 있습니다.

**참고**  
장애 조치를 사용하면 DB 인스턴스를 재부팅할 때 장애 조치를 수동으로 강제 적용할 수 있습니다. DB 인스턴스 재부팅에 대한 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md)을 참조하세요.

Amazon RDS는 자동으로 장애 조치를 취하여 관리자의 개입 없이 데이터베이스 작업을 신속하게 재개할 수 있도록 합니다. 다음 표에 설명된 조건 중 하나가 발생하면 기본 DB 인스턴스는 자동으로 예비 복제본으로 전환됩니다. 이 장애 조치 이유는 RDS 이벤트 로그에서 확인할 수 있습니다.


****  

| 장애 조치 이유 | 설명 | 
| --- | --- | 
| `The operating system for the RDS Custom for SQL Server Multi-AZ DB instance is being patched in an offline operation` | OS 패치 또는 보안 업데이트를 위한 유지 관리 기간 동안 장애 조치가 트리거되었습니다. 자세한 내용은 [DB 인스턴스 유지 관리](USER_UpgradeDBInstance.Maintenance.md) 단원을 참조하십시오. | 
| `The primary host of the RDS Custom for SQL Server Multi-AZ DB instance is unhealthy.` | 다중 AZ DB 인스턴스 배포에서 손상된 프라이머리 DB 인스턴스를 감지하여 장애 조치를 수행했습니다. | 
| `The primary host of the RDS Custom for SQL Server Multi-AZ DB instance is unreachable due to loss of network connectivity.` | RDS 모니터링이 기본 DB 인스턴스에 대한 네트워크 연결 실패를 감지하여 장애 조치를 트리거했습니다. | 
| `The RDS Custom for SQL Server Multi-AZ DB instance was modified by the customer.` | DB 인스턴스 수정 때문에 장애 조치가 트리거되었습니다. 자세한 내용은 [RDS Custom for SQL Server DB 인스턴스 수정](custom-managing.modify-sqlserver.md) 단원을 참조하십시오. | 
| `The storage volume of the primary host of the RDS Custom for SQL Server Multi-AZ DB instance experienced a failure.` | 다중 AZ DB 인스턴스 배포가 프라이머리 DB 인스턴스에서 스토리지 문제를 감지하여 장애 조치를 수행했습니다. | 
| `The user requested a failover of the RDS Custom for SQL Server Multi-AZ DB instance.` | RDS Custom for SQL Server 다중 AZ DB 인스턴스가 장애 조치로 인해 재부팅되었습니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 단원을 참조하십시오. | 
| `The RDS Custom for SQL Server Multi-AZ primary DB instance is busy or unresponsive.` | 기본 DB 인스턴스가 응답하지 않습니다. 다음 단계를 시도하는 것이 좋습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-sqlserver-multiaz.failover.html)  | 

다음 단계에 따라 다중 AZ DB 인스턴스가 장애 조치를 수행했는지 확인할 수 있습니다.
+ 장애 조치가 시작되었음을 이메일 또는 SMS로 사용자에게 알리도록 DB 이벤트 구독을 설정합니다. 이벤트에 대한 자세한 내용은 [Amazon RDS 이벤트 알림 작업](USER_Events.md) 단원을 참조하세요.
+ RDS 콘솔 또는 API 작업을 사용하여 DB 이벤트를 확인합니다.
+ RDS 콘솔, CLI 또는 API 작업을 사용하여 RDS Custom for SQL Server 다중 AZ DB 인스턴스 배포의 현재 상태를 확인합니다.

## RDS Custom for SQL Server 다중 AZ 배포를 사용하는 애플리케이션의 TTL(Time To Live) 설정
<a name="custom-sqlserver-multiaz.ttldns"></a>

장애 조치 메커니즘은 DB 인스턴스의 Domain Name System(DNS) 레코드가 예비 DB 인스턴스를 가리키도록 자동으로 변경합니다. 그 결과 DB 인스턴스의 기존 연결을 모두 재설정해야 합니다. DNS 캐시 TTL(Time-to-Live) 구성 값이 낮은지 확인하고, 애플리케이션이 오랜 시간 동안 DNS를 캐시하지 않는지 확인합니다. TTL 값이 높으면 장애 조치 후 애플리케이션이 DB 인스턴스에 빠르게 다시 연결되지 않을 수 있습니다.

# Amazon RDS Custom for SQL Server DB 인스턴스 백업 및 복원
<a name="custom-backup-sqlserver"></a>

Amazon RDS와 마찬가지로 RDS Custom은 백업 보존이 실행되면 RDS Custom for SQL Server DB 인스턴스의 자동 백업을 생성하고 저장합니다. 또한, 수동으로 DB 인스턴스를 백업할 수도 있습니다. 자동 백업은 스냅샷 백업과 트랜잭션 로그 백업으로 구성됩니다. 스냅샷 백업은 지정된 백업 기간 동안 DB 인스턴스의 전체 스토리지 볼륨에 대해 수행됩니다. PITR 대상 데이터베이스의 트랜잭션 로그 백업은 정기적으로 수행됩니다. RDS Custom은 지정한 백업 보존 기간에 따라 DB 인스턴스의 자동 백업을 저장합니다. 자동 백업을 사용하여 DB 인스턴스를 백업 보존 기간 내의 특정 시점으로 복구할 수 있습니다.

스냅샷을 수동으로 백업할 수도 있습니다. 언제든지 이러한 스냅샷 백업에서 새 DB 인스턴스를 생성할 수 있습니다. DB 스냅샷 수동 생성에 대한 자세한 내용은 [RDS Custom for SQL Server 스냅샷 생성](custom-backup-sqlserver.creating.md) 섹션을 참조하세요.

스냅샷 백업은 운영상 전체 백업으로 제공되지만, 증분 스토리지 사용에 대해서만 요금이 청구됩니다. RDS Custom DB 인스턴스의 첫 번째 스냅샷에는 전체 DB 인스턴스의 데이터가 포함되며, 동일한 데이터베이스의 후속 스냅샷은 증분식이며, 마지막 스냅샷 이후 변경된 데이터만 저장됩니다.

**Topics**
+ [RDS Custom for SQL Server 스냅샷 생성](custom-backup-sqlserver.creating.md)
+ [RDS Custom for SQL Server DB 스냅샷에서 복원](custom-backup-sqlserver.restoring.md)
+ [RDS Custom for SQL Server 인스턴스를 특정 시점으로 복원](custom-backup.pitr-sqs.md)
+ [RDS Custom for SQL Server 스냅샷 삭제](custom-backup-sqlserver.deleting.md)
+ [RDS Custom for SQL Server 자동 백업 삭제](custom-backup-sqlserver.deleting-backups.md)

# RDS Custom for SQL Server 스냅샷 생성
<a name="custom-backup-sqlserver.creating"></a>

RDS Custom for SQL Server는 DB 인스턴스의 스토리지 볼륨 스냅샷을 생성하여 개별 데이터베이스뿐만 아니라 전체 DB 인스턴스를 백업합니다. 스냅샷을 생성할 때 백업할 RDS Custom for SQL Server DB 인스턴스를 지정하고, 나중에 복원할 수 있도록 스냅샷에 이름을 지정합니다.

스냅샷을 생성할 때 RDS Custom for SQL Server는 `(D:)` 볼륨에 대한 Amazon EBS 스냅샷을 생성하며, 이는 DB 인스턴스에 연결된 데이터베이스 볼륨입니다. 스냅샷을 특정 DB 인스턴스에 쉽게 연결할 수 있도록 `DBSnapshotIdentifier`, `DbiResourceId` 및 `VolumeType`으로 태그가 지정됩니다.

DB 스냅샷을 생성하면 I/O가 잠시 중단됩니다. 이러한 일시 중단은 DB 인스턴스의 크기와 클래스에 따라 몇 초에서 몇 분까지 지속될 수 있습니다. 스냅샷 생성 시간은 데이터베이스의 총 수와 크기에 따라 달라집니다. 시점 복구(PITR) 작업에 사용할 수 있는 데이터베이스 수에 대한 자세한 내용은 [인스턴스 클래스 유형별 PITR 대상 데이터베이스 수](custom-backup.pitr-sqs.md#custom-backup.pitr.sqlserver.eligiblecountperinstance) 섹션을 참조하세요.

스냅샷에는 전체 스토리지 볼륨이 포함되므로 임시 파일과 같은 파일의 크기도 스냅샷 생성 시간에 영향을 미칩니다. 스냅샷을 생성하는 방법에 대한 자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 섹션을 참조하세요.

콘솔 또는 AWS CLI를 사용하여 RDS Custom for SQL Server 스냅샷을 생성할 수 있습니다.

## 콘솔
<a name="USER_CreateSnapshot-sqlserver.CON"></a>

**RDS Custom 스냅샷을 생성하는 방법**

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

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. RDS Custom DB 인스턴스 목록에서 스냅샷을 생성할 인스턴스를 선택합니다.

1. **작업**에서 **스냅샷 만들기**를 선택합니다.

   [**DB 스냅샷 생성(Take DB Snapshot)**] 창이 나타납니다.

1. **스냅샷 이름(Snapshot name)**에 스냅샷 이름을 입력합니다.

1. [**스냅샷 생성(Take Snapshot)**]을 선택합니다.

## AWS CLI
<a name="USER_CreateSnapshot-sqlserver.CLI"></a>

[create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) AWS CLI 명령을 사용하여 RDS Custom DB 인스턴스의 스냅샷을 생성합니다.

다음과 같은 옵션을 지정할 수 있습니다.
+ `--db-instance-identifier` - 백업할 RDS Custom DB 인스턴스를 식별합니다.
+ `--db-snapshot-identifier` - 나중에 복원할 수 있도록 RDS Custom 스냅샷의 이름을 지정합니다.

이 예제에서는 `my-custom-instance`라는 RDS Custom DB 인스턴스에 대해 *`my-custom-snapshot`*이라는 DB 스냅샷을 생성합니다.

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

```
1. aws rds create-db-snapshot \
2.     --db-instance-identifier my-custom-instance \
3.     --db-snapshot-identifier my-custom-snapshot
```
Windows의 경우:  

```
1. aws rds create-db-snapshot ^
2.     --db-instance-identifier my-custom-instance ^
3.     --db-snapshot-identifier my-custom-snapshot
```

# RDS Custom for SQL Server DB 스냅샷에서 복원
<a name="custom-backup-sqlserver.restoring"></a>

RDS Custom for SQL Server DB 인스턴스를 복원하는 경우 DB 스냅샷의 이름과 새로운 인스턴스의 이름을 입력합니다. 스냅샷에서 기존 RDS Custom DB 인스턴스로 복원할 수 없습니다. 복원 시 새로운 RDS Custom for SQL Server DB 인스턴스가 생성됩니다.

스냅샷에서 복원하면 스토리지 볼륨이 스냅샷을 생성한 시점으로 복원됩니다. 여기에는 `(D:)` 볼륨에 있던 모든 데이터베이스와 기타 파일이 포함됩니다.

## 콘솔
<a name="custom-backup-sqlserver.restoring.console"></a>

**DB 스냅샷에서 RDS Custom DB 인스턴스를 복원하는 방법**

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

1. 탐색 창에서 [**Snapshots**]를 선택합니다.

1. 복원 원본으로 사용할 DB 스냅샷을 선택합니다.

1. **작업**에서 **스냅샷 복원**을 선택합니다.

1. **DB 인스턴스 복원(Restore DB instance)** 페이지의 **DB 인스턴스 식별자(DB instance identifier)**에 복원된 RDS Custom DB 인스턴스의 이름을 입력합니다.

1. **DB 인스턴스 복원**을 선택합니다.

## AWS CLI
<a name="custom-backup-sqlserver.restoring.CLI"></a>

[ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) AWS CLI 명령을 사용하여 RDS Custom DB 스냅샷을 복원합니다.

복원하려는 스냅샷이 프라이빗 DB 인스턴스용인 경우 `db-subnet-group-name` 및 `no-publicly-accessible`을 모두 올바르게 지정해야 합니다. 그렇지 않으면 DB 인스턴스의 기본값에 공개적으로 액세스할 수 있게 됩니다. 다음 옵션이 필요합니다.
+ `db-snapshot-identifier` - 복구할 스냅샷을 식별합니다.
+ `db-instance-identifier` - DB 스냅샷에서 생성할 RDS Custom DB 인스턴스의 이름을 지정합니다.
+ `custom-iam-instance-profile` - RDS Custom for Oracle DB 인스턴스의 기본 Amazon EC2 인스턴스와 연결된 인스턴스 프로필을 지정합니다.

다음 코드는 `my-custom-instance`에 대한 `my-custom-snapshot`이라는 스냅샷을 복원합니다.

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

```
aws rds restore-db-instance-from-db-snapshot \
  --db-snapshot-identifier my-custom-snapshot \
  --db-instance-identifier my-custom-instance \
  --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \
  --no-publicly-accessible
```
Windows의 경우:  

```
aws rds restore-db-instance-from-db-snapshot ^
  --db-snapshot-identifier my-custom-snapshot ^
  --db-instance-identifier my-custom-instance ^
  --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^
  --no-publicly-accessible
```

# RDS Custom for SQL Server 인스턴스를 특정 시점으로 복원
<a name="custom-backup.pitr-sqs"></a>

DB 인스턴스를 특정 시점(PITR)으로 복원하여 새로운 DB 인스턴스를 생성할 수 있습니다. PITR을 지원하려면 DB 인스턴스에 백업 보존 기능이 활성화되어 있어야 합니다.

RDS Custom for SQL Server DB 인스턴스의 가장 빠른 복원 가능 시간은 여러 요소에 따라 달라지지만, 일반적으로 현재 시간에서 5분 이내입니다. DB 인스턴스의 최근 복원 가능 시간을 확인하려면 AWS CLI[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 사용한 후 DB 인스턴스의 `LatestRestorableTime` 필드에 반환되는 값을 살펴봅니다. Amazon RDS 콘솔에서 각 DB 인스턴스의 복원 가능한 최신 시간을 보려면 [ **자동 백업**을 선택합니다.

백업 보존 기간 중 어느 특정 시점으로든 복원할 수 있습니다. 각 DB 인스턴스의 복원 가능한 가장 빠른 시간을 보려면 Amazon RDS 콘솔에서 **자동 백업**을 선택합니다.

PITR에 대한 일반적인 정보는 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom for SQL Server에 대한 PITR 고려 사항](#custom-backup.pitr.sqlserver)
+ [인스턴스 클래스 유형별 PITR 대상 데이터베이스 수](#custom-backup.pitr.sqlserver.eligiblecountperinstance)
+ [데이터베이스를 PITR에 포함되지 않도록 설정](#custom-backup.pitr.sqlserver.ineligible)
+ [Amazon S3의 트랜잭션 로그](#custom-backup.pitr.sqlserver.tlogs)
+ [AWS Management Console, AWS CLI 또는 RDS API를 사용하여 PITR 복원합니다.](#custom-backup.pitr-sqs-concli)

## RDS Custom for SQL Server에 대한 PITR 고려 사항
<a name="custom-backup.pitr.sqlserver"></a>

RDS Custom for SQL Server에서 PITR은 다음과 같은 중요한 면에서 Amazon RDS의 PITR과 다릅니다.
+ PITR은 DB 인스턴스의 데이터베이스만 복원합니다. C: 드라이브의 운영 체제 또는 파일은 복원되지 않습니다.
+ RDS Custom for SQL Server DB 인스턴스의 경우 데이터베이스가 자동으로 백업되며 다음 조건에서만 PITR을 사용할 수 있습니다.
  + 데이터베이스가 온라인 상태입니다.
  + 복구 모델이 `FULL`로 설정되어 있습니다.
  + 쓰기가 가능합니다.
  + D: 드라이브에 실존 파일이 있습니다.
  + `rds_pitr_blocked_databases` 테이블에 등록되어 있지 않습니다. 자세한 내용은 [데이터베이스를 PITR에 포함되지 않도록 설정](#custom-backup.pitr.sqlserver.ineligible) 섹션을 참조하세요.
+ PITR 대상 데이터베이스는 데이터베이스 ID의 순서에 따라 결정됩니다. RDS Custom for SQL Server는 DB 인스턴스당 최대 5,000개의 데이터베이스를 허용합니다. 그러나 RDS Custom for SQL Server DB 인스턴스에 대해 PITR 작업을 통해 복원되는 최대 데이터베이스 수는 인스턴스 클래스 유형에 따라 달라집니다. 자세한 내용은 [인스턴스 클래스 유형별 PITR 대상 데이터베이스 수](#custom-backup.pitr.sqlserver.eligiblecountperinstance) 섹션을 참조하세요.

  PITR에 포함되지 않는 다른 데이터베이스는 PITR에 사용되는 자동 스냅샷 백업을 비롯하여 DB 스냅샷에서 복원할 수 있습니다.
+ 새로운 데이터베이스를 추가하거나, 데이터베이스 이름을 바꾸거나, PITR 대상 데이터베이스를 복원하면 DB 인스턴스의 스냅샷이 시작됩니다.
+ PITR 대상인 최대 데이터베이스 수는 데이터베이스 인스턴스가 규모 조정 컴퓨팅 작업을 거칠 때 대상 인스턴스 클래스 유형에 따라 달라집니다. 인스턴스의 더 많은 데이터베이스가 PITR에 적합하도록 인스턴스를 확장하면 새 스냅샷이 생성됩니다.
+ 복원된 데이터베이스의 이름은 소스 DB 인스턴스와 동일합니다. 다른 이름을 지정할 수 없습니다.
+ `AWSRDSCustomSQLServerIamRolePolicy`는 다른 AWS 서비스에 대한 액세스가 필요합니다. 자세한 내용은 [AWSRDSCustomSQLServerInstanceRole에 액세스 정책 추가](custom-setup-sqlserver.md#custom-setup-sqlserver.iam.add-policy) 섹션을 참조하세요.
+ RDS Custom for SQL Server에는 표준 시간대 변경이 지원되지 않습니다. 운영 체제 또는 DB 인스턴스 시간대를 변경하면 PITR(및 기타 자동화)이 작동하지 않습니다.

## 인스턴스 클래스 유형별 PITR 대상 데이터베이스 수
<a name="custom-backup.pitr.sqlserver.eligiblecountperinstance"></a>

다음 표에는 인스턴스 클래스 유형에 따라 PITR에 사용할 수 있는 최대 데이터베이스 수가 나와 있습니다.


| 인스턴스 클래스 유형 | PITR에 사용할 수 있는 최대 데이터베이스 수 | 
| --- | --- | 
| db.\$1.large | 100 | 
| db.\$1.xlarge to db.\$1.2xlarge | 150 | 
| db.\$1.4xlarge to db.\$1.8xlarge | 300 | 
| db.\$1.12xlarge to db.\$1.16xlarge | 600 | 
| db.\$1.24xlarge, db.\$132xlarge | 1000 | 

`*` *서로 다른 인스턴스 클래스 유형을 나타냅니다.*

DB 인스턴스에서 PITR에 사용할 수 있는 최대 데이터베이스 수는 인스턴스 클래스 유형에 따라 다릅니다. RDS Custom for SQL Server에서 지원하는 최대 인스턴스 클래스 유형의 경우 100개부터 1,000개까지 다양합니다. SQL 서버 시스템 데이터베이스`(master, model, msdb, tempdb)`는 이 제한에 포함되지 않습니다. 대상 인스턴스 클래스 유형에 따라 DB 인스턴스를 확장하거나 축소할 때 RDS Custom은 PITR에 사용할 수 있는 데이터베이스 수를 자동으로 업데이트합니다. RDS Custom for SQL Server는 DB 인스턴스에서 PITR에 사용할 수 있는 최대 데이터베이스 수가 변경될 때 `RDS-EVENT-0352`를 전송합니다. 자세한 내용은 [사용자 지정 엔진 버전 이벤트](USER_Events.Messages.md#USER_Events.Messages.CEV) 섹션을 참조하세요.

**참고**  
100개 이상의 데이터베이스에 대한 PITR 지원은 2023년 8월 26일 이후에 생성된 DB 인스턴스에서만 사용할 수 있습니다. 2023년 8월 26일 이전에 생성된 인스턴스의 경우 PITR에 사용할 수 있는 최대 데이터베이스 수는 인스턴스 클래스에 관계없이 100개입니다. 2023년 8월 26일 이전에 생성된 DB 인스턴스의 데이터베이스 100개 이상에 대해 PITR 지원을 활성화하려면 다음 작업을 수행할 수 있습니다.  
DB 엔진 버전을 15.00.4322.2.v1 이상으로 업그레이드

PITR 작업 중에 RDS Custom은 복원 시 소스 DB 인스턴스에서 PITR에 속했던 모든 데이터베이스를 복원합니다. 대상 DB 인스턴스가 복원 작업을 완료하고 백업 보존을 활성화하면 대상 DB 인스턴스에서 PITR에 사용할 수 있는 최대 데이터베이스 수를 기준으로 DB 인스턴스가 백업을 시작합니다.

예를 들어, DB 인스턴스가 200개의 데이터베이스가 있는 `db.*.xlarge`에서 실행되는 경우는 다음과 같습니다.

1. RDS Custom for SQL Server는 PITR 백업을 위해 데이터베이스 ID를 기준으로 정렬된 처음 150개의 데이터베이스를 선택합니다.

1. db.\$1.4xlarge까지 확장하도록 인스턴스를 수정합니다.

1. 컴퓨팅 확장 작업이 완료되면 RDS Custom for SQL Server는 데이터베이스 ID를 기준으로 정렬된 처음 300개의 데이터베이스를 PITR 백업용으로 선택합니다. 이제 PITR 요구 사항 조건을 충족하는 200개 데이터베이스 각각이 PITR을 사용할 수 있습니다.

1. 이제 다시 db.\$1.xlarge로 인스턴스 규모를 축소합니다.

1. 컴퓨팅 축소 작업이 완료되면 RDS Custom for SQL Server는 데이터베이스 ID를 기준으로 정렬된 처음 150개의 데이터베이스를 PITR 백업용으로 다시 선택합니다.

## 데이터베이스를 PITR에 포함되지 않도록 설정
<a name="custom-backup.pitr.sqlserver.ineligible"></a>

PITR에서 개별 데이터베이스를 제외하도록 선택할 수 있습니다. 이렇게 하려면 `database_id` 값을 `rds_pitr_blocked_databases` 테이블에 넣으면 됩니다. 다음 SQL 스크립트를 사용하여 테이블을 생성합니다.

**rds\$1pitr\$1blocked\$1databases 테이블을 생성하는 방법**
+ 다음 SQL 스크립트를 실행합니다.

  ```
  create table msdb..rds_pitr_blocked_databases
  (
  database_id INT NOT NULL,
  database_name SYSNAME NOT NULL,
  db_entry_updated_date datetime NOT NULL DEFAULT GETDATE(),
  db_entry_updated_by SYSNAME NOT NULL DEFAULT CURRENT_USER,
  PRIMARY KEY (database_id)
  );
  ```

대상 데이터베이스 및 대상이 아닌 데이터베이스 목록은 Amazon S3 버킷 `do-not-delete-rds-custom-$ACCOUNT_ID-$REGION-unique_identifier`의 `RDSCustomForSQLServer/Instances/DB_instance_resource_ID/TransactionLogMetadata` 디렉터리에 있는 `RI.End` 파일을 참조하세요. `RI.End` 파일에 대한 자세한 내용은 [Amazon S3의 트랜잭션 로그](#custom-backup.pitr.sqlserver.tlogs)를 참조하세요.

다음 SQL 스크립트를 사용하여 PITR 대상인 데이터베이스 목록을 확인할 수도 있습니다. `@limit` 변수를 인스턴스 클래스의 PITR에 사용할 수 있는 최대 데이터베이스 수로 설정합니다. 자세한 내용은 [인스턴스 클래스 유형별 PITR 대상 데이터베이스 수](#custom-backup.pitr.sqlserver.eligiblecountperinstance) 섹션을 참조하세요.

**DB 인스턴스 클래스의 PITR 대상인 데이터베이스 목록을 확인하려면**
+ 다음 SQL 스크립트를 실행합니다.

  ```
  DECLARE @Limit INT;
  SET @Limit = (insert-database-instance-limit-here);
  
  USE msdb;
  IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = 'rds_pitr_blocked_databases'))
      WITH TABLE0 AS (
          SELECT hdrs.database_id as DatabaseId, sdb.name as DatabaseName, 'ALWAYS_ON_NOT_WRITABLE_REPLICA' as Reason, NULL as DatabaseNameOnPitrTable
          FROM sys.dm_hadr_database_replica_states hdrs
          INNER JOIN sys.databases sdb ON sdb.database_id = hdrs.database_id
          WHERE (hdrs.is_local = 1 AND hdrs.is_primary_replica = 0) 
          OR (sys.fn_hadr_is_primary_replica (sdb.name) = 1 AND DATABASEPROPERTYEX (sdb.name, 'Updateability') = 'READ_ONLY')
      ),
      TABLE1 as (
              SELECT dbs.database_id as DatabaseId, sysdbs.name as DatabaseName, 'OPTOUT' as Reason,
              CASE WHEN dbs.database_name = sysdbs.name THEN NULL ELSE dbs.database_name END AS DatabaseNameOnPitrTable
              FROM msdb.dbo.rds_pitr_blocked_databases dbs
              INNER JOIN sys.databases sysdbs ON dbs.database_id = sysdbs.database_id
              WHERE sysdbs.database_id > 4
              ),
      TABLE2 as (
              SELECT
              db.name AS DatabaseName,
              db.create_date AS CreateDate,
              db.state_desc AS DatabaseState,
              db.database_id AS DatabaseId,
              rs.database_guid AS DatabaseGuid,
              rs.last_log_backup_lsn AS LastLogBackupLSN,
              rs.recovery_fork_guid RecoveryForkGuid,
              rs.first_recovery_fork_guid AS FirstRecoveryForkGuid,
              db.recovery_model_desc AS RecoveryModel,
              db.is_auto_close_on AS IsAutoClose,
              db.is_read_only as IsReadOnly,
              NEWID() as FileName,
              CASE WHEN(db.state_desc = 'ONLINE'
                      AND db.recovery_model_desc != 'SIMPLE' 
                      AND((db.is_auto_close_on = 0 and db.collation_name IS NOT NULL) OR db.is_auto_close_on = 1)) 
                      AND db.is_read_only != 1
                      AND db.user_access = 0
                      AND db.source_database_id IS NULL
                      AND db.is_in_standby != 1
                      THEN 1 ELSE 0 END AS IsPartOfSnapshot,
              CASE WHEN db.source_database_id IS NULL THEN 0 ELSE 1 END AS IsDatabaseSnapshot
              FROM sys.databases db
              INNER JOIN sys.database_recovery_status rs
              ON db.database_id = rs.database_id
              WHERE DB_NAME(db.database_id) NOT IN('tempdb') AND
              db.database_id NOT IN (SELECT DISTINCT DatabaseId FROM TABLE1) AND
              db.database_id NOT IN (SELECT DISTINCT DatabaseId FROM TABLE0)
          ),
          TABLE3 as(
              Select @Limit+count(DatabaseName) as TotalNumberOfDatabases from TABLE2 where TABLE2.IsPartOfSnapshot=1 and DatabaseName in ('master','model','msdb')
          )
          SELECT TOP(SELECT TotalNumberOfDatabases from TABLE3)  DatabaseName,CreateDate,DatabaseState,DatabaseId from TABLE2 where TABLE2.IsPartOfSnapshot=1
          ORDER BY TABLE2.DatabaseID ASC
  ELSE
      WITH TABLE0 AS (
          SELECT hdrs.database_id as DatabaseId, sdb.name as DatabaseName, 'ALWAYS_ON_NOT_WRITABLE_REPLICA' as Reason, NULL as DatabaseNameOnPitrTable
          FROM sys.dm_hadr_database_replica_states hdrs
          INNER JOIN sys.databases sdb ON sdb.database_id = hdrs.database_id
          WHERE (hdrs.is_local = 1 AND hdrs.is_primary_replica = 0) 
          OR (sys.fn_hadr_is_primary_replica (sdb.name) = 1 AND DATABASEPROPERTYEX (sdb.name, 'Updateability') = 'READ_ONLY')
      ),
      TABLE1 as (
              SELECT
              db.name AS DatabaseName,
              db.create_date AS CreateDate,
              db.state_desc AS DatabaseState,
              db.database_id AS DatabaseId,
              rs.database_guid AS DatabaseGuid,
              rs.last_log_backup_lsn AS LastLogBackupLSN,
              rs.recovery_fork_guid RecoveryForkGuid,
              rs.first_recovery_fork_guid AS FirstRecoveryForkGuid,
              db.recovery_model_desc AS RecoveryModel,
              db.is_auto_close_on AS IsAutoClose,
              db.is_read_only as IsReadOnly,
              NEWID() as FileName,
              CASE WHEN(db.state_desc = 'ONLINE'
                      AND db.recovery_model_desc != 'SIMPLE' 
                      AND((db.is_auto_close_on = 0 and db.collation_name IS NOT NULL) OR db.is_auto_close_on = 1)) 
                      AND db.is_read_only != 1
                      AND db.user_access = 0
                      AND db.source_database_id IS NULL
                      AND db.is_in_standby != 1
                      THEN 1 ELSE 0 END AS IsPartOfSnapshot,
              CASE WHEN db.source_database_id IS NULL THEN 0 ELSE 1 END AS IsDatabaseSnapshot
              FROM sys.databases db
              INNER JOIN sys.database_recovery_status rs
              ON db.database_id = rs.database_id
              WHERE DB_NAME(db.database_id) NOT IN('tempdb') AND
              db.database_id NOT IN (SELECT DISTINCT DatabaseId FROM TABLE0)
          ),
          TABLE2 as(
              SELECT @Limit+count(DatabaseName) as TotalNumberOfDatabases from TABLE1 where TABLE1.IsPartOfSnapshot=1 and DatabaseName in ('master','model','msdb')
          )
          select top(select TotalNumberOfDatabases from TABLE2)  DatabaseName,CreateDate,DatabaseState,DatabaseId from TABLE1 where TABLE1.IsPartOfSnapshot=1
          ORDER BY TABLE1.DatabaseID ASC
  ```

**참고**  
심볼 링크만 있는 데이터베이스도 PITR 작업 대상인 데이터베이스에서 제외됩니다. 위 쿼리는 이 기준에 따라 필터링되지 않습니다.

## Amazon S3의 트랜잭션 로그
<a name="custom-backup.pitr.sqlserver.tlogs"></a>

백업 보존 기간에 따라 RDS Custom for SQL Server DB 인스턴스에 대한 트랜잭션 로그가 자동으로 추출되어 Amazon S3에 업로드되는지 여부가 결정됩니다. 0이 아닌 값은 자동 백업이 생성되고 RDS Custom 에이전트가 트랜잭션 로그를 5분마다 S3에 업로드함을 의미합니다.

S3의 트랜잭션 로그 파일은 DB 인스턴스를 생성할 때 입력한 AWS KMS key를 사용하여 유후 상태로 암호화됩니다. 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [서버 측 암호화를 사용하여 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)를 참조하세요.

각 데이터베이스의 트랜잭션 로그는 `do-not-delete-rds-custom-$ACCOUNT_ID-$REGION-unique_identifier`라는 이름이 지정된 S3 버킷에 업로드됩니다. S3 버킷의 `RDSCustomForSQLServer/Instances/DB_instance_resource_ID` 디렉터리에는 다음 두 개의 하위 디렉터리가 있습니다.
+ `TransactionLogs` - 각 데이터베이스 및 해당 메타데이터에 대한 트랜잭션 로그를 포함합니다.

  트랜잭션 로그 파일 이름은 `yyyyMMddHHmm.database_id.timestamp`와 같은 패턴을 따릅니다.

  ```
  202110202230.11.1634769287
  ```

  `_metadata`라는 접미사가 있는 동일한 파일 이름에는 로그 시퀀스 번호, 데이터베이스 이름 및 `RdsChunkCount`와 같은 트랜잭션 로그에 대한 정보가 포함되어 있습니다. `RdsChunkCount`는 단일 트랜잭션 로그 파일을 나타내는 실제 파일 수를 결정합니다. 트랜잭션 로그 파일의 물리적 청크를 의미하는 접미사 `_0001`, `_0002` 등이 있는 파일이 표시될 수 있습니다. 청크된 트랜잭션 로그 파일을 사용하려면 청크를 다운로드한 후 병합해야 합니다.

  다음과 같은 파일이 있는 경우를 생각해 봅니다.
  + `202110202230.11.1634769287`
  + ` 202110202230.11.1634769287_0001`
  + ` 202110202230.11.1634769287_0002 `
  + ` 202110202230.11.1634769287_metadata`

  `RdsChunkCount`은 `3`입니다. 파일 병합 순서는 `202110202230.11.1634769287`, ` 202110202230.11.1634769287_0001`, `202110202230.11.1634769287_0002`입니다.
+ `TransactionLogMetadata` - 트랜잭션 로그 추출의 각 반복에 대한 메타데이터 정보를 포함합니다.

  `RI.End` 파일에는 트랜잭션 로그가 추출된 모든 데이터베이스 및 존재하지만 트랜잭션 로그가 추출되지 않은 모든 데이터베이스에 대한 정보가 들어 있습니다. 예를 들어, `RI.End` 파일 이름은 `yyyyMMddHHmm.RI.End.timestamp` 패턴을 따릅니다.

  ```
  202110202230.RI.End.1634769281
  ```

## AWS Management Console, AWS CLI 또는 RDS API를 사용하여 PITR 복원합니다.
<a name="custom-backup.pitr-sqs-concli"></a>

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 RDS Custom for SQL Server DB 인스턴스를 특정 시점으로 복원할 수 있습니다.

### 콘솔
<a name="custom-backup-sqs.pitr2.CON"></a>

**RDS Custom DB 인스턴스를 지정된 시간으로 복원하는 방법**

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

1. 탐색 창에서 **자동 백업(Automated backups)**을 선택합니다.

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

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

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

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

   **사용자 지정(Custom)**을 선택한 경우 인스턴스를 복원하려는 날짜와 시간을 입력합니다.

   시간은 현지 시간대로 표시됩니다. 즉, 협정 세계시(UTC)에서 오프셋으로 표시됩니다. 예를 들어 UTC-5는 동부 표준시/하절기 중부 표준시입니다.

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

1. 필요에 따라 DB 인스턴스 클래스와 같은 기타 옵션을 선택합니다.

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

### AWS CLI
<a name="custom-backup-sqs.pitr2.CLI"></a>

새로운 RDS Custom DB 인스턴스를 생성하려면 [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) AWS CLI 명령을 사용하여 DB 인스턴스를 지정된 시간으로 복원합니다.

다음 옵션 중 하나를 사용하여 복원 원본으로 사용할 백업을 지정합니다.
+ `--source-db-instance-identifier mysourcedbinstance`
+ `--source-dbi-resource-id dbinstanceresourceID`
+ `--source-db-instance-automated-backups-arn backupARN`

옵션은 `custom-iam-instance-profile` 필수입니다.

다음 예제는 지정된 시간을 기준으로 `my-custom-db-instance`를 `my-restored-custom-db-instance`라는 새로운 DB 인스턴스로 복원합니다.

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

```
1. aws rds restore-db-instance-to-point-in-time \
2.     --source-db-instance-identifier my-custom-db-instance\
3.     --target-db-instance-identifier my-restored-custom-db-instance \
4.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \
5.     --restore-time 2022-10-14T23:45:00.000Z
```
Windows의 경우:  

```
1. aws rds restore-db-instance-to-point-in-time ^
2.     --source-db-instance-identifier my-custom-db-instance ^
3.     --target-db-instance-identifier my-restored-custom-db-instance ^
4.     --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^
5.     --restore-time 2022-10-14T23:45:00.000Z
```

# RDS Custom for SQL Server 스냅샷 삭제
<a name="custom-backup-sqlserver.deleting"></a>

RDS Custom for SQL Server에서 관리하는 DB 스냅샷이 더 이상 필요하지 않으면 삭제할 수 있습니다. Amazon RDS와 RDS Custom DB 인스턴스의 삭제 절차는 동일합니다.

바이너리 및 루트 볼륨에 대한 Amazon EBS 스냅샷은 계정에서 실행 중인 일부 인스턴스 또는 다른 RDS Custom for SQL Server 스냅샷에 연결될 수 있어 계정에 더 오래 남아 있습니다. 이러한 EBS 스냅샷은 기존 RDS Custom for SQL Server 리소스(DB 인스턴스 또는 백업)와 더 이상 관련이 없는 경우 자동으로 삭제됩니다.

## 콘솔
<a name="USER_DeleteSnapshot-sqlserver.CON"></a>

**RDS Custom DB 인스턴스의 스냅샷을 삭제하는 방법**

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

1. 탐색 창에서 [**Snapshots**]를 선택합니다.

1. 삭제하고 싶은 DB 스냅샷을 선택합니다.

1. **작업(Actions)**에서 **스냅샷 삭제(Delete snapshot)**를 선택합니다.

1. 확인 페이지에서 **삭제**를 선택합니다.

## AWS CLI
<a name="USER_DeleteSnapshot-sqlserver.CLI"></a>

RDS Custom 스냅샷을 삭제하려면 AWS CLI 명령 [delete-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-snapshot.html)을 사용합니다.

다음 옵션이 필요합니다.
+ `--db-snapshot-identifier` - 삭제할 스냅샷입니다.

다음 예제에서는 `my-custom-snapshot` DB 스냅샷을 삭제합니다.

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

```
1. aws rds delete-db-snapshot \  
2.   --db-snapshot-identifier my-custom-snapshot
```
Windows의 경우:  

```
1. aws rds delete-db-snapshot ^
2.   --db-snapshot-identifier my-custom-snapshot
```

# RDS Custom for SQL Server 자동 백업 삭제
<a name="custom-backup-sqlserver.deleting-backups"></a>

보관된 RDS Custom for SQL Server 자동 백업이 더 이상 필요하지 않으면 삭제할 수 있습니다. 절차는 Amazon RDS 백업을 삭제하는 절차와 동일합니다.

## 콘솔
<a name="USER_WorkingWithAutomatedBackups-sqlserver-Deleting.CON"></a>

**보관된 자동 백업을 삭제하려면**

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

1. 탐색 창에서 **자동 백업(Automated backups)**을 선택합니다.

1. **Retained(보관됨)**를 선택합니다.

1. 삭제하려는 보관된 자동 백업을 선택합니다.

1. [** Actions**]에 대해 [**Delete**]를 선택합니다.

1. 확인 페이지에서 **delete me**를 입력하고 **삭제**를 선택합니다.

## AWS CLI
<a name="USER_WorkingWithAutomatedBackups-sqlserver-Deleting.CLI"></a>

[delete-db-instance-automated-backup](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance-automated-backup.html)이라는 AWS CLI 명령을 사용하여 보관된 자동 백업을 삭제할 수 있습니다.

다음 옵션을 사용하여 보관된 자동 백업을 삭제할 수 있습니다.
+ `--dbi-resource-id` - 소스 RDS Custom DB 인스턴스의 리소스 식별자입니다.

  보관된 자동 백업의 소스 DB 인스턴스에 대한 리소스 식별자는 AWS CLI 명령 [describe-db-instance-automated-backups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instance-automated-backups.html)를 사용하여 찾을 수 있습니다.

다음 예시에서는 소스 DB 인스턴스 리소스 식별자가 `custom-db-123ABCEXAMPLE`인 보관된 자동 백업을 삭제합니다.

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

```
1. aws rds delete-db-instance-automated-backup \
2.     --dbi-resource-id custom-db-123ABCEXAMPLE
```
Windows의 경우:  

```
1. aws rds delete-db-instance-automated-backup ^
2.     --dbi-resource-id custom-db-123ABCEXAMPLE
```

# Amazon RDS Custom for SQL Server DB 스냅샷 복사
<a name="custom-copying-snapshot-sqlserver"></a>

RDS Custom for SQL Server에서는 자동 백업 및 수동으로 DB 스냅샷을 복사할 수 있습니다. 스냅샷을 복사한 후 생성한 복사본은 수동 스냅샷입니다. 자동 백업 또는 수동 스냅샷의 복사본을 여러 개 만들 수 있지만, 각 복사본에는 고유한 식별자가 있어야 합니다.

RDS Custom for SQL Server를 사용하는 다른 AWS 리전에서 동일한 AWS 계정 내의 스냅샷만 복사할 수 있습니다. 다음 연산자는 현재 지원되지 않습니다.
+ 동일한 AWS 리전에서 DB 스냅샷을 복사합니다.
+ AWS 계정 간에 DB 스냅샷을 복사합니다.

RDS Custom for SQL Server는 증분 스냅샷 복사를 지원합니다. 자세한 내용은 [증분 스냅샷 복사 시 고려 사항](USER_CopySnapshot.md#USER_CopySnapshot.Incremental) 섹션을 참조하세요.

**Topics**
+ [제한 사항](#custom-copying-snapshot-sqlserver.Limitations)
+ [암호화 처리](#custom-copying-snapshot-sqlserver.Encryption)
+ [리전 간 복사](#custom-copying-snapshot-sqlserver.XRCopy)
+ [사용자 지정 엔진 버전(CEV)으로 만든 DB 인스턴스의 스냅샷](#custom-copying-snapshot-sqlserver.CEVSnap)
+ [IAM 보안 주체에 필요한 권한 부여](#custom-copying-snapshot-sqlserver.GrantPermIAM)
+ [DB 스냅샷 복사](#custom-copying-snapshot-sqlserver.CopyingDBSnapshot)

## 제한 사항
<a name="custom-copying-snapshot-sqlserver.Limitations"></a>

RDS Custom for SQL Server용 DB 스냅샷을 복사하는 데는 다음과 같은 제한이 적용됩니다.
+ 대상 스냅샷이 제공되기 전에 소스 스냅샷을 삭제하면 스냅샷 복사가 실패할 수 있습니다. 소스 스냅샷을 삭제하기 전에 대상 스냅샷의 상태가 `AVAILABLE`인지 확인하세요.
+ DB 스냅샷 복사 요청에서 옵션 그룹 이름을 지정하거나 옵션 그룹을 복사할 수 없습니다.
+ 복사 프로세스 이전 또는 복사 프로세스 중에 소스 DB 스냅샷의 종속 AWS 리소스를 삭제하면 스냅샷 복사 요청이 비동기적으로 실패할 수 있습니다.
  + 계정의 RDS Custom 관리형 S3 버킷에 저장된 소스 DB 인스턴스의 Service Master Key(SMK) 백업 파일을 삭제하면 DB 스냅샷 복사가 비동기적으로 성공합니다. 하지만 TDE 지원 데이터베이스와 같이 SMK에 의존하는 SQL Server 기능에는 문제가 있습니다. 자세한 내용은 [RDS Custom for SQL Server에서 TDE 지원 데이터베이스의 PENDING\$1RECOVERY 상태 문제 해결](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.pending_recovery) 섹션을 참조하세요.
+ 동일한 AWS 리전에서 DB 스냅샷을 복사하는 것은 현재 지원되지 않습니다.
+ AWS 계정 간 DB 스냅샷을 복사하는 것은 현재 지원되지 않습니다.

Amazon RDS의 DB 스냅샷 복사 제한은 RDS Custom for SQL Server에도 적용됩니다. 자세한 내용은 [제한 사항](USER_CopySnapshot.md#USER_CopySnapshot.Limitations) 섹션을 참조하세요.

## 암호화 처리
<a name="custom-copying-snapshot-sqlserver.Encryption"></a>

모든 RDS Custom for SQL Server DB 인스턴스 및 DB 스냅샷은 KMS 키로 암호화됩니다. 암호화된 스냅샷은 암호화된 스냅샷에만 복사할 수 있으므로, DB 스냅샷 복사 요청을 위해 대상 AWS 리전에서 유효한 KMS 키를 지정해야 합니다.

소스 스냅샷은 복사 프로세스 전체에서 암호화를 유지합니다. Amazon RDS는 봉투 암호화를 사용하여 지정된 대상 AWS 리전 KMS 키를 통해 복사 작업 중에 데이터를 보호합니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [봉투 암호화](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)를 참조하세요.

## 리전 간 복사
<a name="custom-copying-snapshot-sqlserver.XRCopy"></a>

AWS 리전 간에 DB 스냅샷을 복사할 수 있습니다. 하지만 리전 간 스냅샷 복사와 관련한 특정 제약 및 고려 사항이 있습니다.

### 스냅샷 복사를 위해 AWS 리전 간에 통신할 수 있도록 RDS 권한 부여
<a name="custom-copying-snapshot-sqlserver.XRCopy.Authorize"></a>

리전 간 DB 스냅샷 복사 요청이 성공적으로 처리되면 RDS가 복사를 시작합니다. RDS가 소스 스냅샷에 액세스할 수 있도록 권한 부여 요청이 생성됩니다. 이 권한 부여 요청은 소스 DB 스냅샷을 대상 DB 스냅샷에 연결합니다. 이렇게 하면 RDS가 지정된 대상 스냅샷에만 복사할 수 있습니다.

RDS는 서비스 연결 IAM 역할의 `rds:CrossRegionCommunication` 권한을 사용하여 권한 부여를 확인합니다. 복사가 승인되면 RDS는 소스 리전과 통신하여 복사 작업을 완료할 수 있습니다.

RDS는 이전에 CopyDBSnapshot 요청에 의해 승인되지 않은 DB 스냅샷에 액세스할 권한이 없습니다. 복사가 완료되면 권한 부여가 취소됩니다.

RDS는 서비스 연결 역할을 사용하여 소스 리전에서 승인을 확인합니다. 복사 프로세스 중에 서비스 연결 역할을 삭제하면 복사가 실패합니다.

자세한 내용은 **AWS Identity and Access Management 사용 설명서의 [서비스 연결 역할 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)을 참조하세요.

### AWS Security Token Service 보안 인증 사용
<a name="custom-copying-snapshot-sqlserver.XRCopy.STS"></a>

전역 AWS Security Token Service(AWS STS) 엔드포인트의 세션 토큰은 기본적으로 활성화된 AWS 리전(상용 리전)에서만 유효합니다. `assumeRole`에서 AWS STS API 작업을 통해 얻은 자격 증명을 사용하는 경우 소스 리전이 옵트인 리전이면 리전별 엔드포인트를 사용합니다. 그렇지 않으면 요청이 실패합니다. 자격 증명은 두 리전 모두에서 유효해야 하며, 이는 리전 AWS STS 엔드포인트를 사용할 때만 옵트인 리전에 적용됩니다.

전역 엔드포인트를 사용하려면 작업의 두 리전 모두에 대해 전역 엔드포인트를 사용하도록 설정되어 있어야 합니다. 글로벌 엔드포인트를 AWS STS 계정 설정의 모든 AWS 리전에서 `Valid`로 설정합니다.

자세한 내용은 **AWS Identity and Access Management 사용 설명서의 [AWS 리전에서 AWS STS 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)를 참조하세요.

## 사용자 지정 엔진 버전(CEV)으로 만든 DB 인스턴스의 스냅샷
<a name="custom-copying-snapshot-sqlserver.CEVSnap"></a>

[사용자 지정 엔진 버전(CEV)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev-sqlserver.html)을 사용하는 DB 인스턴스의 DB 스냅샷의 경우 RDS는 CEV를 DB 스냅샷과 연결합니다. AWS 리전에서 CEV와 연결된 소스 DB 스냅샷을 복사하려면 RDS가 소스 DB 스냅샷과 함께 CEV를 대상 리전으로 복사합니다.

동일한 CEV와 연결된 여러 DB 스냅샷을 동일한 대상 리전에 복사하는 경우 첫 번째 복사 요청은 연결된 CEV를 복사합니다. 다음 요청의 복사 프로세스는 처음에 복사한 CEV를 찾아 다음 DB 스냅샷 사본과 연결합니다. 기존 CEV 사본은 DB 스냅샷 복사본과 연결할 수 있는 `AVAILABLE` 상태여야 합니다.

CEV와 연결된 DB 스냅샷을 복사하려면 요청자의 IAM 정책에 DB 스냅샷 복사와 연결된 CEV 복사를 모두 승인할 권한이 있어야 합니다. 연결된 CEV 복사를 허용하려면 요청자의 IAM 정책에 다음과 같은 권한이 필요합니다.
+ `rds:CopyCustomDBEngineVersion` ‐ 요청자 IAM 보안 주체는 소스 CEV를 소스 DB 스냅샷과 함께 대상 리전에 복사할 수 있는 권한이 있어야 합니다. 요청자 IAM 보안 주체가 소스 CEV를 복사할 권한이 없는 경우 권한 부여 오류로 인해 스냅샷 복사 요청이 실패합니다.
+ `ec2:CreateTags` ‐ 소스 CEV의 기본 EC2 AMI가 CEV 사본의 일부로 대상 리전에 복사됩니다. RDS Custom은 AMI를 복사하기 전에 AMI에 `AWSRDSCustom` 태그를 지정하려고 합니다. 요청자 IAM 보안 주체가 소스 리전의 소스 CEV를 기반으로 하는 AMI에 대해 태그를 생성할 권한이 있는지 확인하세요.

CEV 복사 권한에 대한 자세한 내용은 [IAM 보안 주체에 필요한 권한 부여](#custom-copying-snapshot-sqlserver.GrantPermIAM) 섹션을 참조하세요.

## IAM 보안 주체에 필요한 권한 부여
<a name="custom-copying-snapshot-sqlserver.GrantPermIAM"></a>

RDS Custom for SQL Server DB 스냅샷을 복사할 수 있는 충분한 액세스 권한을 가지고 있는지 확인하세요. 콘솔 또는 CLI를 사용하여 DB 스냅샷을 복사하는 IAM 역할 또는 사용자(IAM 보안 주체라고 함)는 DB 인스턴스를 성공적으로 생성하기 위해 다음 중 하나의 정책을 가지고 있어야 합니다.
+ `AdministratorAccess` 정책
+ 다음과 같은 추가 권한이 있는 `AmazonRDSFullAccess` 정책:

  ```
  s3:CreateBucket
  s3:GetBucketPolicy
  s3:PutBucketPolicy
  kms:CreateGrant
  kms:DescribeKey
  ec2:CreateTags
  ```

RDS Custom은 AWS 리전에서 스냅샷을 복사할 때 이러한 권한을 사용합니다. 이러한 권한은 RDS Custom 작업에 필요한 리소스를 계정에 구성합니다. `kms:CreateGrant` 권한에 대한 자세한 내용은 [AWS KMS key 관리](Overview.Encryption.Keys.md) 섹션을 참조하세요.

다음 샘플 JSON 정책은 `AmazonRDSFullAccess` 정책 외에 필요한 권한을 부여합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateS3BucketAndReadWriteBucketPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketPolicy",
                "s3:GetBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateKmsGrant",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CreateEc2Tags",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**참고**  
서비스 제어 정책(SCP), 권한 경계 또는 IAM 보안 주체와 연결된 세션 정책에서 나열된 권한을 제한하지 않는지 확인합니다.

요청자의 IAM 정책에 컨텍스트 키가 있는 조건을 사용하는 경우 특정 조건으로 인해 요청이 실패할 수 있습니다. IAM 정책 조건으로 인한 일반적인 위험에 대한 자세한 내용은 [리전 간 DB 스냅샷 복사 요청](USER_CopySnapshot.md#USER_CopySnapshot.AcrossRegions.Policy) 섹션을 참조하세요.

## DB 스냅샷 복사
<a name="custom-copying-snapshot-sqlserver.CopyingDBSnapshot"></a>

다음 절차에 따라 DB 스냅샷을 복사합니다. 각 AWS 계정에 대해 AWS 리전 간에 DB 스냅샷을 한 번에 20개까지 복사할 수 있습니다. DB 스냅샷을 다른 AWS 리전으로 복사하면 그 AWS 리전에 유지되는 수동 DB 스냅샷이 생성됩니다. 소스 AWS 리전 외부로 DB 스냅샷을 복사하면 Amazon RDS 데이터 전송 요금이 발생합니다. 데이터 전송 요금에 대한 자세한 정보는 [Amazon RDS 요금](https://aws.amazon.com/rds/pricing/)을 참조하십시오.

새 AWS 리전에 DB 스냅샷 사본이 생성된 후 DB 스냅샷 사본은 해당 AWS 리전의 다른 모든 DB 스냅샷과 똑같이 동작합니다.

AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하여 DB 스냅샷을 복사할 수 있습니다.

------
#### [ Console ]

다음 프로시저는 AWS Management Console을 사용하여 RDS Custom for SQL Server DB 스냅샷을 복사합니다.

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

1. 탐색 창에서 [**Snapshots**]를 선택합니다.

1. 복사하려는 RDS Custom for SQL Server DB 스냅샷을 선택합니다.

1. **작업** 드롭다운에서 **스냅샷 복사**를 선택합니다.  
![\[Amazon RDS 콘솔의 스냅샷 복사 페이지. 설정이 페이지에 로드됩니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/XRSC-Snapshot-Copy.png)

1. DB 스냅샷을 다른 AWS 리전에 복사하려면 **대상 리전**을 필요한 값으로 설정합니다.
**참고**  
대상 AWS 리전에는 소스 AWS 리전과 동일한 가용 데이터베이스 엔진 버전이 있어야 합니다.

1. **새 DB 스냅샷 식별자**에 DB 스냅샷의 고유 이름을 입력합니다. 자동 백업 또는 수동 스냅샷의 복사본을 여러 개 만들 수 있지만, 각 복사본에는 고유한 식별자가 있어야 합니다.

1. (선택 사항) [**Copy Tags**]를 선택하여 스냅샷의 태그와 값을 스냅샷 사본에 복사합니다.

1. **암호화**에 대해 DB 스냅샷 복사본을 암호화하는 데 사용할 KMS 키 식별자를 지정합니다.
**참고**  
RDS Custom for SQL Server는 모든 DB 스냅샷을 암호화합니다. 암호화되지 않은 DB 스냅샷을 생성할 수 없습니다.

1. **스냅샷 복사**를 선택합니다.

RDS Custom for SQL Server는 선택한 AWS 리전에 DB 인스턴스의 DB 스냅샷 복사본을 생성합니다.

------
#### [ AWS CLI ]

AWS CLI 명령 [https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html)을 사용하여 RDS Custom for SQL Server DB 스냅샷을 복사할 수 있습니다. 스냅샷을 새 AWS 리전으로 복사하는 경우 새 AWS 리전에서 명령을 실행합니다. 다음 옵션을 사용하여 DB 스냅샷을 복사할 수 있습니다. 시나리오에 따라 필요하지 않은 옵션도 있습니다.
+ `--source-db-snapshot-identifier` - 소스 DB 스냅샷의 식별자입니다.
  + 소스 스냅샷이 사본과 다른 AWS 리전에 있는 경우 유효한 DB 스냅샷 ARN을 지정합니다. 예를 들어 `arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678`입니다.
+ `--target-db-snapshot-identifier` – DB 스냅샷의 새 사본의 식별자입니다.
+ `--kms-key-id` – 암호화된 DB 스냅샷의 KMS 키 식별자입니다. KMS 키 식별자는 KMS 키의 Amazon 리소스 이름(ARN), 키 식별자 또는 키 별칭입니다.
  + 암호화된 스냅샷을 다른 AWS 리전에 복사하는 경우 대상 AWS 리전에 대해 KMS 키를 지정해야 합니다. KMS 키는 생성된 AWS 리전에만 적용되며, 다중 리전 키를 사용하지 않는 한 다른 AWS 리전의 한 AWS 리전에서 암호화 키를 사용할 수 없습니다. 다중 리전 KMS 키에 대한 자세한 내용은 [AWS KMS에서 다중 리전 키 사용](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)을 참조하세요.
+ `--copy-tags` - 소스 스냅샷의 태그와 값을 스냅샷 복사본에 포함합니다.

RDS Custom for SQL Server DB 스냅샷의 복사에는 다음 옵션이 지원되지 않습니다.
+ `--copy-option-group `
+ `--option-group-name`
+ `--pre-signed-url`
+ `--target-custom-availability-zone`

다음 코드 예제에서는 암호화된 DB 스냅샷을 미국 서부(오리건) 리전에서 미국 동부(버지니아 북부) 리전으로 복사합니다. 대상(us-east-1) 리전에서 명령을 실행합니다.

Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

```
aws rds copy-db-snapshot \
     --region us-east-1 \
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678 \
    --target-db-snapshot-identifier mydbsnapshotcopy \
    --kms-key-id a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
```

Windows의 경우:

```
aws rds copy-db-snapshot ^
     --region us-east-1 ^
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678 ^
    --target-db-snapshot-identifier mydbsnapshotcopy ^
    --kms-key-id a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
```

------
#### [ RDS API ]

Amazon RDS API 작업 [CopyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBSnapshot.html)을 사용하여 RDS Custom for SQL Server DB 스냅샷을 복사할 수 있습니다. 스냅샷을 새 AWS 리전으로 복사하는 경우 새 AWS 리전에서 작업을 수행합니다. 다음 파라미터를 사용하여 DB 스냅샷을 복사할 수 있습니다. 모든 파라미터가 필요한 것은 아닙니다.
+ `SourceDBSnapshotIdentifier` - 소스 DB 스냅샷의 식별자입니다.
  + 소스 스냅샷이 사본과 다른 AWS 리전에 있는 경우 유효한 DB 스냅샷 ARN을 지정합니다. 예를 들어 `arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678`입니다.
+ `TargetDBSnapshotIdentifier` – DB 스냅샷의 새 사본의 식별자입니다.
+ `KmsKeyId` – 암호화된 DB 스냅샷의 KMS 키 식별자입니다. KMS 키 식별자는 KMS 키의 Amazon 리소스 이름(ARN), 키 식별자 또는 키 별칭입니다.
  + 암호화된 스냅샷을 다른 AWS 리전에 복사하는 경우 대상 AWS 리전에 대해 KMS 키를 지정해야 합니다. KMS 키는 생성된 AWS 리전에만 적용되며, 다중 리전 키를 사용하지 않는 한 다른 AWS 리전의 한 AWS 리전에서 암호화 키를 사용할 수 없습니다. 다중 리전 KMS 키에 대한 자세한 내용은 [AWS KMS에서 다중 리전 키 사용](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)을 참조하세요.
+ `CopyTags` - 소스 스냅샷의 태그와 값을 스냅샷 사본에 복사하려면 이 파라미터를 `true`로 설정합니다. 기본값은 `false`입니다.

다음 옵션에는 RDS Custom for SQL Server DB 스냅샷 복사가 지원되지 않습니다.
+ `CopyOptionGroup`
+ `OptionGroupName`
+ `PreSignedUrl`
+ `TargetCustomAvailabilityZone`

다음 코드는 US East (N. Virginia) 리전에 `mydbsnapshotcopy`라는 새 이름으로 스냅샷 복사본을 생성합니다.

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CopyDBSnapshot
    &KmsKeyId=a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
    &SourceDBSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Asnapshot%3Ainstance1-snapshot-12345678
    &TargetDBSnapshotIdentifier=mydbsnapshotcopy
    &Version=2014-10-31
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
    &X-Amz-Date=20161117T221704Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=da4f2da66739d2e722c85fcfd225dc27bba7e2b8dbea8d8612434378e52adccf
```

------

# 온프레미스 데이터베이스를 SQL Server용 Amazon RDS Custom으로 마이그레이션
<a name="custom-migrating"></a>

다음 프로세스를 따라 기본 백업 및 복원을 사용하여 온프레미스 Microsoft SQL Server 데이터베이스를 SQL Server용 Amazon RDS Custom으로 마이그레이션할 수 있습니다.

1. 온프레미스 DB 인스턴스에서 데이터베이스의 전체 백업을 수행합니다.

1. Amazon S3로 백업 파일을 업로드합니다.

1. S3의 백업 파일을 SQL Server DB 인스턴스용 RDS Custom으로 다운로드합니다.

1. SQL Server DB 인스턴스용 RDS Custom에서 다운로드한 백업 파일을 사용하여 데이터베이스를 복원합니다.

이 프로세스에서는 기본 전체 백업 및 복원을 사용하여 온프레미스에서 SQL Server용 RDS Custom으로 데이터베이스를 마이그레이션하는 방법을 설명합니다. 마이그레이션 프로세스 중에 전환 시간을 줄이기 위해 디퍼렌셜 또는 로그 백업을 사용하는 것도 고려할 수 있습니다.

RDS for SQL Server의 기본 백업 및 복원에 대한 일반적인 정보는 [기본 백업 및 복원 기능을 사용하여 SQL Server 데이터베이스 가져오기 및 내보내기](SQLServer.Procedural.Importing.md) 섹션을 참조하세요.

**Topics**
+ [사전 조건](#custom-migrating.prereqs)
+ [온프레미스 데이터베이스 백업](#custom-migrating.backup)
+ [Amazon S3로 백업 파일 업로드](#custom-migrating.upload)
+ [Amazon S3에서 백업 파일 다운로드](#custom-migrating.upload)
+ [SQL Server DB 인스턴스용 RDS Custom으로 백업 파일 복원](#custom-migrating.restore)

## 사전 조건
<a name="custom-migrating.prereqs"></a>

데이터베이스를 마이그레이션하기 전에 다음 작업을 수행합니다.

1. SQL Server DB 인스턴스용 RDS Custom에 대해 원격 데스크톱 연결(RDP)을 구성합니다. 자세한 내용은 [RDP를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating-sqlserver.rdp.md) 섹션을 참조하세요.

1. 데이터베이스 백업 파일을 업로드 및 다운로드할 수 있도록 Amazon S3에 액세스할 권한을 구성합니다.

## 온프레미스 데이터베이스 백업
<a name="custom-migrating.backup"></a>

SQL Server 기본 백업을 사용하여 온프레미스 DB 인스턴스의 데이터베이스 전체 백업을 수행할 수 있습니다.

다음 예제에서는 백업 파일 크기를 줄이는 `COMPRESSION` 옵션이 지정된 `mydatabase`라는 이름의 데이터베이스 백업을 보여줍니다.

**온프레미스 데이터베이스를 백업하는 방법**

1. SQL Server Management Studio(SSMS)를 사용하여 온프레미스 SQL Server 인스턴스에 연결합니다.

1. T-SQL 명령을 실행합니다.

   ```
   backup database mydatabase to
   disk ='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\mydb-full-compressed.bak'
   with compression;
   ```

## Amazon S3로 백업 파일 업로드
<a name="custom-migrating.upload"></a>

AWS Management Console을 사용하여 `mydb-full-compressed.bak` 백업 파일을 Amazon S3로 업로드합니다.

**S3로 백업 파일을 업로드하는 방법**

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

1. **버킷(Buckets)**에서 백업 파일을 업로드할 버킷의 이름을 선택합니다.

1. **업로드**를 선택합니다.

1. **업로드** 창에서 다음 중 하나를 수행합니다.
   + `mydb-full-compressed.bak`를 **업로드(Upload)** 창으로 끌어다 놓습니다.
   + **파일 추가(Add file)**와 `mydb-full-compressed.bak`를 차례로 선택한 다음 **열기(Open)**를 선택합니다.

   Amazon S3는 백업 파일을 S3 객체로 업로드합니다. 업로드가 완료되면 **업로드: 상태** 페이지에서 성공 메시지를 볼 수 있습니다.

## Amazon S3에서 백업 파일 다운로드
<a name="custom-migrating.upload"></a>

콘솔을 사용하여 S3의 백업 파일을 SQL Server DB 인스턴스용 RDS Custom으로 다운로드할 수 있습니다.

**S3에서 백업 파일을 다운로드하는 방법**

1. RDP를 사용하여 SQL Server DB 인스턴스용 RDS Custom에 연결합니다.

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

1. **버킷(Buckets)** 목록에서 백업 파일이 들어 있는 버킷의 이름을 선택합니다.

1. `mydb-full-compressed.bak` 백업 파일을 선택합니다.

1. **작업(Actions)**에서 **다음으로 다운로드(Download as)**를 선택합니다.

1. 제공된 링크에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 나서 **다른 이름으로 저장(Save As)**을 선택합니다.

1. `mydb-full-compressed.bak`를 `D:\rdsdbdata\BACKUP` 디렉터리에 저장합니다.

## SQL Server DB 인스턴스용 RDS Custom으로 백업 파일 복원
<a name="custom-migrating.restore"></a>

SQL Server 기본 복원을 사용하여 백업 파일을 SQL Server DB 인스턴스용 RDS Custom으로 복원할 수 있습니다.

이 예제에서는 데이터 및 로그 파일 디렉터리가 온프레미스 DB 인스턴스와 다르기 때문에 `MOVE` 옵션이 지정됩니다.

**백업 파일을 복원하는 방법**

1. SSMS를 사용하여 SQL Server DB 인스턴스용 RDS Custom에 연결합니다.

1. T-SQL 명령을 실행합니다.

   ```
   restore database mydatabase from disk='D:\rdsdbdata\BACKUP\mydb-full-compressed.bak'
   with move 'mydatabase' to 'D:\rdsdbdata\DATA\mydatabase.mdf',
   move 'mydatabase_log' to 'D:\rdsdbdata\DATA\mydatabase_log.ldf';
   ```

# RDS Custom for SQL Server 운영 체제 업데이트
<a name="custom-os-upgrade"></a>

RDS Custom for SQL Server는 RDS 제공 엔진 버전(RPEV) 인스턴스에 운영 체제 업데이트 적용과 관련하여 다음과 같은 방법을 제공합니다.
+ *시스템 업데이트 유지 관리 작업*
+ *데이터베이스 마이너 버전 업그레이드*
  + RPEV를 사용한 DB 마이너 엔진 버전 업그레이드에는 최신 운영 체제 업데이트가 포함됩니다. 이 접근 방식은 OS 업데이트를 SQL Server 마이너 버전 업그레이드와 결합하려는 경우에 특히 유용합니다. 자세한 내용은 [Amazon RDS Custom for SQL Server DB 인스턴스 업그레이드](custom-upgrading-sqlserver.md) 섹션을 참조하세요.

## 운영 체제 업데이트 시나리오
<a name="custom-os-upgrade.Scenarios"></a>

다음의 두 가지 방법으로 RDS Custom for SQL Server 인스턴스의 운영 체제 업데이트를 관리할 수 있습니다.
+ 단일 AZ 인스턴스의 경우 운영 체제 업데이트 중에 인스턴스를 사용할 수 없습니다.
+ 다중 AZ 배포의 경우 RDS는 다음과 같은 방식으로 운영 체제 업데이트를 적용합니다.
  + 먼저 RDS는 대기 인스턴스에서 운영 체제 업데이트를 수행합니다.
  + 업그레이드된 대기 DB 인스턴스로 RDS 장애 조치하여 이를 새 기본 DB 인스턴스로 만듭니다.
  + 마지막으로 RDS는 새 대기 DB 인스턴스에서 운영 체제 업데이트를 수행합니다.

다중 AZ 배포의 가동 중지 시간은 장애 조치에 걸리는 시간입니다.

## 시스템 업데이트 유지 관리 작업을 사용하여 운영 체제 업데이트 적용
<a name="custom-os-upgrade.SystemUpdates"></a>

Amazon RDS RPEV 인스턴스에 운영 체제 업데이트를 적용하기 위해 AWS Management Console, AWS CLI 또는 RDS API를 사용할 수 있습니다. 자세한 내용은 [RDS DB 인스턴스의 운영 체제 업데이트](USER_UpgradeDBInstance.Maintenance.md#OS_Updates) 섹션을 참조하세요.

**Example**  
대상 LinuxmacOS, 또는Unix:  
**1단계: 사용 가능한 업데이트 확인**  
`describe-pending-maintenance-actions` 명령을 사용하여 인스턴스에 OS 업데이트를 사용할 수 있는지 확인합니다.  

```
aws rds describe-pending-maintenance-actions
```
응답 예제:  

```
{
    "PendingMaintenanceActions": [
        {
            "ResourceIdentifier": "arn:aws:rds:us-east-1:111122223333:db:my-sqlserver-instance",
            "PendingMaintenanceActionDetails": [
                {
                    "Action": "system-update",
                    "Description": "New Operating System update is available"
                }
            ]
        }
    ]
}
```
작업 유형이 `system-update`이면 인스턴스에 OS 업데이트를 사용할 수 있다는 의미입니다.  
**2단계: OS 업데이트 적용**  
`apply-pending-maintenance-action` 명령을 사용하여 일정을 업데이트합니다.  

```
aws rds apply-pending-maintenance-action \ 
                --resource-identifier arn:aws:rds:us-east-1:111122223333:db:my-sqlserver-instance \ 
                --apply-action system-update \ 
                --opt-in-type immediate
```
`opt-in-type` 입력에는 다음과 같은 옵션이 있습니다.  
+ `immediate`: 업데이트 즉시 적용
+ `next-maintenance`: 예약된 다음 유지 관리 기간에 업데이트 적용
+ `undo-opt-in`: 이전에 예약된 업데이트 취소
응답 예제:  

```
{
    "ResourcePendingMaintenanceActions": {
        "ResourceIdentifier": "arn:aws:rds:us-east-1:111122223333:db:my-sqlserver-instance",
        "PendingMaintenanceActionDetails": [
            {
                "Action": "system-update",
                "AutoAppliedAfterDate": "2024-04-10T20:41:01.695000+00:00",
                "ForcedApplyDate": "2024-04-10T20:41:01.694000+00:00",
                "CurrentApplyDate": "2024-04-10T20:41:01.695000+00:00",
                "Description": "New Operating System update is available"
            }
        ]
    }
}
```

## OS 업데이트 알림
<a name="custom-os-upgrade.OSNotifications"></a>

새로운 선택적 운영 체제 시스템 패치가 제공될 때 알림을 받으려면 보안 패치 이벤트 범주에서 [RDS-EVENT-0230](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html#RDS-EVENT-0230) 구독을 신청하면 됩니다. RDS 이벤트 구독에 대한 자세한 내용은 [Amazon RDS 이벤트 알림 구독](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Subscribing.html)을 참조하세요.

## 고려 사항
<a name="custom-os-upgrade.Considerations"></a>

OS 업데이트에는 다음과 같은 고려 사항 및 제한 사항이 적용됩니다.
+ C:\$1 드라이브에 대한 운영 체제 사용자 지정은 운영 체제 업데이트 중에 보존되지 않습니다.
+ 업데이트를 적용하기 전에 수동 스냅샷을 생성하는 것이 좋습니다.

# Amazon RDS Custom for SQL Server DB 인스턴스 업그레이드
<a name="custom-upgrading-sqlserver"></a>

새 DB 엔진 버전을 사용하도록 수정하여 Amazon RDS Custom for SQL Server DB 인스턴스를 업그레이드할 수 있습니다. DB 인스턴스 업그레이드에 대한 일반적인 정보는 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom for SQL Server 업그레이드 개요](#custom-upgrading-sqlserver.Overview)
+ [메이저 및 마이너 엔진 버전 업그레이드](#custom-upgrading-sqlserver.Upgrade)
+ [데이터베이스 호환성 수준](#custom-upgrading-sqlserver.Major.Compatibility)

## RDS Custom for SQL Server 업그레이드 개요
<a name="custom-upgrading-sqlserver.Overview"></a>

Amazon RDS Custom for SQL Server는 메이저 및 마이너 버전 업그레이드를 지원합니다. 마이너 버전 업그레이드에는 보안 패치, 버그 수정 및 엔진 개선 기능이 포함될 수 있습니다. Microsoft는 이러한 업데이트를 누적 업데이트(CU)로 릴리스합니다. 메이저 버전 업그레이드는 SQL Server 2019에서 2022로 업그레이드하는 것처럼 버전 간에 새로운 기능과 엔진 변경 사항을 도입합니다. 두 업그레이드를 즉시 적용하거나 예약된 유지 관리 기간 동안 적용할 수 있습니다. 잠재적인 이전 버전과의 호환성 문제를 방지하기 위해 업그레이드하기 전에 비프로덕션 환경에서 애플리케이션을 테스트하는 것이 좋습니다.

RDS Custom for SQL Server에서는 RDS 제공 엔진 버전(RPEV) 또는 사용자 지정 엔진 버전(CEV)을 업그레이드할 수 있습니다.
+ RDS 제공 엔진 버전(RPEV)에는 최신 운영 체제(OS) 패치와 SQL Server 누적 업데이트(CU)가 포함되어 있습니다.
+ 사용자 지정 엔진 버전(CEV)의 경우 2단계 프로세스를 따라야 합니다. 먼저 대상 SQL Server 버전으로 새 CEV를 생성합니다. [RDS Custom for SQL Server용 CEV 생성 준비](custom-cev-sqlserver.preparing.md) 섹션을 참조하세요. 이 대상 버전은 현재 버전과 같거나 더 최신 버전이어야 합니다. 새 CEV가 생성되면 이 새 버전을 사용하도록 데이터베이스 인스턴스를 수정합니다. 자세한 내용은 [다중 AZ를 사용하여 Amazon RDS Custom for SQL Server CEV에 대한 마이너 버전 업그레이드 수행](https://aws.amazon.com/blogs/database/performing-a-minor-version-upgrade-for-amazon-rds-custom-for-sql-server-cev-with-multi-az/)을 참조하세요.

  실행 중인 RDS Custom 인스턴스에 SQL Server 누적 인플레이스 업데이트를 적용하지 마세요. 특정 SQL Server 버전(예: SQL Server 2022 CU16)으로 CEV를 생성한 경우 인스턴스에 직접 최신 누적 업데이트를 적용하면 지원 경계에서 벗어나 `SP-S3006` 오류를 보고합니다. CEV를 사용하여 기존 SQL Server 인스턴스를 패치하려면 원하는 누적 업데이트가 포함된 새 CEV를 생성한 다음 기존 인스턴스를 수정하여 새 CEV로 전환합니다.

다중 AZ 배포에서 RDS Custom for SQL Server DB 인스턴스를 업그레이드하는 경우 RDS Custom for SQL Server가 인스턴스에 대한 롤링 업그레이드를 수행합니다. 이 접근 방식은 한 번에 하나의 인스턴스를 업그레이드하여 가동 중지 시간을 최소화합니다. RDS는 롤링 업그레이드를 위해 다음 작업을 수행합니다.

1. 대기 DB 인스턴스를 업그레이드합니다.

1. 업그레이드된 대기 DB 인스턴스로 장애 조치하여 이를 새 기본 DB 인스턴스로 만듭니다.

1. 새 대기 DB 인스턴스를 업그레이드합니다.

다중 AZ 배포의 DB 인스턴스 가동 중지 시간은 장애 조치에 걸리는 시간입니다.

RDS Custom for SQL Server DB 인스턴스를 업그레이드할 때는 다음과 같은 제한 사항이 적용됩니다.
+ Custom DB 옵션 및 파라미터 그룹은 지원되지 않습니다.
+ RDS Custom for SQL Server DB 인스턴스에 연결하는 추가 스토리지 볼륨은 업그레이드 후에 연결되지 않습니다.
+ CEV의 경우 SQL Server 누적 업데이트의 인플레이스 적용은 지원되지 않으므로 인스턴스가 지원 경계에서 제거됩니다.

## 메이저 및 마이너 엔진 버전 업그레이드
<a name="custom-upgrading-sqlserver.Upgrade"></a>

메이저 및 마이너 엔진 버전 업그레이드는 모두 되돌릴 수 없으며 항상 더 최신 버전으로 업그레이드를 수행해야 합니다. 사용 가능한 대상 버전을 식별하려면 AWS Management Console을 사용하고 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) CLI 명령 또는 [DescribeDBEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html) RDS API 명령을 사용합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-engine-versions \
    --engine custom-sqlserver-se \
    --engine-version 15.00.4322.2.v1 \
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" \
    --output table
```

Windows의 경우:

```
aws rds describe-db-engine-versions ^
    --engine custom-sqlserver-se ^
    --engine-version 15.00.4322.2.v1 ^
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
    --output table
```

출력에는 사용 가능한 대상 엔진 버전이 표시됩니다.

```
--------------------------
|DescribeDBEngineVersions|
+------------------------+
|      EngineVersion     |
+------------------------+
|  15.00.4410.1.v1       |
|  15.00.4415.2.v1       |
|  15.00.4430.1.v1       |
|  16.00.4165.4.v1       |
|  16.00.4175.1.v1       |
|  16.00.4185.3.v1       |
+------------------------+
```

대상 버전을 식별한 후 AWS Management Console을 사용하고 [RDS Custom for SQL Server DB 인스턴스 수정](custom-managing.modify-sqlserver.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) CLI 명령 또는 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 명령을 사용합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier DB_INSTANCE_IDENTIFIER \
    --engine-version ENGINE_VERSION \
    --allow-major-version-upgrade \
    --region Region \
    --no-apply-immediately
```

Windows의 경우:

```
aws rds modify-db-instance ^
    --db-instance-identifier DB_INSTANCE_IDENTIFIER ^
    --engine-version ENGINE_VERSION ^
    --allow-major-version-upgrade ^
    --region Region ^
    --no-apply-immediately
```

**참고**  
메이저 버전 업그레이드를 수행하려면 `--allow-major-version-upgrade` 파라미터를 포함해야 합니다.

## 데이터베이스 호환성 수준
<a name="custom-upgrading-sqlserver.Major.Compatibility"></a>

Microsoft SQL Server 데이터베이스 호환성 수준을 이용해 일부 데이터베이스 동작이 이전 버전의 SQL Server를 모방하도록 조정할 수 있습니다. 자세한 내용은 Microsoft 설명서의 [호환성 수준](https://msdn.microsoft.com/en-us/library/bb510680.aspx)을 참조하십시오.

DB 인스턴스를 업그레이드할 때 기존의 모든 데이터베이스는 원래 호환성 수준으로 유지됩니다. 예를 들어, SQL Server 2019에서 SQL Server 2022로 업그레이드할 경우 모든 기존 데이터베이스의 호환성 수준은 150입니다. 업그레이드 이후에 생성된 새 데이터베이스의 호환성 수준은 160입니다.

ALTER DATABASE 명령을 사용하여 데이터베이스의 호환성 수준을 변경할 수 있습니다. 예를 들어, `customeracct`라는 이름의 데이터베이스를 SQL Server 2022와 호환되도록 변경하려면 다음 명령을 실행합니다.

```
1. ALTER DATABASE customeracct SET COMPATIBILITY_LEVEL = 160
```

# Amazon RDS Custom for SQL Server의 DB 문제 해결
<a name="custom-troubleshooting-sqlserver"></a>

RDS Custom의 공동 책임 모델은 OS 셸 수준 액세스 권한과 데이터베이스 관리자 액세스 권한을 제공합니다. RDS Custom은 시스템 계정에서 리소스를 실행하는 Amazon RDS와 달리 계정에서 리소스를 실행합니다. 접근 권한이 높을수록 책임도 커집니다. 다음 섹션에서는 Amazon RDS Custom for SQL Server DB 인스턴스의 문제를 해결하는 방법을 알아볼 수 있습니다.

**참고**  
이 섹션에서는 RDS Custom for SQL Server의 문제를 해결하는 방법을 설명합니다. RDS Custom for Oracle 관련 문제 해결을 보려면 [Amazon RDS Custom for Oracle의 DB 문제 해결](custom-troubleshooting.md) 섹션을 참조하세요.

**Topics**
+ [RDS Custom 이벤트 보기](#custom-troubleshooting-sqlserver.support-perimeter.viewing-events)
+ [RDS Custom 이벤트 구독](#custom-troubleshooting-sqlserver.support-perimeter.subscribing)
+ [RDS Custom for SQL Server의 CEV 오류 문제 해결](#custom-troubleshooting-sqlserver.cev)
+ [RDS Custom for SQL Server에서 지원되지 않는 구성 문제 해결](#custom-troubleshooting-sqlserver.fix-unsupported)
+ [RDS Custom for SQL Server에서 `Storage-Full` 문제 해결](#custom-troubleshooting-storage-full)
+ [RDS Custom for SQL Server에서 TDE 지원 데이터베이스의 PENDING\$1RECOVERY 상태 문제 해결](#custom-troubleshooting-sqlserver.pending_recovery)

## RDS Custom 이벤트 보기
<a name="custom-troubleshooting-sqlserver.support-perimeter.viewing-events"></a>

RDS Custom 및 Amazon RDS DB 인스턴스의 이벤트 보기 절차는 동일합니다. 자세한 내용은 [Amazon RDS 이벤트 보기](USER_ListEvents.md) 섹션을 참조하세요.

`describe-events` 명령을 사용하여 AWS CLI를 통해 RDS Custom 이벤트 알림을 볼 수 있습니다. RDS Custom에서는 몇 가지 새로운 이벤트가 도입되었습니다. 이벤트 카테고리는 Amazon RDS와 동일합니다. 이벤트 목록은 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 섹션을 참조하세요.

다음 예제에서는 지정된 RDS Custom DB 인스턴스에 대해 발생한 이벤트의 세부 정보를 검색합니다.

```
1. aws rds describe-events \
2.     --source-identifier my-custom-instance \
3.     --source-type db-instance
```

## RDS Custom 이벤트 구독
<a name="custom-troubleshooting-sqlserver.support-perimeter.subscribing"></a>

RDS Custom 및 Amazon RDS DB 인스턴스의 이벤트 구독 절차는 동일합니다. 자세한 내용은 [Amazon RDS 이벤트 알림 구독](USER_Events.Subscribing.md) 섹션을 참조하세요.

CLI를 사용하여 RDS Custom 이벤트 알림을 구독하려면 `create-event-subscription` 명령을 사용하면 되며, 다음 필수 파라미터를 포함합니다.
+ `--subscription-name`
+ `--sns-topic-arn`

다음 예제에서는 현재 AWS 계정에서 RDS Custom DB 인스턴스의 백업 및 복구 이벤트에 대한 구독을 생성합니다. 알림은 `--sns-topic-arn`에서 지정한 Amazon Simple Notification Service(Amazon SNS) 주제로 전송됩니다.

```
1. aws rds create-event-subscription \
2.     --subscription-name my-instance-events \
3.     --source-type db-instance \
4.     --event-categories '["backup","recovery"]' \
5.     --sns-topic-arn arn:aws:sns:us-east-1:123456789012:interesting-events
```

## RDS Custom for SQL Server의 CEV 오류 문제 해결
<a name="custom-troubleshooting-sqlserver.cev"></a>

CEV 생성이 실패할 수 있습니다. 이 경우 RDS Custom이 `RDS-EVENT-0198` 이벤트 메시지를 표시합니다. RDS 이벤트 보기에 대한 자세한 내용은 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 단원을 참조하세요.

다음 정보를 사용하면 가능한 원인을 해결하는 데 도움이 됩니다.


****  

| 메시지 | 문제 해결 제안 | 
| --- | --- | 
| `Custom Engine Version creation expected a Sysprep’d AMI. Retry creation using a Sysprep’d AMI.` | AMI에서 생성한 EC2 인스턴스에서 Sysprep을 실행합니다. Sysprep을 사용한 AMI 준비에 대한 자세한 내용은 [Sysprep을 사용하여 표준화된 Amazon Machine Image(AMI) 생성](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html#sysprep-using-ec2launchv2)을 참조하세요. | 
| `EC2 Image permissions for image (AMI_ID) weren't found for customer (Customer_ID). Verify customer (Customer_ID) has valid permissions on the EC2 Image.` | 생성에 사용한 계정 및 프로필에 선택한 AMI의 `create EC2 Instance` 및 `Describe Images`에 대한 필수 권한이 있는지 확인합니다. | 
| `Failed to rebuild databases with server collation (collation name) due to missing setup.exe file for SQL Server.` | `C:\Program Files\Microsoft SQL Server\nnn\Setup Bootstrap\SQLnnnn\setup.exe`에서 `setup` 파일을 사용할 수 있는지 확인합니다. | 
| `Image (AMI_ID) doesn't exist in your account (ACCOUNT_ID). Verify (ACCOUNT_ID) is the owner of the EC2 image.` | AMI가 동일한 고객 계정에 있는지 확인합니다. | 
| `Image id (AMI_ID) isn't valid. Specify a valid image id, and try again.` | AMI 이름이 잘못되었습니다. 올바른 AMI ID가 제공되었는지 확인합니다. | 
| `Image (AMI_ID) operating system platform isn't supported. Specify a valid image, and try again.` |  SQL Server Enterprise, Standard 또는 Web Edition을 포함하는 Windows Server가 있는 지원되는 AMI를 선택하세요. EC2 Marketplace에서 다음 사용 작업 코드 중 하나를 사용하여 AMI를 선택합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting-sqlserver.html)  | 
| `SQL Server Web Edition isn't supported for creating a Custom Engine Version using Bring Your Own Media. Specify a valid image, and try again.` | 지원되는 에디션의 SQL Server가 포함된 AMI를 사용하세요. 자세한 내용은 [RDS Custom for SQL Server CEV에 대한 버전 지원](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.VersionSupport) 섹션을 참조하세요. | 
| `The custom engine version can't be the same as the OEV engine version. Specify a valid CEV, and try again.` | 클래식 RDS Custom for SQL Server 엔진 버전은 지원되지 않습니다. 예를 들어 **15.00.4073.23.v1** 버전은 지원되지 않습니다. 지원되는 버전 번호를 사용하세요. | 
| `The custom engine version isn't in an active state. Specify a valid CEV, and try again.` | 작업을 완료하려면 CEV가 `AVAILABLE` 상태여야 합니다. CEV를 `INACTIVE`에서 `AVAILABLE`로 수정합니다. | 
| `The custom engine version isn't valid for an upgrade. Specify a valid CEV with an engine version greater or equal to (X), and try again.` | 대상 CEV가 유효하지 않습니다. 유효한 업그레이드 경로에 대한 요구 사항을 확인하세요. | 
| `The custom engine version isn't valid. Names can include only lowercase letters (a-z), dashes (-), underscores (_), and periods (.). Specify a valid CEV, and try again.` | 필수 CEV 명명 규칙에 따르세요. 자세한 내용은 [RDS Custom for SQL Server CEV 요구 사항](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.Requirements) 섹션을 참조하세요. | 
| `The custom engine version isn't valid. Specify valid database engine version, and try again. Example: 15.00.4073.23-cev123.` | 지원되지 않는 DB 엔진 버전이 제공되었습니다. 지원되는 DB 엔진 버전을 사용하세요. | 
| `The expected architecture is (X) for image (AMI_ID), but architecture (Y) was found.` | **x86\$164** 아키텍처를 기반으로 구축된 AMI를 사용하세요. | 
| `The expected owner of image (AMI_ID) is customer account ID (ACCOUNT_ID), but owner (ACCOUNT_ID) was found.` | 권한이 있는 AMI에서 EC2 인스턴스를 생성하세요. EC2 인스턴스에서 Sysprep을 실행하여 기본 이미지를 생성하고 저장하세요. | 
| `The expected platform is (X) for image (AMI_ID), but platform (Y) was found.` | Windows 플랫폼으로 구축된 AMI를 사용하세요. | 
| `The expected root device type is (X) for image %s, but root device type (Y) was found.` | EBS 디바이스 유형을 사용하여 AMI를 생성하세요. | 
| `The expected SQL Server edition is (X), but (Y) was found.` |  SQL Server Enterprise, Standard 또는 Web Edition을 포함하는 Windows Server가 있는 지원되는 AMI를 선택하세요. EC2 Marketplace에서 다음 사용 작업 코드 중 하나를 사용하여 AMI를 선택합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/custom-troubleshooting-sqlserver.html)  | 
| `The expected state is (X) for image (AMI_ID), but the following state was found: (Y).` | AMI가 `AVAILABLE` 상태인지 확인하세요. | 
| `The provided Windows OS name (X) isn’t valid. Make sure the OS is one of the following: (Y).` | 지원되는 Windows OS를 사용하세요. | 
| `Unable to find bootstrap log file in path.` | `C:\Program Files\Microsoft SQL Server\nnn\Setup Bootstrap\Log\Summary.txt`에서 로그 파일을 사용할 수 있는지 확인합니다. | 
| `RDS expected a Windows build version greater than or equal to (X), but found version (Y).`. | 최소 OS 빌드 버전이 **14393**인 AMI를 사용하세요. | 
| `RDS expected a Windows major version greater than or equal to (X), but found version (Y).`. | 최소 OS 메이저 버전이 **10.0** 이상인 AMI를 사용하세요. | 

## RDS Custom for SQL Server에서 지원되지 않는 구성 문제 해결
<a name="custom-troubleshooting-sqlserver.fix-unsupported"></a>

공유 책임 모델이므로 RDS Custom for SQL Server DB 인스턴스를 `unsupported-configuration` 상태로 전환시키는 구성 문제는 사용자가 해결해야 합니다. AWS 인프라와 관련된 문제인 경우 콘솔 또는 AWS CLI를 사용하여 해결할 수 있습니다. 운영 체제 또는 데이터베이스 구성에 문제가 있는 경우 호스트에 로그인하여 해결하면 됩니다.

**참고**  
이 섹션에서는 RDS Custom for SQL Server에서 지원되지 않는 구성 문제를 해결하는 방법을 알아봅니다. RDS Custom for Oracle에 대한 자세한 내용은 [RDS Custom for Oracle에서 지원되지 않는 구성 문제 해결](custom-troubleshooting.md#custom-troubleshooting.fix-unsupported) 섹션을 참조하세요.

다음 표에는 지원 경계에서 보내는 알림 이벤트와 이를 해결하는 방법에 대한 설명이 나와 있습니다. 이러한 알림과 지원 경계는 변경될 수 있습니다. 지원 경계의 배경은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 섹션을 참조하세요. 이벤트 설명은 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 섹션을 참조하세요.


| 이벤트 코드 | 구성 영역 | RDS 이벤트 메시지 | 검증 프로세스 | 
| --- | --- | --- | --- | 
|  `SP-S0000`  |  지원되지 않는 수동 구성  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성]으로 설정된 이유는 다음과 같습니다. `X`   |  이 문제를 해결하려면 지원 사례를 생성하세요.  | 

**AWS 리소스(인프라)**


| 이벤트 코드 | 구성 영역 | RDS 이벤트 메시지 | 검증 프로세스 | 
| --- | --- | --- | --- | 
|  `SP-S1001`  |  EC2 인스턴스 상태  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. 기본 EC2 인스턴스 %s이(가) RDS 인스턴스를 중단하지 않고 중지되었습니다. 기본 EC2 인스턴스를 시작하고 이진 볼륨 및 데이터 볼륨이 연결되어 있는지 확인하여 문제를 해결할 수 있습니다. RDS 인스턴스를 중지하려는 경우 먼저 기본 EC2 인스턴스가 AVAILABLE 상태인지 확인한 다음 RDS 콘솔 또는 CLI를 사용하여 RDS 인스턴스를 중지해야 합니다.  |  DB 인스턴스의 상태를 확인하려면 콘솔을 사용하거나 다음 AWS CLI 명령을 실행합니다. <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep DBInstanceStatus<br />                            </pre>  | 
|  `SP-S1002`  |  EC2 인스턴스 상태  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. RDS DB 인스턴스 상태는 `STOPPED`로 설정되었지만, 기본 EC2 인스턴스 %s이(가) 시작되었습니다. 기본 EC2 인스턴스를 중지하여 문제를 해결할 수 있습니다. RDS 인스턴스를 시작하려는 경우 콘솔 또는 CLI를 사용하세요.  |   다음 AWS CLI 명령을 사용하여 DB 인스턴스의 상태를 확인합니다. <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep DBInstanceStatus</pre> EC2 콘솔을 사용하여 EC2 인스턴스의 상태를 확인할 수도 있습니다. DB 인스턴스를 시작하려면 콘솔을 사용하거나 다음 AWS CLI 명령을 실행합니다. <pre>aws rds start-db-instance \<br />    --db-instance-identifier db-instance-name</pre>  | 
|  `SP-S1003`   |  EC2 인스턴스 클래스  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. EC2 호스트의 예상 DB 인스턴스 클래스와 구성된 DB 인스턴스 클래스 간에 불일치가 있습니다. DB 인스턴스 클래스를 원래 클래스 유형으로 수정하여 문제를 해결할 수 있습니다.  |   다음 CLI 명령을 사용하여 예상 DB 인스턴스 클래스를 확인합니다. <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep DBInstanceClass</pre>  | 
|  `SP-S1004`  |  EBS 스토리지 볼륨에 액세스할 수 없음  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. EC2 인스턴스에 연결된 원래 EBS 스토리지 볼륨 %s에 현재 액세스할 수 없습니다.    |    | 
|  `SP-S1005`  |  EBS 스토리지 볼륨이 분리됨  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. 원본 EBS 스토리지 볼륨 'volume-id'가 연결되지 않았습니다. EC2 인스턴스에 연결된 EBS 볼륨을 연결하여 문제를 해결할 수 있습니다.    |   EBS 볼륨을 다시 연결한 후 다음 CLI 명령을 사용하여 EBS 볼륨 'volume-id'가 RDS 인스턴스에 제대로 연결되어 있는지 확인합니다. <pre>aws ec2 describe-volumes \<br />    --volume-ids volume-id |grep InstanceId</pre>  | 
|  `SP-S1006`  |  EBS 스토리지 볼륨 크기  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. EBS 스토리지 볼륨 'volume-id'의 예상 설정과 구성된 설정이 일치하지 않습니다. EC2 수준에서 볼륨 크기가 원래 값인 [%s]에서 수동으로 변경되었습니다. 이 문제를 해결하려면 지원 사례를 생성하세요.    |   다음 CLI 명령을 사용하여 EBS 볼륨 'volume-id' 세부 정보와 RDS 인스턴스 세부 정보의 볼륨 크기를 비교합니다. <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep AllocatedStorage</pre>  다음 CLI 명령을 사용하여 실제 할당된 볼륨 크기를 확인합니다. <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Size</pre>  | 
|  `SP-S1007`  |  EBS 스토리지 볼륨 구성  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. EBS 스토리지 볼륨 'volume-id'의 예상 설정과 구성된 설정이 일치하지 않습니다. EBS 스토리지 볼륨 구성 [IOPS, 처리량, 볼륨 유형]을 EC2 수준에서 원래 값인 [IOPS: %s, 처리량: %s, 볼륨 유형: %s]로 수정하여 문제를 해결할 수 있습니다. 향후 스토리지 수정에는 RDS 콘솔 또는 CLI를 사용하세요. EC2 수준에서 볼륨 크기도 원래 값인 [%s]에서 수동으로 변경되었습니다. 이 문제를 해결하려면 지원 사례를 생성하세요.    |   다음 CLI 명령을 사용하여 EBS 볼륨 'volume-id' 세부 정보의 볼륨 유형과 RDS 인스턴스 세부 정보를 비교합니다. EBS 수준의 값이 RDS 수준의 값과 일치하는지 확인하세요. <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep StorageType</pre> RDS 수준에서 스토리지 처리량의 예상 값을 구하는 방법: <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep StorageThroughput</pre>  RDS 수준에서 볼륨 IOPS의 예상 값을 구하는 방법: <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep Iops</pre> EC2 수준에서 현재 스토리지 유형을 가져오는 방법: <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep VolumeType</pre>  EC2 수준에서 스토리지 처리량의 현재 값을 구하는 방법: <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Throughput</pre> EC2 수준에서 볼륨 IOPS의 현재 값을 구하는 방법: <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Iops</pre>  | 
|  `SP-S1008`  |  EBS 스토리지 볼륨 크기 및 구성  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. EBS 스토리지 볼륨 'volume-id'의 예상 설정과 구성된 설정이 일치하지 않습니다. EBS 스토리지 볼륨 구성 [IOPS, 처리량, 볼륨 유형]을 EC2 수준에서 원래 값인 [IOPS: %s, 처리량: %s, 볼륨 유형: %s]로 수정하여 문제를 해결할 수 있습니다. 향후 스토리지 수정에는 RDS 콘솔 또는 CLI를 사용하세요. EC2 수준에서 볼륨 크기도 원래 값인 [%s]에서 수동으로 변경되었습니다. 이 문제를 해결하려면 지원 사례를 생성하세요.    |   다음 CLI 명령을 사용하여 EBS 볼륨 'volume-id' 세부 정보의 볼륨 유형과 RDS 인스턴스 세부 정보를 비교합니다. EBS 수준의 값이 RDS 수준의 값과 일치하는지 확인하세요. <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep StorageType</pre> RDS 수준에서 스토리지 처리량의 예상 값을 구하는 방법: <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep StorageThroughput</pre>  RDS 수준에서 볼륨 IOPS의 예상 값을 구하는 방법: <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep Iops</pre> EC2 수준에서 현재 스토리지 유형을 가져오는 방법: <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep VolumeType</pre>  EC2 수준에서 스토리지 처리량의 현재 값을 구하는 방법: <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Throughput</pre> EC2 수준에서 볼륨 IOPS의 현재 값을 구하는 방법: <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Iops</pre> 예상 할당된 볼륨 크기를 구하는 방법: <pre>aws rds describe-db-instances \<br />    --db-instance-identifier db-instance-name |grep AllocatedStorage</pre> 실제 할당된 볼륨 크기를 구하는 방법: <pre>aws ec2 describe-volumes \<br />    --volume-ids |grep Size</pre>  | 
|  `SP-S1009`  |  SQS 권한  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. IAM 인스턴스 프로파일에 대한 Amazon Simple Queue Service(Amazon SQS) 권한이 누락되었습니다. 호스트와 연결된 IAM 프로파일에 ["SQS:SendMessage","SQS:ReceiveMessage","SQS:DeleteMessage","SQS:GetQueueUrl"] 권한이 있는지 확인하여 문제를 해결할 수 있습니다.    |    | 
|  `SP-S1010`  |  SQS VPC 엔드포인트  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. VPC 엔드포인트 정책이 Amazon Simple Queue Service(Amazon SQS) 작업을 차단하고 있습니다. 필요한 SQS 작업을 허용하도록 VPC 엔드포인트 정책을 수정하여 문제를 해결할 수 있습니다.    |    | 
|  `SP-S1011`  |  이벤트 버스 정책  |  RDS Custom DB 인스턴스 상태가 다음과 같은 이유로 [지원되지 않는 구성]으로 설정되었습니다. 이벤트 버스 arn:aws:events:region-1:123456789012:event-bus/default에 대한 리소스 기반 정책이 Amazon CloudWatch events:PutEvents 작업을 거부함. EventBus %s에 대한 events:PutEvents 작업을 허용하도록 리소스 기반 정책을 수정하여 이 문제를 해결하세요.  |    | 
|  `SP-S1012`  |  CloudWatch VPC 권한  |  RDS Custom DB 인스턴스 상태가 다음과 같은 이유로 [지원되지 않는 구성]으로 설정되었습니다. VPC 엔드포인트 정책에 Amazon CloudWatch 이벤트에 액세스할 수 있는 권한이 누락됨. EventBus arn:aws:events:region-1:123456789012:event-bus/default에 대해 events:PutEvents를 허용하도록 VPC 엔드포인트 정책을 수정하여 이 문제를 해결하세요.  |    | 
|  `SP-S1013`  |  서비스 제어 정책  |  RDS Custom DB 인스턴스 상태가 다음과 같은 이유로 [지원되지 않는 구성]으로 설정되었습니다. AWS Organizations의 서비스 제어 정책에 Amazon CloudWatch 이벤트에 액세스할 수 있는 권한이 누락됨. EventBus arn:aws:events:region-1:123456789012:event-bus/default에 대해 events:PutEvents를 허용하도록 서비스 제어 정책을 수정하여 이 문제를 해결하세요.  |    | 
|  `SP-S1014`  |  IAM 인스턴스 프로파일  |  RDS Custom DB 인스턴스 상태가 다음과 같은 이유로 [지원되지 않는 구성]으로 설정되었습니다. IAM 인스턴스 프로파일 %s 권한이 Amazon CloudWatch 이벤트를 거부함. 인스턴스와 연결된 IAM 프로파일에서 ["events:PutEvents"]를 'Allow'로 설정하고 EventBus arn:aws:events:region-1:123456789012:event-bus/default에 대해 events:PutEvents를 허용하여 이 문제를 해결하세요.  |    | 
|  `SP-S1015`  |  IAM 인스턴스 프로파일  |  RDS Custom DB 인스턴스 상태가 다음과 같은 이유로 [지원되지 않는 구성]으로 설정되었습니다. IAM 인스턴스 프로파일 %s에 Amazon CloudWatch 권한이 누락됨. 인스턴스와 연결된 IAM 프로파일에서 ["events:PutEvents"] 권한을 포함하고 EventBus arn:aws:events:region-1:123456789012:event-bus/default에 대해 events:PutEvents를 허용하여 이 문제를 해결하세요.  |    | 
|  `SP-S1016`  |  IAM 권한 경계  |  RDS Custom DB 인스턴스 상태가 다음과 같은 이유로 [지원되지 않는 구성]으로 설정되었습니다. IAM 인스턴스 프로파일 %s 권한에 Amazon CloudWatch 이벤트를 거부하는 권한 경계가 있음. IAM 인스턴스 프로파일 권한 경계에서 EventBus arn:aws:events:region-1:123456789012:event-bus/default에 대해 ["events:PutEvents"]를 'Allow'로 설정하여 이 문제를 해결하세요.  |    | 

**운영 체제**


| 이벤트 코드 | 구성 영역 | RDS 이벤트 메시지 | 검증 프로세스 | 
| --- | --- | --- | --- | 
|  `SP-S2001`  |  SQL 서비스 상태  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. SQL Server 서비스가 시작되지 않았습니다. 호스트에서 SQL Server 서비스를 다시 시작하여 문제를 해결할 수 있습니다. 이 DB 인스턴스가 다중 AZ DB 인스턴스이고 재시작이 실패할 경우 호스트를 중지하고 시작하여 장애 조치를 시작합니다.    |  | 
|  `SP-S2002`  |  RDS Custom 에이전트 상태  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. RDS Custom 에이전트 서비스가 설치되지 않았거나 시작할 수 없습니다. Windows 이벤트 로그를 검토하여 서비스가 시작되지 않는 이유를 확인하고 적절한 조치를 취하여 문제를 수정하면 해결할 수 있습니다. 추가 지원이 필요한 경우 지원 사례를 생성하세요.    |  호스트에 로그인하고 RDS Custom 에이전트가 실행 중인지 확인합니다. 다음 명령을 사용하여 에이전트 상태를 볼 수 있습니다. <pre>$name = "RDSCustomAgent"<br />$service = Get-Service $name<br />Write-Host $service.Status</pre> 상태가 `Running`이 아니면 다음 명령을 사용하여 서비스를 시작할 수 있습니다. <pre>Start-Service $name</pre> 에이전트를 시작할 수 없는 경우 Windows 이벤트를 확인하여 에이전트를 시작할 수 없는 이유를 확인합니다. 에이전트를 사용하려면 Windows 사용자가 서비스를 시작해야 합니다. Windows 사용자가 존재하고 서비스를 실행할 권한이 있는지 확인하세요.  | 
|  `SP-S2003`  |  SSM 에이전트 상태  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. Amazon SSM 에이전트 서비스에 연결할 수 없습니다. `Get-Service AmazonSSMAgent` PowerShell 명령으로 서비스 상태를 확인하거나 `Start-Service AmazonSSMAgent`로 서비스를 시작하여 문제를 해결할 수 있습니다. **ssm**, **ssmmessages**, **ec2messages** 리전 엔드포인트에 대한 HTTPS(포트 443) 아웃바운드 트래픽이 허용되는지 확인하세요.  |  자세한 내용은 [SSM Agent 문제 해결](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html)을 참조하세요. SSM 엔드포인트 문제를 해결하려면 [SSM 엔드포인트에 연결할 수 없음](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html#systems-manager-ssm-agent-troubleshooting-endpoint-access) 및 [ssm-cli를 사용하여 관리형 노드 가용성 문제 해결](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-cli.html#agent-ts-ssm-cli)을 참조하세요.  | 
|  `SP-S2004`  |  RDS Custom 에이전트 로그인  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. SQL 로그인 `"$HOSTNAME/RDSAgent”`에서 예상치 못한 문제가 발생했습니다. 이 문제를 해결하려면 지원 사례를 생성하세요.  |  | 
|  `SP-S2005`  |  Timezone  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. Amazon EC2 인스턴스 [%s]의 시간대가 변경되었습니다. 인스턴스 생성 시 지정된 설정으로 시간대를 다시 수정하여 문제를 해결할 수 있습니다. 특정 시간대의 인스턴스를 만들려면 RDS Custom 설명서를 참조하세요.   |  `Get-Timezone` PowerShell 명령을 실행하여 시간대를 확인합니다. 자세한 내용은 [RDS Custom for SQL Server DB 인스턴스의 현지 시간대](custom-reqs-limits-MS.TimeZone.md) 섹션을 참조하세요.  | 
|  `SP-S2006`  |  고가용성 소프트웨어 솔루션 버전  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. 현재 인스턴스의 고가용성 소프트웨어 솔루션이 예상 버전과 다릅니다. 이 문제를 해결하려면 지원 사례를 생성하세요.   |  | 
|  `SP-S2007`  |  고가용성 소프트웨어 솔루션 구성  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. 고가용성 소프트웨어 솔루션의 구성 설정이 %s 인스턴스에서 예상치 못한 값으로 수정되었습니다. 이 문제를 해결하려면 EC2 인스턴스를 재부팅합니다. EC2 인스턴스를 재부팅하면 설정이 고가용성 소프트웨어 솔루션에 필요한 구성으로 자동 업데이트됩니다.  |    | 
| SP-S2008 |  SQL Server 서비스   |  RDS Custom DB 인스턴스가 [지원되지 않는 구성](으)로 설정되었습니다. SQLServer(MSSQLServer) 서비스가 호스트에 없습니다. 이 문제를 해결하려면 지원 사례를 만드세요.  |  다음 명령을 사용하여 에이전트 상태를 볼 수 있습니다. <pre>$name = "MSSQLServer"<br />$service = Get-Service $name<br />Write-Host $service.Status</pre>  | 
| SP-S2009 | SSL 인증서 |  RDS 사용자 지정 DB 인스턴스는 RDS 중단을 유발하는 자체 서명되지 않은 SSL 인증서로 인해 [지원되지 않는 구성]으로 설정됩니다. 이 문제를 해결하려면 신뢰할 수 있는 루트 인증서 스토어에서 자체 서명되지 않은 인증서를 제거합니다.  |  다음 PowerShell 명령을 실행하여 자체 서명되지 않은 인증서를 검토합니다. <pre>Get-ChildItem cert:\LocalMachine\root -Recurse | Where-Object {$_.Issuer -ne $_.Subject -and $_.Issuer -notlike "*RDSCustomAgentCA*"}</pre> 자세한 내용은 [HTTP Error 403.16 when you try to access a website that's hosted on IIS](https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/site-behavior-performance/http-403-forbidden-access-website)를 참조하시기 바랍니다.  | 
| SP-S2010 | 루트 볼륨 스토리지 상태 |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성]으로 설정된 이유는 루트 볼륨 스토리지가 가득 찼기 때문입니다. 이 문제를 해결하려면 루트 EBS 볼륨 ‘volume-id’에서 최소 500MiB의 스토리지 공간을 확보하거나 볼륨 크기를 늘리고 EC2 인스턴스 ‘instance-id’에서 C 드라이브 크기를 조정합니다. EC2 인스턴스를 교체하면 루트 볼륨 크기 변경 사항이 유지되지 않습니다.  |  루트(C:) 볼륨에서 사용 가능한 스토리지를 보려면 다음 명령을 사용합니다. <pre>(Get-PSDrive -Name C).Free / 1MB</pre> EBS 루트 볼륨 수정에 대한 자세한 내용은 [방법](https://forums.aws.amazon.com/knowledge-center/expand-ebs-root-volume-windows) 섹션을 참조하세요.  | 

**데이터베이스**: 


| 이벤트 코드 | 구성 영역 | RDS 이벤트 메시지 | 검증 프로세스 | 
| --- | --- | --- | --- | 
|  `SP-S3001`  |  SQL Server 공유 메모리 프로토콜  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. SQL Server 공유 메모리 프로토콜이 비활성화되었습니다. SQL Server Configuration Manager에서 공유 메모리 프로토콜을 활성화하여 문제를 해결할 수 있습니다.  |  **SQL Server Configuration Manager > SQL Server 네트워크 구성 > MSSQLSERVER용 프로토콜 > 공유 메모리**에서 활성화됨 상태를 확인하면 됩니다. 프로토콜을 활성화한 후 SQL Server 프로세스를 다시 시작합니다.  | 
|  `SP-S3002`  |  Service Master Key  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. RDS 자동화에서 새로운 Service Master Key(SMK) 생성의 일부로 SMK 백업을 수행할 수 없습니다. 이 문제를 해결하려면 지원 사례를 생성하세요.  |    | 
|  `SP-S3003`  |  Service Master Key  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. Service Master Key(SMK)와 관련된 메타데이터가 누락되었거나 불완전합니다. 이 문제를 해결하려면 지원 사례를 생성하세요.   |    | 
|  `SP-S3004`  |  DB 엔진 버전 및 에디션  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. SQL Server의 필요한 버전 및 에디션과 설치된 버전 및 에디션 간에 불일치가 있습니다. RDS Custom for SQL Server에서 SQL Server 에디션 수정은 지원되지 않습니다. 또한 RDS Custom EC2 인스턴스에서 SQL Server 버전을 수동으로 변경하는 것도 지원되지 않습니다. 이 문제를 해결하려면 지원 사례를 생성하세요.   |   다음 쿼리를 실행하여 SQL 버전을 가져옵니다. <pre>select @@version</pre>  다음 AWS CLI 명령을 실행하여 RDS SQL 엔진 버전 및 에디션을 가져옵니다. <pre>aws rds describe-db-instances \<br />--db-instance-identifier db-instance-name |grep EngineVersion<br />aws rds describe-db-instances \<br />--db-instance-identifier db-instance-name |grep Engine</pre> 자세한 내용은 [RDS Custom for SQL Server DB 인스턴스 수정](custom-managing.modify-sqlserver.md) 및 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md)(을)를 참조하세요.  | 
|  `SP-S3005`   |  DB 엔진 에디션  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. 현재 SQL Server 에디션이 필요한 SQL Server 에디션인 [%s]과(와) 일치하지 않습니다. RDS Custom for SQL Server에서 SQL Server 에디션 수정은 지원되지 않습니다. 이 문제를 해결하려면 지원 사례를 생성하세요.   |   다음 쿼리를 실행하여 SQL 에디션을 가져옵니다. 

**Example**  

```
select @@version
```  다음 AWS CLI 명령을 실행하여 RDS SQL 엔진 에디션을 가져옵니다. <pre>aws rds describe-db-instances \<br />--db-instance-identifier db-instance-name |grep Engine</pre>  | 
|  `SP-S3006`   |  DB 엔진 버전  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. 현재 SQL Server 에디션이 필요한 SQL Server 에디션인 [%s]과(와) 일치하지 않습니다. RDS Custom EC2 인스턴스에서는 SQL Server 버전을 수동으로 변경할 수 없습니다. 이 문제를 해결하려면 지원 사례를 생성하세요. 향후 SQL Server 버전을 수정할 경우 AWS RDS 콘솔에서 또는 modify-db-instance CLI 명령을 통해 인스턴스를 수정할 수 있습니다.  |   다음 쿼리를 실행하여 SQL 버전을 가져옵니다. 

**Example**  

```
select @@version
```  다음 AWS CLI 명령을 실행하여 RDS SQL 엔진 버전을 가져옵니다. <pre>aws rds describe-db-instances \<br />--db-instance-identifier db-instance-name |grep EngineVersion</pre> 자세한 내용은 [RDS Custom for SQL Server DB 인스턴스 수정](custom-managing.modify-sqlserver.md) 및 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md)(을)를 참조하세요.  | 
|  `SP-S3007`  |  데이터베이스 파일 위치  |  RDS Custom DB 인스턴스 상태가 [지원되지 않는 구성](으)로 설정된 이유는 다음과 같습니다. 데이터베이스 파일이 D:\$1 드라이브 외부에 구성되어 있습니다. ROW, LOG, FILESTREAM 등을 비롯한 모든 데이터베이스 파일이 D:\$1 드라이브에 저장되어 있는지 확인하여 문제를 해결할 수 있습니다.  |  다음 쿼리를 실행하여 기본 경로에 없는 데이터베이스 파일의 위치를 나열합니다. <pre>USE master;<br />SELECT physical_name as  files_not_in_default_path<br />FROM sys.master_files<br />WHERE SUBSTRING(physical_name,1,3)!='D:\';<br /></pre>  | 
|  `SP-S3008`  |  데이터베이스 수 한도를 초과함  |  RDS Custom DB 인스턴스 상태가 다음과 같은 이유로 [지원되지 않는 구성]으로 설정되었습니다. DB 인스턴스의 총 데이터베이스 수가 최대 한도인 5,000개를 초과함. 이 문제를 해결하려면 데이터베이스 수를 지원되는 최대 한도 미만으로 줄이세요.  |  다음 명령을 사용하여 총 데이터베이스 수를 확인하세요. <pre>SELECT COUNT(name) as databaseCount<br />FROM sys.databases<br />WHERE name not in ('tempdb','master','model','msdb','DWDiagnostics','DWConfiguration','DWQueue');</pre>  | 

## RDS Custom for SQL Server에서 `Storage-Full` 문제 해결
<a name="custom-troubleshooting-storage-full"></a>

RDS Custom은 루트(C:) 볼륨도 모니터링합니다. RDS Custom for SQL Server DB 인스턴스는 루트 볼륨에 사용 가능한 디스크 공간이 500MiB 미만일 때 `unsupported-configuration` 상태로 전환됩니다. ([RDS Custom for SQL Server에서 지원되지 않는 구성 문제 해결](#custom-troubleshooting-sqlserver.fix-unsupported)의 `Event SP-S2010` 섹션 참조)

## RDS Custom for SQL Server에서 TDE 지원 데이터베이스의 PENDING\$1RECOVERY 상태 문제 해결
<a name="custom-troubleshooting-sqlserver.pending_recovery"></a>

자동 암호 해독에 문제가 발생해도 투명한 데이터 암호화(TDE)가 활성화된 SQL Server 데이터베이스는 `PENDING_RECOVERY` 상태를 유지할 수 있습니다. 이는 일반적으로 계정의 RDS Custom 관리형 S3 버킷에 저장된 소스 DB 인스턴스 Service Master Key(SMK) 백업 파일이 복원 완료 전에 삭제된 경우 DB 인스턴스 복원 후에 발생합니다.

자동 암호 해독을 활성화하고 TDE 지원 데이터베이스를 온라인으로 가져오려면 Database Master Key(DMK)를 암호로 열고 SMK를 사용하여 DMK를 암호화해야 합니다.

다음 SQL Server 명령을 참조용으로 사용하세요.

```
-- Identify PENDING_RECOVERY TDE databases
USE MASTER;
GO
SELECT name, is_encrypted, state_desc FROM sys.databases;
GO

-- Open DMK using password
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';
GO

-- Encrypt DMK using SMK
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
GO

-- Close SMK
CLOSE MASTER KEY;
GO

-- Bring the TDE databases online
ALTER DATABASE <database_name> SET ONLINE;
GO

-- Verify TDE databases are now in ONLINE state
SELECT name, is_encrypted, state_desc FROM sys.databases;
GO
```