为 Amazon RDS Custom for Oracle 配置数据库实例 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 Amazon RDS Custom for Oracle 配置数据库实例

您可以创建 RDS Custom 数据库实例,然后使用安全外壳 (SSH) 或 Amazon Systems Manager 连接到该实例。

有关连接和登录 RDS Custom for Oracle 数据库实例的更多信息,请参阅以下主题。

创建 RDS Custom for Oracle 数据库实例

使用 Amazon Web Services Management Console 或 Amazon CLI 创建 Amazon RDS Custom for Oracle 数据库实例。该过程与创建 Amazon RDS 数据库实例的过程相似。有关更多信息,请参阅 创建 Amazon RDS 数据库实例

如果您在 CEV 清单中包含了安装参数,则您的数据库实例将使用您指定的 Oracle 根目录、Oracle 主目录以及 UNIX/Linux 用户和组的 ID 和名称oratab 文件由 Oracle Database 在安装期间创建,指向实际安装位置,而不是符号链接。当 RDS Custom for Oracle 运行命令时,它以配置的操作系统用户而不是原定设置用户 rdsdb 的身份运行。有关更多信息,请参阅 步骤 5:准备 CEV 清单

在尝试创建或连接到 RDS Custom 数据库实例之前,请先完成为 Amazon RDS Custom for Oracle 设置您的环境中的任务。

要创建 RDS Custom for Oracle 数据库实例
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases(数据库)

  3. 选择创建数据库

  4. Choose a database creation method(选择数据库创建方法)中,选择 Standard create(标准创建)。

  5. 引擎选项部分中,执行以下操作:

    1. 对于 Engine type(引擎类型),选择 Oracle

    2. 对于 Database management type(数据库管理类型),选择 Amazon RDS Custom

    3. 对于架构设置,执行以下操作之一:

      • 选择多租户架构以创建容器数据库(CDB)。创建时,您的 CDB 包含一个 PDB 种子和一个初始 PDB。

        注意

        只有 Oracle Database 19c 才支持多租户架构设置。

      • 清除多租户架构以创建非 CDB。非 CDB 不能包含 PDB。

    4. 对于版本,请选择 Oracle Enterprise EditionOracle Standard Edition 2

    5. 对于自定义引擎版本,选择现有 RDS Custom 自定义引擎版本(CEV)。CEV 采用以下格式:major-engine-version.customized_string。一个示例标识符是 19.cdb_cev1

      如果您在上一步中选择了多租户架构,则只能指定使用 custom-oracle-ee-cdbcustom-oracle-se2-cdb 引擎类型的 CEV。控制台会筛选掉使用不同引擎类型创建的 CEV。

  6. Templates(模板)中,选择 Production(生产)。

  7. 设置部分,执行以下操作:

    1. 对于数据库实例标识符,请输入数据库实例的唯一名称。

    2. 对于主用户名,输入用户名。您可以稍后从控制台检索此值。

      当您连接到非 CDB 时,主用户是非 CDB 的用户。当您连接到 CDB 时,主用户是 PDB 的用户。要连接到 CDB 根目录,请登录主机,启动 SQL 客户端,然后使用 SQL 命令创建管理用户。

    3. 清除自动生成密码

  8. 选择数据库实例类

    有关支持的类,请参阅 RDS Custom for Oracle 的数据库实例类支持

  9. Storage(存储)部分中,执行以下操作:

    1. 对于存储类型,选择 SSD 类型:io1、gp2 或 gp3。您还有以下附加选项:

      • 对于 io1 或 gp3,为预调配 IOPS 选择费率。io1 的原定设置值为 1000,gp3 的原定设置值为 12000。

      • 对于 gp3,为存储吞吐量选择速率。原定设置值为 500MiBps。

    2. 对于分配的存储空间,选择存储大小。原定设置值为 40GiB。

  10. 对于连接,请指定您的虚拟私有云(VPC)数据库子网组VPC 安全组(防火墙)

  11. 对于 RDS Custom 安全性,执行以下操作:

    1. 对于 IAM instance profile(IAM 实例配置文件),为 RDS Custom for Oracle 数据库实例选择实例配置文件。

      IAM 实例配置文件必须以 AWSRDSCustom 开头,例如,AWSRDSCustomInstanceProfileForRdsCustomInstance

    2. 对于 Encryption(加密),选择 Enter a key ARN(输入一个密钥 ARN)以列出可用的 Amazon KMS 密钥。然后从列表中选择您的密钥。

      RDS Custom 需要 Amazon KMS 密钥。有关更多信息,请参阅 步骤 1:创建或重用对称加密 Amazon KMS 密钥

  12. 对于数据库选项,执行以下操作:

    1. (可选)对于系统 ID(SID),输入 Oracle SID 的值,该值也是您 CDB 的名称。SID 是管理您数据库文件的 Oracle 数据库实例的名称。在这种情况下,“Oracle 数据库实例”一词仅指系统全局区域(SGA)和 Oracle 后台进程。如果未指定 SID,则该值原定设置为 RDSCDB

    2. (可选)对于初始数据库名称,输入名称。默认值为 ORCL。在多租户架构中,初始数据库名称是 PDB 名称。

      注意

      SID 和 PDB 的名称必须不同。

    3. 对于选项组,选择一个选项组或接受默认值。

      注意

      RDS Custom for Oracle 唯一支持的选项是 Timezone。有关更多信息,请参阅 Oracle 时区

    4. 对于备份保留期,选择一个值。您不能选择 0 天

    5. 对于其余部分,请指定首选的 RDS Custom 数据库实例设置。有关每项设置的信息,请参阅 数据库实例的设置。以下设置不会显示在控制台中,也不受支持:

      • 处理器功能

      • Storage autoscaling (存储自动扩展)

      • Database authentication(数据库身份验证)中的 Password and Kerberos authentication(密码和 Kerberos 身份验证)选项(仅支持 Password authentication(密码身份验证))

      • Performance Insights

      • 日志导出

      • 启用自动次要版本升级

      • 删除保护

  13. 选择创建数据库

    重要

    当您创建 RDS Custom for Oracle 数据库实例时,您可能会收到以下错误:The service-linked role is in the process of being created.(服务相关角色正在创建过程中)。请稍后重试。如果您这样做,请等待几分钟,然后重新尝试创建数据库实例。

    View credential details(查看凭证详细信息)按钮显示在 Databases(数据库)页面中。

    要查看 RDS Custom 数据库实例的主用户名和密码,请选择 View credential details(查看凭证详细信息)。

    要以主用户身份连接到数据库实例,请使用显示的用户名和密码。

    重要

    您无法再次在控制台中查看主用户密码。如果您不记录它,您可能需要更改它。要在 RDS Custom 数据库实例可用后更改主用户密码,请登录数据库并运行 ALTER USER 命令。您可以使用控制台中的修改选项重置密码。

  14. 选择 Databases(数据库)以查看 RDS Custom 数据库实例列表。

  15. 选择您刚创建的 RDS Custom 数据库实例。

    在 RDS 控制台上,将显示新 RDS Custom 数据库实例的详细信息。

    • 数据库实例具有 creating(正在创建)状态,直到 RDS Custom 数据库实例完成创建并可供使用。当状态变为 Available (可用) 时,您可以连接到该数据库实例。根据所分配的实例类和存储的不同,新数据库实例可能需要数分钟时间才能变得可用。

    • Role(角色)具有值 Instance (RDS Custom)(实例 (RDS Custom))。

    • RDS Custom automation mode(RDS Custom 自动化模式)具有值 Full automation(完全自动化)。此设置意味着数据库实例可以提供自动监控和实例恢复。

您可以通过使用 create-db-instance Amazon CLI 命令创建 RDS Custom 数据库实例。

以下选项为必填:

  • --db-instance-identifier

  • --db-instance-class(有关支持的实例类的列表,请参阅 RDS Custom for Oracle 的数据库实例类支持

  • --engine engine-type,其中 engine-typecustom-oracle-eecustom-oracle-se2custom-oracle-ee-cdbcustom-oracle-se2-cdb

  • --engine-version cev(其中 cev 是您在 创建 CEV 中指定的自定义引擎版本的名称)

  • --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 是您在其中创建数据库实例的 Amazon Web Services 区域)

以下示例将创建名为 my-cfo-cdb-instance 的 RDS Custom 数据库实例。该数据库是一个 CDB,其非原定设置名称为 MYCDB。非原定设置 PDB 名称是 MYPDB。备份保留期为三天。

对于 Linux、macOS 或 Unix:

aws rds create-db-instance \ --engine custom-oracle-ee-cdb \ --db-instance-identifier my-cfo-cdb-instance \ --engine-version 19.cdb_cev1 \ --db-name MYPDB \ --db-system-id MYCDB \ --allocated-storage 250 \ --db-instance-class db.m5.xlarge \ --db-subnet-group mydbsubnetgroup \ --master-username myuser \ --master-user-password mypassword \ --backup-retention-period 3 \ --port 8200 \ --kms-key-id my-kms-key \ --no-auto-minor-version-upgrade \ --custom-iam-instance-profile AWSRDSCustomInstanceProfile-us-east-1

对于 Windows:

aws rds create-db-instance ^ --engine custom-oracle-ee-cdb ^ --db-instance-identifier my-cfo-cdb-instance ^ --engine-version 19.cdb_cev1 ^ --db-name MYPDB ^ --db-system-id MYCDB ^ --allocated-storage 250 ^ --db-instance-class db.m5.xlarge ^ --db-subnet-group mydbsubnetgroup ^ --master-username myuser ^ --master-user-password mypassword ^ --backup-retention-period 3 ^ --port 8200 ^ --kms-key-id my-kms-key ^ --no-auto-minor-version-upgrade ^ --custom-iam-instance-profile AWSRDSCustomInstanceProfile-us-east-1
注意

作为安全最佳实践,请指定除此处所示提示以外的密码。

使用 describe-db-instances 命令以获取有关您的实例的详细信息。

aws rds describe-db-instances --db-instance-identifier my-cfo-cdb-instance

以下部分输出显示了引擎、参数组和其他信息。

{ "DBInstanceIdentifier": "my-cfo-cdb-instance", "DBInstanceClass": "db.m5.xlarge", "Engine": "custom-oracle-ee-cdb", "DBInstanceStatus": "available", "MasterUsername": "admin", "DBName": "MYPDB", "DBSystemID": "MYCDB", "Endpoint": { "Address": "my-cfo-cdb-instance.abcdefghijkl.us-east-1.rds.amazonaws.com", "Port": 1521, "HostedZoneId": "A1B2CDEFGH34IJ" }, "AllocatedStorage": 100, "InstanceCreateTime": "2023-04-12T18:52:16.353000+00:00", "PreferredBackupWindow": "08:46-09:16", "BackupRetentionPeriod": 7, "DBSecurityGroups": [], "VpcSecurityGroups": [ { "VpcSecurityGroupId": "sg-0a1bcd2e", "Status": "active" } ], "DBParameterGroups": [ { "DBParameterGroupName": "default.custom-oracle-ee-cdb-19", "ParameterApplyStatus": "in-sync" } ], ...

多租户架构注意事项

如果您使用 Oracle 多租户架构(custom-oracle-ee-cdbcustom-oracle-se2-cdb 引擎类型)创建 Amazon RDS Custom for Oracle 数据库实例,则您的数据库是容器数据库(CDB)。如果您未指定 Oracle 多租户架构,则您的数据库是使用 custom-oracle-eecustom-oracle-se2 引擎类型的传统非 CDB。非 CDB 不能包含可插拔数据库(PDB)。有关更多信息,请参阅 Amazon RDS Custom for Oracle 的数据库架构

创建 RDS Custom for Oracle CDB 实例时,请考虑以下几点:

  • 您只能从 Oracle Database 19c CEV 创建多租户数据库。

  • 仅当 CEV 使用 custom-oracle-ee-cdbcustom-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)。

  • 您无法使用 Amazon RDS API 重命名现有 PDB。您也无法使用 modify-db-instance 命令重命名 CDB。

  • CDB 根目录的打开模式在主数据库上为 READ WRITE,在已挂载的备用数据库上为 MOUNTED。RDS Custom for Oracle 会在打开 CDB 时尝试打开所有 PDB。如果 RDS Custom for Oracle 无法打开所有 PDB,它会发出事件 tenant database shutdown

RDS Custom 服务相关角色

服务相关角色 为 Amazon RDS Custom 提供针对您的 Amazon Web Services 账户中的资源的访问权限。这样可以让您更轻松地使用 RDS Custom,因为您不必手动添加必要的权限。RDS Custom 定义其服务相关角色的权限,除非另外定义,否则只有 RDS Custom 可以代入该角色。定义的权限包括信任策略和权限策略,以及不能附加到任何其他 IAM 实体的权限策略。

创建 RDS Custom 数据库实例时,将创建并使用 Amazon RDS 和 RDS Custom 服务相关角色(如果它们尚未存在)。有关更多信息,请参阅 将服务相关角色用于 Amazon RDS

首次创建 RDS Custom for Oracle 数据库实例时,您可能会收到以下错误:The service-linked role is in the process of being created.(服务相关角色正在创建过程中)。请稍后重试。如果您这样做,请等待几分钟,然后重新尝试创建数据库实例。

在 RDS Custom for Oracle 数据库实例上安装其他软件组件

在新创建的数据库实例中,您的数据库环境包括 Oracle 二进制文件、数据库和数据库侦听器。您可能需要在数据库实例的主机操作系统上安装其他软件。例如,您可能需要安装 Oracle Application Express(APEX)、Oracle Enterprise Manager(OEM)代理或 Guardium S-TAP 代理。有关指南和总体说明,请参阅详细的 Amazon 博客文章在 Amazon RDS Custom for Oracle 上安装其他软件组件

使用 SSH 连接到 RDS Custom 数据库实例

Secure Shell 协议(SSH)是一种支持通过不安全网络进行加密通信的网络协议。创建 RDS Custom 数据库实例后,您可以使用 ssh 客户端连接到此实例。有关更多信息,请参阅使用 SSH 连接到 Linux 实例

您的 SSH 连接技术取决于您的数据库实例是否为私有实例,这意味着它不接受来自公共互联网的连接。在这种情况下,您必须使用 SSH 隧道将 ssh 实用程序连接到您的实例。该技术在现有 SSH 会话内通过专用数据流(隧道)传输数据。您可以使用 Amazon Systems Manager 配置 SSH 隧道。

注意

支持各种策略以访问私有实例。要了解如何使用堡垒主机将 ssh 客户端连接到私有实例,请参阅 Amazon 上的 Linux 堡垒机主机。要了解如何配置端口转发,请参阅使用 Amazon Systems Manager Session Manager 进行端口转发

如果您的数据库实例位于公有子网中并且具有公共可用设置,则不需要 SSH 隧道。您可以像连接到公有 Amazon EC2 实例一样使用 SSH 进行连接。

要将 ssh 客户端连接到数据库实例,请完成以下步骤:

步骤 1:配置您的数据库实例以允许 SSH 连接

要确保您的数据库实例可接受 SSH 连接,请执行以下操作:

  • 确保数据库实例安全组允许端口 22 上的 TCP 入站连接。

    要了解如何为数据库实例配置安全组,请参阅使用安全组控制访问权限

  • 如果您不打算使用 SSH 隧道,请确保数据库实例位于公有子网中并且可供公开访问。

    在控制台中,相关字段是数据库详细信息页面的连接和安全性选项卡上的可公开访问。要在 CLI 中检查设置,请运行以下命令:

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

    要更改数据库实例的可访问性设置,请参阅修改 Amazon RDS 数据库实例

步骤 2:检索您的 SSH 私密密钥和 EC2 实例 ID

要使用 SSH 连接到数据库实例,您需要与该实例关联的 SSH 密钥对。RDS Custom 代表您创建 SSH 密钥对,并以前缀 do-not-delete-rds-custom-ssh-privatekey-db- 为其命名。Amazon Secrets Manager 将您的 SSH 私有密钥存储为私密密钥。

使用 Amazon Web Services Management Console或 Amazon CLI 检索您的 SSH 私密密钥。如果您的实例有公有 DNS,并且您不打算使用 SSH 隧道,则还会检索 DNS 名称。您指定公有连接的 DNS 名称。

检索私密 SSH 密钥
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,请选择 Databases(数据库),然后选择要连接到的 RDS Custom 数据库实例。

  3. 选择配置

  4. 请注意 Resource ID(资源 ID)值。例如,数据库实例资源 ID 可能为 db-ABCDEFGHIJKLMNOPQRS0123456

  5. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  6. 在导航窗格中,选择实例

  7. 查找 EC2 实例的名称,然后选择与其关联的实例 ID。例如,EC2 实例 ID 可能为 i-abcdefghijklm01234

  8. Details(详细信息)中,查找 Key pair name(密钥对名称)。密钥对名称包括数据库实例资源 ID。例如,密钥对名称可能为 do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c

  9. 如果您的 EC2 实例是公有的,请记下公有 IPv4 DNS。例如,公有域名系统 (DNS) 地址可能为 ec2-12-345-678-901.us-east-2.compute.amazonaws.com

  10. 打开位于 https://console.aws.amazon.com/secretsmanager/ 的 Amazon Secrets Manager 控制台。

  11. 选择与密钥对同名的密钥。

  12. 选择 Retrieve secret value (检索密钥值)

  13. 将 SSH 私有密钥复制到文本文件中,然后使用 .pem 扩展名保存该文件。例如,将文件另存为 /tmp/do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem

要检索 SSH 私有密钥并将其保存在 .pem 文件中,可以使用 Amazon CLI。

  1. 使用 aws rds describe-db-instances 查找 RDS Custom 数据库实例的数据库资源 ID。

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

    以下示例输出显示了 RDS Custom 实例的资源 ID。前缀为 db-

    db-ABCDEFGHIJKLMNOPQRS0123456
  2. 使用 aws ec2 describe-instances 查找数据库实例的 EC2 实例 ID。以下示例将 db-ABCDEFGHIJKLMNOPQRS0123456 用于资源 ID。

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

    以下示例输出显示了 EC2 实例 ID。

    i-abcdefghijklm01234
  3. 要查找密钥名称,请指定 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- 的密钥名称。

    do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c
  4. 使用 aws secretsmanager 将私有密钥保存在以密钥命名的 .pem 文件中。以下示例将文件保存在您的 /tmp 目录中。

    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

步骤 3:使用 ssh 实用程序连接到 EC2 实例

您的连接技术取决于您是连接到私有数据库实例,还是连接到公有实例。私有连接要求您通过 Amazon Systems Manager 配置 SSH 隧道。

使用 ssh 实用程序连接到 EC2 实例
  1. 对于私有连接,请将您的 SSH 配置文件修改为代理对 Amazon 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'"
  2. 包含您的 .pem 文件的目录的更改。使用 chmod,将权限设置为 400

    cd /tmp chmod 400 do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem
  3. 运行 ssh 实用程序,指定 .pem 文件和公有 DNS 名称(用于公有连接)或 EC2 实例 ID(用于私有连接)。以用户 ec2-user 身份登录。

    以下示例使用 DNS 名称 ec2-12-345-678-901.us-east-2.compute.amazonaws.com 连接到公有实例。

    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

    以下示例使用 EC2 实例 ID i-0bdc4219e66944afa 连接到私有实例。

    ssh -i \ "do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem" \ ec2-user@i-0bdc4219e66944afa