1、 RAC默认心跳时间
版本 | misscount | disktimeout | reboottime |
10.2.0.1 | 60s | \ | \ |
10.2.0.1+p4896338/10.2.0.2 | 60s | 200s | 3s |
10.2.0.3 | 60s | 200s | 3s |
OS | 10G(R1&R2) | 11G R1 | 第三方集群时 |
60 | 30 | 600 | |
UNIX&WINDOWS | 30 | 30 | 600 |
disktimeout:默认200秒,定义css进程与vote disk连接的超时时间;
reboottime:发生裂脑并且一个节点被踢出后,这个节点将在reboottime的时间内重启;默认是3秒;
默认时间可以修改:利用crsctl set css <parameter> 来修改
2、cluster私有网络
在Oracle 10g/11g中,Oracle的私有网络(private network)包括clusterware的私有网络和数据库实例的私有网络:
clusterware的私有网络主要包括css数据的传送,即用一种特殊的ping命令来检测其他机器的状态;
数据库实例的私有网络,包括RDMS和ASM的,用于cache fusion(GCS/GES)数据的传输。
$CRS_HOME/bin/oifcfg getif命令来得到所有网络接口列表,这些信息保存在ocr中
clusterware的私有网络,目前(10g/11g)只能使用一个网络接口,对应于/etc/hosts中定义的private hostname的那个网卡,可以通过查看ocssd的log来确定:
[ CSSD]2014-02-13 13:15:17.893 [3065748368] >TRACE: clssgmPeerListener: Listening on (ADDRESS=(PROTOCOL=tcp)(DEV=22)(HOST=10.1.1.8)(PORT=15974))
与另个节点通信的信息
[ CSSD]2014-02-13 13:21:11.729 [3065748368] >TRACE: clssgmConnectToNode: connecting to node 2 using connect string ((ADDRESS=(PROTOCOL=tcp)(DEV=22)(HOST=10.1.1.9)(PORT=42409)))
3、oracle实例的私有网络
Oracle实例的心跳网络使用方式的优先级从高到低如下:
(1) 如果使用了第三方集群的IPC,替换了对应$ORACLE_HOME/lib/libskgxnX.so文件,那么数据库实例的cache fusion会使用对应的网络协议,而忽略ocr中和数据库初始化参数中cluster_interconnects的配置
(2)如果没有使用第三方IPC,则优先使用数据库初始化参数的cluster_interconnects配置,这个参数的格式为if1:if2:...:ifn,可以不同于crs的私有网络,需要注意的是,该参数不支持多个网卡的故障切换;
(3) 没有上面两个配置,数据库会使用oifcfg列出的心跳的网络,在对应的告警日志中可以得到:
(4) 没有1和2的配置,并且oifcfg也没有配置cluster_interconnect,则数据库会使用共有网络进行心跳信息的传输,这种配置其实是配置失败的情况,数据库虽然能够启动,但急需DBA修正,在告警日志中可以看到:
WARNING: No cluster interconnect has been specified. Depending on
the communication driver configured Oracle cluster traffic
may be directed to the public interface of this machine.
Oracle recommends that RAC clustered databases be configured
with a private interconnect for enhanced security and
performance.
对于一个已经有的系统,可以用下面几种方法确认数据库实例的心跳配置,包括网卡名称,IP地址,使用的网络协议:
(1) 最简单的方法:可以在数据库的后台报警日志中得到。具体参见上面列出的告警日志;
(2) 使用oradebug ;