ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle数据库管理 » DataGuard - 利用Cascaded Redo Log Destinations避免WAN稳定性问题

标题: [精华] DataGuard - 利用Cascaded Redo Log Destinations避免WAN稳定性问题
离线 Kamus
版主


精华贴数 51
个人空间 400
技术积分 46530 (13)
社区积分 3558 (380)
注册日期 2002-5-26
论坛徽章:28
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章授权会员生肖徽章2007版:虎

发表于 2005-1-13 23:27 
DataGuard - 利用Cascaded Redo Log Destinations避免WAN稳定性问题

原文发表于:
http://blog.csdn.net/kamus/archive/2005/01/13/252475.aspx

最近一直头疼于DataGuard环境中万一网络失败将导致的Primary库短时间内无法正常工作的问题。

这个问题的现象基本上是这样:
当Primary和Standby之间的网络出现问题,比如说在测试环境中我们拔掉Standby的网线,此时当Primary发生日志切换(Log Switch)的时候,Primary将试图通知Standby同样作归档,但是由于网络不通,就会默认有30秒的TimeOut,而在这30秒的时间内,Primary上的任何DML操作都将被悬停。
至今为止我还没有找到很好的办法可以有效地缩短这个TimeOut时间,虽然按照文档上说应该可以缩短到最小15秒。即使是15秒,也是无法忍受的,特别是如果DataGuard环境搭建在WAN上,比如说通过2M的DDN专线,那么出现网络故障的几率是比较高的。
如果说将有可能由于DataGuard的网络原因而导致主业务库的操作悬停,无论对于客户还是对于我个人而言都是不太容易接受的。

WAN上的网络故障几率较大,那么如果我们换到LAN上,就可以降低这种故障的发生率。由此想到可以利用DataGuard中的Cascaded Redo Log Destinations功能。今天作了此项测试,效果还是很理想的。
所谓Cascaded Redo Log Destinations功能,是指A机器(Primary)将redo数据传递给B机器(Standby),然后B机器再将接收到的redo传递给C机器(Standby),这种中转方式在Physical Standby和Logical Standby中都可以实现。如果A,B处于同一个LAN中,而B,C则通过WAN通信,那么即使WAN出现网络问题,也不会影响A将redo传递到B,也就不会影响A的业务进行。

大概配置如下:
1。A (Primary)的init参数:
*.log_archive_dest_1='LOCATION=/oradata/ctsdb/archive'
*.log_archive_dest_2='SERVICE=CTSDB.JUMPER LGWR ASYNC=20480 NET_TIMEOUT=15 MAX_FAILURE=2 REOPEN=10'

2。B (Standby1)的init参数:
*.log_archive_dest_1='LOCATION=/oradata/ctsdb/archive'
*.log_archive_dest_2='SERVICE=CTSDB.STANDBY'
*.standby_archive_dest='/oradata/ctsdb/archive'

3。C (Standby2)的init参数:
*.log_archive_dest_1='LOCATION=/oradata/ctsdb/archive'
*.standby_archive_dest='/oradata/ctsdb/archive'
*.fal_client='ctsdb.standby'
*.fal_server='ctsdb.jumper'

其它的配置文件,比如listener.ora和tnsnames.ora,不再赘述。

在B机器上的alertlog中一些比较有趣的地方:
Thu Jan 13 12:05:27 2005
RFS: Successfully opened standby logfile 4: '/oradata/ctsdb/redo04.log'
Thu Jan 13 12:05:33 2005
RFS: Successfully opened standby logfile 5: '/oradata/ctsdb/redo05.log'
Thu Jan 13 12:05:38 2005
RFS: Successfully opened standby logfile 6: '/oradata/ctsdb/redo06.log'
RFS: Successfully opened standby logfile 7: '/oradata/ctsdb/redo07.log'
RFS: No standby redo logfiles of size 6144 blocks available

以前的测试和Freelists中的一些邮件列表的讨论都表明在DataGuard环境中我们最多只能使用到2组Standby Redolog(一般情况我们只会只用到1组),这是因为Oracle对于SRL的启用机制就是从首个SRL开始找第一个可以使用的,正常情况下只有在接受下一次redo信息时,redo04.log还没有被归档成功,这时候才会使用redo05.log,而redo05被写满以后,redo04还没有被归档结束的情况我们几乎不可能碰到,所以下一次的redo信息又被写到redo04中。
而这次测试,由于B和C之间的网络中断,导致redo04-redo07这四组SRL都被启用了,并且再接下去RFS报了No standby redo logfiles的错误,这个同样很明显地表示了如果网络中断,在TimeOut时间内,redo是无法被正常归档的。
那么大家可能要问,如果B的4组SRL都无法使用了,A继续传过来的redo数据是不是也会被阻塞,从而也间接导致了A同样无法正常继续业务?
在测试之前,我也同样担心这个问题,但是测试表明这种情况没有出现。原因在于DataGuard的机制是,即使A指定了使用LGWR传递redo(如本例所示),如果出现B上的SRL无法使用的情况,B的RFS进程将把接受到的redo直接写入本机的Archivelog中,当A开始归档的时候,B同时归档刚才写入了数据的Archivelog(此归档的Sequence比A上归档的Sequence大1)。从下面的alertlog中可以确认这点:
ARC1: Evaluating archive   log 6 thread 1 sequence 600
ARC1: Beginning to archive log 6 thread 1 sequence 600
Creating archive destination LOG_ARCHIVE_DEST_2: 'CTSDB.STANDBY'
Creating archive destination LOG_ARCHIVE_DEST_1: '/oradata/ctsdb/archive/1_600.dbf'
ARC1: Completed archiving  log 6 thread 1 sequence 600

从以上的测试中我们得出一个结论,只要是Primary可以跟Standby的RFS进程正常通信,那么就不会产生操作被悬停的问题,不管Standby到底是使用了SRL还是使用了Archivelog。

最后,由于这样的环境添加了额外的机器(机器B),而由于DataGuard环境必须要求同构,所以如果整个环境是UNIX的,那么也许大家要问,这样岂不是需要再购买一台小型机,这在budget方面是不是就有些问题了。
确实,需要额外的投入,但是由于B机器只是作中转redo的作用,所以我们甚至可以不将B置于managed recover模式下,也就是B只负责接受A的redo,再把redo传送到C,这样对于B机器的性能要求就可以下降很多,也许一台普通的SunRay工作站就可以满足要求了。至于是不是确实可以满足性能需求,我还会有后续的测试。
呵呵,敬请期待。


__________________
有事情请发Gmail邮箱,站内IM可能不能及时回复。    

***Chanel [K]***

从明天起, 做一个幸福的人  
喂马, 劈柴, 周游世界  
从明天起, 关心粮食和蔬菜  
我有一所房子 面朝大海, 春暖花开
只看该作者    顶部
离线 xzh2000
仙人抚我须 结发授长生



精华贴数 13
个人空间 0
技术积分 46440 (14)
社区积分 5155 (284)
注册日期 2002-7-17
论坛徽章:30
现任管理团队成员ITPUB元老授权会员生肖徽章2007版:狗2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:帆船
生肖徽章2007版:虎ITPUB新首页上线纪念徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

发表于 2005-1-14 09:11 
如果这样的话,很差的pcserver就可以胜任B机的工作,
不管B是否处于recover模式,因为接收与传送日志的压力是很小的。


__________________
过目即忘  插柳成荫
只看该作者    顶部
离线 grassbell
深入讨论区斑竹


精华贴数 9
个人空间 0
技术积分 11852 (101)
社区积分 365 (1693)
注册日期 2003-6-13
论坛徽章:6
管理团队成员ITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念管理团队2006纪念徽章会员2006贡献徽章授权会员
      

发表于 2005-1-14 09:51 
B机db设成什么状态?


__________________
不是自己的,多研究,多做实验,把心得写出来,变成自己的

欢迎访问Alibaba DBA 团队Blog: www.alidba.net
只看该作者    顶部
离线 Kamus
版主


精华贴数 51
个人空间 400
技术积分 46530 (13)
社区积分 3558 (380)
注册日期 2002-5-26
论坛徽章:28
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章授权会员生肖徽章2007版:虎

发表于 2005-1-14 12:28 
B只需要mount standby database就可以了


__________________
有事情请发Gmail邮箱,站内IM可能不能及时回复。    

***Chanel [K]***

从明天起, 做一个幸福的人  
喂马, 劈柴, 周游世界  
从明天起, 关心粮食和蔬菜  
我有一所房子 面朝大海, 春暖花开
只看该作者    顶部
离线 eygle
天下有雪


精华贴数 65
个人空间 0
技术积分 206744 (1)
社区积分 6444 (233)
注册日期 2001-10-8
论坛徽章:60
现任管理团队成员ITPUB长老会主席2007年度ITPUB杰出贡献ITPUB长老会成员ITPUB元老ITPUB维基人
授权会员2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:射击生肖徽章2007版:鼠2008年新春纪念徽章

发表于 2005-1-14 13:16 
还是被你找到了方法,不错

希望有更简单的方法。


__________________
只看该作者    顶部
离线 shangym
山 水 天 雪 桥


精华贴数 1
个人空间 0
技术积分 2325 (680)
社区积分 266 (2036)
注册日期 2002-7-11
论坛徽章:2
会员2006贡献徽章授权会员    
      

发表于 2005-1-14 13:24 
如果网络不好,我倒觉得不要远程归档比较好


__________________
胃口小,话少shangym@itpub.net
只看该作者    顶部
离线 Kamus
版主


精华贴数 51
个人空间 400
技术积分 46530 (13)
社区积分 3558 (380)
注册日期 2002-5-26
论坛徽章:28
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章授权会员生肖徽章2007版:虎

发表于 2005-1-15 10:22 


QUOTE:
最初由 xzh2000 发布
如果这样的话,很差的pcserver就可以胜任B机的工作,
不管B是否处于recover模式,因为接收与传送日志的压力是很小的。


如果是Windows环境确实是这样的
可惜我们是UNIX,所以B机还是不能使用PCserver。


__________________
有事情请发Gmail邮箱,站内IM可能不能及时回复。    

***Chanel [K]***

从明天起, 做一个幸福的人  
喂马, 劈柴, 周游世界  
从明天起, 关心粮食和蔬菜  
我有一所房子 面朝大海, 春暖花开
只看该作者    顶部
离线 Kamus
版主


精华贴数 51
个人空间 400
技术积分 46530 (13)
社区积分 3558 (380)
注册日期 2002-5-26
论坛徽章:28
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章授权会员生肖徽章2007版:虎

发表于 2005-1-15 10:23 


QUOTE:
最初由 shangym 发布
如果网络不好,我倒觉得不要远程归档比较好

呵呵,不要远程归档,如何实现异地的DataGuard环境


__________________
有事情请发Gmail邮箱,站内IM可能不能及时回复。    

***Chanel [K]***

从明天起, 做一个幸福的人  
喂马, 劈柴, 周游世界  
从明天起, 关心粮食和蔬菜  
我有一所房子 面朝大海, 春暖花开
只看该作者    顶部
离线 Bigtree
中级会员


精华贴数 0
个人空间 0
技术积分 1046 (1734)
社区积分 2 (23192)
注册日期 2002-2-24
论坛徽章:0
      
      

发表于 2005-1-15 14:06 
请问C机器是不是也是处于mount standby database状态?


__________________
早上醒来,光彩在脸上,充满笑容地迎接未来。到了中午,光彩在腰上,挺直腰杆活在当下。到了晚上,光彩在脚上,脚踏实地地做好自己。原来人生也很简单,只要懂得“珍惜、知足、感恩”,你就拥有了生命的光彩。
只看该作者    顶部
在线/呼叫 biti_rainy
人生就是如此



精华贴数 37
个人空间 0
技术积分 110924 (4)
社区积分 11774 (123)
注册日期 2001-12-12
论坛徽章:41
现任管理团队成员ITPUB长老会成员ITPUB元老年度论坛发贴之星年度论坛发贴之星ITPUB北京九华山庄2008年会纪念徽章
管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章

发表于 2005-1-15 14:35 


QUOTE:
最初由 Kamus 发布


呵呵,不要远程归档,如何实现异地的DataGuard环境


网络不好,但是适时性要求很高?


如果适时性要求不是那么高,自己压缩然后scp 拷贝过去都可以



__________________
眼界决定边界,态度决定高度
blog:
人生就是如此
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问