关于心跳网络引起的Oracle RAC的节点驱逐(不是实例驱逐)
问:
假设如下场景:4个节点rac,oracle账号心跳线走的是千m网络交换机,若是该千M网络交换机断电,我想知道crs的驱逐节点的算法是怎么样的?
Oracle 大连 GCS 答复:
如果心跳网络断掉了,oracle的集群就会分裂成若干个小的自己群,我们叫cohort(你可以在ocssd.log)里面找到。
oracle会根据每个cohort包含的节点数量决定哪个子集群离开,基本的原则是:
1. 节点数多的自己群留下,节点数少的被驱逐。
2. 如果每个子集群的节点数相同,那么包含了最小节点编号的节点会被保留。
这就是为什么你看到两个节点的集群,如果心跳网络出现问题,一定是节点2被重启的原因。
另外:
节点的驱逐和VF(就是很多人说的voting disk)没关系。
主要的原因是很多人把数据库层面的实例驱逐和集群层面的界定啊驱逐概念搞混了。
所以才有了这种错误的认识。
如果是数据库实例层面的驱逐,的确是和控制文件相关的,因为在数据库层面控制文件起到了VF的作用