SlideShare a Scribd company logo
1 of 9
Download to read offline
11gR2 新特性之
STANDBY_MAX_DATA_DE
        LAY


      by Maclean.liu
            liu.maclean@gmail.com
        www.oracledatabase12g.com
About Me

l Email:liu.maclean@gmail.com
l Blog:www.oracledatabase12g.com
l Oracle Certified Database Administrator Master 10g
and 11g
l Over 6 years experience with Oracle DBA technology
l Over 7 years experience with Linux technology
l Member Independent Oracle Users Group
l Member All China Oracle Users Group
l Presents for advanced Oracle topics: RAC,
DataGuard, Performance Tuning and Oracle Internal.
Active Data Guard 是 Oracle 11g 的亮点特性之一,而在 11G release 2 中对 Active Data Guard 引入了更多诱人
的新特性,这些特性将 Active Data Guard 打造成 Oracle 读写分离或报表查询的理想方案之一。




STANDBY_MAX_DATA_DELAY 是 11gr2 中对 Active Data Guard 的最大增强(buffer)之一,这是一个可以在会话
级别指定的参数(session parameter),该参数指定了在 Primary Database 已 commit 提交的变化与 standby
Database 数据库上涉及相关变化的查询之间所允许的时间延迟,单位为 second 秒(Specifies a limit for the
amount of time (in seconds) allowed to elapse between when changes are committed on the primary and when
those same changes can be queries on the standby database)。



使用该 STANDBY_MAX_DATA_DELAY 参数的语法如下:



ALTER SESSION SET STANDBY_MAX_DATA_DELAY ={ NONE |
INTEGER }



注意事项


     • 该参数无法为 SYS 用户所用,在 SYS 用户的 SESSION 下设置该参数将被忽略



     • 若没有指定 STANDBY_MAX_DATA_DELAY,即使用其默认值 NONE,那么无论主备库之间有多大的
       延迟,在 Physical Standby 上的查询都会被执行




     • 若查询延迟超过 STANDBY_MAX_DATA_DELAY 所指定的值那么,将报 ORA-03172 错误:




03172, 00000, "STANDBY_MAX_DATA_DELAY of %s seconds exceeded"
// *Cause:    Standby recovery fell behind the STANDBY_MAX_DATA_DELAY
//            requirement.
// *Action: Tune recovery and retry the query later, or switch to another
//            standby database within the data delay requirement.
在实际运用中 STANDBY_MAX_DATA_DELAY 保证了在 Standby 数据库上所作的报表查询不会得到过于陈旧的
结果(stale result),通过该参数我们可以指定一个报表应用所容许的数据时间延迟。
当然也可以指定不容许任何数据延迟,即设置 STANDBY_MAX_DATA_DELAY 为零,以便做到实时数据查询。
配置 Primary 与 Standby 数据库之间的实时查询或者说零延迟查询有以下注意事项:



   • 只有特定的应用程序才会对数据延迟有零容忍的需求,注意你的应用程序是否有如此苛刻的要求

   • 在 standby 数据库上执行的查询语句必须返回和主库上查询的完全一致的结果

   • 必须设置 STANDBY_MAX_DATA_DELAY 为 0

   • 在查询开始的那一刻,Standby 数据库必须同步到与 Primary 数据库一致的 Current Scn

   • 若结果没有在 200ms 内返回,则查询会因 ORA-03172 而终止

   • Primary 数据库必须采用最大可用(max availability)或最大保护(maximum protection)模式

   • redo 传输必须使用 SYNC 选项

   • 必须启用 Real-Time Query 特性



实际使用


以下我们通过演示来了解该 STANDBY_MAX_DATA_DELAY 的效果:



SQL> select * from v$version;


BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE     11.2.0.2.0     Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production


SQL> select * from global_name;


GLOBAL_NAME
--------------------------------------------------------------------------------
www.oracledatabase12g.com & www.askmaclean.com


Primary Database    SQL> conn maclean/maclean
Connected.


Primary Database SQL> select database_role,protection_mode from v$database;


DATABASE_ROLE      PROTECTION_MODE
---------------- --------------------
PRIMARY            MAXIMUM AVAILABILITY


Primary Database SQL>    create table TSMDD tablespace users as select * From dba_objects;
Table created.


Standby Database SQL> conn maclean/maclean
Connected.


Standby Database SQL> select database_role,protection_mode from v$database;


DATABASE_ROLE      PROTECTION_MODE
---------------- --------------------
PHYSICAL STANDBY MAXIMUM AVAILABILITY


注意 STANDBY_MAX_DATA_DELAY 是一个会话参数 session parameter,而非实例参数 instance parameter


Standby Database SQL> select name from v$system_parameter where
name='standby_max_data_delay';


no rows selected


Standby Database SQL> alter session set STANDBY_MAX_DATA_DELAY=0;


Session altered.


Standby Database SQL> select count(*) from TSMDD;


 COUNT(*)
----------

  13378
实际测试可以发现当 STANDBY_MAX_DATA_DELAY=0 时,并不是查询语句执行时间超过 200ms 就返回 ORA-
03172 错误,而是指从查询开始的 200ms 内,若备库没有追上主库的 Current SCN 时出现 ORA-03172。




Standby Database SQL> alter session set STANDBY_MAX_DATA_DELAY=0;


Session altered.


Standby Database SQL> set timing on;


Standby Database SQL> select count(1) from TSMDD a, TSMDD b;


    COUNT(1)
----------

178970884


Elapsed: 00:00:05.34


Standby Database SQL> alter session set events '10046 trace name context forever,level
12';
Session altered.


在主库上执行大数据量的 insert 操作,但是不提交 commit;


Primary Database SQL> insert into /*+ append */        tsmdd select * from tsmdd;


此时在 Standby 数据库 上执行查询语句将触发 ORA-3172 错误


Standby Database SQL> select count(*) from tsmdd

               *
ERROR at line 1:

ORA-03172: STANDBY_MAX_DATA_DELAY of 0 seconds exceeded


Standby Database SQL>    /
select count(*) from tsmdd
*
ERROR at line 1:
ORA-03172: STANDBY_MAX_DATA_DELAY of 0 seconds exceeded
以上查询语句执行过程中的 10046 trace 如下:




PARSING IN CURSOR #47828795969456 len=26 dep=0 uid=34 oct=3 lid=34 tim=1316692536000853
hv=2314050071 ad='7115e798' sqlid='3smn48y4yv6hr'


select count(*) from tsmdd
END OF STMT
PARSE
#47828795969456:c=0,e=61,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1739041831,tim=1316692536
000852

WAIT #47828795969456: nam='standby query scn advance'
ela= 201440 p1=770798 p2=0 p3=20 obj#=13873 tim=1316692536202337
WAIT #47828795969456: nam='SQL*Net break/reset to client' ela= 25 driver id=1650815232
break?=1 p3=0 obj#=13873 tim=1316692536202528
WAIT #47828795969456: nam='SQL*Net break/reset to client' ela= 144 driver id=1650815232
break?=0 p3=0 obj#=13873 tim=1316692536202694
WAIT #47828795969456: nam='SQL*Net message to client' ela= 1 driver id=1650815232
#bytes=1
p3=0 obj#=13873 tim=1316692536202715


*** 2011-09-22 19:55:37.983
WAIT #47828795969456: nam='SQL*Net message from client' ela= 1781108 driver
id=1650815232 #bytes=1 p3=0 obj#=13873 tim=1316692537983884
CLOSE #47828795969456:c=0,e=24,dep=0,type=0,tim=1316692537984068


=========================================================================================
======


PARSING IN CURSOR #47828795969456 len=26 dep=0 uid=34 oct=3 lid=34 tim=1316692537984172
hv=2314050071 ad='7115e798' sqlid='3smn48y4yv6hr'
select count(*) from tsmdd
END OF STMT
PARSE
#47828795969456:c=0,e=53,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1739041831,tim=1316692537
984171

WAIT #47828795969456: nam='standby query scn advance' ela= 200546
p1=770914
p2=0 p3=20 obj#=13873 tim=1316692538184822
WAIT #47828795969456: nam='SQL*Net break/reset to client' ela= 10 driver
id=1650815232 break?=1 p3=0 obj#=13873 tim=1316692538184998
WAIT #47828795969456: nam='SQL*Net break/reset to client' ela= 103 driver
id=1650815232 break?=0 p3=0 obj#=13873 tim=1316692538185154
WAIT #47828795969456: nam='SQL*Net message to client' ela= 1 driver
id=1650815232 #bytes=1 p3=0 obj#=13873 tim=1316692538185182



注意这里出现的 standby query scn advance 等待事件,显然该等待事件是为了确认 Primary 与 Standby 之间的
Scn 差距,但这又是一个 Internal 的 undocumented 等待事件。我猜测是 P1 是 Standby 数据库的 Current Scn,
而 p3 可能是 Primary 与 Standby 之间的 Scn 差距。OBJ#是查询对象的 object_id:




SQL> col owner for a20
SQL> col object_name for a20


SQL> select owner,object_name from dba_objects where object_id=13873;


OWNER                OBJECT_NAME
-------------------- --------------------
MACLEAN              TSMDD




使用技巧


在实际的使用过程中我们没有必要每次登录会话查询都去指定 STANDBY_MAX_DATA_DELAY 参数,可以通过
创建 AFTER LOGON 触发器来简化工作。
在 11 g Release 2 中引入了 USERENV Context 的一种新属性 DATABASE_ROLE,使用该属性可以便捷地定位
用户所登录数据库的角色是 Primary 还是 Standby,11g 的 SQL 和 PL/SQL 客户端程序均可以通过
SYS_CONTEXT 函数获取该数据库角色信息。
通过创建以下登陆后触发器可以做到当应用程序登录到启用实时查询的 Standby 数据库上后即自动设置合适的
STANDBY_MAX_DATA_DELAY 参数。这样即避免了修改应用程序的代码,有做到了配置合理的最大数据延迟。

CREATE OR REPLACE TRIGGER AUTO_SMDD

 AFTER LOGON ON USER.SCHEMA
BEGIN

 IF (SYS_CONTEXT('USERENV', 'DATABASE_ROLE') IN ('PHYSICAL STANDBY')) THEN

  execute immediate 'alter session set standby_max_data_delay=5';

 END IF;
END;
注意以上 trigger 只需要在 Primary Database 上以应用相关用户身份建立即可,会同步到 Standby 上:




Primary Database SQL>    conn maclean/maclean
Connected.


Primary Database SQL> CREATE OR REPLACE TRIGGER AUTO_SMDD

 2       AFTER LOGON ON MACLEAN.SCHEMA

 3   BEGIN

 4       IF (SYS_CONTEXT('USERENV', 'DATABASE_ROLE') IN ('PHYSICAL STANDBY')) THEN

 5         execute immediate 'alter session set standby_max_data_delay=0';

 6       END IF;

 7   END;

 8   /
Trigger created.




© 2011, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追求法律责
任.

More Related Content

What's hot

【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理maclean liu
 
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践guestf5121c
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题WASecurity
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践wubx
 
主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题haojiewang
 
为10g rac cluster添加节点
为10g rac cluster添加节点为10g rac cluster添加节点
为10g rac cluster添加节点maclean liu
 
分区表基础知识培训
分区表基础知识培训分区表基础知识培训
分区表基础知识培训maclean liu
 

What's hot (9)

【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践
 
Redis
RedisRedis
Redis
 
主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题主备备的两个备机转为双Master出现诡异的slave lag问题
主备备的两个备机转为双Master出现诡异的slave lag问题
 
为10g rac cluster添加节点
为10g rac cluster添加节点为10g rac cluster添加节点
为10g rac cluster添加节点
 
分区表基础知识培训
分区表基础知识培训分区表基础知识培训
分区表基础知识培训
 

Viewers also liked

Material9 catàleg cursos educació
Material9 catàleg cursos educacióMaterial9 catàleg cursos educació
Material9 catàleg cursos educacióMaterial9
 
Agile development introduction
Agile development introductionAgile development introduction
Agile development introductionbeforeach
 
What’s a’twitter
What’s a’twitterWhat’s a’twitter
What’s a’twitterRyan Harrell
 
John whaley 10mythsaboutfindinga-softwareitjob
John whaley 10mythsaboutfindinga-softwareitjobJohn whaley 10mythsaboutfindinga-softwareitjob
John whaley 10mythsaboutfindinga-softwareitjobSony Prasad
 
Case 2012 crowdfunding session to share
Case 2012 crowdfunding session to shareCase 2012 crowdfunding session to share
Case 2012 crowdfunding session to shareJason Potts
 
Assessing the biological effects form low dose exposures similar to medical a...
Assessing the biological effects form low dose exposures similar to medical a...Assessing the biological effects form low dose exposures similar to medical a...
Assessing the biological effects form low dose exposures similar to medical a...Leishman Associates
 
Closing Work Orders
Closing Work OrdersClosing Work Orders
Closing Work Orderskalebhanly
 
Ifc 2010 workshop david and goliath
Ifc 2010 workshop   david and goliathIfc 2010 workshop   david and goliath
Ifc 2010 workshop david and goliathJason Potts
 
Risk Based Testing: Deferring the Right Bugs
Risk Based Testing: Deferring the Right BugsRisk Based Testing: Deferring the Right Bugs
Risk Based Testing: Deferring the Right Bugsindus329
 
台北市健言社---比,較厲害[對比](作大夢的歐吉桑)
台北市健言社---比,較厲害[對比](作大夢的歐吉桑)台北市健言社---比,較厲害[對比](作大夢的歐吉桑)
台北市健言社---比,較厲害[對比](作大夢的歐吉桑)Alan Huang
 
PR Moment event 26 March 2015: What do journalists want from PRs?
PR Moment event 26 March 2015: What do journalists want from PRs? PR Moment event 26 March 2015: What do journalists want from PRs?
PR Moment event 26 March 2015: What do journalists want from PRs? Vuelio
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
Enterprise manager cloud control 12c(12.1) &agent安装图文指南
Enterprise manager cloud control 12c(12.1) &agent安装图文指南Enterprise manager cloud control 12c(12.1) &agent安装图文指南
Enterprise manager cloud control 12c(12.1) &agent安装图文指南maclean liu
 
Content Marketing 101: A Step-by-Step Playbook
Content Marketing 101: A Step-by-Step PlaybookContent Marketing 101: A Step-by-Step Playbook
Content Marketing 101: A Step-by-Step PlaybookJay Acunzo
 
Comparison table jan lokpal bill govt lokpal bill and ncpri drafts
Comparison table  jan lokpal bill govt lokpal bill and ncpri draftsComparison table  jan lokpal bill govt lokpal bill and ncpri drafts
Comparison table jan lokpal bill govt lokpal bill and ncpri draftsDEEPAK YADAV
 

Viewers also liked (20)

History project!
History project!History project!
History project!
 
Presentation1
Presentation1Presentation1
Presentation1
 
Material9 catàleg cursos educació
Material9 catàleg cursos educacióMaterial9 catàleg cursos educació
Material9 catàleg cursos educació
 
Agile development introduction
Agile development introductionAgile development introduction
Agile development introduction
 
Indian Ngo’S12
Indian Ngo’S12Indian Ngo’S12
Indian Ngo’S12
 
What’s a’twitter
What’s a’twitterWhat’s a’twitter
What’s a’twitter
 
Devon house
Devon houseDevon house
Devon house
 
Ouderavond 2010
Ouderavond 2010Ouderavond 2010
Ouderavond 2010
 
John whaley 10mythsaboutfindinga-softwareitjob
John whaley 10mythsaboutfindinga-softwareitjobJohn whaley 10mythsaboutfindinga-softwareitjob
John whaley 10mythsaboutfindinga-softwareitjob
 
Case 2012 crowdfunding session to share
Case 2012 crowdfunding session to shareCase 2012 crowdfunding session to share
Case 2012 crowdfunding session to share
 
Assessing the biological effects form low dose exposures similar to medical a...
Assessing the biological effects form low dose exposures similar to medical a...Assessing the biological effects form low dose exposures similar to medical a...
Assessing the biological effects form low dose exposures similar to medical a...
 
Closing Work Orders
Closing Work OrdersClosing Work Orders
Closing Work Orders
 
Ifc 2010 workshop david and goliath
Ifc 2010 workshop   david and goliathIfc 2010 workshop   david and goliath
Ifc 2010 workshop david and goliath
 
Risk Based Testing: Deferring the Right Bugs
Risk Based Testing: Deferring the Right BugsRisk Based Testing: Deferring the Right Bugs
Risk Based Testing: Deferring the Right Bugs
 
台北市健言社---比,較厲害[對比](作大夢的歐吉桑)
台北市健言社---比,較厲害[對比](作大夢的歐吉桑)台北市健言社---比,較厲害[對比](作大夢的歐吉桑)
台北市健言社---比,較厲害[對比](作大夢的歐吉桑)
 
PR Moment event 26 March 2015: What do journalists want from PRs?
PR Moment event 26 March 2015: What do journalists want from PRs? PR Moment event 26 March 2015: What do journalists want from PRs?
PR Moment event 26 March 2015: What do journalists want from PRs?
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
Enterprise manager cloud control 12c(12.1) &agent安装图文指南
Enterprise manager cloud control 12c(12.1) &agent安装图文指南Enterprise manager cloud control 12c(12.1) &agent安装图文指南
Enterprise manager cloud control 12c(12.1) &agent安装图文指南
 
Content Marketing 101: A Step-by-Step Playbook
Content Marketing 101: A Step-by-Step PlaybookContent Marketing 101: A Step-by-Step Playbook
Content Marketing 101: A Step-by-Step Playbook
 
Comparison table jan lokpal bill govt lokpal bill and ncpri drafts
Comparison table  jan lokpal bill govt lokpal bill and ncpri draftsComparison table  jan lokpal bill govt lokpal bill and ncpri drafts
Comparison table jan lokpal bill govt lokpal bill and ncpri drafts
 

Similar to 11g r2新特性之standby max_data_delay

Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作maclean liu
 
一次Web性能测试小结
一次Web性能测试小结一次Web性能测试小结
一次Web性能测试小结beiyu95
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410maclean liu
 
Oracle10g高级安全特性列加密技术
Oracle10g高级安全特性列加密技术Oracle10g高级安全特性列加密技术
Oracle10g高级安全特性列加密技术maclean liu
 
Basic oracle for developer&beginner
Basic oracle for developer&beginnerBasic oracle for developer&beginner
Basic oracle for developer&beginnermaclean liu
 
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践xcq
 
11g新特性streams同步捕获
11g新特性streams同步捕获11g新特性streams同步捕获
11g新特性streams同步捕获maclean liu
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护mysqlops
 
Web性能测试指标参考v0.2
Web性能测试指标参考v0.2Web性能测试指标参考v0.2
Web性能测试指标参考v0.2beiyu95
 
丁原:海量数据迁移方案
丁原:海量数据迁移方案丁原:海量数据迁移方案
丁原:海量数据迁移方案YANGL *
 
PostgreSQL 9 Standby
PostgreSQL 9 StandbyPostgreSQL 9 Standby
PostgreSQL 9 StandbyMarch Liu
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOpenSourceCamp
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
My sql 同步
My sql 同步My sql 同步
My sql 同步Yiwei Ma
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocketpwesh
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networkingted-xu
 
Times Ten Training
Times Ten TrainingTimes Ten Training
Times Ten TrainingLi Chen
 
Oracle使用者安全設定
Oracle使用者安全設定Oracle使用者安全設定
Oracle使用者安全設定Chien Chung Shen
 
王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计YANGL *
 
Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期yiditushe
 

Similar to 11g r2新特性之standby max_data_delay (20)

Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作
 
一次Web性能测试小结
一次Web性能测试小结一次Web性能测试小结
一次Web性能测试小结
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
 
Oracle10g高级安全特性列加密技术
Oracle10g高级安全特性列加密技术Oracle10g高级安全特性列加密技术
Oracle10g高级安全特性列加密技术
 
Basic oracle for developer&beginner
Basic oracle for developer&beginnerBasic oracle for developer&beginner
Basic oracle for developer&beginner
 
手机之家的数据访问层实践
手机之家的数据访问层实践手机之家的数据访问层实践
手机之家的数据访问层实践
 
11g新特性streams同步捕获
11g新特性streams同步捕获11g新特性streams同步捕获
11g新特性streams同步捕获
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护
 
Web性能测试指标参考v0.2
Web性能测试指标参考v0.2Web性能测试指标参考v0.2
Web性能测试指标参考v0.2
 
丁原:海量数据迁移方案
丁原:海量数据迁移方案丁原:海量数据迁移方案
丁原:海量数据迁移方案
 
PostgreSQL 9 Standby
PostgreSQL 9 StandbyPostgreSQL 9 Standby
PostgreSQL 9 Standby
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
My sql 同步
My sql 同步My sql 同步
My sql 同步
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocket
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
Times Ten Training
Times Ten TrainingTimes Ten Training
Times Ten Training
 
Oracle使用者安全設定
Oracle使用者安全設定Oracle使用者安全設定
Oracle使用者安全設定
 
王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
 
Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期
 

More from maclean liu

Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルOracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルmaclean liu
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略maclean liu
 
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案maclean liu
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例maclean liu
 
PRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health CheckPRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health Checkmaclean liu
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案maclean liu
 
Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响maclean liu
 
【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案maclean liu
 
Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2maclean liu
 
Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2maclean liu
 
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1maclean liu
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 maclean liu
 
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24maclean liu
 
追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?maclean liu
 
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践maclean liu
 
Prm dul is an oracle database recovery tool database
Prm dul is an oracle database recovery tool   databasePrm dul is an oracle database recovery tool   database
Prm dul is an oracle database recovery tool databasemaclean liu
 
Oracle prm dul, jvm and os
Oracle prm dul, jvm and osOracle prm dul, jvm and os
Oracle prm dul, jvm and osmaclean liu
 
Oracle dba必备技能 使用os watcher工具监控系统性能负载
Oracle dba必备技能   使用os watcher工具监控系统性能负载Oracle dba必备技能   使用os watcher工具监控系统性能负载
Oracle dba必备技能 使用os watcher工具监控系统性能负载maclean liu
 
Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3maclean liu
 
Oracle prm安装说明
Oracle prm安装说明Oracle prm安装说明
Oracle prm安装说明maclean liu
 

More from maclean liu (20)

Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルOracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
 
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
 
PRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health CheckPRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health Check
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
 
Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响
 
【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案
 
Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2
 
Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2
 
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
 
追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?
 
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
 
Prm dul is an oracle database recovery tool database
Prm dul is an oracle database recovery tool   databasePrm dul is an oracle database recovery tool   database
Prm dul is an oracle database recovery tool database
 
Oracle prm dul, jvm and os
Oracle prm dul, jvm and osOracle prm dul, jvm and os
Oracle prm dul, jvm and os
 
Oracle dba必备技能 使用os watcher工具监控系统性能负载
Oracle dba必备技能   使用os watcher工具监控系统性能负载Oracle dba必备技能   使用os watcher工具监控系统性能负载
Oracle dba必备技能 使用os watcher工具监控系统性能负载
 
Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3
 
Oracle prm安装说明
Oracle prm安装说明Oracle prm安装说明
Oracle prm安装说明
 

11g r2新特性之standby max_data_delay

  • 1. 11gR2 新特性之 STANDBY_MAX_DATA_DE LAY by Maclean.liu liu.maclean@gmail.com www.oracledatabase12g.com
  • 2. About Me l Email:liu.maclean@gmail.com l Blog:www.oracledatabase12g.com l Oracle Certified Database Administrator Master 10g and 11g l Over 6 years experience with Oracle DBA technology l Over 7 years experience with Linux technology l Member Independent Oracle Users Group l Member All China Oracle Users Group l Presents for advanced Oracle topics: RAC, DataGuard, Performance Tuning and Oracle Internal.
  • 3. Active Data Guard 是 Oracle 11g 的亮点特性之一,而在 11G release 2 中对 Active Data Guard 引入了更多诱人 的新特性,这些特性将 Active Data Guard 打造成 Oracle 读写分离或报表查询的理想方案之一。 STANDBY_MAX_DATA_DELAY 是 11gr2 中对 Active Data Guard 的最大增强(buffer)之一,这是一个可以在会话 级别指定的参数(session parameter),该参数指定了在 Primary Database 已 commit 提交的变化与 standby Database 数据库上涉及相关变化的查询之间所允许的时间延迟,单位为 second 秒(Specifies a limit for the amount of time (in seconds) allowed to elapse between when changes are committed on the primary and when those same changes can be queries on the standby database)。 使用该 STANDBY_MAX_DATA_DELAY 参数的语法如下: ALTER SESSION SET STANDBY_MAX_DATA_DELAY ={ NONE | INTEGER } 注意事项 • 该参数无法为 SYS 用户所用,在 SYS 用户的 SESSION 下设置该参数将被忽略 • 若没有指定 STANDBY_MAX_DATA_DELAY,即使用其默认值 NONE,那么无论主备库之间有多大的 延迟,在 Physical Standby 上的查询都会被执行 • 若查询延迟超过 STANDBY_MAX_DATA_DELAY 所指定的值那么,将报 ORA-03172 错误: 03172, 00000, "STANDBY_MAX_DATA_DELAY of %s seconds exceeded" // *Cause: Standby recovery fell behind the STANDBY_MAX_DATA_DELAY // requirement. // *Action: Tune recovery and retry the query later, or switch to another // standby database within the data delay requirement.
  • 4. 在实际运用中 STANDBY_MAX_DATA_DELAY 保证了在 Standby 数据库上所作的报表查询不会得到过于陈旧的 结果(stale result),通过该参数我们可以指定一个报表应用所容许的数据时间延迟。 当然也可以指定不容许任何数据延迟,即设置 STANDBY_MAX_DATA_DELAY 为零,以便做到实时数据查询。 配置 Primary 与 Standby 数据库之间的实时查询或者说零延迟查询有以下注意事项: • 只有特定的应用程序才会对数据延迟有零容忍的需求,注意你的应用程序是否有如此苛刻的要求 • 在 standby 数据库上执行的查询语句必须返回和主库上查询的完全一致的结果 • 必须设置 STANDBY_MAX_DATA_DELAY 为 0 • 在查询开始的那一刻,Standby 数据库必须同步到与 Primary 数据库一致的 Current Scn • 若结果没有在 200ms 内返回,则查询会因 ORA-03172 而终止 • Primary 数据库必须采用最大可用(max availability)或最大保护(maximum protection)模式 • redo 传输必须使用 SYNC 选项 • 必须启用 Real-Time Query 特性 实际使用 以下我们通过演示来了解该 STANDBY_MAX_DATA_DELAY 的效果: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production PL/SQL Release 11.2.0.2.0 - Production CORE 11.2.0.2.0 Production TNS for Linux: Version 11.2.0.2.0 - Production NLSRTL Version 11.2.0.2.0 - Production SQL> select * from global_name; GLOBAL_NAME --------------------------------------------------------------------------------
  • 5. www.oracledatabase12g.com & www.askmaclean.com Primary Database SQL> conn maclean/maclean Connected. Primary Database SQL> select database_role,protection_mode from v$database; DATABASE_ROLE PROTECTION_MODE ---------------- -------------------- PRIMARY MAXIMUM AVAILABILITY Primary Database SQL> create table TSMDD tablespace users as select * From dba_objects; Table created. Standby Database SQL> conn maclean/maclean Connected. Standby Database SQL> select database_role,protection_mode from v$database; DATABASE_ROLE PROTECTION_MODE ---------------- -------------------- PHYSICAL STANDBY MAXIMUM AVAILABILITY 注意 STANDBY_MAX_DATA_DELAY 是一个会话参数 session parameter,而非实例参数 instance parameter Standby Database SQL> select name from v$system_parameter where name='standby_max_data_delay'; no rows selected Standby Database SQL> alter session set STANDBY_MAX_DATA_DELAY=0; Session altered. Standby Database SQL> select count(*) from TSMDD; COUNT(*) ---------- 13378
  • 6. 实际测试可以发现当 STANDBY_MAX_DATA_DELAY=0 时,并不是查询语句执行时间超过 200ms 就返回 ORA- 03172 错误,而是指从查询开始的 200ms 内,若备库没有追上主库的 Current SCN 时出现 ORA-03172。 Standby Database SQL> alter session set STANDBY_MAX_DATA_DELAY=0; Session altered. Standby Database SQL> set timing on; Standby Database SQL> select count(1) from TSMDD a, TSMDD b; COUNT(1) ---------- 178970884 Elapsed: 00:00:05.34 Standby Database SQL> alter session set events '10046 trace name context forever,level 12'; Session altered. 在主库上执行大数据量的 insert 操作,但是不提交 commit; Primary Database SQL> insert into /*+ append */ tsmdd select * from tsmdd; 此时在 Standby 数据库 上执行查询语句将触发 ORA-3172 错误 Standby Database SQL> select count(*) from tsmdd * ERROR at line 1: ORA-03172: STANDBY_MAX_DATA_DELAY of 0 seconds exceeded Standby Database SQL> / select count(*) from tsmdd * ERROR at line 1: ORA-03172: STANDBY_MAX_DATA_DELAY of 0 seconds exceeded
  • 7. 以上查询语句执行过程中的 10046 trace 如下: PARSING IN CURSOR #47828795969456 len=26 dep=0 uid=34 oct=3 lid=34 tim=1316692536000853 hv=2314050071 ad='7115e798' sqlid='3smn48y4yv6hr' select count(*) from tsmdd END OF STMT PARSE #47828795969456:c=0,e=61,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1739041831,tim=1316692536 000852 WAIT #47828795969456: nam='standby query scn advance' ela= 201440 p1=770798 p2=0 p3=20 obj#=13873 tim=1316692536202337 WAIT #47828795969456: nam='SQL*Net break/reset to client' ela= 25 driver id=1650815232 break?=1 p3=0 obj#=13873 tim=1316692536202528 WAIT #47828795969456: nam='SQL*Net break/reset to client' ela= 144 driver id=1650815232 break?=0 p3=0 obj#=13873 tim=1316692536202694 WAIT #47828795969456: nam='SQL*Net message to client' ela= 1 driver id=1650815232 #bytes=1 p3=0 obj#=13873 tim=1316692536202715 *** 2011-09-22 19:55:37.983 WAIT #47828795969456: nam='SQL*Net message from client' ela= 1781108 driver id=1650815232 #bytes=1 p3=0 obj#=13873 tim=1316692537983884 CLOSE #47828795969456:c=0,e=24,dep=0,type=0,tim=1316692537984068 ========================================================================================= ====== PARSING IN CURSOR #47828795969456 len=26 dep=0 uid=34 oct=3 lid=34 tim=1316692537984172 hv=2314050071 ad='7115e798' sqlid='3smn48y4yv6hr' select count(*) from tsmdd END OF STMT PARSE #47828795969456:c=0,e=53,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1739041831,tim=1316692537 984171 WAIT #47828795969456: nam='standby query scn advance' ela= 200546 p1=770914 p2=0 p3=20 obj#=13873 tim=1316692538184822 WAIT #47828795969456: nam='SQL*Net break/reset to client' ela= 10 driver id=1650815232 break?=1 p3=0 obj#=13873 tim=1316692538184998 WAIT #47828795969456: nam='SQL*Net break/reset to client' ela= 103 driver
  • 8. id=1650815232 break?=0 p3=0 obj#=13873 tim=1316692538185154 WAIT #47828795969456: nam='SQL*Net message to client' ela= 1 driver id=1650815232 #bytes=1 p3=0 obj#=13873 tim=1316692538185182 注意这里出现的 standby query scn advance 等待事件,显然该等待事件是为了确认 Primary 与 Standby 之间的 Scn 差距,但这又是一个 Internal 的 undocumented 等待事件。我猜测是 P1 是 Standby 数据库的 Current Scn, 而 p3 可能是 Primary 与 Standby 之间的 Scn 差距。OBJ#是查询对象的 object_id: SQL> col owner for a20 SQL> col object_name for a20 SQL> select owner,object_name from dba_objects where object_id=13873; OWNER OBJECT_NAME -------------------- -------------------- MACLEAN TSMDD 使用技巧 在实际的使用过程中我们没有必要每次登录会话查询都去指定 STANDBY_MAX_DATA_DELAY 参数,可以通过 创建 AFTER LOGON 触发器来简化工作。 在 11 g Release 2 中引入了 USERENV Context 的一种新属性 DATABASE_ROLE,使用该属性可以便捷地定位 用户所登录数据库的角色是 Primary 还是 Standby,11g 的 SQL 和 PL/SQL 客户端程序均可以通过 SYS_CONTEXT 函数获取该数据库角色信息。 通过创建以下登陆后触发器可以做到当应用程序登录到启用实时查询的 Standby 数据库上后即自动设置合适的 STANDBY_MAX_DATA_DELAY 参数。这样即避免了修改应用程序的代码,有做到了配置合理的最大数据延迟。 CREATE OR REPLACE TRIGGER AUTO_SMDD AFTER LOGON ON USER.SCHEMA BEGIN IF (SYS_CONTEXT('USERENV', 'DATABASE_ROLE') IN ('PHYSICAL STANDBY')) THEN execute immediate 'alter session set standby_max_data_delay=5'; END IF; END;
  • 9. 注意以上 trigger 只需要在 Primary Database 上以应用相关用户身份建立即可,会同步到 Standby 上: Primary Database SQL> conn maclean/maclean Connected. Primary Database SQL> CREATE OR REPLACE TRIGGER AUTO_SMDD 2 AFTER LOGON ON MACLEAN.SCHEMA 3 BEGIN 4 IF (SYS_CONTEXT('USERENV', 'DATABASE_ROLE') IN ('PHYSICAL STANDBY')) THEN 5 execute immediate 'alter session set standby_max_data_delay=0'; 6 END IF; 7 END; 8 / Trigger created. © 2011, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追求法律责 任.