AGD简介

Data Guard可以以只读的方式打开数据库,但此时Media Recovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过程中数据库就不能打开查询,也就是说日志应用和只读打开两个状态是互斥的(10g之前)。

Oracle 11g 中推出的Active Data Guard功能解决了(10g物理DG)这个矛盾,在利用日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作,这类似逻辑Data Guard备用数据库的功能(查询功能方面),但是,数据同步的效率更高、对硬件的资源要求更低。这样可以更大程度地发挥物理备用数据库的硬件资源的效能。

ADG架构

ADG三种模式

1.最大性能模式(Maximum Performance)

1)该模式是默认模式,可以保证主数据库的最高可用性;

2)主节点随时提交事务,事务提交时,redo至少写入一个从节点,但是写入不一定同步;

2)保证主库运行过程中不受备库的影响,主库事务正常提交,不因备库的任何问题影响到主库的运行;

4)优点:避免了备库对主数据库的性能和可用性影响;

5)缺点:如果与主库提交的事务相关的恢复数据没有发送到备库,这些事务数据将被丢失,不能保证数据无损失。

2.最大可用模式(Maximum Availability)

1)该模式提供了仅次于“最大保护模式”的数据保护能力(介于最大保护与最大性能之间);

2)要求至少一个物理备库收到重做日志后,主库的事务才能够提交;

3)主库找不到合适的备库写入时,主库不会shutdown,而是临时降低到“最大性能模式”模式,从库恢复后,转回“最大可用模式”;

4)优点:该模式可以在没有问题出现的情况下,保证备库没有数据丢失,是一种折中的方法;

5)缺点:在正常运行的过程中缺点是主库的性能受到诸多因素的影响。

3.最大保护模式(Maximum Protection)

1)这种模式提供了最高级别的数据保护能力;

2)主节点事务提交前,redo写入在线日志,而且要求至少一个物理备库收到重做日志后,主库的事务才能够提交;

3)主库找不到合适的备库写入时,主库会自动shutdown,防止未受保护的数据出现;

4)优点:该模式可以保证备库没有数据丢失;

5)缺点:主库的自动关闭会影响到主库的可用性,同时需要备库恢复后才能提交,对网络等客观条件要求非常的高,主库的性能会因此受到非常大的冲击。

三种模式比较

比较项 Redo写或传输进程 网络传输模式 是否落盘确认 standby redologs
最大保护 lgwr sync affirm 需要
最高可用 lgwr sync affirm 需要
最大性能 lgwr或者arch sync或者async affirm或者noaffirm 可有可无

AFFIRM:在日志写进程进行之前,所以的归档日志和备库日志必须同步写完。
NOFFIRM:在主库的日志写进程不等所有磁盘IO完成。
(缺省值为NOFFIRM)

参数相关

设置参数位置

主库log_archive_dest_n参数设置

示例:*.log_archive_dest_2=‘service=orcl lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=orcl’

重要参数分析

arch:只支持最大性能模式。归档日志通过primary上的arch进程传送给standby的rfs进程,保存到指定路径(如果有standby redo logfile,则保存到该位置,然后再归档),然后redo应用。

lgwr:primary使用LGWR即时将日志传送到standby的rfs进程,并保存到standby redo logfile中,而不再需要等到归档操作时才传送,保存到standbyredo logfile,然后再归档,然后redo应用。

用LGWR传输大致如下:

1)主库:只要有新的重做日志产生,lgwr进程将触发LNSn进程把新生成的日志传输给备库rfs进程。

2)备库:rfs进程接收到日志后,将其写入standby重做日志,如果备库开启了实时应用,就立即做日志应用,如果没有开启,则等standby重做日志归档后再应用。

3)其中,async和sync的区别在于:sync是在redo还在内存时,LNSn进程就开始传输,而async是在redo写到online redo log后,LNSn才开始传输。

同步的实时性来看,lgwr(sync) > lgwr(async)> arch

sync模式下,主库产生任何redo时,同时马上触发网络传输给备库RFS进程;

async模式下,主库产生redo时,先写到本地online redo logfile文件中,LNSn进程从online redo logfile文件中取redo数据网络传输给备库RFS进程。

三种模式间切换

首次performance>>availability>>protection顺序需要在主库执行且主库必须处于mount状态;

如果已经由performance>> availability>>protection数据保护级别操作过1次,那么再次操作时可直接操作;

protection>>availability>>performance顺序直接操作即可

实例演示

由最大性能模式切换为最大可用模式

  • 先查看ADG当前模式
--主库执行
SQL>  select database_role,protection_mode,protection_level from v$database;DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PRIMARY          MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE--备库执行
SQL> select database_role,protection_mode,protection_level from v$database;DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE
  • 主库更改log_archive_dest_n参数配置
--主库执行
SQL> show parameter log_archive_dest_2NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      service=ruiadg2 NOAFFIRM ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg
SQL> alter system set log_archive_dest_2='service=ruiadg2 NOAFFIRM LGWR SYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';System altered.SQL> show parameter log_archive_dest_2NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      service=ruiadg2 NOAFFIRM LGWRSYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg
  • 接着进行如下操作
--主库操作
SQL> shutdown immediate
ORA-01109: database not openDatabase dismounted.
ORACLE instance shut down.--备库操作
SQL>alter database recover managed standby database cancel;--主库执行
SQL> startup mount
Total System Global Area 2466250752 bytes
Fixed Size                  2927384 bytes
Variable Size             671089896 bytes
Database Buffers         1778384896 bytes
Redo Buffers               13848576 bytes
Database mounted.SQL> alter database set standby database to maximize availability;--切换到最大可用模式Database altered.SQL> alter database open;Database altered.

至此,切换动作已完成。

  • 查询当前的保护模式
--主库执行:SQL> select database_role,protection_mode,protection_level from v$database;DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PRIMARY          MAXIMUM AVAILABILITY RESYNCHRONIZATION--备库执行
SQL> select database_role,protection_mode,protection_level from v$database;DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

参考:
https://blog.csdn.net/weixin_33873846/article/details/92438388
https://www.cnblogs.com/kawashibara/p/10054471.html

ADG三种模式切换详解相关推荐

  1. python 命令-python解析命令行参数的三种方法详解

    这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...

  2. Maven精选系列--三种仓库详解

    转载自 Maven精选系列--三种仓库详解 仓库分类 1.本地仓库 本地仓库就是开发者本地已经下载下来的或者自己打包所有jar包的依赖仓库,本地仓库路径配置在maven对应的conf/settings ...

  3. 全站仪与计算机之间的数据传输,必看!全站仪数据传输的三种方式详解,都安排得明明白白(上)...

    原标题:必看!全站仪数据传输的三种方式详解,都安排得明明白白(上) 科力达全站仪数据传输 一般而言,全站仪的数据传输方式有三种,分别是通过串口.USB.SD卡三种方式,因为电脑配置等因素的不同,一些数 ...

  4. 查看登陆系统用户的信息的三种方法详解

    查看登陆系统用户的信息的三种方法详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.who这个命令显示可以谁在登陆,但是这个有很多的花式玩法,这个命令超简单 语法:who [O ...

  5. 网页中的三种地址详解

    网页中的a标签具有地址跳转的功能,href属性指向跳转的地址. 一.三种地址模式 网络地址分为两种,一种是绝对地址,一种是相对地址. 但是相对地址又可以细分为两种,一种是基于当前目录的相对地址,一种是 ...

  6. C语言求最大公约数三种方法详解

    C语言求最大公约数三种方法详解 题目要求 常用写法(穷举法) 辗转相减法 辗转相除法 main函数 整体代码 题目要求 运行最大公约数的常用算法,并进行程序的调式与测试. 常用写法(穷举法) 从两个数 ...

  7. C++基础:new的三种形式详解

    new的三种形式详解: 1.new operator         : new操作符  <=====>  ( operator new 开辟空间 ) + (调动构造函数 ) 2.oper ...

  8. mysql 删除数据表中数据_Mysql-删除数据表-三种方式详解

    Mysql 删除数据表的三种方式详解 用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, ...

  9. 新浪微博怎么推广引流,微博推广引流的三种方法详解

    新浪微博怎么推广引流,微博推广引流的三种方法详解,#推广#营销 微博营销有哪些特点?#百收网SEO@千行助推 大家好,上一次内容讲了生意人如何将客户引流到自己的微信上去,受到很多朋友的喜爱,那么这一期 ...

最新文章

  1. ATO,MTO和ETO
  2. 百叶窗设计原理 html5,Html5百叶窗效果的示例代码_html5教程技巧
  3. [2019CSP多校联赛普及组第五周] 调度CPU (贪心)
  4. php upw5.5,UPW
  5. springmvc登录拦截器访问报错 SyntaxError: expected expression, got ''
  6. 3U VPX 高性能视频图像处理板( 国产ARM 信号处理板 FPGA + HI3559A )
  7. 将安卓手机摄像头打造成电脑高清摄像头
  8. Jetson开发实战记录(三):Jetson Xavier NX具体开发(Ubuntu18.04系统)
  9. 人工智能冬去春来 从技术导向向应用导向转变的自然结果
  10. Android 端发送邮件
  11. java 将set转成数组,Java程序将Set转换为数组
  12. 当点击按钮没有反应时的解决办法
  13. C++中的volatile(Primer读书笔记)
  14. 笔记本外接显示器感觉鼠标有延迟解决办法
  15. 2021春项目需求记录 python实现模拟登录+爬取NASA Modis 上的产品数据
  16. NumPy科学计算库(1)Python数据分析
  17. IOT-OS之RT-Thread(十一)--- FAL分区管理与easyflash变量管理
  18. 同个网络找不到计算机打印机共享,我已经在一台电脑上设置了打印机共享,为什么另一台电脑输入打印机电脑的IP显示找不到文件...
  19. Qt实战:云曦聊天室篇
  20. php判断用户输入验证码是否正确

热门文章

  1. postgresql应用开发者指南
  2. Android 静默安装和智能安装的实现方法
  3. day13 - 对指纹图片进行噪声消除
  4. sqlserver打开或创建mdf失败
  5. 认识iTween插件和安装
  6. 收集2016年值得学习的源码、第三方和插件
  7. 视频打开显示服务器运行失败,电脑打不开本地视频如何修复
  8. TIA Portal(博途)弹出安装重启窗口的解决方法
  9. 多目标跟踪数据关联算法
  10. 如何裁剪图片大小尺寸?