一、什么是Oracle RAC(Real Application Cluster)?
Oracle RAC 是一個具有共享快取架構的集群資料庫,它克服了傳統的無共享方法和共享磁盤方法的限制,為您的所有業務應用提供了一種具有高度可擴展性和可用性的資料庫解決方案,Oracle RAC 是 Oracle 私有云架構的關鍵組成部分,
Oracle Real Application Clusters 可以消除資料庫服務器單點故障問題,從而為客戶提供優秀的資料庫可用性,在集群服務器環境中,資料庫本身在服務器池之間實作共享,這意味著如果池中的任何服務器出現故障,資料庫將繼續在正常的服務器上運行,Oracle RAC 不僅讓客戶能夠在服務器發生故障時繼續處理資料庫負載,而且有助于縮短資料庫計劃內脫機維護時間,進而降低停機成本,
Oracle Real Application Clusters 支持在集群服務器池上透明地部署 Oracle 資料庫,這讓客戶能夠輕松地將單個服務器上的 Oracle 資料庫重新部署到資料庫服務器集群上,從而充分利用集群資料庫服務器提供的整合記憶體容量和處理能力,
Oracle Real Application Clusters 提供了所有必備的軟體組件,讓您可以在服務器池上輕松部署 Oracle Database,充分利用集群提供的性能、可擴展性和可用性,Oracle RAC 利用 Oracle Grid Infrastructure 作為 Oracle RAC 資料庫系統的基礎,Oracle Grid Infrastructure 包括 Oracle Clusterware 和 Oracle 自動存盤管理 (ASM),可以在高度可用和可擴展的資料庫云環境中高效地共享服務器和存盤資源,
二、Oracle RAC的體系架構

RAC與單實體最大的區別是,多個實體管理一個資料庫,這個資料庫必須安裝在共享存盤上,這樣的架構有如下優點:
- 高可用 其中某個或者某些實體宕機,并不影響該系統對外提供服務,
- 高性能 集群的事務處理功能大大增強,多個實體可以并發的作業,
- 可擴展 當系統性能遇到瓶頸時,通過增加節點可以提高資料庫的性能,
RAC中的實體,除了有單實體固有的那些后臺行程,還會多一些用來進行RAC實體之間進行互動的行程,在RAC中,每個實體有自己單獨的redo log和undo表空間,因為每個實體都要獨自處理事務,但是這些redo和undo檔案同樣要放置在共享磁盤中,因為一旦實體崩潰,其他的實體要能讀取到該實體的redo和undo進行事務的恢復,
RAC中引入了一個叫cache fusion的機制,也就是把所有機器的記憶體當成一個大的整體的記憶體來管理,
要管理這塊記憶體,Oracle引入了GCS(Global Cache Service)、GES(Global Enqueue Service)、GRD(Global Resource Directory)這三個概念,
- GRD:用來記錄資料庫cached block在各個instance上的分布情況,以及block的狀態,
- GRD分布在各個實體中,每個實體維護GRD的一部分,
- GRD由GCS和GES共同管理,GCS管理buffer cache中的資料塊快取的一致性,GES管理資料塊的鎖資訊,
既然每個實體只維護GRD的一部分,那么我要請求一個塊時,是不是每個機器都要請求?顯然不是這樣的,因為這樣效率會非常的低,那么GCS和GES會根據一定的演算法,在RAC的各個節點中選擇出一個節點作為Resource Master,這個Resource Master負責處理資料塊的請求,并且Resource Master會在記憶體中記錄每個instance中GRD的索引,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/7332.html
標籤:Oracle
上一篇:【趙強老師】SQL的字符函式
