Failover測試
Oracle RAC是一個叢集資料庫,可以實作負載均衡和故障無縫切換。這些技術實作的基礎就是failover(故障轉移)。
Oracle 10g RAC的failover可以細分成3種,分别是:
Client-Side Connect time Failover;
TAF;
Service-Side TAF.
Client-Side Connect time Failover、TAF是基于用戶端連接配接的負載均衡,Service-Side TAF是基于伺服器端的負載均衡。
Client-Side Connect time Failover,隻有在建立連接配接的那一時刻起作用。即,這種failover方式隻在發起時才去感覺節點的故障,如果發現節點沒有響應,則自動嘗試位址清單中的下一個位址。一旦建立連接配接後,節點出現故障都不會作處理,從用戶端的表現就是會話斷開,使用者程式必須重建立立連接配接。
啟用這種failiover的方法就是在用戶端的tnsnames.ora中添加failover=on條目,這個參數預設就是on,是以即使不添加這個條目,用戶端也會獲得這種failover的能力。
TAF,就是連接配接建立以後、應用系統運作過程中,如果某個執行個體發生故障,連接配接到這個執行個體上的使用者會被自動遷移到其他的健康執行個體上。
Service-Side TAF也是TAF,所有TAF的特點它都具有;其次,這種TAF是在伺服器上配置,而不像TAF是在用戶端配置的。
1、 測試方法
(1)、一個兩節點的RAC,兩個節點分别是rac1、rac2;
(2)、用戶端的tnsnames.ora配置兩個條目,分别使用兩種failover;
(3)、用戶端利用這兩個tnsnames條目,打開兩個視窗,建立兩個連接配接,做一些操作;
(4)、在伺服器上,用kill指令殺掉兩個連接配接對應的Server Process來模拟節點故障(也可以重新開機的方式);
(5)、經過一個短暫時間後,使用TAF的連接配接會自動轉移到其他執行個體上,使用者可以繼續在這個視窗中執行語句;
(6)、而使用Client-Side Connect Time Failover的連接配接不會自動轉移,使用者必須重新連接配接.
首先,先建立兩個使用者,并授予相關權限

2、 測試步驟
(1)、編輯用戶端tnsnames.ora檔案,在其中添加兩個條目,分别使用兩種failover機制,JH對應Client-Side,而YS對應TAF。
使用Client-Side Connect Time Failover的TNS配置如下:
JH =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1.116)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1.117)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)
使用TAF的TNS配置如下,其中紅色部分是TAF内容:
YS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1.116)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1.117)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
(FAILOVER_MODE=
(TYPE = session)
(METHOD = basic)
(RETRIES = 180)
(DELAY = 5)
)
)
)
(2)、開啟兩個視窗,分别使用兩個TNS進行連接配接。
第一個視窗,使用Client-Side Connect Time Failover的TNS
Sqlplus ac/[email protected]
第二個視窗,使用TAF的TNS
Sqlplus green/[email protected]
(3)、連接配接成功後,在兩個視窗中執行語句。
在第一個視窗中,檢視使用者連接配接到的執行個體:
檢視連接配接的TAF配置
查詢結果中AC的使用者兩個都是NONE,說明這個連接配接沒有使用TAF
Green帳戶則使用了TAF。
在第二個視窗中,檢視GREEN連接配接到的執行個體
(4)、因為兩個使用者都連接配接到rac1這個執行個體上,是以重新開機節點rac1.
(5)、傳回到兩個視窗,再執行SQL語句,兩個連接配接都抛出錯誤。
(6)、稍等一會,再次執行語句
第一個視窗顯示
使用Client-Side Connect Time Failover的視窗,仍然報出錯誤,說明使用者連接配接沒有被failover.
第二個視窗顯示
使用TAF視窗,使用者查詢正常,說明使用者連接配接已經被failover.
如果這步實驗是用kill程序的方法,使用者是不會被遷移到rac2執行個體上的。
轉載于:https://blog.51cto.com/htc2012/910373