關於心跳網絡引起的Oracle RAC的節點驅逐(不是實例驅逐)
問:
假設如下場景:4個節點rac,心跳線走的是千m網絡交換機,若是該千M網絡交換機斷電,我想知道crs的驅逐節點的算法是怎麼樣的?
Oracle 大連 GCS 答復:
如果心跳網絡斷掉了,oracle的集群就會分裂成若干個小的自己群,我們叫cohort(你可以在ocssd.log)裡面找到。
oracle會根據每個cohort包含的節點數量決定哪個子集群離開,基本的原則是:
1. 節點數多的自己群留下,節點數少的被驅逐。
2. 如果每個子集群的節點數相同,那麼包含了最小節點編號的節點會被保留。
這就是為什麼你看到兩個節點的集群,如果心跳網絡出現問題,一定是節點2被重啟的原因。
另外:
節點的驅逐和VF(就是很多人說的voting disk)沒關系。
主要的原因是很多人把數據庫層面的實例驅逐和集群層面的界定啊驅逐概念搞混了。
所以才有了這種錯誤的認識。
如果是數據庫實例層面的驅逐,的確是和控制文件相關的,因為在數據庫層面控制文件起到了VF的作用