

# Oracle 数据库升级注意事项
<a name="USER_UpgradeDBInstance.Oracle.OGPG"></a>

在升级 Oracle 实例之前，请查看以下信息。

**Topics**
+ [Oracle 多租户注意事项](#USER_UpgradeDBInstance.Oracle.multi)
+ [选项组注意事项](#USER_UpgradeDBInstance.Oracle.OGPG.OG)
+ [参数组注意事项](#USER_UpgradeDBInstance.Oracle.OGPG.PG)
+ [时区注意事项](#USER_UpgradeDBInstance.Oracle.OGPG.DST)
+ [Spatial 补丁包（SPB）注意事项](#USER_UpgradeDBInstance.Oracle.SPB)

## Oracle 多租户注意事项
<a name="USER_UpgradeDBInstance.Oracle.multi"></a>

下表介绍了不同版本中支持的 Oracle 数据库架构。


| Oracle Database 版本 | RDS 支持状态 | 架构 | 
| --- | --- | --- | 
|  Oracle Database 21c  | 支持 |  仅 CDB  | 
|  Oracle Database 19c  | 支持 |  CDB 或非 CDB  | 

下表描述了支持和不支持的升级途径。


| 升级途径 | 是否支持？ | 
| --- | --- | 
|  CDB 升级至 CDB  |  是  | 
|  非 CDB 升级至 CDB  |  否，但您可以将非 CDB 转换为 CDB，然后对其进行升级  | 
|  CDB 升级至非 CDB  |  否  | 

有关 RDS for Oracle 中 Oracle 多租户的更多信息，请参阅[CDB 架构的单租户配置](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant)。

## 选项组注意事项
<a name="USER_UpgradeDBInstance.Oracle.OGPG.OG"></a>

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

有关更多信息，请参阅 [创建选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 或 [复制选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy)。

如果数据库实例使用包含 `APEX` 和 `APEX-DEV` 选项的自定义选项组，您有时可以减少升级用时。为此，请在升级数据库实例的同时升级 Oracle APEX 版本。有关更多信息，请参阅 [升级 Oracle APEX 版本](Appendix.Oracle.Options.APEX.UpgradeandRemove.md#Appendix.Oracle.Options.APEX.Upgrade)。

## 参数组注意事项
<a name="USER_UpgradeDBInstance.Oracle.OGPG.PG"></a>

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

有关更多信息，请参阅 [在 Amazon RDS 中创建数据库参数组](USER_WorkingWithParamGroups.Creating.md) 或 [在 Amazon RDS 中复制数据库参数组](USER_WorkingWithParamGroups.Copying.md)。

## 时区注意事项
<a name="USER_UpgradeDBInstance.Oracle.OGPG.DST"></a>

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

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

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

如果升级 RDS for Oracle 数据库实例，Amazon RDS 不会自动升级数据库时区文件。要自动升级时区文件，您可以在引擎版本升级期间或之后与数据库实例关联的选项组中添加 `TIMEZONE_FILE_AUTOUPGRADE` 选项。有关更多信息，请参阅 [Oracle 时区文件自动升级](Appendix.Oracle.Options.Timezone-file-autoupgrade.md)。

或者，要手动升级数据库时区文件，请创建具有所需 DST 补丁的新 Oracle 数据库实例。但是，我们建议您使用 `TIMEZONE_FILE_AUTOUPGRADE` 选项来升级数据库时区文件。

升级时区文件后，将数据从您的当前实例迁移到新实例。您可以使用多种技术迁移数据，包括：
+ AWS Database Migration Service
+ Oracle GoldenGate
+ Oracle Data Pump
+ 原始导出/导入（不再支持一般用途）

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

有关更多信息，请参阅 Oracle 文档中的 [TIMESTAMP WITH TIMEZONE 限制](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-9B6C92EE-860E-43DD-9728-735B17B9DA89)。

## Spatial 补丁包（SPB）注意事项
<a name="USER_UpgradeDBInstance.Oracle.SPB"></a>

在 RDS for Oracle 中，版本更新（RU）是次要引擎版本，其中包括 Oracle Database 的安全修复、错误修复和新功能。Spatial 补丁包（SPB）是次要引擎版本，其中也包含专为 Oracle Spatial 选项设计的补丁。例如，19.0.0.0.ru-2025-01.spb-1.r1 是一个次要引擎版本，其中包含引擎版本 19.0.0.0.ru-2025-01.rur-2025-01.r1 中的 RU 补丁以及 Spatial 补丁。

将数据库升级到 SPB 时，请考虑以下事项：
+ 只有 Oracle Database 19c 才支持 SPB。
+ 通常，SPB 在其相应的季度 RU 发布后的 2-3 周内发布。
+ 即使数据库实例不使用 Oracle Spatial 选项，也可以将该实例升级到 SPB，但引擎版本中的 Spatial 补丁仅适用于 Oracle Spatial。您可以在 SPB 上创建新实例，稍后再安装 Oracle Spatial 选项。
+ 如果您为数据库实例启用自动次要版本升级，则升级途径取决于您的实例当前使用的是 SPB 还是 RU。如果您的实例使用 SPB，则 RDS 会自动将您的实例升级到最新的 SPB。如果您的实例使用 RU，则 RDS 会自动将您的实例升级到最新的 RU。
+ 只有当 SPB 的引擎版本与当前 RU 相同或更高时，才能手动将数据库实例从 RU 升级到 SPB。
+ 只有当 RU 为更高版本时，才能手动将数据库实例从 SPB 升级到 RU。