詳解RAC并發邏輯、硬件架構、軟件架構拓撲與原理解析
概述
Oracle Real Application Cluster (RAC,實時應用集群)用來在集群環境下實現多機共享數據庫,以保證應用的高可用性;同時可以自動實現并行處理及負載均衡,并能實現數據庫在故障時的容錯和無斷點恢復。它是oracle數據庫支持網絡計算環境的核心技術。它是oracle數據庫支持網絡計算環境的核心技術。
一. RAC 并發(DLM-->GRD)
RAC 的本質是一個數據庫,運行在多臺計算機上的數據庫,它的主要任務是數據庫就是事務處理,它通過 Distributed Lock Management(DLM:分布式鎖管理器) 來解決并發問題。因為RAC的資源是共享的,為了保證數據的一致性,就需要使用DLM來協調實例間對資源的競爭訪問。
RAC 的DLM 就叫作 Cache Fusion。
在DLM 中,根據資源數量,活動密集程度,把資源分成兩類:Cache Fusion和Non-Cache Fusion。
Cache Fusion Resource指數據塊這種資源,包括普通數據庫,索引數據庫,段頭塊(Segment Header),undo 數據庫。
Non-Cache Fusion Resource是所有的非數據庫塊資源, 包括數據文件,控制文件,數據字典,Library Cache,share Pool的Row Cache等。Row Cache 中存放的是數據字典,它的目的是在編譯過程中減少對磁盤的訪問。
在Cache Fusion中,每一個數據塊都被映射成一個Cache Fusion資源,Cache Fusion 資源實際就是一個數據結構,資源的名稱就是數據塊地址(DBA)。每個數據請求動作都是分步完成的。首先把數據塊地址X轉換成Cache Fusion 資源名稱,然后把這個Cache Fusion 資源請求提交給DLM, DLM 進行Global Lock的申請,釋放活動,只有進程獲得了PCM Lock才能繼續下一步,即:實例要獲得數據塊的使用權。
Cache Fusion要解決的首要問題就是:數據塊拷貝在集群節點間的狀態分布圖, 這是通過GRD 實現的。
GRD(Global Resource Directory)
可以把GRD 看作一個內部數據庫,這里記錄的是每一個數據塊在集群間的分布圖,它位于每一個實例的SGA中,但是每個實例SGA中都是部分GRD,所有實例的GRD匯總在一起就是一個完整的GRD。
RAC 會根據每個資源的名稱從集群中選擇一個節點作為它的Master Node,而其他節點叫作Shadow Node。 Master Node 的GRD中記錄了該資源在所有節點上的使用信息,而Shadow Node的GRD中只需要記錄資源在該節點上的使用情況,這些信息實際就是PCM Lock信息。PCM Lock 有3個屬性: Mode,Role 和 PI(Past Image)。
二. RAC 架構
分享一下RAC硬件架構的拓撲和軟件架構拓撲。
RAC硬件架構拓撲

RAC軟件架構拓撲
三. Oracle RAC的原理
- 集群環境層面:
- 并發控制,健忘癥,腦裂,IO隔離;
- 共享存儲層面:
- 存儲層,網絡層,集群件層,應用層
- 數據庫實例層面:
- 并發訪問和控制
1、集群環境&共享存儲層面
-并發控制
Oracle RAC中,使用Distribute Lock Managerment(DLM)機制進行多個節點間并發訪問的控制
-健忘癥(一個節點更改,其他人不知道)
整個集群只有一份集群配置信息,Oracle RAC使用OCR(oracle 集群注冊器) Disk文件解決
-腦裂
在Oracle RAC中Voting Disk用來記錄節點間成員的狀態,出現腦裂時,通過投票機制,獲得***票數或者最早達到的獲得投票的,幸存,其他節點被踢出。
-IO隔離
Oracle RAC采取直接重啟故障節點來限制已剔除節點對共享數據的訪問
如果某個節點有故障,則踢出后并重啟該節點,達到不讓其訪問數據的目的,實現自愈
-共享存儲的共享和并發訪問
需要解決存儲設備的共享和并發訪問問題
2、RAC層面
- 存儲層
Cache fusion lock
- 網絡層
共4種網絡環境:
Public網絡-對外提供數據查詢服務、數據庫維護等
Virtua網絡-提供應用連接
Private網絡-用于RAC心跳和cache fusion
存儲網絡-存儲設備、HBA卡、光纖交換機等組成
-集群件層
Oracle clusterware:集群管理軟件保證多主機之間的協調工作
-應用層
oracle RDBMS層面:由若干CRS Resourcezucheng
oracel RAC提供高可用服務:LMON進程監控應用(CRS Resource),應用異常時對其進行重啟、切換等。