为 Amazon RDS Custom for Oracle 升级数据库实例
您可以通过修改 Amazon RDS Custom 数据库实例以使用新的自定义引擎版本 (CEV) 来升级该实例。有关升级的一般信息,请参阅升级数据库实例引擎版本。
主题
RDS Custom for Oracle 升级的要求
在将您的 RDS Custom for Oracle 数据库实例升级到目标 CEV 时,请确保满足以下要求:
-
要升级到的目标 CEV 必须存在。
-
目标 CEV 必须使用当前 CEV 清单中的安装参数设置。例如,您无法将使用原定设置 Oracle 主目录的数据库升级到使用非原定设置 Oracle 主目录的 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。
RDS Custom for Oracle 升级的注意事项
在计划升级时,请考虑以下事项:
-
我们强烈建议您使用 CEV 升级 RDS Custom for Oracle 数据库实例。RDS Custom for Oracle 自动化可将补丁元数据与数据库实例上的数据库二进制文件同步。
在特殊情况下,RDS Custom 支持使用 OPATCH 将“一次性”补丁直接应用于底层 Amazon EC2 实例。有效的使用案例可能是您想要立即应用的补丁,但 RDS Custom 团队正在升级 CEV 功能,这会导致延迟。要手动应用补丁,请执行以下步骤:
-
暂停 RDS Custom 自动化。
-
将您的补丁应用于 Amazon EC2 实例上的数据库二进制文件。
-
恢复 RDS Custom 自动化。
上述技术的缺点是必须手动将补丁应用到要升级的每个实例。相比之下,当您创建新的 CEV 时,您可以使用相同的 CEV 创建或升级多个数据库实例。
-
-
当您升级主数据库实例时,RDS Custom for Oracle 会自动升级您的只读副本。您无需手动升级只读副本。
-
当您将 RDS Custom for Oracle 数据库实例升级到新的 CEV 时,RDS Custom 会执行异地修补,用使用目标数据库版本的新卷替换整个数据库卷。因此,我们强烈建议您不要使用
bin
卷来进行安装或存储永久数据或文件。 -
升级容器数据库(CDB)时,RDS Custom for Oracle 会检查所有 PDB 是否已打开或是否能够打开。如果不满足这些条件,RDS Custom 会停止检查并将数据库返回到其原始状态,而无需尝试升级。如果满足条件,RDS Custom 首先修补 CDB 根目录,然后并行修补所有其他 PDB(包括
PDB$SEED
)。修补过程完成后,RDS Custom 会尝试打开所有 PDB。如果任何 PDB 无法打开,则会收到以下事件:
The following PDBs failed to open:
。如果 RDS Custom 无法修补 CDB 根目录或任何 PDB,则实例将进入list-of-PDBs
PATCH_DB_FAILED
状态。 -
您可能需要同时执行主要版本升级和将非 CDB 转换为 CDB。在这种情况下,我们建议您按以下步骤操作:
-
创建一个使用 Oracle 多租户架构的新 RDS Custom 数据库实例。
-
将非 CDB 插入 CDB 根目录,将其创建为 PDB。确保非 CDB 与您的 CDB 是相同的主要版本。
-
通过运行
noncdb_to_pdb.sql
Oracle 脚本来转换您的 PDB。 -
验证您的 CDB 实例。
-
升级 CDB 实例。
-
查看 RDS Custom for Oracle 数据库实例的有效升级目标
您可以在 AWS Management Console 中的 Custom engine version(自定义引擎版本)页面中查看现有的 CEV。
您也可以使用 describe-db-engine-versions AWS CLI 命令查找适用于数据库实例的有效升级,如以下示例所示。此示例假设数据库实例是使用版本 19.my_cev1 创建的,而且升级版本 19.my_cev2 和 19.my_cev 存在。
aws rds describe-db-engine-versions --engine custom-oracle-ee --engine-version 19.my_cev1
输出与以下内容类似。
{ "DBEngineVersions": [ { "Engine": "custom-oracle-ee", "EngineVersion": "19.my_cev1", ... "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 数据库实例
要升级您的 RDS Custom 数据库实例,请将其修改为使用新的 CEV。
升级主数据库实例后,RDS Custom 管理的只读副本将自动升级。
要升级 RDS Custom 数据库实例
登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,请选择 Databases(数据库),然后选择要修改的 RDS Custom 数据库实例。
-
选择修改。将显示修改数据库实例页面。
-
对于 DB engine version(数据库引擎版本),请选择要升级到的 CEV,例如
19.my_cev3
。 -
请选择 Continue(继续),以查看修改摘要。
请选择 Apply immediately(立即应用)以立即应用更改。
-
如果更改正确无误,请选择 Modify DB Instance(修改数据库实例)。也可以选择 Back (返回) 编辑您的更改,或选择 Cancel (取消) 取消更改。
要升级 RDS Custom 数据库实例,请使用带有下列参数的 modify-db-instance AWS CLI 命令:
-
--db-instance-identifier
– 要升级的数据库实例 -
--engine-version
– 新的 CEV -
--no-apply-immediately
|--apply-immediately
– 是立即执行升级还是等到计划的维护时段
以下示例将 my-custom-instance
升级到版本 19.my_cev3
。
对于 Linux、macOS 或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
my-custom-instance
\ --engine-version19.my_cev3
\ --apply-immediately
对于 Windows:
aws rds modify-db-instance ^ --db-instance-identifier
my-custom-instance
^ --engine-version19.my_cev3
^ --apply-immediately
查看 RDS Custom 数据库实例的待定升级
您可以使用 describe-db-instances 或 describe-pending-maintenance-actions AWS CLI 命令查看 Amazon RDS Custom 数据库实例的待定升级。
但是,如果您使用 --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" ... } } ] }
下方显示了 describe-pending-maintenance-actions
命令的使用情况。
aws rds describe-pending-maintenance-actions
输出与以下内容类似。
{ "PendingMaintenanceActions": [ { "ResourceIdentifier": "arn:aws:rds:
us-west-2
:123456789012
:instance:my-custom-instance", "PendingMaintenanceActionDetails": [ { "Action": "db-upgrade", "Description": "Upgrade to 19.my_cev3" } ] } ] }
排查 RDS Custom for Oracle 数据库实例升级失败的问题
如果 RDS Custom 数据库实例升级失败,将生成 RDS 事件并且数据库实例状态变为 upgrade-failed
。
您可以使用 describe-db-instances 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" } ] }
升级失败后,所有数据库操作都将被阻止,修改数据库实例以执行以下任务除外:
-
重试相同的升级
-
暂停和恢复 RDS Custom 自动化
-
时间点恢复 (PITR)
-
删除数据库实例
注意
如果已为 RDS Custom 数据库实例暂停自动化操作,则在恢复自动化之前,您将无法重试升级。
RDS 管理的只读副本的升级失败与主副本的升级失败情况适用相同的操作。
有关更多信息,请参阅 排查 RDS Custom for Oracle 的升级问题。