

# 执行 Oracle Data Guard 切换
<a name="oracle-replication-switchover"></a>

*切换*是主数据库和备用数据库之间的角色反转。在切换期间，原始主数据库转换为备用角色，而原始备用数据库转换为主角色。

在 Oracle Data Guard 环境中，主数据库支持一个或多个备用数据库。您可以执行从主数据库到备用数据库的基于切换的托管式角色转换。*切换*是主数据库和备用数据库之间的角色反转。在切换期间，原始主数据库转换为备用角色，而原始备用数据库转换为主角色。

**Topics**
+ [Oracle Data Guard 切换概述](#oracle-replication-switchover.overview)
+ [Oracle Data Guard 切换的要求](oracle-switchover.preparing.md)
+ [启动 Oracle Data Guard 切换](oracle-switchover.initiating.md)
+ [监控 Oracle Data Guard 切换](oracle-switchover.monitoring.md)

## Oracle Data Guard 切换概述
<a name="oracle-replication-switchover.overview"></a>

Amazon RDS 支持 Oracle Database 副本的完全托管式、基于切换的角色转换。您只能启动到已挂载或以只读方式打开的备用数据库的切换。

副本可以位于单独的 AWS 区域中，也可以位于单个区域的不同可用区（AZ）中。支持所有 AWS 区域。

![\[切换备用实例，使其成为主数据库实例\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/read-replica-switchover.png)


切换与只读副本提升不同。在切换过程中，源和副本数据库实例会更改角色。在提升过程中，只读副本会成为源数据库实例，但源数据库实例不会成为副本。有关更多信息，请参阅 [将只读副本提升为独立的数据库实例](USER_ReadRepl.Promote.md)。

**Topics**
+ [Oracle Data Guard 切换的优势](#oracle-replication-switchover.overview.benefits)
+ [支持的 Oracle 数据库版本](#oracle-replication-switchover.overview.engine-support)
+ [Oracle Data Guard 切换的成本](#oracle-replication-switchover.overview.cost)
+ [Oracle Data Guard 切换的工作原理](#oracle-replication-switchover.overview.how-it-works)

### Oracle Data Guard 切换的优势
<a name="oracle-replication-switchover.overview.benefits"></a>

就像 RDS for Oracle 只读副本一样，托管式切换依赖于 Oracle Data Guard。该操作旨在实现零数据丢失。Amazon RDS 可自动执行切换的以下各个方面：
+ 反转主数据库和指定备用数据库的角色，将新的备用数据库置于与原始备用数据库相同的状态（已挂载或只读）
+ 确保数据一致性
+ 在转换后维护您的复制配置
+ 支持重复性反转，允许您的新备用数据库恢复其原来的主角色

### 支持的 Oracle 数据库版本
<a name="oracle-replication-switchover.overview.engine-support"></a>

Oracle Database 19c 及更高版本支持 Oracle Data Guard 切换。

### Oracle Data Guard 切换的成本
<a name="oracle-replication-switchover.overview.cost"></a>

Oracle Data Guard 切换功能不会产生额外费用。Oracle Database 企业版支持挂载模式下的备用数据库。要以只读模式打开备用数据库，您需要 Oracle Active Data Guard 选项。

### Oracle Data Guard 切换的工作原理
<a name="oracle-replication-switchover.overview.how-it-works"></a>

Oracle Data Guard 切换是一项完全托管式操作。您可以通过发出 CLI 命令 `switchover-read-replica` 启动备用数据库的切换。然后，Amazon RDS 修改您的复制配置中的主角色和备用角色。

*原始备用角色*和*原始主角色*是切换前存在的角色。*新备用角色*和*新主角色*是切换后存在的角色。*旁观者副本*是一个副本数据库，它在 Oracle Data Guard 环境中用作备用数据库，但不切换角色。

**Topics**
+ [Oracle Data Guard 切换的各个阶段](#oracle-replication-switchover.overview.how-it-works.during-switchover)
+ [Oracle Data Guard 切换之后](#oracle-replication-switchover.overview.how-it-works.after-switchover)

#### Oracle Data Guard 切换的各个阶段
<a name="oracle-replication-switchover.overview.how-it-works.during-switchover"></a>

要执行切换，Amazon RDS 必须执行以下步骤：

1. 阻止原始主数据库上的新事务。在切换期间，Amazon RDS 会中断您的 Oracle Data Guard 配置中所有数据库的复制。在切换期间，原始主数据库无法处理写入请求。

1. 将未应用的事务发送到原始备用数据库，并应用它们。

1. 以只读或挂载模式重新启动新的备用数据库。该模式取决于切换前原始备用数据库的打开状态。

1. 以读/写模式打开新的主数据库。

#### Oracle Data Guard 切换之后
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover"></a>

Amazon RDS 切换主数据库和备用数据库的角色。您负责重新连接应用程序并执行任何其他所需的配置。

**Topics**
+ [成功标准](#oracle-replication-switchover.overview.how-it-works.after-switchover.success)
+ [与新的主数据库的连接](#oracle-replication-switchover.overview.how-it-works.after-switchover.connection)
+ [新的主数据库的配置](#oracle-replication-switchover.overview.how-it-works.after-switchover.success.configuration)

##### 成功标准
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.success"></a>

当原始备用数据库执行以下操作时，Oracle Data Guard 切换获得成功：
+ 转换到其作为新的主数据库的角色
+ 完成其重新配置

为了限制停机时间，新的主数据库会尽快变为活动状态。由于 Amazon RDS 异步配置旁观者副本，因此这些副本可能会在原始主数据库之后变为活动状态。

##### 与新的主数据库的连接
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.connection"></a>

切换后，Amazon RDS 不会将您当前的数据库连接传播到新的主数据库。在 Oracle Data Guard 切换完成后，将您的应用程序重新连接到新的主数据库。

##### 新的主数据库的配置
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.success.configuration"></a>

为了切换到新的主数据库，Amazon RDS 将原始备用数据库的模式更改为打开。角色的更改是对数据库的唯一更改。Amazon RDS 未设置多可用区复制等功能。

如果您使用不同的选项切换到跨区域副本，则新的主数据库会保留自己的选项。Amazon RDS 不会迁移原始主数据库上的选项。如果原始主数据库具有 SSL、NNE、OEM 和 OEM\$1AGENT 等选项，则 Amazon RDS 不会将它们传播到新的主数据库。