

# RDS Custom for Oracle 复制的指南和限制
<a name="custom-rr.reqs-limitations"></a>

创建 RDS Custom for Oracle 副本时，并非所有 RDS Oracle 副本选项都受支持。

**Topics**
+ [RDS Custom for Oracle 复制的一般指南](#custom-rr.guidelines)
+ [RDS Custom for Oracle 复制的一般限制](#custom-rr.limitations)
+ [RDS Custom for Oracle 复制的网络要求和限制](#custom-rr.network)
+ [RDS Custom for Oracle 的外部副本限制](#custom-rr.external-replica-reqs)

## RDS Custom for Oracle 复制的一般指南
<a name="custom-rr.guidelines"></a>

使用 RDS Custom for Oracle 时，请遵循以下指南：
+ 您只能在 Oracle Enterprise Edition 中使用 RDS Custom for Oracle 复制。不支持 Standard Edition 2。
+ 强烈建议您实施 VPN 隧道来加密主实例和备用实例之间的通信。有关更多信息，请参阅 [在 RDS Custom for Oracle 主实例和副本实例之间配置 VPN 隧道](cfo-standby-vpn-tunnel.md)。
+ 不要修改 `RDS_DATAGUARD` 用户。此用户保留用于 RDS Custom for Oracle 自动化。修改此用户可能会导致不希望的结果，例如无法为 RDS Custom for Oracle 数据库实例创建 Oracle 副本。
+ 不要更改复制用户密码。管理 RDS Custom 主机上的 Oracle Data Guard 配置需要使用此密码。如果您更改密码，RDS Custom for Oracle 可能会将您的 Oracle 副本置于支持外围之外。有关更多信息，请参阅 [RDS Custom 支持外围](custom-concept.md#custom-troubleshooting.support-perimeter)。

  此密码存储在 AWS Secrets Manager 中，用数据库资源 ID 进行标记。每个 Oracle 副本在 Secret Manager 中都有自己的密钥。密钥使用以下任一命名格式。

  ```
  do-not-delete-rds-custom-db-DB_resource_id-uuid-dg
  rds-custom!oracle-do-not-delete-DB_resource_id-uuid-dg
  ```
+ 不要更改主数据库实例的 `DB_UNIQUE_NAME`。更改名称会导致任何还原操作卡住。
+ 不要在 RDS Custom CDB 的 `CREATE PLUGGABLE DATABASE` 命令中指定子句 `STANDBYS=NONE`。这样，如果发生失效转移，您的备用 CDB 将包含所有 PDB。

## RDS Custom for Oracle 复制的一般限制
<a name="custom-rr.limitations"></a>

RDS Custom for Oracle 副本具有以下限制：
+ 无法在只读模式下创建 RDS Custom for Oracle 副本。但是，您可以将已挂载副本的模式手动更改为只读，以及从只读更改为已挂载。有关更多信息，请参阅 [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html) AWS CLI 命令的文档。
+ 您无法创建跨区域 RDS Custom for Oracle 副本。
+ 您无法更改 Oracle Data Guard `CommunicationTimeout` 参数的值。对于 RDS Custom for Oracle 数据库实例，此参数设置为 15 秒。

## RDS Custom for Oracle 复制的网络要求和限制
<a name="custom-rr.network"></a>

确保您的网络配置支持 RDS Custom for Oracle 副本。请考虑以下事项：
+ 确保为主数据库实例和其所有副本的虚拟私有云（VPC）内的入站和出站通信启用端口 1140。这对于只读副本之间的 Oracle Data Guard 通信是必需的。
+ RDS Custom for Oracle 会在创建 Oracle 副本时对网络进行验证。如果主数据库实例和新副本无法通过网络连接，则 RDS Custom for Oracle 不会创建副本并将其置于 `INCOMPATIBLE_NETWORK` 状态。
+ 对于外部 Oracle 副本，例如您在 Amazon EC2 或本地创建的只读副本，请使用另一个端口和侦听器进行 Oracle Data Guard 复制。尝试使用端口 1140 可能会导致与 RDS Custom 自动化发生冲突。
+ `/rdsdbdata/config/tnsnames.ora` 文件包含映射到侦听器协议地址的网络服务名称。请注意以下要求和建议：
  + 当处理 Oracle 副本操作时，`tnsnames.ora` 中前缀为 `rds_custom_` 的条目保留用于 RDS Custom。

    在 `tnsnames.ora` 中创建手动条目时，不要使用此前缀。
  + 在某些情况下，您可能希望手动切换或进行失效转移，或者使用快速启动失效转移 (FSFO) 等失效转移技术。如果是这样，请确保将 `tnsnames.ora` 条目从主数据库实例手动同步到所有备用实例。此建议同时适用于 RDS Custom 管理的 Oracle 副本和外部 Oracle 副本。

    RDS Custom 自动化只会更新主数据库实例上的 `tnsnames.ora` 条目。请务必在添加或删除 Oracle 副本时也要进行同步。

    如果您不同步 `tnsnames.ora` 文件并且手动切换或失效转移，主数据库实例上的 Oracle Data Guard 可能无法与 Oracle 副本进行通信。

## RDS Custom for Oracle 的外部副本限制
<a name="custom-rr.external-replica-reqs"></a>

 RDS Custom for Oracle 外部副本（包括本地副本）具有以下限制：
+ RDS Custom for Oracle 在手动失效转移（如 FSFO）时不会检测到外部 Oracle 副本的实例角色更改。

  RDS Custom for Oracle 的确会检测托管式副本的更改。角色更改在事件日志中进行了记录。您还可以通过使用 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 命令查看新状态。
+ RDS Custom for Oracle 不检测到外部 Oracle 副本的高复制滞后。

  RDS Custom for Oracle 的确会检测托管式副本的滞后。高复制滞后会产生 `Replication has stopped` 事件。您还可以通过使用 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 命令查看复制状态，但它的更新可能会延迟。
+ 如果您删除主数据库实例，RDS Custom for Oracle 不会自动提升外部 Oracle 副本。

  自动提升功能仅适用于托管式 Oracle 副本。有关手动提升 Oracle 副本的信息，请参阅白皮书[在 Amazon RDS Custom for Oracle 上使用 Data Guard 启用高可用性](https://d1.awsstatic.com/whitepapers/enabling-high-availability-with-data-guard-on-amazon-rds-custom-for-oracle.pdf)。