使用适用于 Amazon RDS 的 Oracle 副本 - Amazon Relational Database Service

使用适用于 Amazon RDS 的 Oracle 副本

要在 Oracle 数据库实例之间配置复制,您可以创建副本数据库。

Oracle 副本概述

Oracle 副本数据库可以是装载模式,也可以是只读模式。只读模式下的 Oracle 副本称为只读副本。装载模式下的 Oracle 副本称为装载副本

只读和装载副本

创建或修改 Oracle 副本时,可以将其置于以下任一模式:

  • 只读模式。这是默认模式。Active Data Guard 会将源数据库中的更改传输并应用到所有只读副本数据库。

    您可以从一个源数据库实例创建最多 5 个只读副本。有关适用于所有数据库引擎的只读副本的一般信息,请参阅使用只读副本。有关 Oracle Data Guard 的信息,请参阅 Oracle 文档中的 Oracle Data Guard 概念和管理

  • 装载模式。在这种情况下,复制使用 Oracle Data Guard,但副本数据库不接受用户连接。装载副本的主要用途是跨区域灾难恢复。

    装载的副本无法为只读工作负载提供服务。不论存档日志的保留策略为何,装载副本都会在应用存档重做日志文件后删除这些文件。

您可以为同一源数据库实例同时创建装载和只读数据库副本。您可以将只读副本更改为装载模式,或将装载副本更改为只读模式。在两种情况下,Oracle 数据库都会保留存档日志保留设置。

复制过程中的中断

创建 Oracle 副本时,源数据库实例不会发生中断。Amazon RDS 会拍摄源数据库实例的快照。此快照将成为副本。Amazon RDS 为源数据库和副本设置必要的参数和权限,而不会中断服务。同样,如果删除副本,也不会发生中断。

Oracle 的副本要求

在创建 Oracle 副本之前,请检查以下要求。

Oracle 副本的版本和许可要求

在创建 Oracle 副本之前,请检查版本和许可要求:

  • 如果副本处于只读模式,请确保您拥有 Active Data Guard 许可证。如果将副本置于装载模式,则不需要 Active Data Guard 许可证。只有 Oracle 数据库引擎支持装载副本。

  • Oracle 副本仅在 Oracle Enterprise Edition (EE) 引擎中可用。

  • Oracle 副本适用于 Oracle 版本 12.1.0.2.v10 和更高的 12.1 版本、所有 12.2 版本、所有 18c 版本以及所有 19c 版本。

  • Oracle 副本仅适用于 EC2-VPC 平台上的数据库实例。

  • Oracle 副本仅适用于在具有两个或更多 vCPU 的数据库实例类上运行的数据库实例。源数据库实例不能使用 db.t3.micro 实例类。

  • 源数据库实例及其所有副本的 Oracle 数据库引擎版本必须相同。不管副本的维护时段是什么,Amazon RDS 在升级源数据库实例之后,都会立即升级副本。对于跨区域副本的主要版本升级,Amazon RDS 会自动执行以下操作:

    • 为目标版本生成选项组。

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

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

    有关升级数据库引擎版本的更多信息,请参阅升级 Oracle 数据库引擎

Oracle 副本的选项要求

在为 Oracle 创建副本之前,请检查选项组要求:

  • 如果 Oracle 副本与其源数据库实例位于同一 AWS 区域,请确保它与源数据库实例属于同一选项组。对源选项组或源选项组成员资格做出的修改会传播到副本。不管副本的维护时段是什么,这些更改在应用到源数据库实例后,都会立即应用到副本。

    有关选项组的更多信息,请参阅 使用选项组

  • 在您创建 Oracle 跨区域副本时,Amazon RDS 会为其创建专用选项组。

    您无法从专用选项组中删除 Oracle 跨区域副本。任何其他数据库实例都无法使用 Oracle 跨区域副本的专用选项组。

    您只能在专用选项组中添加或删除以下非复制选项:

    • NATIVE_NETWORK_ENCRYPTION

    • OEM

    • OEM_AGENT

    • SSL

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

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

    有关选项组的更多信息,请参阅 使用选项组

Oracle 副本的其他要求

在创建 Oracle 副本之前,请检查以下其他要求:

  • 如果某个数据库实例是一个或多个跨区域副本的源,该源数据库将会保留其重做日志,直到在所有跨区域副本上应用这些日志为止。重做日志可能会导致存储消耗增加。

  • 主实例上的登录触发器必须允许访问 RDS_DATAGUARD 用户以及任何其 AUTHENTICATED_ENTITY 值为 RDS_DATAGUARDrdsdb 的用户。此外,触发器不得为 RDS_DATAGUARD 用户设置当前架构。

  • 为了避免阻止来自 Data Guard 代理进程的连接,请不要启用受限会话。有关受限会话的更多信息,请参阅 启用和禁用受限制的会话

为创建 Oracle 副本做准备

在开始使用副本之前,请执行以下任务。

启用自动备份

您必须在数据库实例上启用自动备份,然后其才能充当源数据库实例。要了解如何执行此过程,请参阅启用自动备份

启用强制日志记录模式

建议您启用强制日志记录模式。在强制日志记录模式下,即使将 NOLOGGING 与数据定义语言 (DDL) 语句一起使用,Oracle 数据库也会写入重做记录。

启用强制日志记录模式

  1. 使用 SQL Developer 等客户端工具登录 Oracle 数据库。

  2. 通过运行以下过程启用强制日志记录模式。

    exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);

有关此过程的更多信息,请参阅 设置强制日志记录

更改日志记录配置

如果您要更改日志记录配置,建议您在将数据库实例设为副本源之前完成更改。此外,我们还建议您在创建副本后不要修改日志记录配置。修改会导致联机重做日志配置与备用日志配置不同步。

使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.add_logfilerdsadmin.rdsadmin_util.drop_logfile 修改数据库实例的日志记录配置。有关更多信息,请参阅 添加联机重做日志删除联机重做日志

设置 MAX_STRING_SIZE 参数

创建 Oracle 副本之前,请确保源数据库实例和副本上的 MAX_STRING_SIZE 参数的设置相同。您可以通过将它们与相同的参数组关联来实现。如果您为源和副本使用不同的参数组,则可以将 MAX_STRING_SIZE 设置为相同值。有关设置该参数的更多信息,请参阅为新数据库实例启用扩展数据类型

规划计算和存储资源

确保源数据库实例及其副本在计算和存储容量方面具有适当的大小,以适合其运行负载。如果副本达到计算、网络或存储资源容量,则副本将停止接收或应用来自其源的更改。Amazon RDS for Oracle 不会介入缓解源数据库实例与其副本之间的高副本滞后。您可以单独修改某个副本的存储和 CPU 资源,而不影响其源及其他副本。

在装载模式下创建 Oracle 副本

默认情况下,Oracle 副本是只读的。要在装载模式下创建副本,请使用 AWS CLI 或 RDS API。

要在装载模式下创建 Oracle 副本,请在 AWS CLI 命令 create-db-instance-read-replica 中将 --replica-mode 设为 mounted

对于 Linux、macOS 或 Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance \ --replica-mode mounted

对于 Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance ^ --replica-mode mounted

要将只读副本更改为装载状态,请在 AWS CLI 命令 modify-db-instance 中将 --replica-mode 设为 mounted。要将装载副本置于只读模式,请将 --replica-mode 设为 read-only

要在装载模式下创建 Oracle 副本,请在 RDS API 操作 CreateDBInstanceReadReplica 中指定 ReplicaMode=mounted

https://rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature> &ReplicaMode=mounted

修改 Oracle 副本模式

要更改现有副本数据库的副本模式,请使用 AWS CLI 或 RDS API。当您将副本模式更改为装载时,副本将断开所有活动的连接。当您将模式更改为只读时,Amazon RDS 会初始化 Active Data Guard。

更改副本模式的操作可能需要几分钟时间才能完成。在操作过程中,数据库实例状态会更改为正在修改。有关状态更改的更多信息,请参阅数据库实例状态

要将只读副本更改为装载模式,请在 AWS CLI 命令 modify-db-instance中将 --replica-mode 设为 mounted。要将装载副本更改为只读模式,请将 --replica-mode 设为 read-only

对于 Linux、macOS 或 Unix:

aws rds modify-db-instance \ --db-instance-identifier myreadreplica \ --replica-mode mode

对于 Windows:

aws rds modify-db-instance ^ --db-instance-identifier myreadreplica ^ --replica-mode mode

要将只读副本更改为装载模式,请在 ModifyDBInstance 中设置 ReplicaMode=mounted。要将装载副本更改为只读模式,请设置 ReplicaMode=read-only

https://rds.amazonaws.com/ ?Action=ModifyDBInstance &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=mysourcedb &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature> &ReplicaMode=mode

排查 Oracle 副本的问题

要监控 Amazon CloudWatch 中的复制滞后,请查看 Amazon RDS ReplicaLag 指标。有关使用复制滞后时间的信息,请参阅 监控只读复制

如果复制滞后时间太长,则您可以查询一下视图,了解有关滞后的信息:

  • V$ARCHIVED_LOG – 显示哪些提交已应用到只读副本。

  • V$DATAGUARD_STATS – 显示组成 replicaLag 指标的各个组成部分的详细分解。

  • V$DATAGUARD_STATUS – 显示 Oracle 内部复制过程的日志输出。