

# RDS for Oracle CDB 구성
<a name="oracle-cdb.configuring"></a>

CDB를 구성하는 방법은 비CDB를 구성하는 것과 비슷합니다.

**Topics**
+ [RDSfor Oracle CDB 인스턴스 생성](#Oracle.Concepts.single-tenant.creation)
+ [RDS for Oracle CDB의 PDB에 연결](#Oracle.Concepts.connecting.pdb)

## RDSfor Oracle CDB 인스턴스 생성
<a name="Oracle.Concepts.single-tenant.creation"></a>

RDS for Oracle에서 CDB를 만드는 방법은 비CDB 인스턴스를 만드는 방법과 거의 동일합니다. 차이점은 DB 인스턴스를 만들 때 Oracle 멀티테넌트 아키텍처를 선택하며 아키텍처 구성(다중 테넌트 또는 단일 테넌트)도 선택한다는 것입니다. 다중 테넌트 구성에서 CDB를 생성할 때 태그를 생성하면 RDS가 태그를 초기 테넌트 데이터베이스로 전파합니다. CDB를 만들려면 AWS Management Console, AWS CLI 또는 RDS API를 사용합니다.

### 콘솔
<a name="Oracle.Concepts.single-tenant.creation.console"></a>

**CDB 인스턴스를 생성하는 방법**

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

1. Amazon RDS 콘솔의 오른쪽 상단에서 CDB 인스턴스를 생성하려는 AWS 리전을 선택합니다.

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

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

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

1. **Engine options(엔진 옵션)**에서 **Oracle**을 선택합니다.

1. **데이터베이스 관리 유형**에서 **Amazon RDS**를 선택합니다.

1. **아키텍처 설정**에서 **Oracle 멀티테넌트 아키텍처**를 선택합니다.

1. **아키텍처 구성**에서 다음 중 하나를 수행합니다.
   + **다중 테넌트 구성**을 선택하고 다음 단계로 진행합니다.
   + **단일 테넌트 구성**을 선택하고 11단계로 건너뜁니다.

1. (다중 테넌트 구성) **테넌트 데이터베이스 설정**에서 다음과 같이 변경합니다.
   + **테넌트 데이터베이스 이름**에 초기 PDB의 이름을 입력합니다. PDB 이름은 CDB 이름(기본값 `RDSCDB`)과 달라야 합니다.
   + **테넌트 데이터베이스 마스터 사용자 이름**에 PDB의 마스터 사용자 이름을 입력합니다. 테넌트 데이터베이스 마스터 사용자 이름을 사용하여 CDB 자체에 로그인할 수 없습니다.
   + **자격 증명 관리**에서 다음 자격 증명 관리 옵션 중 하나를 선택합니다.
     + **에서 관리됨AWS Secrets Manager**

       관리형 암호는 인스턴스가 아닌 초기 테넌트 데이터베이스용입니다. **암호화 키 선택**에서 Secrets Manager가 만드는 KMS 키 또는 사용자가 만든 키를 선택합니다.
**참고**  
자격 증명을 관리하기 위한 가장 안전한 기법으로 AWS Secrets Manager를 사용하는 것이 좋습니다. 추가 요금이 발생합니다. 자세한 내용은 [Amazon RDS 및 AWS Secrets Manager를 통한 암호 관리](rds-secrets-manager.md) 섹션을 참조하세요.
     + **자체 관리형**

       암호를 지정하려면 **암호 자동 생성** 확인란을 선택 취소합니다(선택되어 있는 경우). **마스터 암호** 및 **마스터 암호 확인**에 동일한 암호를 입력합니다.
   + **테넌트 데이터베이스 문자 집합**에서 PDB의 문자 집합을 선택합니다. CDB 문자 집합과 다른 테넌트 데이터베이스 문자 집합을 선택할 수 있습니다.

     기본 PDB 문자 집합은 **AL32UTF8**입니다. 기본이 아닌 PDB 문자 집합을 선택하면 CDB 생성 속도가 느려질 수 있습니다.
**참고**  
만들기 작업에서는 다중 테넌트 데이터베이스를 지정할 수 없습니다. CDB는 만들어질 때 하나의 PDB를 가지고 있습니다. 별도의 작업으로 기존 CBD에 PDB를 추가할 수 있습니다.

1. (단일 테넌트 구성) [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md)에 나열된 옵션에 따라 원하는 설정을 선택합니다.

   1. **Settings**(설정) 섹션에서 **Credential Settings**(보안 인증 정보 설정)를 엽니다. 뒤이어 다음과 같이 하세요.

     1. **마스터 사용자 이름**에 PDB의 로컬 사용자 이름을 입력합니다. 마스터 사용자 이름을 사용하여 CDB 루트에 로그인할 수 없습니다.

     1. **자격 증명 관리**에서 다음 자격 증명 관리 옵션 중 하나를 선택합니다.
        + **에서 관리됨AWS Secrets Manager**

          **암호화 키 선택**에서 Secrets Manager가 만드는 KMS 키 또는 사용자가 만든 키를 선택합니다.
**참고**  
자격 증명을 관리하기 위한 가장 안전한 기법으로 AWS Secrets Manager를 사용하는 것이 좋습니다. 추가 요금이 발생합니다. 자세한 내용은 [Amazon RDS 및 AWS Secrets Manager를 통한 암호 관리](rds-secrets-manager.md) 섹션을 참조하세요.
        + **자체 관리형**

          암호를 지정하려면 **암호 자동 생성** 확인란을 선택 취소합니다(선택되어 있는 경우). **마스터 암호** 및 **마스터 암호 확인**에 동일한 암호를 입력합니다.

1. 나머지 섹션에서 DB 인스턴스 설정을 지정합니다. 각 설정에 대한 자세한 내용은 [DB 인스턴스 설정](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.Settings.html)을 참조하세요.

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

### AWS CLI
<a name="Oracle.Concepts.single-tenant.creation.cli"></a>

다중 테넌트 구성에서 CDB를 생성하려면 다음 파라미터와 함께 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 명령을 사용합니다.
+ `--db-instance-identifier`
+ `--db-instance-class`
+ `--engine { oracle-ee-cdb | oracle-se2-cdb }`
+ `--master-username`
+ `--master-user-password` 또는 `--manage-master-user-password`
+ `--multi-tenant`(단일 테넌트 구성의 경우 `multi-tenant`를 지정하지 말거나 `--no-multi-tenant`를 지정하세요.)
+ `--allocated-storage`
+ `--backup-retention-period`

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

다음 예에서는 다중 테넌트 구성에서 *my-cdb-inst*라는 RDS for Oracle DB 인스턴스를 생성합니다. `--no-multi-tenant`를 지정하거나 `--multi-tenant`를 지정하지 않는 경우 기본 CDB 구성은 단일 테넌트입니다. 엔진은 `oracle-ee`를 지정하는 `oracle-ee-cdb` 명령이며 `--multi-tenant`는 오류와 함께 실패합니다. 초기 테넌트 데이터베이스의 이름은 *mypdb*입니다.

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

```
 1. aws rds create-db-instance \
 2.     --engine oracle-ee-cdb \
 3.     --db-instance-identifier my-cdb-inst \
 4.     --multi-tenant \
 5.     --db-name mypdb \
 6.     --allocated-storage 250 \
 7.     --db-instance-class db.t3.large \
 8.     --master-username pdb_admin \
 9.     --manage-master-user-password \
10.     --backup-retention-period 3
```
Windows의 경우:  

```
 1. aws rds create-db-instance ^
 2.     --engine oracle-ee-cdb ^
 3.     --db-instance-identifier my-cdb-inst ^
 4.     --multi-tenant ^
 5.     --db-name mypdb ^
 6.     --allocated-storage 250 ^
 7.     --db-instance-class db.t3.large ^
 8.     --master-username pdb_admin ^
 9.     --manage-master-user-password \ ^
10.     --backup-retention-period 3
```
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.
다음과 비슷한 출력이 생성됩니다. 데이터베이스 이름, 문자 집합, 내셔널 문자 집합 및 마스터 사용자 및 마스터 사용자 보안 암호는 출력에 포함되지 않습니다. `describe-tenant-databases` CLI 명령을 사용하여 이 정보를 볼 수 있습니다.  

```
 1. {
 2.     "DBInstance": {
 3.         "DBInstanceIdentifier": "my-cdb-inst",
 4.         "DBInstanceClass": "db.t3.large",
 5.         "MultiTenant": true,
 6.         "Engine": "oracle-ee-cdb",
 7.         "DBResourceId": "db-ABCDEFGJIJKLMNOPQRSTUVWXYZ",
 8.         "DBInstanceStatus": "creating",
 9.         "AllocatedStorage": 250,
10.         "PreferredBackupWindow": "04:59-05:29",
11.         "BackupRetentionPeriod": 3,
12.         "DBSecurityGroups": [],
13.         "VpcSecurityGroups": [
14.             {
15.                 "VpcSecurityGroupId": "sg-0a1bcd2e",
16.                 "Status": "active"
17.             }
18.         ],
19.         "DBParameterGroups": [
20.             {
21.                 "DBParameterGroupName": "default.oracle-ee-cdb-19",
22.                 "ParameterApplyStatus": "in-sync"
23.             }
24.         ],
25.         "DBSubnetGroup": {
26.             "DBSubnetGroupName": "default",
27.             "DBSubnetGroupDescription": "default",
28.             "VpcId": "vpc-1234567a",
29.             "SubnetGroupStatus": "Complete",
30.             ...
```

### RDS API
<a name="Oracle.Concepts.single-tenant.creation.api"></a>

Amazon RDS API를 사용하여 DB 인스턴스를 생성하려면 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 작업을 호출합니다.

각 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 단원을 참조하십시오.

## RDS for Oracle CDB의 PDB에 연결
<a name="Oracle.Concepts.connecting.pdb"></a>

SQL\$1Plus와 같은 유틸리티를 사용하여 PDB에 연결할 수 있습니다. 독립형 버전의 SQL\$1Plus를 포함하는 Oracle 인스턴트 클라이언트를 다운로드하려면 [Oracle 인스턴트 클라이언트 다운로드](https://www.oracle.com/database/technologies/instant-client/downloads.html)를 참조하세요.

PDB에 SQL\$1Plus를 연결하려면 다음 정보를 제공해야 합니다.
+ PDB 이름
+ 데이터베이스 사용자 이름 및 암호
+ DB 인스턴스의 엔드포인트
+ 포트 번호

이전 정보를 찾는 방법에 대한 자세한 내용은 [RDS for Oracle DB 인스턴스의 엔드포인트 찾기](USER_Endpoint.md) 섹션을 참조하세요.

**Example SQL\$1Plus를 사용하여 PDB에 연결하는 방법**  
다음 예에서는 마스터 사용자를 *master\$1user\$1name* 대신 사용하세요. 또한 DB 인스턴스를 엔드포인트로 대체한 다음, 포트 번호와 Oracle SID를 포함합니다. SID 값은 DB 인스턴스 식별자가 아니라 DB 인스턴스를 만들 때 지정한 PDB의 이름입니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. sqlplus 'master_user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=endpoint)(PORT=port))(CONNECT_DATA=(SID=pdb_name)))'
```
Windows의 경우:  

```
1. sqlplus master_user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=endpoint)(PORT=port))(CONNECT_DATA=(SID=pdb_name)))
```
다음과 유사한 출력 화면이 표시되어야 합니다.  

```
SQL*Plus: Release 19.0.0.0.0 Production on Mon Aug 21 09:42:20 2021
```
사용자 암호를 입력하면 SQL 프롬프트가 표시됩니다.  

```
SQL>
```

**참고**  
`sqlplus username/password@LONGER-THAN-63-CHARS-RDS-ENDPOINT-HERE:1521/database-identifier`와 같은 짧은 형식의 연결 문자열(Easy Connect 또는 EZCONNECT)이 최대 문자 제한에 걸릴 수 있으며, 이런 문자열을 연결할 때 사용하면 안 됩니다.