微不足道的检测私网通信脚本

820阅读 0评论2021-11-27 brjl
分类:Oracle

通常,在节点重启的情况下,CSS 守护进程的日志 (ocssd.log) 表明没有收到来自一个或多个远程节点的网络心跳(例如,消息“CRS-1610:Network communication with node xxxxxx (3) 在 90% 的超时间隔内丢失。在 2.656 秒内从集群中删除此节点”出现在 ocssd.log 中),并且该节点随后重新启动(以避免脑裂或因为它被另一个节点)。


此处的脚本使用 ssh 执行网络连接检查。此检查是对 ping 或 traceroute 的补充,因为 ssh 使用 TCP 协议,而 ping 使用 ICMP,Linux/Unix 中的 traceroute 使用 UDP(Windows 上的 traceroute 使用 ICMP)。


网络通信既涉及实际的物理连接,也涉及 IP、UDP 和 TCP 等操作系统层。


CRS(10g和11.1)使用TCP进行通信,所以使用ssh来测试连接以及TCP和IP层是比ping或traceroute更好的测试。 


因为11.2上的CRS使用UDP通信,所以使用ssh来测试TCP并不是最优的测试,但是这个测试会补充traceroute测试。


该脚本每 5 秒测试一次私有互连,因此该脚本将给服务器带来微不足道的负载。

  1. #!/bin/ksh

  2. export TODAY=`date "+%Y%m%d"`
  3. while [ $TODAY -lt 20121231 ] # 格式需要为 YearMonthDate
  4. do
  5. export TODAY=`date "+%Y%m%d" `
  6. export LOGFILE=/tmp/interconnect_test_${TODAY}.log
  7. ssh drrac1-priv "hostname; date" >> $LOGFILE 2>&1
  8. ssh drrac2-priv "hostname; date" >> $LOGFILE 2>&1
  9. ssh drrac3-priv "hostname; date" >> $LOGFILE 2>&1

  10. echo "" >> $LOGFILE
  11. echo "" >> $LOGFILE

  12. sleep 5
  13. done
对3节点的RAC 每隔5秒执行一次
上一篇:ORA-04088 LBACSYS.LBAC_EVENTS
下一篇:一个小表的全表扫描,高并发会看到什么等待事件