

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

配置 CDB 与配置非 CDB 类似。

**Topics**
+ [创建 RDS for Oracle CDB 实例](#Oracle.Concepts.single-tenant.creation)
+ [在 RDS for Oracle CDB 中连接到 PDB](#Oracle.Concepts.connecting.pdb)

## 创建 RDS for Oracle CDB 实例
<a name="Oracle.Concepts.single-tenant.creation"></a>

在 RDS for Oracle 中，创建 CDB 实例与创建非 CDB 实例几乎完全相同。不同之处在于，您在创建数据库实例时选择了 Oracle 多租户架构，还选择了架构配置：多租户或单租户。如果您在创建使用多租户配置的 CDB 时创建标签，则 RDS 会将标签传播到初始租户数据库。要创建 CDB，请使用 AWS 管理控制台、AWS CLI 或 RDS API。

### 控制台
<a name="Oracle.Concepts.single-tenant.creation.console"></a>

**创建 CDB 实例**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在 Amazon RDS 控制台的右上角，选择要在其中创建 CDB 实例的 AWS 区域。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择**创建数据库**。

1. 在**选择数据库创建方法**中，选择**标准创建**。

1. 在**引擎选项**下面，选择 **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。您可以在单独的操作中将 PDB 添加到现有的 CDB。

1. （单租户配置）根据[数据库实例的设置](USER_CreateDBInstance.Settings.md)中列出的选项选择所需的设置：

   1. 在**设置**部分中，打开**凭证设置**。然后执行以下操作：

     1. 在**主用户名**中，输入 PDB 中本地用户的名称。您不能使用主用户名登录 CDB 根目录。

     1. 对于**凭证管理**，选择以下任一其它凭证管理选项：
        + **在 AWS Secrets Manager 管理**

          在**选择加密密钥**中，选择 Secrets Manager 创建的 KMS 密钥或您已创建的密钥。
**注意**  
我们建议将 AWS Secrets Manager 作为管理凭证的最安全的方法。将收取额外费用。有关更多信息，请参阅 [使用 Amazon RDS 和 AWS Secrets Manager 管理密码](rds-secrets-manager.md)。
        + **自行管理**

          要指定密码，请清除**自动生成密码**复选框（如果已选中）。在**主密码**和**确认主密码**中输入相同的密码。

1. 对于其余部分，请指定数据库实例设置。有关每个设置的信息，请参阅[数据库实例的设置](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`

有关每项设置的信息，请参阅[数据库实例的设置](USER_CreateDBInstance.Settings.md)。

以下示例采用多租户配置创建了一个名为 *my-cdb-inst* 的 RDS for Oracle 数据库实例。如果您指定 `--no-multi-tenant` 或未指定 `--multi-tenant`，则默认 CDB 配置为单租户配置。引擎是 `oracle-ee-cdb`：一个指定 `oracle-ee` 和 `--multi-tenant` 但因错误失败的命令。初始租户数据库名为 *mypdb*。

**Example**  
对于 Linux、macOS 或 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
```
作为安全最佳实践，请指定除此处所示提示以外的密码。
此命令生成类似于下述信息的输出。输出中不包括数据库名称、字符集、国家/地区字符集、主用户和主用户密钥。您可以使用 CLI 命令 `describe-tenant-databases` 查看此信息。  

```
 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 创建数据库实例，请调用 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 操作。

有关每项设置的信息，请参阅[数据库实例的设置](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)。

要将 SQL\$1Plus 连接到 PDB，您需要以下信息：
+ PDB 名称
+ 数据库用户名和密码
+ 您的数据库实例的端点
+ 端口号

有关查找上述信息的信息，请参阅[查找 RDS for Oracle 数据库实例的端点](USER_Endpoint.md)。

**Example 使用 SQL\$1Plus 连接到您的 PDB**  
在以下示例中，用您的主用户替换 *master\$1user\$1name*。另外，请将端点替换为您的数据库实例，然后包含端口号和 Oracle SID。SID 值是您在创建数据库实例时指定的 PDB 的名称，而不是数据库实例标识符。  
对于 Linux、macOS 或 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>
```

**注意**  
较短格式连接字符串 (Easy connect 或 EZCONNECT) (如 `sqlplus username/password@LONGER-THAN-63-CHARS-RDS-ENDPOINT-HERE:1521/database-identifier`) 可能会遇到最大字符限制，不应用于连接。