ADG INTRODUCE

Active Data Guard(ADG)是ORACLE 11g企业版的新特性,需要单独的License.可以打开Physical standby至read only模式,standby可以用来做报表系统、查询、排序或Web站点。实时读写分离,以此来分担primary DB的压力。

ADG可以部署在多种商业应用环境中,如:

·通信行业:Schedules服务,自助查询服务。

·医疗行业:快速访问最新的医疗记录。

·金融管理行业:自助查询和报表。

·运输行业:包裹跟踪,订单状态查询。

·商业网站:目录浏览,订单状态,售后产品Reader Farms.

 

ADG特性:

1.实时查询特性,可以打开Physical standby值read only模式并实时应用redo data.

2.启用RMAN block-change tracking。用户利用RMAN在primary的增量备份恢复到standby,性能最高可提升20倍。

Database只读模式下允许的操作:

·SELECT操作,包括需要大量临时段的查询

·ALTER SESSION,ALTER SYSTEM

·SET ROLE

·调用Procedure

·使用DBLINK写数据到远程数据库

·通过DBLINK调用远程数据库的Procedure

·在事务级别读一致性使用SET TRANSACTION READ ONLY

·执行复杂的查询,如:GROUPING SET,WITH查询语句等

Database只读模式下不允许的操作:

·任何DML或DDL操作

·访问本地序列的查询

·对本地临时表的DML操作

ADG的先决条件:

1.ADG选项的license

2.参数COMPATIBLE>=11.0.0

ADG DETAILS

如何检查当前是否启用ADG

SQL> select database_role ,open_mode from v$database;

DATABASE_ROLE      OPEN_MODE

------------------ --------------------

PHYSICAL STANDBY   READ ONLY WITH APPLY

启用ADG

SQL> alter database open read only;

SQL> recover managed standby database disconnect using current logfile;

注:AUDIT_TRAIL参数在数据库打开时可用,read only的standby不支持update,如果AUDIT_TRAIL=DB,则在DB以read only模式打开后,AUDIT_TRAIL参数值会后台转换为OS.

Standby为RAC时,如果应用redo的实例down掉,为保护数据的一致性,ORACLE会关闭其余OPEN READ ONLY的时候至MOUNT状态,需要手工启用另外的实例应用redo.

评估应用是否适合read-only database

参考文档:

Note:1206774.1 - EVENT: 3177 "enable logging of read-only violations"

ADG LAG

standby由于以下的原因可能产生延迟:

- CPU处理能力不足

- 高网络延迟

- 带宽限制

监控LAG:

V$DATAGUARD_STATS

V$STANDBY_EVENT_HISTOGRAM

监控redo apply性能:

V$RECOVERY_PROGRESS

Transport Lag:

SQL> select * from v$dataguard_stats where name='transport lag';

Apply lag:

SQL> select * from v$dataguard_stats where name='apply lag';

查询SCN实时比较primary和standby的LAG:

SQL> create database link standby connect to system identified by 'oracle' using 'standby';

SQL> select scn_to_timestamp((select current_scn from v$database))-scn_to_timestamp((select current_scn from v$database@standby)) LAG from dual;

 

STANDBY_MAX_DATA_DELAT参数:

STANDBY_MAX_DATA_DELAT={INTERGE|NONE},默认NONE,单位:秒,用来指定可容忍的LAG限定,参数为会话级,对SYS用户无效。

如果standby查询超出指定的时间,抛出ORA-3172 STANDBY_MAX_DATA_DELAY has been exceeded.

创建一个trigger,在用户登录时触发设定该参数:

create or replace trigger adg_logon_trigger after logon on app.schema

begin

if (sys_context('userenv', 'database_role') in ('PHYSICAL STANDBY'))

then

execute immediate 'alter session set standby_max_data_delay=5';

endif;

end;

强制redo apply同步:

SQL> alter session sync with primary;

执行此命令后,将会阻塞应用直到standby与primary同步。

创建一个trigger强制用户登录后同步redo apply:

create trigger adg_logon_sync_trigger after logon on user.schema

begin

if (sys_context('userenv','database_role') in ('PHYSICAL STANDBY'))

then

execute immediate 'alter session sync with primary';

end if;

end;

性能提升

11g ADG的性能比10g提升了许多,oracle内部做了一些优化,介质恢复在symmetric multiprocessing (SMP) systems也比之前版本快了许多。

性能提升包括以下几点:

- 更多的并行

- 更高效的异步redo读取、解析和应用

- 减少同步点并行应用算法

- redo log介质恢复时不再阻塞应用下一组日志

Active Data Guard的更多相关文章

  1. DG - 开启Active Data Guard

    在配置active data guard之前,phycial standby必须处于以下两个状态之一: (1)standby处于mount状态,并且redo apply正在运行中 (2)standby ...

  2. Oracle 11gR2 Database和Active Data Guard迁移案例

    客户一套核心系统由一台Oracle Database 11.2.0.3.4单机和一台Active Data Guard组成,分别运行在两台PC服务器上,Oracle Linux 5.8 x86_64b ...

  3. Oracle11g Active Data Guard搭建、管理

    说明:參考网络众多人的笔记及思路,加上自己亲身实践之后的整理笔记.仅供參考. Data Guard与RAC不同的是.在普通情况下.Standby仅仅有一个节点处于活动状态,全部的应用都连接到主serv ...

  4. Oracle Data Guard

    DG 是 Oracle Data Guard 的简称.也就是Oracle11g的 数据卫士. 由于在工作中 Oracle和 SQL SERVER2008 同时都需要维护管理.给我的感觉这里的 DG 其 ...

  5. Oracle 19c Data Guard DML Redirection ADG备库上执行DML重定向(未来更好的进行读写分离)

    资料来自官方网站: https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/managing-oracle-data-g ...

  6. 使用Active Database Duplication创建跨平台Data Guard设置 (Windows/Linux) (Doc ID 881421.1)

    Using Active Database Duplication to Create Cross Platform Data Guard Setup (Windows/Linux) (Doc ID ...

  7. 场景7 Data Guard

    场景7  Data Guard 官方文档 :Oracle Data Guard Concepts and Administration 用于数据容灾,通过主备库同步(主库将redo日志传送到备库,一个 ...

  8. 【原】Configuring Oracle Data Guard In Physical Standby Database

    作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...

  9. data guard switchover切换异常

    data guard switchover切换异常 查看DG数据库备份库发现,switchover_status为SWITCHOVER LATENT SQL> select OPEN_MODE, ...

随机推荐

  1. 51Nod 和为k的连续区间

    一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间[i, j],(1 <= i <= j <= n),使得a[i] + ... + a[j] = k ...

  2. Laravel API 允许跨域访问

    服务器A请求服务器B的接口,那么一般会出现跨域问题.全解跨域请求处理办法 XMLHttpRequest cannot load http://api.console.vms3.com/api/user ...

  3. GenIcam标准(六)

    2.9.可用的接口 本章用伪代码列出在2.3章介绍过的最重要的接口.对每个接口,实际的实现可以提供更多的方法,例如,除了SetValue(value)方法,还可以用直接映射到SetValue()的方式 ...

  4. COGS——T 21. [HAOI2005] 希望小学

    http://www.cogs.pro/cogs/problem/problem.php?pid=21 ★★   输入文件:hopeschool.in   输出文件:hopeschool.out    ...

  5. 11 hbase源码系列(十一)Put、Delete在服务端是如何处理

    hbase源码系列(十一)Put.Delete在服务端是如何处理?    在讲完之后HFile和HLog之后,今天我想分享是Put在Region Server经历些了什么?相信前面看了<HTab ...

  6. 《SAS编程与数据挖掘商业案例》学习笔记之十八

    接着曾经的<SAS编程与数据挖掘商业案例>,之前全是sas的基础知识,如今開始进入数据挖掘方面笔记,本文主要介绍数据挖掘基本流程以及应用方向,并以logistic回归为例说明. 一:数据挖 ...

  7. C++学习笔记31,指向引用的指针(3)

    我们来看一个简单的指向引用的指针的样例. #include <iostream> using namespace std; int main(){ int x=10; int y=20; ...

  8. Sqoop 的优势

    1.sqoop可以高效的可控的利用资源,比如它可以通过调整任务数,来控制任务的并发度,另外还可以配置数据库的访问时间等等 2.sqoop能自动的完成数据类型的映射与转换 3.它支持多种数据库,比如my ...

  9. vue的在子组件在使用iview库发现的问题

    正常调用没有问题 当写到子组件的时候 这样调用就出问题了 以下是写到子组件出的问题 解决方法  改成了两行写就不会报错了

  10. Java:网络传输

    网络以字节码传输 String s = "我恨你"; //转成字节: byte[] brr = s.getBytes();//gbk //iE:utf-8 String s1 = ...