RAC的HA是它的一大賣點,Oracle也常那它來宣傳,但實際上,RAC稱不上真正的HA,因為 它是share-disk的架構,只能做到執行個體級的HA。RAC執行個體級HA的技術基礎是Failover,它是指 叢集中任何一個節點的故障都不會影響使用者的正常使用,之前串連在故障節點上的使用者會被 自動轉移到健康節點,這樣的切換對使用者來說是透明的。
RAC的Failover可以細分為 以下3種:
1)Client-Side Connect Time Failover
2)TAF (Transparent Application Failover)
3)Service - Side TAF
下面分別來看看這3種 Failover有什麼不一樣:
Client-Side Connect Time Failover
1.定義
Client-Side Connect Time Failover是指:如果用戶端tnsname.ora中配置了多個地 址,使用者發送串連請求時,會先嘗試串連第一個地址,如果失敗,則繼續嘗試第二個地址, 直至成功或遍曆嘗試所有地址為止。
這種Failover方式只是在發起串連時刻起作用,一旦 串連成功之後,如果節點出現故障,串連不會自動Failover到其它可用節點。從用戶端的角 度來看:會話斷開,使用者程式必須重建立立串連。
2. 配置
在用戶端的 tnsname.ora中添加FAILOVER=ON條目,該參數預設為ON,即用戶端預設配置Failover。
3.測試
測試環境:兩節點的RAC (O01RCD0A,O01RCD0B)
1)配置用戶端 tnsnames.ora
編輯用戶端tnsnames.ora如下:
O01RCD0 =
(DESCRIPTION =
(failover = on)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =wrong)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = drcdd0rb)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVICE_NAME = O01RCD0.world)
)
)
)
故意寫錯第一個地址。