

# RDS for Oracle 副本的要求和注意事项
<a name="oracle-read-replicas.limitations"></a>

在创建 Oracle 副本之前，请先熟悉以下要求和注意事项。

**Topics**
+ [RDS for Oracle 副本的版本和许可要求](#oracle-read-replicas.limitations.versions-and-licenses)
+ [RDS for Oracle 副本的选项组限制](#oracle-read-replicas.limitations.options)
+ [RDS for Oracle 的备份和还原注意事项](#oracle-read-replicas.limitations.backups)
+ [RDS for Oracle 副本的 Oracle Data Guard 要求和限制](#oracle-read-replicas.data-guard.requirements)
+ [RDS for Oracle 副本的多租户配置限制](#oracle-read-replicas.limitations.multitenant)
+ [RDS for Oracle 副本的其他注意事项](#oracle-read-replicas.limitations.miscellaneous)

## RDS for Oracle 副本的版本和许可要求
<a name="oracle-read-replicas.limitations.versions-and-licenses"></a>

在创建 RDS for Oracle 副本之前，请考虑以下事项：
+ 如果副本处于只读模式，请确保您拥有 Active Data Guard 许可证。如果将副本置于装载模式，则不需要 Active Data Guard 许可证。只有 Oracle 数据库引擎支持装载副本。
+ Oracle 副本仅受 Oracle Enterprise Edition（EE）支持。
+ 仅使用运行 Oracle Database 19c 的非 CDB 实例创建的数据库实例支持非 CDB 的 Oracle 副本。
+ Oracle 副本仅适用于在具有两个或更多 vCPU 的数据库实例类上运行的数据库实例。源数据库实例不能使用 db.t3.small 实例类。
+ 源数据库实例及其所有副本的 Oracle 数据库引擎版本必须相同。无论副本的维护时段为何时，Amazon RDS 都会在升级源数据库实例后立即升级副本。对于跨区域副本的主要版本升级，Amazon RDS 会自动执行以下操作：
  + 为目标版本生成选项组。
  + 将所有选项和选项设置从原始选项组复制到新选项组。
  + 将升级后的跨区域副本与新选项组关联。

  有关升级数据库引擎版本的更多信息，请参阅[升级 RDS for Oracle 数据库引擎](USER_UpgradeDBInstance.Oracle.md)。

## RDS for Oracle 副本的选项组限制
<a name="oracle-read-replicas.limitations.options"></a>

使用 RDS for Oracle 副本的选项组时，请考虑以下事项：
+ 当源和副本位于同一 AWS 区域时，您不能使用与源数据库实例选项组不同的副本选项组。

  对源选项组或源选项组成员资格做出的修改会传播到 Oracle 副本。不管副本的维护时段是什么，这些更改在应用到源数据库实例后，都会立即应用到副本。有关选项组的更多信息，请参阅 [使用选项组](USER_WorkingWithOptionGroups.md)。
+ 您无法从自动为 RDS for Oracle 跨区域副本创建的专用选项组中删除该副本。
+ 您无法将 RDS for Oracle 跨区域副本的专用选项组添加到其他数据库实例。
+ 您无法从 RDS for Oracle 跨区域副本的专用选项组中添加或移除非复制选项，但以下选项除外：
  + `NATIVE_NETWORK_ENCRYPTION`
  + `OEM`
  + `OEM_AGENT`
  + `SSL`

  要将其他选项添加到 RDS for Oracle 跨区域副本，请将它们添加到源数据库实例的选项组中。选项还会安装在源数据库实例的所有副本上。对于许可选项，请确保副本具有足够的许可证。

  提升 RDS for Oracle 跨区域副本时，提升后的副本的行为将与其他 Oracle 数据库实例的行为相同，包括其选项的管理。您可以通过删除副本的源数据库实例来显式或隐式提升副本。

  有关选项组的更多信息，请参阅 [使用选项组](USER_WorkingWithOptionGroups.md)。
+ 您无法向 RDS for Oracle 跨区域副本添加 `EFS_INTEGRATION` 选项。

## RDS for Oracle 的备份和还原注意事项
<a name="oracle-read-replicas.limitations.backups"></a>

在创建 RDS for Oracle 副本之前，请考虑以下事项：
+ 要创建 RDS for Oracle 副本的快照或开启自动备份，请确保手动设置备份保留期。原定设置情况下，自动备份处于开启状态。
+ 还原副本备份时，将还原到数据库时间，而不是进行备份的时间。数据库时间指备份中数据的最新应用的事务时间。差异很大，因为副本可能会落后于主数据库数分钟或数小时。

  要查找差异，请使用 `describe-db-snapshots` 命令。比较 `snapshotDatabaseTime`（这是副本备份的数据库时间）与 `OriginalSnapshotCreateTime` 字段（这是主数据库上最新应用的事务）。

## RDS for Oracle 副本的 Oracle Data Guard 要求和限制
<a name="oracle-read-replicas.data-guard.requirements"></a>

在创建 RDS for Oracle 副本之前，请注意以下要求和限制：
+ 如果您的主数据库实例使用多租户架构的单租户或多租户配置，请考虑以下几点：
  + 您必须将 Oracle Database 19c 或更高版本与企业版一起使用。
  + 您的主 CDB 实例必须位于 `ACTIVE` 生命周期。
  + 您不能将非 CDB 主实例转换为 CDB 实例，也不能在同一操作中转换其副本。而是应删除非 CDB 副本，将主数据库实例转换为 CDB，然后创建新的副本。
+ 确保主数据库实例上的登录触发器允许 `RDS_DATAGUARD` 用户以及 `AUTHENTICATED_IDENTITY` 值为 `RDS_DATAGUARD` 或 `rdsdb` 的任何用户进行访问。此外，触发器不得为 `RDS_DATAGUARD` 用户设置当前架构。
+ 为了避免阻止来自 Data Guard 代理进程的连接，请不要启用受限会话。有关受限会话的更多信息，请参阅 [启用和禁用受限制的会话](Appendix.Oracle.CommonDBATasks.RestrictedSession.md)。

## RDS for Oracle 副本的多租户配置限制
<a name="oracle-read-replicas.limitations.multitenant"></a>

在 RDS for Oracle 副本上使用多租户配置时，请注意以下限制：
+ 您只能在主数据库实例上创建、删除或修改租户数据库。这些更改会自动传播到副本。
+ 无法使用自定义字符集创建 RDS for Oracle 主实例、源或副本上的租户数据库。如果您需要自定义字符集，请在为数据库实例创建只读副本之前创建租户数据库。

## RDS for Oracle 副本的其他注意事项
<a name="oracle-read-replicas.limitations.miscellaneous"></a>

在创建 RDS for Oracle 副本之前，请考虑以下事项：
+ 当您为具有附加存储卷的数据库实例创建 RDS for Oracle 副本时，RDS 会自动在副本上配置附加存储卷。但是，在主数据库实例的存储卷中所做的任何后续修改都不会自动应用于副本。
+ 如果您在主数据库实例中添加附加存储卷，RDS 不会自动向副本添加附加存储卷。您需要修改副本才能添加附加存储卷。
+ 如果您修改主数据库实例中的存储卷配置，例如存储大小和 IOPS，则 RDS 不会自动修改副本中的存储卷。您需要修改副本才能更新存储卷配置。
+ 在跨卷管理数据文件位置时，请注意，在主实例上所做的更改不会自动同步到副本。
  + 对于只读副本：您可以使用参数组设置来控制默认文件位置，也可以在创建文件后手动移动文件。
  + 对于挂载的副本：手动更改主数据库中数据文件位置要求重新创建挂载的副本以反映这些更改。为避免这种情况，我们建议使用参数组设置来管理默认文件位置。
+ 如果您的数据库实例是一个或多个跨区域副本的源，该源数据库将会保留其归档重做日志文件，直到在所有跨区域副本上应用这些日志文件为止。存档重做日志可能会导致存储消耗增加。
+ 为避免 RDS 自动化发生中断，系统触发器必须允许特定用户登录主数据库和副本数据库。[系统触发器](https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/plsql-triggers.html#GUID-FE23FCE8-DE36-41EF-80A9-6B4B49E80E5B)包括 DDL、登录和数据库角色触发器。我们建议您向触发器添加代码，来排除以下示例代码中列出的用户：

  ```
  -- Determine who the user is
  SELECT SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') INTO CURRENT_USER FROM DUAL;
  -- The following users should always be able to login to either the Primary or Replica
  IF CURRENT_USER IN ('master_user', 'SYS', 'SYSTEM', 'RDS_DATAGUARD', 'rdsdb') THEN
  RETURN;
  END IF;
  ```
+ 只读副本支持块更改跟踪，但装载副本不支持。您可以将装载副本更改为只读副本，然后启用块更改跟踪。有关更多信息，请参阅 [启用和禁用数据块更改跟踪](Appendix.Oracle.CommonDBATasks.BlockChangeTracking.md)。
+ 当源数据库使用 Secrets Manager 管理主用户凭证时，您无法创建 Oracle 只读副本。