Oracle 白皮书-Oracle Data Guard 快速启动故障切换指南(1)

简介:

本文档将指导您使用物理备用服务器配置 Oracle Data Guard 快速启动故障切换 (FSFO)。FSFO 可以显著提高所有环境的可用性和灾难恢复准备,从基于云的价格低廉的系统一直到全球分布的数据中心。

本指南中的信息基于在跨国公司生产环境中部署 FSFO 的实践经验。 本指南对您的现有环境做出几个假设,并且包括创建物理备用服务器和 Data Guard Broker 配置的示例。要开始本指南,您只需 Oracle 数据库企业版 10.2 版或更高版本、一个数据库和三个主机:两个主机用于数据库,一个小型主机用于 FSFO 观察器。 本指南不对操作系统进行讨论;然而,一些示例中可能包含了特定于平台的元素(如路径和文件命名惯例)。

FSFO 环境的主要组件

FSFO 构建于众多其他 Oracle 技术和特性(如 Data Guard、闪回数据库和 Data Guard Broker)之上。

Data Guard

FSFO 的基础是 Data Guard — 一个主数据库和至少一个备用数据库。备用数据库可以是物理的或逻辑的,可以有多个备用数据库,但只有一个备用数据库可作为随时进行故障切换的目标。以下段落将描述受支持的可用性模式。


最高可用性模式(Oracle 数据库 10g 第 2 版及更高版本)

最高可用性模式中,FSFO 保证在故障切换期间不会丢失已收到提交确认 的事务。该保证的代价是增加提交延迟(log file sync 等待事件)。最高可用性模式使用同步重做传输,FSFO 则增加了额外要求,即重做应记录在目标备用数据库(log_archive_dest_n 的 AFFIRM 选项)的备用重做日志 (SRL) 中。Overall commit latency is increased by the round-trip network latency.往返网络延迟增加了总体提交延迟。增加的延迟降低了吞吐量;然而,有些时候吞吐量的差异是由增加的并行造成的。

虽然重做传输是同步的,但如果备用数据库由于某种原因(如备用数据库、主机或网络故障)不可用,最高可用性模式会保持主数据库可用。如果在用户指定的时间段(log_archive_dest_n 的 NET_TIMEOUT 选项)之后,主数据库无法联系到备用数据库,它将退出同步传输模式并开始像在最高性能模式中一样进行操作。当备用数据库再次可用时,主数据库和备用数据库重新同步并恢复同步重做传输。

最高性能模式(Oracle 数据库 11g 第 1 版及更高版本)

Oracle 数据库 11g FSFO 增加了对最高性能模式的支持(异步重做传输),提供了用持久性换取性能的灵活性。提交延迟不受重做传输的影响,但备用数据库未收到其重做的已提交事务将在故障切换期间丢失。通过指定故障切换期间丢失事务的最大允许时间,最高性能模式中的 FSFO 配置可以限制潜在的数据丢失。例如,如果指定的限定值为 30 秒(默认),FSFO 将保证在故障切换期间保存 30 秒钟内提交的所有事务。 最小允许限定值为 10 秒钟。

Data Guard Broker

Broker 是一个 Data Guard 管理实用程序,用于维护有关主数据库及其备用数据库的状态信息。 它自动设置与 Data Guard 相关的数据库初始化参数(如实例启动和角色转换)、启动备用数据库的应用服务,并且自动执行与维护 Data Guard 配置相关的许多管理任务。FSFO 是 Broker 的一个特性,用于记录故障切换目标的相关信息,例如,故障发生后到触发故障切换之间的等待时间以及 FSFO 的其他特有属性。

闪回数据库

闪回数据库是一个集成在 Oracle 数据库中的持续数据保护 (CDP) 解决方案。它使用名为闪回日志的磁盘数据结构,提供一个将数据库快速恢复到之前时间点或 SCN 的方法。数据库闪回比传统的时间点或基于 SCN 的恢复速度更快、结合更完美(一条简单的 DDL 语句)。FSFO 将闪回数据库用作将故障主数据库恢复为备用数据库流程的一部分。


自动恢复的问题通常因为错误的配置,因此我们来了解一些详细信息。

闪回数据库记录经过更改的数据块的前映像。为了避免记录每个数据块的每次更改的开销,闪回数据库每 30 分钟进行一次“模糊”快照,仅记录前映像块上一次快照后的第一次更改。在同一快照期间中,不再记录对同一数据块的后续更改。

数据库的闪回分成两个阶段:

  • 恢复 — 闪回数据库将数据文件恢复到指定 SCN 前最近的快照。这可以与执行从指定 SCN 前的备份进行数据文件 RMAN 恢复相比,但是速度更快。

  • 介质恢复 — 恢复完成后,恢复将作为典型介质恢复继续进行,根据存档重做日志和联机重做日志应用重做并通过撤消回滚未提交的更改。这意味着为了使闪回数据库操作成功,闪回数据库需要在快照时间和恢复 SCN 之间生成的所有存档重做日志(通常为重做后的 30 分钟)。使用 V$RECOVERY_PROGRESS 视图监视恢复状态。

对于 FSFO 环境,设置 db_flashback_retention_target = 60 或更高值,可以为自动备用恢复提供足够的闪回数据库历史记录。模糊快照的元数据存储在闪回日志本身中。如果没有元数据,Oracle 将无法找到模糊快照,从而无法进行闪回。为了避免计时差异产生的问题,我们建议值设置为不少于 60 分钟,实际上,如果值设置为 30 或 30 以下,肯定会导致闪回数据库故障。

闪回数据库将日志存储在快速恢复区 (FRA) 中,所以 FRA 必须有足够大的空间来存储至少 60 分钟的闪回数据库历史记录。 总的存储需求与快照期间更改的不同数据块的数量成比例,例如,一小组数据块上的 1,000,000 次块更改生成的闪回数据库历史记录小于一大组数据块上的 1,000,000 次块更改所生成的闪回数据库历史记录。确定闪存数据库存储需求的一个好方法是,启用闪存数据库并观察其在几次峰值负载时所使用的存储量。通过启用闪回数据库来确定其存储需求也有一定的风险 — 如有必要,在主数据库处于打开状态时可以将其禁用。然而,重新启用闪回数据库将需要回弹,因为数据库必须进行安装且未打开。

FSFO 观察器

观察器是非常典型的主/备用 Data Guard 配置中的第三方。它实际上是一个内置于 DGMGRL CLI(Data Guard Broker 命令行界面)中、占用空间很小的 OCI 客户端,与其他所有客户端一样,可以运行在与数据库服务器不同的硬件平台上。其主要工作是在条件允许时执行故障切换,而不影响 DBA 设置的数据持久性约束条件。只有观察器能启动 FSFO 故障切换。它的另一个工作是在启用该特性的情况下(默认)自动将主数据库恢复为备用数据库。观察器是 Data Guard 故障切换在强健的高可用性解决方案中承担重要角色的关键因素,也是造成 Data Guard 故障切换在 FSFO 出现前后重大差异的关键因素。

注:FSFO 观察器版本必须与数据库版本匹配。 Oracle 数据库 11g 观察器与 10g 数据库不兼容,Oracle 数据库 10g 观察器与 11g数据库也不兼容。

FSFO 故障切换的条件

默认情况下,当且仅当满足以下条件时,观察器才会启动到目标备用数据库的故障切换:

  • 观察器正在运行

  • 观察器和备用数据库均与主数据库失去联系

    • 注:如果观察器与主数据库失去联系,但是备用数据库并未失去联系,观察器可以确定主数据库仍然通过备用数据库运行。


  • 观察器仍然保持与备用数据库的联系

  • 满足持久性约束条件

  • 故障切换阈值延时已过

用户可配置的故障切换条件(11g 及更高版本)

Oracle 数据库 11g 第 1 版引入了用户可配置的故障切换条件,这些条件可以触发观察器立即启动故障切换。

运行状况条件

Broker 可配置为在以下任一条件下启动故障切换。以蓝色显示的条件是默认启用的。


  • Datafile Offline(由于 IO 错误)

  • Corrupted Controlfile

  • Corrupted Dictionary

  • Inaccessible Logfile(由于 IO 错误)

  • Stuck Archiver


Oracle 错误 (ORA-NNNNN)

您可以指定一个将启动 FSFO 故障切换的 ORA 错误列表。该列表默认为空。

应用程序启动

应用程序可直接使用 DBMS_DG.INITIATE_FS_FAILOVER 过程启动 FSFO 故障切换,并包括一个可选的在观察器日志和主数据库警报日志中显示的消息文本。











本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1399586,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
Oracle 机器学习/深度学习 数据库
深入详解Oracle data change notification
深入详解 Oracle data change notification
1467 0
|
5月前
|
Oracle 关系型数据库
Oracle 中data与timstamp互转
Oracle 中data与timstamp互转
|
7月前
|
存储 Oracle Java
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
|
存储 运维 Oracle
【大数据开发运维解决方案】Oracle Data Redaction数据加密测试
最近有个做Java开发的网友问我,怎么在Oracle进行数据加密呢?我给他推荐了Data Redaction。Oracle Database 12c中加入了Data Redaction这个新的安全特性。当然在11g的Database Advanced Security Administrator’s Guide官方文档中就介绍了。
【大数据开发运维解决方案】Oracle Data Redaction数据加密测试
|
机器学习/深度学习 SQL Oracle
深入详解Oracle data change notification
0、什么是 Oracle data change notification ? 当有多个应用程序或者进程操作同一个数据库时,其中进程1对Oracle中的某个表Table1进行插入、删除、修改等操作,进程2想在第一个进程操作完成后进行相应的操作。有没有什么方法让进程2获取到进程1的操作?
399 0
深入详解Oracle data change notification
|
Oracle 关系型数据库 数据库
|
11天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
51 7
|
29天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2

推荐镜像

更多