Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

999

积分

1

好友

942

主题
1#
发表于 2013-10-4 00:20:45 | 查看: 3827| 回复: 0
关于RAC集群心跳超时驱逐节点与异步IO的疑问

有种说法是说RAC集群出现心跳超时之后,会固定重启2节点,不知这个官方文档有没有具体说明,RAC节点是否有主节点与从节点的分别,另外关于使用异步IO在哪些场景适用,有没有相应的官方文档可供参考,或者是关于异步IO的一些官方建议.
望解答,谢谢!



11.2的online doc上是这么描述AIO的:

http://docs.oracle.com/cd/E11882_01/server.112/e16638/os.htm#sthref583

"
With synchronous I/O, when an I/O request is submitted to the operating system, the writing process blocks until the write is confirmed as complete. It can then continue processing. With asynchronous I/O, processing continues while the I/O request is submitted and processed. Use asynchronous I/O when possible to avoid bottlenecks.
Some platforms support asynchronous I/O by default, others need special configuration, and some only support asynchronous I/O for certain underlying file system types.
"

所以通常/大部分时候来讲,对于datafile来说,开启了AIO会有好处的。logfile和controlfile是不是受filesystemio_options影响我需要查一下。
风险:我见过几个跟AIO相关的bug,但是坦率讲,大系统/超繁忙的系统用AIO的还是应该不少的。


我来说一下RAC集群的心跳吧:
RAC集群的心跳有两种 NHB(network heart beat)和DHB (disk heart beat)

Time out的时间分别可以通过以下命令获取:

crsctl get css misscount
crsctl get css disktimeout

10g和11.1上的情况:

如果NHB丢失超misscount的时间,那么集群会踢掉丢失心跳的节点,如果是2个节点的集群,通常是大号的节点重启;如果是多节点的集群,会通过选举的方式保留size最大的集群 ,如3个节点的集群,丢失网络心跳后分裂成2节点和1节点的集群,那么剩余一个节点的集群会重启;

磁盘心跳DHB是用来保护数据安全的,所以如果当大部分的选举盘心跳丢失超过 disktimeout ,那么节点会重启



11.2上的情况:

如果NHB丢失超misscount的时间,Cluster会把所有的stack都重新启动,如果还无法解决那么才会尝试通过选举的方式重启主机,这个功能在11.2上引入 (rebootless restart)


关于重启的诊断,建议您看一下以下两篇文档:

Troubleshooting 11.2 Clusterware Node Evictions (Reboots) [ID 1050693.1]

NOTE:265769.1 - Troubleshooting 10g and 11.1 Clusterware Reboots

Allen Gao 也写过中文的文档介绍RAC节点的重启,你可以看看我们的中文博客:


https://blogs.oracle.com/Database4CN/entry/11gr2_%E5%A6%82%E4%BD%95%E8%AF%8A%E6%96%AD%E8%8A%82%E7%82%B9%E9%87%8D%E5%90%AF%E9%97%AE%E9%A2%98

RAC里总会有一个节点会作为master的节点,作为集群的资源管理,如,接受客户端的命令,自动备份OCR等等,但是这个和重启没有关系




1. 网络心跳:1.   通过集群私网,每一个节点都定期向其他所有的节点发送网络心跳,以便确认节点之间的通信和健康性。
2.磁盘心跳:只有网络心跳是不够的,因为,一旦出现了网络问题,当节点间互相无法发现对方的网络心跳时,无法判断那一个(些)节点的状态正常,哪一些不正常,所以,我们还需要磁盘心跳。每个节点会定期向表决盘(VF)中注册本地节点的状态信息。这样,当网络心跳出现问题时,我们就可以基于表决盘中的信息,判断节点的状态并作出正确的决定,并防止脑裂(split brain)的发生。

所以,对于2个节点的集群,如果两个节点之间的网络心跳出现问题, 集群会分裂成2个子集群(corhort), 但是节点并不存在其他问题,
那么当集群尝试通过表决盘中的信息解决脑裂的时候就不发决定,因为结论是1:1。对于这种情况,集群就只能通过固定的规则来解决脑裂。

1. 集群分裂之后,节点数多的corhort存活。
2. 如果corhort 的节点数相同,那么具有最小节点号节点的corhort存活。所以,对于2个节点的集群,2号节点会离开集群,1号节点存活。


对于您提到的情况“因为之前我们的系统出现因为NHB超时两个节点先后重启,先是大号的节点重启,然后小号的节点也重启了”,这个是不正常的。我们需要查看两个节点的ocssd.log
来分析到底发生了什么事情。

下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569     邮箱:service@parnassusdata.com
您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-6-1 22:01 , Processed in 0.047367 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569