升级 Oracle 数据库引擎 - Amazon Relational Database Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

升级 Oracle 数据库引擎

如果 Amazon RDS 支持新版本的 Oracle,您可以将数据库实例升级到新版本。有关在 Amazon RDS 上可用的 Oracle 版本的信息,请参阅 Oracle 数据库引擎发行说明

重要

RDS for Oracle Database 11g 已弃用。如果您有 Oracle Database 11g 快照,可以将其升级到更高版本。有关更多信息,请参阅 升级 Oracle 数据库快照

Oracle 数据库引擎升级概述

升级 Oracle 数据库实例之前,请熟悉以下概念。

主要和次要版本升级

Amazon RDS 支持对 Oracle 数据库实例进行以下升级:

  • 主要版本升级。

    通常,数据库引擎的主要版本升级 可能会引入与现有应用程序不兼容的更改。要将数据库实例升级到主要版本,您必须手动执行操作。

  • 次要版本升级

    次要版本升级 仅包含与现有应用程序向后兼容的更改。如果您在数据库实例上启用自动次要版本升级,次要版本升级将自动进行。在所有其他情况下,您可以手动升级数据库实例。

您更新数据库引擎时,发生中断。中断时长取决于引擎版本和实例大小。

Oracle 引擎版本管理

利用数据库引擎版本管理,您可以控制修补和升级数据库引擎的时间和方式。您可以灵活地保持与数据库引擎补丁版本的兼容性。您还可以测试新的补丁程序版本,确保您在将这些补丁程序部署到生产中之前,它们能够与您的应用程序一起工作。此外,您可以根据自己的条款和时间表升级版本。

注意

Amazon RDS 使用 Amazon RDS 特定的数据库引擎版本定期汇总官方 Oracle 数据库补丁。要查看某个 Amazon RDS Oracle 特定引擎版本中包含的 Oracle 补丁的列表,请转到 Oracle 数据库引擎发行说明

在引擎升级期间自动拍摄快照

升级 Oracle 数据库实例时,快照可防止出现升级问题。如果数据库实例的备份保留期大于 0,Amazon RDS 在升级过程中拍摄以下数据库快照:

  1. 在进行任何升级更改之前数据库实例的快照。如果升级失败,您可以还原此快照,以创建运行旧版本的数据库实例。

  2. 升级完成后的数据库实例快照。

注意

要更改您的备份保留期,请参阅 修改 Amazon RDS 数据库实例

升级后,您无法恢复到以前的引擎版本。但是,您可以通过恢复升级前的快照来创建新的 Oracle 数据库实例。

多可用区部署中的 Oracle 升级

如果数据库实例在多可用区部署中,Amazon RDS 会同时升级主要副本和备用副本。如果不需要操作系统更新,则主升级和备用升级同时进行。在升级完成之前,这些实例不可用。

如果多可用区部署中需要操作系统更新,则 Amazon RDS 会在您请求数据库升级时应用更新。Amazon RDS 执行以下步骤:

  1. 更新备用数据库实例上的操作系统。

  2. 升级备用数据库实例。

  3. 将主实例故障转移到备用数据库实例。

  4. 升级以前是主实例的新备用数据库实例上的操作系统。

  5. 升级新的备用数据库实例。

只读副本的 Oracle 升级

源数据库实例及其所有只读副本的 Oracle 数据库引擎版本必须相同。Amazon RDS 在以下阶段执行升级:

  1. 升级源数据库实例。只读副本在此阶段可用。

  2. 并行升级只读副本,而不考虑副本维护时段。源数据库在此阶段可用。

对于跨区域只读副本的主要版本升级,Amazon RDS 执行其他操作:

  • 自动为目标版本生成选项组

  • 将所有选项和选项设置从原始选项组复制到新选项组

  • 将升级的跨区域只读副本与新选项组关联

微型数据库实例的 Oracle 升级

我们不建议升级在微型数据库实例上运行的数据库。由于这些实例的 CPU 有限,因此升级可能需要几个小时才能完成。

您可以通过使用数据转储复制数据来升级具有少量存储空间 (10–20 GiB) 的微型数据库实例。在迁移生产数据库实例之前,我们建议您使用数据转储复制数据进行测试。

主要版本升级。

Amazon RDS 支持以下主要版本升级。

要执行主要版本升级,请手动修改数据库实例。主要版本升级不会自动进行。

主要版本升级支持的版本

Amazon RDS 支持以下主要版本升级。

当前版本 支持升级

18.0.0.0

19.0.0.0

12.2.0.1

19.0.0.0

18.0.0.0

12.1.0.2

19.0.0.0

18.0.0.0

12.2.0.1

Oracle 数据库的主要版本升级必须升级到在同一个月或更晚发布的版本更新 (RU)。任何 Oracle 版本都不支持主要版本降级。

主要版本升级支持的实例类

您当前的 Oracle 数据库实例可能在您要升级到的版本不支持的数据库实例类上运行。在这种情况下,在升级之前,请将数据库实例迁移到受支持的数据库实例类。有关 Amazon RDS Oracle 的每个版本支持的数据库实例类的更多信息,请参阅 数据库实例类

在主要版本升级之前收集统计信息

在执行主要版本升级前,Oracle 建议您对您要升级的数据库实例收集优化器统计数据。此操作可以减少升级过程中的数据库实例停机时间。

要收集优化器统计数据,请以主用户身份连接到数据库实例,然后运行以下 DBMS_STATS.GATHER_DICTIONARY_STATS 过程,如以下示例所示。

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

有关更多信息,请参阅 Oracle 文档中的收集优化程序统计数据以减少 Oracle 数据库停机时间

允许主要版本升级

主要引擎版本升级可能与您的应用程序不兼容。升级是不可逆的。如果为 EngineVersion 参数指定的主要版本与当前主要版本不同,则必须允许主要版本升级。

如果使用 CLI 命令 modify-db-instance 升级主要版本,请指定 --allow-major-version-upgrade。由于此设置不具备持久性,因此只要执行主要升级,就必须指定 --allow-major-version-upgrade。此参数对次要引擎版本的升级没有影响。有关更多信息,请参阅 升级数据库实例 引擎版本

如果您使用控制台升级主要版本,则无需选择允许升级的选项。相反,控制台会显示一条警告,指出主要升级是不可逆的。

Oracle 次要版本升级

执行次要版本升级时,会在主要版本中应用 Oracle 数据库补丁集更新 (PSU) 或版本更新 (RU)。

Amazon RDS for Oracle 数据库实例在满足下列条件时,将计划在下个维护时段中自动升级:

  • 数据库实例启用了自动次要版本升级选项。

  • 数据库实例没有运行最新次要数据库引擎版本。

在提供了适用于 Amazon RDS for Oracle 的每季度 PSU 或 RU 的四到六周之后,数据库实例会升级到最新版本。有关 PSU 和 RU 的更多信息,请参阅Oracle 数据库引擎发行说明

不支持以下次要版本升级。

当前版本 不支持升级

12.1.0.2.v6

12.1.0.2.v7

12.1.0.2.v5

12.1.0.2.v7

12.1.0.2.v5

12.1.0.2.v6

注意

不支持次要版本降级。

Oracle SE2 升级路径

下表显示了所支持的升级到标准版 2 (SE2) 的路径。有关附带许可模式和自带许可 (BYOL) 模型的更多信息,请参阅 Oracle 许可选项

您的现有配置 支持的 SE2 配置

12.2.0.1 SE2,BYOL

12.2.0.1 SE2,BYOL 或附带许可

12.1.0.2 SE2,BYOL

12.2.0.1 SE2,BYOL 或附带许可

12.1.0.2 SE2,BYOL 或附带许可

要从现有配置升级到支持的 SE2 配置,请使用一个支持的升级路径。有关更多信息,请参阅 主要版本升级。

Oracle 数据库升级注意事项

在升级之前,请查看选项组、参数组和时区的含义。

选项组注意事项

如果您的数据库实例使用自定义选项组,Amazon RDS 有时会无法自动分配新的选项组。例如,在升级到新的主要版本时,会发生这种情况。在这种情况下,请在升级时指定新的选项组。我们建议您创建新的选项组,然后向该组添加与现有自定义选项组相同的选项。

有关更多信息,请参阅 创建选项组复制选项组

如果数据库实例使用包含 APEX 选项的自定义选项组,您有时可以减少升级用时。为此,请与数据库实例同时升级您的 APEX 版本。有关更多信息,请参阅 升级 APEX 版本

参数组注意事项

如果数据库实例使用自定义参数组,则有时 Amazon RDS 无法自动向数据库实例分配新的参数组。例如,在升级到新的主要版本时,会发生这种情况。在这种情况下,请确保在升级时指定一个新的参数组。我们建议您创建新参数组,然后配置您现有的自定义参数组中的那些参数。

有关更多信息,请参阅 创建数据库参数组复制数据库参数组

时区注意事项

您可以使用时区选项更改您的 Oracle 数据库实例使用的系统时区。例如,您可能需要更改数据库实例的时区,从而与本地环境或旧版应用程序兼容。时区选项在主机级别更改时区。Amazon RDS for Oracle 全年自动更新系统时区。有关更改系统时区的更多信息,请参阅 Oracle 时区

创建 Oracle 数据库实例时,数据库会自动设置数据库时区。数据库时区也称为夏令时 (DST) 时区。数据库时区不同于系统时区。

在 Oracle 数据库版本之间,补丁集或单个补丁可能包含新的 DST 版本。这些补丁反映不同时区区域的转换规则变化。例如,政府可能会更改 DST 生效的时间。对 DST 规则的更改可能会影响 TIMESTAMP WITH TIME ZONE 数据类型的现有数据。

如果升级 RDS for Oracle 实例,Amazon RDS 不会自动升级数据库时区。要手动升级数据库时区,请创建具有所需 DST 补丁的新 Oracle 数据库实例。然后将数据从您的当前实例迁移到新实例。您可以使用多种技术迁移数据,包括:

  • Oracle GoldenGate

  • AWS Database Migration Service

  • Oracle Data Pump

  • 原始导出/导入(不再支持一般用途)

注意

使用 Oracle Data Pump 迁移数据时,当目标时区版本低于源时区版本时,此实用程序会引发错误 ORA-39405。

有关更多信息,请参阅 Oracle 文档中的 TIMESTAMP WITH TIMEZONE 限制

为 Oracle Database 18c 的自动升级做好准备

Amazon RDS 计划于 2021 年 7 月 1 日开始自动将 Oracle Database 18c 实例升级到 Oracle Database 19c。不保证自动升级在您的维护窗口中进行。所有 Oracle Database 18c 实例(包括预留实例)将移到最新的可用版本更新 (RU)。

在自动升级开始之前,我们强烈建议您将现有 Oracle Database 18c 数据库实例手动升级到 Oracle Database 19c。手动升级时,您可以验证应用程序能否正常运行。为避免自动升级,请在 2021 年 7 月 1 日之前使用以下策略之一。

升级您的 Oracle Database 18c 数据库实例

您可以将 Oracle Database 18c 实例升级到 Oracle Database 19c。升级前,请考虑以下事项:

  • 升级后,您的 SQL 语句的表现可能会有所不同。如果是这样,您可以使用 OPTIMIZER_FEATURES_ENABLE 参数来保留 Oracle Database 18c 优化器的行为。有关更多信息,请参阅 Oracle 文档中的 Influencing the Optimizer

  • 如果您在 BYOL 模型上有对 Oracle Database 18c 的扩展支持,请考虑其影响。在这种情况下,您必须拥有 Oracle Support for Oracle Database 19c 扩展支持协议。有关 BYOL 许可和支持要求的详细信息,请参阅 Amazon RDS for Oracle 常见问答

升级您的 Oracle Database 18c 数据库快照

您可以将现有快照升级到 Oracle Database 19c,然后进行恢复。有关更多信息,请参阅 升级 Oracle 数据库快照

如果您计划使用快照进行升级,避免自动升级的计划截止日期为 2021 年 6 月 30 日。

降级您的 Oracle Database 18c 数据库实例

您可能会决定不将数据库实例升级到 Oracle Database 19c。在这种情况下,您可以将实例降级到 Oracle Database 版本 1 (12.1.0.2) 或版本 2 (12.2.0.1)。您可以使用以下方法:

  • Oracle Data Pump

  • AWS Database Migration Service (DMS)

  • 任何支持的逻辑复制工具

有关导入选项的更多信息,请参阅 将数据导入到 Amazon RDS 上的 Oracle

测试 Oracle 数据库升级

在将数据库实例上升级到主要版本前,应该彻底地测试数据库以及访问该数据库的所有应用程序,了解是否与新版本兼容。我们建议您使用以下过程。

测试主要版本升级

  1. 检查新版数据库引擎的 Oracle 升级文档以了解是否存在可能会影响数据库或应用程序的兼容性问题。有关更多信息,请参阅 Oracle 文档中的数据库升级指南

  2. 如果数据库实例使用自定义选项组,则创建与您正升级到的新版本兼容的新选项组。有关更多信息,请参阅 选项组注意事项

  3. 如果数据库实例使用自定义参数组,则创建与您正升级到的新版本兼容的新参数组。有关更多信息,请参阅参数组注意事项

  4. 为要升级的数据库实例创建数据库快照。有关更多信息,请参阅创建数据库快照

  5. 恢复数据库快照,以便创建一个新的测试数据库实例。有关更多信息,请参阅从数据库快照还原

  6. 使用下面介绍的一种方法来修改此新测试数据库实例,以将其升级到新版本:

  7. 执行测试:

    • 对升级的数据库实例运行所需次数的质量保证测试以确保数据库和应用程序可正常使用新版本。

    • 实施任何必需的新测试,评估您在步骤 1 中发现的任何兼容性问题的影响。

    • 测试存储的所有过程、函数和触发器。

    • 将应用程序的测试版本指向所升级的数据库实例。验证各应用程序可与新版本一起正常使用。

    • 计算升级的实例使用的存储容量以决定升级是否需要额外的存储容量。为了在生产中支持新版本,您可能需要选择较大的实例类。有关更多信息,请参阅 数据库实例类

  8. 如果所有测试都通过,请升级您的生产数据库实例。我们建议您在允许对数据库实例进行写入操作之前确认数据库实例是否正常工作。

升级 Oracle 数据库实例

有关手动或自动升级 Oracle 数据库实例的信息,请参阅升级数据库实例 引擎版本