

# 创建 CEV
<a name="custom-cev.create"></a>

您可以使用 AWS 管理控制台 或 AWS CLI 创建 CEV。指定多租户或非多租户架构。有关更多信息，请参阅 [多租户架构注意事项](custom-creating.md#custom-creating.overview)。

通常，创建 CEV 需要大约两个小时。创建 CEV 后，您可以使用它来创建或更新 RDS Custom 数据库实例。有关更多信息，请参阅[创建 RDS Custom for Oracle 数据库实例](custom-creating.md#custom-creating.create) 和[升级 RDS Custom for Oracle 数据库实例](custom-upgrading-modify.md)。

**注意**  
如果您的数据库实例当前使用 Oracle Linux 7.9，请创建一个使用最新 AMI（使用 Oracle Linux 8）的新 CEV。然后修改该实例以使用新的 CEV。

请注意创建 CEV 的以下要求和限制：
+ 包含安装文件的 Amazon S3 存储桶必须与您的 CEV 在同一个 AWS 区域。否则，创建过程将失败。
+ CEV 名称的格式必须为 `major-engine-version.customized_string`，如 `19.cdb_cev1` 所示。
+ CEV 名称必须包含 1–50 个字母数字字符、下划线、短划线或句点。
+ CEV 名称不能包含连续的句点，如 `19..cdb_cev1` 所示。

## 控制台
<a name="custom-cev.create.console"></a>

**要创建 CEV**

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

1. 在导航窗格中，选择 **Custom engine versions**（自定义引擎版本）。

   **Custom engine versions**（自定义引擎版本）页面显示了当前存在的所有 CEV。如果您尚未创建任何 CEV，则该页面为空。

1. 选择 **Create custom engine version**（创建自定义引擎版本）。

1. 在**引擎选项**中，执行以下操作：

   1. 对于 **Engine type**（引擎类型），选择 **Oracle**。

   1. 对于**架构设置**，（可选）选择**多租户架构**来创建使用引擎 `custom-oracle-ee-cdb` 或 `custom-oracle-se2-cdb` 的 Oracle 多租户 CEV。您只能使用多租户 CEV 创建 RDS Custom for Oracle CDB。如果您不选择此选项，CEV 将为非 CDB，它使用引擎 `custom-oracle-ee` 或 `custom-oracle-se2`。
**注意**  
您选择的架构是 CEV 的永久特征。您以后无法修改您的 CEV 以使用其他架构。

   1. 请选择以下任一选项：
      + **创建新的 CEV** – 从头开始创建 CEV。在这种情况下，必须指定 JSON 清单，其中指定了数据库二进制文件。
      + **从源创建 CEV** – 在**指定要复制的 CEV** 中，选择要用作源 CEV 的现有 CEV。在这种情况下，您可以指定新的亚马逊机器映像（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 location of manifest files**（清单文件的 S3 位置），输入您在 [步骤 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 密钥。

   RDS Custom 需要 AWS KMS 密钥。有关更多信息，请参阅 [步骤 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 的过程需要大约两个小时。

## 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`。您只能从使用 `custom-oracle-ee-cdb` 或 `custom-oracle-se2-cdb` 创建的 CEV 创建 CDB。您只能从使用 `custom-oracle-ee` 或 `custom-oracle-se2` 创建的 CEV 创建非 CDB。
+ `--engine-version` – 指定引擎版本。格式为 *major-engine-version*.*customized\$1string*。CEV 名称必须包含 1–50 个字母数字字符、下划线、短划线或句点。CEV 名称不能包含连续的句点，如 `19..cdb_cev1` 所示。
+ `--kms-key-id` – 指定一个 AWS KMS key。
+ `--manifest` – 指定 `manifest_json_string` 或 `--manifest file:file_name`。`manifest_json_string` 中不允许使用换行符。确保在 JSON 代码中转义双引号 (")，方法是使用反斜杠 (\$1) 作为其前缀。

  以下示例展示来自 [步骤 5：准备 CEV 清单](custom-cev.preparing.md#custom-cev.preparing.manifest) 的 19c 的 `manifest_json_string`。该示例为 Oracle 根目录、Oracle 主目录以及 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**  
对于 Linux、macOS 或 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 创建失败原因的信息，请参阅[为 RDS Custom for Oracle 排除自定义引擎版本创建的故障](custom-troubleshooting.md#custom-troubleshooting.cev)。