RAC重構型別
RAC隔離體系可分為3層:DB層,clusterware層和OS層
每一層都提供了機制用於保證RAC正常工作,每一層也都可引發RAC重構;
DB層
由LMON程式維護,其提供了CGS和NM兩個服務,CGS位於NM之上
NM:每個instance的所有程式被看作一個組註冊到clusterware,其中LMON為主程式;其為DB和clusterware的通訊通道,同時負責和其他節點NM定期通訊;
Instance正常啟動或關閉時,其NM向clusterware進行註冊或取消註冊,同時通知其他節點的NM,然後由NM通知CGS負責重構;
Startup/shutdown normal --〉 local NM--〉 remote NM --〉 remote CGS --〉GCS/GES reconfiguration
如果instance異常關閉或LMON/LMS/LMD通訊超時,則需要由CGS進行IMR,將重構的結果記錄到控制檔案的CFVRR欄位(control file vote result record),由各instance讀取該欄位以獲悉自己是否被驅逐
Shutdown abort/ipc timeout --〉 IMR --〉 control file
由上所述,DB層由於timeout引發重構可分為兩種:
LMON通訊超時:預設300秒,因LMON/LMS/LMD通訊異常導致
NAME VALUE ISDEFAULT ISMOD ISADJ
-------------------------------------------------- ------------------------- --------- ---------- -----
_cgs_send_timeout 300 TRUE FALSE FALSE
控制檔案超時:預設900秒,ckpt每3秒更新一次控制檔案,如果超過規定時間仍無相應則會觸發IMR
NAME VALUE ISDEFAULT ISMOD ISADJ
-------------------------------------------------- ------------------------- --------- ---------- -----
_controlfile_enqueue_timeout 900 TRUE FALSE FALSE
另據What is Split Brain in Oracle Clusterware and Real Application Cluster [ID 1425586.1]記載
Controlfile is used similarly to voting disk in clusterware layer to determine which instances survive and which instances evict. The voting result is similar to clusterware voting result
控制檔案在RAC層充當voting disk的角色
Clusterware層
由OCSSD負責,其提供兩種心跳機制,分別為network heartbeat和disk heartbeat,其引數值分別如下
[oracle@ ~]$ crsctl get css disktimeout
CRS-4678: Successful get disktimeout 200 for Cluster Synchronization Services.
[oracle@ ~]$ crsctl get css misscount
CRS-4678: Successful get misscount 30 for Cluster Synchronization Services.
網路心跳超時會導致叢集被分隔成n個子叢集,擁有節點數最多的子叢集最終獲取控制權,其餘節點會被剔出重啟(11R2引入新機制取代了fast reboot);
The group with lower node member in case of same number of node(s) available in each group
如果兩個子叢集節點數一樣多,用於較低節點號的子叢集會最終存活
磁碟心跳超時:如果ocssd沒有在規定時間內更新voting disk則oracle認定其offline,如果offline數量大於online數量該節點則會被驅逐;
OS層
Hangcheck-Timer:用於檢測linux是否hang
Oprocd:10204起linux引入此程式,每1秒執行一次檢查,如果失敗則sleep 500毫秒後繼續嘗試;11R2起被cssdagent替代;
原貼連結
http://www.itpub.net/forum.php?mod=viewthread&tid=1784415&page=1#pid21357066
多謝Yong的回覆
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2136435/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- .NET重構(型別碼的設計、重構方法)型別
- 盤點構成Oracle RAC軟體的三種型別Oracle型別
- 動態型別一時爽,程式碼重構火葬場?型別
- Oracle RAC(Cluster)的重構(整理)(1)Oracle
- Oracle RAC(Cluster)的重構(整理)(2)Oracle
- Oracle RAC(Cluster)的重構整理(3)Oracle
- 切片去重(string,int型別去重)型別
- Scala結構型別與複合型別解析型別
- 重構、重新架構、再設計與重寫的區別架構
- libdispatch 結構型別型別
- 重溫手冊(一):資料型別資料型別
- Redis 高階資料型別重溫Redis資料型別
- Redis 基礎資料型別重溫Redis資料型別
- C++ 重解釋型別轉換C++型別
- Voodoo案例講解:跑酷遊戲型別解析與創新重構方法分享Odoo遊戲型別
- 利用多型重構為帶參方法多型
- 重建模與重構的區別
- 2.5.9.2 重寫預設表空間型別型別
- 【TAF】使用Oracle RAC的TAF技術之SESSION型別OracleSession型別
- date型別的內部結構型別
- 重定義一些基本資料型別資料型別
- 【DB寶44】Oracle rac叢集中的IP型別簡介Oracle型別
- DB2中結構化型別和型別化表的管理 (轉)DB2型別
- 程式碼重構與單元測試——重構6:使用“多型”取代條件表示式(九)多型
- Android 自定義構建型別 BuildTypeAndroid型別UI
- BGP報文結構&型別、狀態型別
- 32位elf格式中的10種重定位型別型別
- 重識JavaScript 之 資料型別的相互轉換JavaScript資料型別
- 物件導向基礎(1)--繼承 多型 重構物件繼承多型
- 重構遺留程式碼(7):識別表示層
- 程式碼重構--大話重構
- TS資料型別:型別別名/聯合型別/字面量型別/型別推論等綱要資料型別
- 淺談程式語言型別的強型別,弱型別,動態型別,靜態型別型別
- 【Java】程式碼重構時,為什麼禁止在方法內對物件型別的入參賦值Java物件型別賦值
- 【重溫基礎】1.語法和資料型別資料型別
- jQueryEasyUI重寫datagrid的datetimebox編輯型別jQueryUI型別
- C++型別轉換建構函式C++型別函式
- 關於結構體型別的學習結構體型別