Oracle11g RAC 伺服器端TAF功能配置
TAF定義
Transparent Application Failover(透明應用故障轉移)是JDBC和OCI驅動的一個特性。當會話連線的資料庫例項發生宕機時TAF允許應用程式自動重新連線到資料庫,此時之前未提交的事務將會回滾且保證正在執行的查詢操作會話不發生中斷。
從而實現客戶端應用程式對後臺RAC資料庫部分例項失敗毫無感知,保證業務操作的連續性。
2TAF分類
session:session故障轉移在可用例項上重建連線和會話。
select:除了重建會話,select故障轉移也允許重新執行正在處理的查詢。
TAF重建故障轉移的連線有兩種方法,basic和preconnect。
basic
preconnect:當客戶端登入資料庫時同時建議兩個連線,叢集件啟動兩個服務,一個主服務和另一個影子服務。
TAF可以使用tnsnames.ora檔案配置在客戶端或者使用srvctl工具配置在資料庫伺服器端。優先選擇配置在伺服器端是因為這樣更便於把配置資訊放在一個地方。
本文描述使用srvctl工具將TAF以資料庫服務方式配置在伺服器端的步驟和過程。
3srvctl命令詳解
srvctl在OCR裡定義了所有節點都能訪問的服務,命令語法如下:
srvctl add service -d -s -r ""[-a ""] [-P {BASIC | NONE | PRECONNECT}]
其中
-r "" [-a ""] [-P{BASIC | NONE | PRECONNECT}]
這個語法僅僅在“Administrator-managed”資料庫中是可用的,它支援preconnect方法
-g [-c {UNIFORM | SINGLETON}]
這個語法僅僅在“Policy-managed”資料庫中並且當preconnect方法不可用時方可使用
[-e {NONE|SESSION|SELECT}]
這個定義TAF的型別是session還是select
[-m {NONE|BASIC}]
這個定義TAF的方法
[-z ]
這個定義當故障轉移時嘗試連線的次數
[-w ]
這個定義嘗試連線時等待的時間,單位(秒)
4實驗步驟
資料庫版本:Oracle11.2.0.3RAC
作業系統:RedHat5.6
主機名和IP配置如下:
配置目標:把RAC系統配置為“主-備”模式,即平時所有連線都在rac01這個節點上,當rac01節點出現故障時利用TAF功能把連線重置到rac02節點上並且保證查詢語句的連續執行,會話不發生中斷。
1)首先使用srvctl工具新增資料庫服務(使用oracle使用者執行下面操作)
優先例項是racdb1,備用例項是racdb2
如果想配置成負載均衡模式,即沒有“主-備”這個概念,那如下面命令配置,此時沒有-a選項
2)接著啟動這個新建的服務
3)修改新建服務的屬性
主要是設定-z(連線次數)、-w(連線等待)引數
4)檢查監聽程式是否有新建服務的註冊資訊
使用lsnrctl status命令檢查,可以在rac01節點上看到已經有一個名為“server_taf”的服務(如下圖所示)。
此時rac02節點上監聽器沒有這個服務資訊。
5)在客戶端建立或編輯tnsnames.ora檔案,新增一個網路服務名
此處的192.168.1.56對應的是RAC叢集的SCAN IP地址,而service_name為我們新建的server_taf。
6)驗證測試
通過DOS視窗下的SQLPLUS環境使用system使用者連線RAC環境,檢查發現每次連線都是被引導到racdb1例項上,racdb2確實在叢集中充當備用節點。
此時通過關閉節點1主機,或者其它模擬racdb1例項宕機的方法來使叢集發生主備切換。此處我們使用shutdownimmediate命令關閉racdb1例項。
再次在剛才DOS視窗下連線的SQLPLUS環境中執行查詢命令,發現
1. 此時連線的例項已經變成了racdb2,表明連線被成功轉移到RAC備用例項。
2. 查詢沒有出現“通訊通道檔案結束”之類的報錯,表明會話被安全轉移沒有發生中斷。
至此TAF功能測試成功。