1. 程式人生 > >Oracle RAC簡介與要點

Oracle RAC簡介與要點

RAC的作用

RAC可以提供例項級別的冗餘,避免單例項資料庫例項一旦出現故障會影響下游業務系統的問題,提供多個(n個)例項冗餘,即便n-1個例項出現故障,仍能保證業務的正常執行。

RAC一般用於主從結構的災備解決方案,但並不止於此。既然可以搭建同一業務系統的邏輯結構相同主從例項,自然也可以加入其它關聯業務系統的例項,比如一個RAC叢集可以有一套CRM系統(兩臺伺服器分別安裝一個數據庫例項),另外還將BI系統也掛在這個叢集上訪問CRM的資料。

RAC的定義

以下引用自官方文件:

Oracle Real Application Cluster :在伺服器叢集上執行,可調整叢集中所有應用程式的
工作量,同時還提供以下功能:
•  整合式叢集件:其中包括用於進行叢集連線、訊息傳送和鎖定、叢集控制與恢復的
功能。在 Oracle Database 10g 或更高版本支援的所有平臺上均可使用這些功能。
•  自動工作量管理:可以定義一些規則,以便在正常操作和對故障作出響應期間將處理
資源自動分配給每個服務。使用者可以動態地修改這些規則,以滿足不斷變化的業務
需求。這種在資料庫網格中動態分配資源的功能是 Oracle RAC 特有的功能。
•  向中間層自動傳送事件通知:叢集配置發生更改後,中間層可以立即適應例項故障轉
移或可用的新例項。這樣,終端使用者在發生例項故障轉移時可繼續工作,不存在通常
由網路超時引起的延遲。有新例項可用時,中間層可以立即開始與該例項建立負載平
衡連線。Oracle Database 10g 或更高版本中的 Java 資料庫連線 (JDBC) 驅動程式擁有
“快速連線故障轉移”功能,該功能可以自動啟用以處理以上事件。

總結一下,RAC是一種提供負載均衡高可用性的叢集解決方案。RAC管理元件運用一定的規則控制協調叢集內部多例項與該元件的互相通訊,以達到自動管理、負載均衡、高可用等目的。

RAC的特點

1、叢集內多臺伺服器節點(m個)上存在多個例項(n個);

2、一個數據庫(database)檔案系統儲存在共享儲存裝置上,比如NAS、SAN;

3、例項之間通過內聯網路及整合式叢集件互相通訊、交換資料。

4、每一個節點的例項都有自己的SGA、後臺程序、Redo Logs、Undo Tablespace及引數配置檔案(也可使用同一套公共的引數檔案)。
 

RAC的缺陷

RAC並不能解決物理讀寫、資料安全等問題,因為不管多少個例項,資料都是儲存在一個共享儲存裝置上。

儘管RAC可以通過多例項冗餘實現高可用性,但終究脫離不了集中式資料庫的本質,其與分散式系統相比,硬碟讀寫速度、網路頻寬及質量仍然是其瓶頸所在。因為它使用一套共享儲存系統,在多例項同時讀寫時,在網路中傳輸大容量的資料顯然不如傳輸分發的資料處理任務訪問需要的資料分片方便快捷,而且分散式叢集中大部分任務都是使用區域性本地資料庫,訪問速度效率更高。

RAC的網路配置

對於RAC來說至少有兩套物理上不同的網路,私有網路是專門為例項之間的資料互動,公有網路是專門對外提供服務的。


想詳細瞭解RAC原理可以參考這位博友的文章:

https://blog.csdn.net/qq_34556414/article/details/79001267

最好的學習方式還是學習官方文件,畢竟Oracle是個巨頭公司,不像一些開源軟體存在官方文件維護不完善的問題,但學習還應帶著腦子,把知識轉化成自己的,用自己組織的語言複述一遍,能加深理解。盡信書不如無書,Oracle官方文件其實也維護的不咋地,也可能是考慮到智慧財產權的問題不方便公開。