RAC数据库实例之间的三种心跳机制

和CSS 部分类似,RAC数据库中存在3种心跳机制:网络心跳、磁盘心跳、本地心跳
1、网络心跳:
       数据库的网络心跳机制是通过LMNO进程来实现的,每个实例的LMON金嫦娥会定期通过数据库的私网(内存融合使用的网络)与所有实例进行通信,以确认其他节点(实例)的状态。如果,某个实例一段时间之内(默认 300s)不能响应其他节点发动的网络心跳信息,那么数据库集群就会需要进行重新配置,而用户能后看的最直观的信息就是ORA-29740错误。所以,数据库层面的网络心跳与集群中的网络心跳类似。
另外,需要说明的是,数据库层面的网络心跳除了LMON进程实现之外,本地实例的LMS、LMD和LCK0也会与远程节点对应的LMS、LMD和LCK0进程进行通信的,来检测彼此之间的状态。但是这种状态的检测在实例之间传输消息的的时候才会发生,所以从严格意思上讲,实例之间的LMS、LMD和LCK0进程进行状态检测并能补鞥人为是实例的网络心跳。不过,他们的确能够提供一种类似于网络心跳的方法。

2、磁盘心跳

       数据库层面的磁盘心跳和集群层面和集群层面的磁盘心跳基本相同,但是,由于数据库层面并没有VF存在,所以,实现的方式会有所不同。对于RAC数据库,CKPT进程默认每3秒向数据库的控制文件写入本地实例能够访问的其他实例的信息,从而完成数据库的磁盘心跳。当然,磁盘心跳中的“其他节点状态”信息是通过LMON进程获得的。而对于用户而言,如果数据库实例的磁盘心跳出了问题,最直观的信息就是ora-494错误。
注意:如果数据库中存在多个控制文件的话,CKPT必须保证所有控制文件的写入操作返回之后才能完成磁盘心跳操作,因为数据库要求所有控制文件的捏弄必须是一致的。

    在数据库层面,磁盘心跳的主要功能有两个:
1、确认本地实例是否正常;
2、当数据库层面出现脑裂时,负责提供投票信息。
    功能1非常好理解,如果某个实例一段时间(默认900秒)之间都不能完后才能和控制文件的I/O操作,那么本地节点会选择通过重启实例的方式来维护数据库集群的一致性。
    功能2的作用是LMON进程会将网络心跳中包含的远程节点状态信息发送给CKPT进程。而对于数据库实例,他的运行状态只有两个情况,运行和关闭。

3、 本地心跳
    事实上,本地心跳的概念是从11gR1版本开始被引入的,从11g版本开始,本地的LMS、LMON和LMD进程就会定期的检查彼此的状态,如果发现某一个进程出现了问题(最常见额问题就是hang),就可以通过重启实例的方式来维护数据库集群的一致性。这种行为就是通过一下3的影藏参数来控制的。
_lm_rcvr_hang_check_frequency:这个参数指定了进程之间彼此状态检查的时间间隔。默认诶60秒。
_lm_revr_hang_allow_tme:这个参数指定了一个进程处于hang状态的最大超时时间,改参数默认值为200s。
_lm_rcvr_hang_kill:这个参数指定了当一个进程处于hang状态的时间超过了_lm_hang_allow_time之后,是否允许重启数据库实例。改参数默认为false。

到11gR2版本开始恩地心跳的概念出了新的变化,LMHB进程会定期监控LMON、LMS、LMD、LCK0等于Cache Fusion 相关额重要后台进程,如果LMHB进程发现某一个重要后台的进程在一段时间内没有更新自己的状态信息,就会进行分析,如果有必要会通知重启本地节点的方式来解决问题。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值