1.1 简介

Data Guard配置包括1个primary角色的数据库和1个或者多个standby角色的数据库,数据库的角色我们可以通过V$DATABASE中DATABASE_ROLE字段来获得。

另外,Data Guard配置中standby库的数量、位置、备库类型以及redo data从主库传到备库的方式,决定了主库发生停机故障时能采用的角色管理方案。

当数据库运行于Data Guard中primary或者standby这样互斥的角色时,可以通过SQL语句或者Data Guard broker图形界面来动态的更改它们的角色,Data Guard支持的角色转换有Switchover和Failover。

  • Switchover

Switchover允许主库切换角色到它的某一个备库,在切换期间不会丢失数据,切换之后,每个数据库继续以其新的角色参与Data Guard 配置中。

  • Failover

Failover用于更改备库到主库角色以响应原主库的故障,如果主库在故障之前没有运行在最大保护模式或最大可用性模式下,可能发生数据丢失。如果在主、备库都允许闪回数据库,只要故障解决了,原主库可恢复作为新主库的备库。

1.1.1 角色转换准备工作

角色转换前,需要做好以下工作:

1.确保主备库已经正确配置

关于Data Guard 配置的参数、归档模式、standby日志等的配置参详http://blog.csdn.net/u010257584/article/details/51140030,这里略过,standby库的LOG_ARCHIVE_DEST_n和LOG_ARCHIVE_DEST_STATE_n必须配置,这样角色转换后,才能接收从新的primary库传过来的REDO数据。

2.查询V$ARCHIVE_DEST_STATUS,确保standby库没有REDO传输错误以及REDO GAPS,比如查询LOG_ARCHIVE_DEST_2:

SQL> SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID =2;

当STATUS的值为VALID、GAP_STATUS为NOGAP方可进行下一步。

3.确保主备库的临时文件一致。

4.删除重做应用的所有延迟,因为这可能会影响备库转为主库角色。

5.RAC主库转为物理备库,务必先只保留其中一个RAC实例为OPEN状态,其他的实例都关闭,其他关闭的实例待转换结束后可以重新联机。

6.即使在切换期间备数据库上只有一个RAC实例是打开的,所有其它备数据库实例在打开时,还将自动经历一个正确转换到它们的新角色的过程。

7.对于运行在real-time查询模式下的物理备库,执行角色转换之前,可以将备库的所有实例启动到mounted而不是open状态,这样可以实现最快的角色转换,并且能在角色转换之前完全终止所有连接到物理备库的用户会话。

1.1.2 选择角色转换的目标备库

对于多备库的Data Guard配置,角色转换时选择目标备库需要考虑诸多因素,包括:

1.备库的位置与备库类型

2.备库的能力(硬件规格,如CPU数目、可用I/O带宽等)

3.执行角色转换所需的时间,这受备库重做数据的应用快慢,以及数据丢失情况下应用程序的可用性。

角色转换目标备库的类型决定了转换后配置中其他备库的角色。对于physical备库,其中一个备库转为primary角色,配置中所有的其他的备库都将变成新primary角色的备库。而对于logical备库,其中一个备库转为primary角色,配置中所有的其他的备库都将变成新的primary角色的备库,但是该配置中的物理备库将继续作为旧的primary主库的备库而不保护新的主库。对于后一种情形,如果进行Switchover或者Failover切换回原始主库,那么当前新主库的所有备库将变回原始的角色状态。综上所述,对于包含物理与逻辑备库的配置中,物理备库是最佳的角色转换目标。

Data Guard提供了V$DATAGUARD_STATS视图,该视图包括每个备库的数据流量估值、执行角色转换所需的时间(当所有redo数据都已应用到备库)。

例如:

<pre dir="ltr">SQL> COLUMN NAME FORMAT A24SQL> COLUMN VALUE FORMAT A16  SQL> COLUMN DATUM_TIME FORMAT A24SQL> SELECT NAME, VALUE, DATUM_TIME FROM V$DATAGUARD_STATS;

查询结果显示,备库接收并应用了主库传来的所有的redo数据。transport lag、apply lag的值是通过主库传来的redo数据估算的,如果主备库之间的连接出现过中断,那么这个值就没有意义。transport lag、apply lag对应的DATUM_TIME列的值如果没有变化,表明它们没有被更新,已经无意义,很可能是因为主备库之间的通信出现了中断。

1.1.3 Switchover

Switchover通常用于减少计划内的中断过程中主库的停机时间,比如操作系统或者软件的升级,以及Oracle数据库软件或者补丁的滚动升级。

Switchover分为2个阶段,第一阶段,现有的主库转换为备库角色;第二阶段,备库转为主库角色。

如下,主库为San Francisco,备库为Boston,转换前的data guard配置:

当原始主库已转换为备库,但原始备库还未转为新的主库,Data Guard环境如下:

当原始备库转换成新的主库,也就是主库变成了Boston,备库变成了San Francisco,Data Guard环境如下:

Switchover之前,以下2点必须满足:

  • 对于物理备库的切换,确保主库是打开的,而且备库的REDO应用处于active状态的;
  • 对于逻辑备库的切换,确保主备库的实例都是打开的,并且SQL应用时active状态。

1.1.4 Failovers

当主库不可用,并且不可能在一个合理的时间内恢复它,Failovers就派上了用场。Failover执行的具体操作取决于是否有逻辑与物理备库涉及的故障、故障转移时Data Guard的配置状态,以及启动Failover时具体的SQL语句。

Failover San Francisco主库到物理备库Boston,结果如下:

再进行failover之前,如果可以,尽可能将所有可用而未被应用的主库redo数据传至备库。

failover角色转换其他的前提条件如下:

  • 如果备库运行在最大保护模式下,请先更改为最佳性能模式:
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

转换结束后,可以根据需要重新设置备库运行模式。

转换备库的运行模式是因为备库运行在最大保护模式下不能进行failover操作,另外,如果主库运行在最大保护模式下,并且和备库还在通信的状态下,更改备库到最佳性能模式的SQL操作将不能成功。因为failover操作将主库移出了dataguard配置,这些特性意在保护运行在最大保护模式下的主库免受意料之外的failover操作。

1.1.5 角色转换触发器

当发生角色转换时,系统事件DB_ROLE_CHANGE将触发。如果角色转换时数据库在open状态或者角色转换时数据库是关闭的、那么下一次数据库open时,该系统事件都将被立即触发。

当角色变化发生时,DB_ROLE_CHANGE系统事件可以用来触发并执行一系列的操作。

本文参阅Oracle官方文档翻译,不足之处欢迎批评指正!

Oracle 11g Data Guard 之角色转换相关推荐

  1. Steps to configure Oracle 11g Data Guard Physical Standby – Active Data Guard Part-I

    2019独角兽企业重金招聘Python工程师标准>>> Steps to configure Oracle 11g Data Guard Physical Standby – Act ...

  2. Oracle 11g Data Guard环境中的归档管理

    在11g里面,随着ASM.RAC.Data Guard(包括Active Data Guard)的成熟,使用RAC+ASM+Data Guard越来越成为一种可靠的.维护简单.稳定的高可用性和容灾保护 ...

  3. oracle 11gdata guard,Oracle 11g Data Guard配置

    操作环境说明: 两台服务器使用相同的Redhat 5.5 内核版本为:2.6.18-194.el5 在主库(primary database)中提前安装好了Oracle 11gR2软件,通过DBCA创 ...

  4. Oracle 11g Data Guard 之逻辑备库角色转换

    逻辑备库不复制数据库服务,在进行switchover或者failover时,连接主库服务的中间层将不能连接(因为服务的创建没有被复制),或者连接不正确的版本(因为服务属性的修改没有被复制). Orac ...

  5. ORACLE 11G Data Guard 角色转换

    1,ORACLE Dataguard角色切换 DataGuard已经是现今标准的主流容灾方案,由于日志传递对于网络适应程度强,且可以采用同步实时的传递方式和异步延迟的传递方式,甚至可以成为远程的异地容 ...

  6. Oracle Data Guard 的角色转换

    实验环境:OEL+Oracle11.2.0.3+physical standby 众所周知,Data Guard已经是现今标准的主流容灾方案,由于日志传递对于网络适应程度强,且可以采用同步实时的传递方 ...

  7. Oracle 11g Data Guard 物理备库快速配置指南(下)

    第二部分 作者介绍 作者 Jed Walker 是科罗拉多 Centennial Comcast 媒体中心的数据操作经理(Manager of Databse Operation).他从1997年开始 ...

  8. Oracle 11g Data Guard 使用duplicate from active database 创建 standby database

    用这种方式来搭建DG ,主库的停机时间很少,只需要重启一下,使参数生效.也可以用这种方法进行DB迁移.DG搭建好,然后把备库激活就可以了. 这样整个迁移中宕机时间也比较短. Oracle 11g的py ...

  9. ORACLE 11G DATA GUARD配置之Dataguard简介

    Oracle DataGuard是Oracle自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步,是一种数据库级 ...

最新文章

  1. [算法学习] 线段树,树状数组,数堆,笛卡尔树
  2. Tool之Git:Git的简介、安装、使用方法之详细攻略
  3. C 语言资源大全中文版
  4. 解决通过pip安装好的库无法被第三方编译器调用的问题
  5. (课程学习笔记)玩转Linux:常用命令实例指南
  6. ConcurrentHashMap源码分析(转载)
  7. pip install cryptography error
  8. tensorflow初试:mnist全连接分类
  9. Java 算法 聪明的美食家
  10. Linux Ubuntu 下安装与卸载 JDK,亲测有效~
  11. VC6.0下载及安装
  12. SQL注入之注入检测总结
  13. 论文阅读笔记(IRCNN):Learning Deep CNN Denoiser Prior for Image Restoration
  14. JS 基础知识(自学篇)
  15. htmlcss系列学习——(五)css选择器
  16. 嵌套在iframe页面打印去掉页眉页尾
  17. 怎么给word文档注音_Word文档中,怎样全篇加注拼音?
  18. 黑苹果系统--键盘设置(保持windows输入习惯)
  19. foo java_Java的类型参数通配符到底意味着什么? Foo和Foo ?之间的真正区别是什么?...
  20. Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!...

热门文章

  1. CUR矩阵分解(对比SVD)
  2. 如何提升数据分析能力?
  3. ICA独立成分分析去除EEG伪影
  4. FOTA安全升级不会用?手把手教学来啦
  5. cadence导出bom清单_OrCAD Capture CIS 16.6 导出BOM
  6. PLC程序的基本组成和编程语言
  7. 原子类型:AtomicReference详解
  8. Warp divergence Bank conflict
  9. matlab之如何将矩阵特定位置的元素置零?
  10. 用python写的简单zip暴力破解器