1、配置时间同步
在安装Oracle集群件和Oracle数据库软件时,Oracle安装程序将首先在本地节点上安装软件,然后再将软件远程复制到远程节点。如果两个RAC节点的日期和时间未同步,可能会收到类似于以下内容的错误:
"/bin/tar: ./inventory/Components21/oracle.ordim.server/10.2.0.1.0: timestamp 2010-12-04 06:24:04 is 25 s in the future"
所有节点的时间必须同步,这通常是通过配置NTP服务实现的。如果用户的网络中已经有一个时间服务器,那么可以所有节点都指向它,否则可以从集群中挑选一个节点作为时间服务器,让其他节点与它同步。
(1)网络中有时间服务器(本环境采取这种方式)
vi /etc/ntp.conf
server 192.168.1.7 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
(2)网络中没有时间服务器
可以选择集群中某个节点作为时间服务器,NTP服务只需要很少的系统资源。假设选择zhh1作为时间服务器,zhh2向它同步:
编辑zhh1的ntp配置文件
server 127.127.1.0 #注意不是127.0.0.1
fudge 127.127.1.0 stratum 11
driftfile /var/lib/ntp/drift broadcastdelay 0.008
然后编辑zhh2的ntp配置文件
server 192.168.5.235 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
(3)启动ntp服务,并设置开机启动
[root@zhh1 ~]# /etc/init.d/ntpd start
[root@zhh1 ~]# chkconfig ntpd on
2、配置hangcheck-timer模块
9.2以前使用一个名为watchdogd的用户空间监视后台程序来监视集群的状态情况,并在出现故障时重新启动RAC节点。从Oracle<?xml:namespace prefix = st1 />9.2.0.2开始,此监视后台程序已被名为hangcheck-timer的模块所代替,该模块可以更好地解决可用性和可靠性问题。hang-check计时器被加载到Linux内核中并检查系统是否挂起。它将设置一个计时器,并在特定的时间量之后检查该计时器。有一个用于检查挂起情况的可配置阈值,如果超过该阈值,计算机将重新启动。尽管Oracle CRS并不需要hangcheck-timer模块,但Oracle强烈建议使用它。
hangcheck-timer模块使用了一个基于内核的计时器,该计时器周期性地检查系统任务调度程序,以捕获延迟,从而确定系统的运行状况。如果系统挂起或暂停,则计时器重置该节点。hangcheck-timer模块使用时间戳计数器(TSC) CPU寄存器,该寄存器在每个时钟信号处递增。由于此寄存器由硬件自动更新,因此TCS提供了更精确的时间度量。
两个参数,即hangcheck_tick(定义系统检查频率,默认60s,oracle建议30s)和hangcheck_margin(定义在重置RAC节点前的最大挂起延时,默认180s,oracle建议180s)来确定节点是否出现故障。hangcheck-timer模块会根据hangcheck_tick的设置,定时检查内核。只要响应时间小于hangcheck_tick+hangcheck_margin,都会认为内核运行正常。否则,就意味着运行异常,模块会自动重启系统。
注意:crs的参数MissCount必须大于hangcheck_tick+hangcheck_margin的和(需考证)
miscount的值用crsctl get css misscount查询,10gR2 linux平台,默认60s
设置hangcheck内核模块参数:
vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
设置hangcheck内核模块开机加载
vi /etc/rc.d/rc.local
/sbin/modprobe hangcheck-timer
要立即加载模块,执行:
modprobe -v hangcheck-timer
检查加载情况:
[root@zhh1 ~]# lsmod | grep hangcheck_timer
hangcheck_timer 5593 0