您的位置:首页 > 数据库 > Oracle

Using Diagwait during Oracle Clusterware Node evictions

2012-11-01 16:46 204 查看

什么情况下Oracle Clusterware会重启(Evict,驱逐)节点机器? 1. 节点机器在interconnect network上无法ping通,没有了network heartbeat,比如网络问题。 2. 节点机器无法存取Voting Disk,没有了disk heartbeat,比如磁盘问题。 3. 由于节点机器过于繁忙,导致没有空闲资源来完成上述的两种动作之一,比如CPU问题,内存问题。 具体的Timeout算法参看Metalink Note:294430.1。 通常,在某个节点被驱逐之后,cssd.log或者crsd.log或者操作系统自身的log中会有具体的信息记载,通过这些log可以知道到底是什么原因导致了节点被驱逐。但是,可能在某些情况下,由于操作系统在被强行reboot之前过于繁忙,根本没有任何空余的CPU时间片来将内存中的log内容写入到磁盘log文件中,这时候,我们在log中看到的就是忽然的一段时间空白之后就是Cluster重新启动的信息了。 在10.2.0.3之后,我们可以设置diagwait,来延迟eviction,让系统在重启之前等待几秒,尽量让log可以写入到磁盘上。该功能目前已经backport到10.1.0.5中,因此在 10.1.0.5 (or higher), 10.2.0.3 (or higher) 和11.1.0.6 (or higher)这些版本中都可以设置diagwait。 注:set diagwait不仅仅会延迟eviction,同时会将oprocd进程的检查margin从默认的500ms(10205中是1500ms)提升到10000ms(也就是10秒),opocd如果发现两次检查的时间间隔超过margin值,就会强制重启服务器,所以实际上set diagwait同样提高了RAC环境的稳定性。 在不支持的版本中设置diagwait将会得到”unrecognized parameter diagwait specified” 错误提示。 设置diagwait的方法,使用root用户执行以下命令: 1. 停止Clusterware #crsctl stop crs #<CRS_HOME>/bin/oprocd stop 2. 确认Clusterware stack已经完全关闭 #ps -ef |egrep "crsd.bin|ocssd.bin|evmd.bin|oprocd" 3. 在集群的任意节点上设置diagwait等待时间13秒 #crsctl set css diagwait 13 -force 4. 检查diagwait设置是否成功 #crsctl get css diagwait 如果设置成功,则返回13,否则返回”Configuration parameter diagwait is not defined”。 5. 重新启动Oracle Clusterware #crsctl start crs 在解决完导致节点被驱逐的问题之后,可以将diagwait参数取消。 取消的方法仍然按照上面的命令步骤,只是将第3步中的命令改为: #crsctl unset css diagwait 在Oracle 10gR2 + AIX5L的系统中,可能由于各种原因(比如操作系统的bug或者数据库的bug),导致OPROCD进程驱逐节点,检查以及解决的方法可以参看Metalink Note:419312.1。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐