Oracle RAC Failove 之二:TAF
1.定義
從上一篇對Client-Side Connect Time Failover特點分析可以看出,這種Failover的意義有限,因為一旦建立連線之後,Failover的功能就無法發揮,所以Oracle又引入了新的Failover機制——TAF。所謂TAF,就是連線建立以後,如果例項發生故障,連線會自動遷移到其他健康例項上。對於應用程式來說,這個遷移過程是透明、自動的,不需要人為干預,但是這個透明也不是絕對的,因為使用者未提交的事務會回滾。
2.配置
在客戶端的tnsnames新增FAILOVER_MODE屬性即可,該屬性有以下4個子屬性:
1)METHOD:有BASIC和PRECONNECT可選值
2)TYPE:有SESSION和SELECT可選值
3)DELAY
4)RETRIES
以上幾個引數的含義可檢視oracle的reference
3.測試
測試環境:兩節點的RAC (O01RCD0A,O01RCD0B)
1)配置客戶端tnsnames.ora
編輯客戶端tnsnames.ora如下:
O01RCD0 =
(DESCRIPTION =
(failover = on)
(enable = broken)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = drcdd0ra)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = drcdd0rb)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVICE_NAME = O01RCD0.world)
(failover_mode =
(type = select)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)
2)連線資料庫,檢視連線到哪個例項
A105024@O01RCD0>select INSTANCE_NAME,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
O01RCD0A OPEN
目前使用者連線的是A例項,檢視使用者連線的TAF配置:
A105024@O01RCD0>select username,failover_type,failover_method from v$session where username='A105024';
USERNAME FAILOVER_TYPE FAILOVER_M
------------------------------ ------------- ----------
A105024 SELECT BASIC
3)在服務端kill掉相應的服務程式以擬例項故障
查出使用者對應的OS服務程式id:
A105024@O01RCD0>select PID,SPID from v$process where ADDR in (select PADDR from v$session where username='A105024');
PID SPID
---------- ------------
49 14953
在OS上殺掉該程式:
kill -9 14953
4)稍等幾秒,再次執行語句,發現已經自動切換到了B節點
A105024@O01RCD0>select INSTANCE_NAME,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
O01RCD0B OPEN
從上一篇對Client-Side Connect Time Failover特點分析可以看出,這種Failover的意義有限,因為一旦建立連線之後,Failover的功能就無法發揮,所以Oracle又引入了新的Failover機制——TAF。所謂TAF,就是連線建立以後,如果例項發生故障,連線會自動遷移到其他健康例項上。對於應用程式來說,這個遷移過程是透明、自動的,不需要人為干預,但是這個透明也不是絕對的,因為使用者未提交的事務會回滾。
2.配置
在客戶端的tnsnames新增FAILOVER_MODE屬性即可,該屬性有以下4個子屬性:
1)METHOD:有BASIC和PRECONNECT可選值
2)TYPE:有SESSION和SELECT可選值
3)DELAY
4)RETRIES
以上幾個引數的含義可檢視oracle的reference
3.測試
測試環境:兩節點的RAC (O01RCD0A,O01RCD0B)
1)配置客戶端tnsnames.ora
編輯客戶端tnsnames.ora如下:
O01RCD0 =
(DESCRIPTION =
(failover = on)
(enable = broken)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = drcdd0ra)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = drcdd0rb)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVICE_NAME = O01RCD0.world)
(failover_mode =
(type = select)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)
2)連線資料庫,檢視連線到哪個例項
A105024@O01RCD0>select INSTANCE_NAME,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
O01RCD0A OPEN
目前使用者連線的是A例項,檢視使用者連線的TAF配置:
A105024@O01RCD0>select username,failover_type,failover_method from v$session where username='A105024';
USERNAME FAILOVER_TYPE FAILOVER_M
------------------------------ ------------- ----------
A105024 SELECT BASIC
3)在服務端kill掉相應的服務程式以擬例項故障
查出使用者對應的OS服務程式id:
A105024@O01RCD0>select PID,SPID from v$process where ADDR in (select PADDR from v$session where username='A105024');
PID SPID
---------- ------------
49 14953
在OS上殺掉該程式:
kill -9 14953
4)稍等幾秒,再次執行語句,發現已經自動切換到了B節點
A105024@O01RCD0>select INSTANCE_NAME,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
O01RCD0B OPEN
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26277071/viewspace-710940/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle RAC Failove 之三:Server-Side TAFOracleAIServerIDE
- Oracle RAC TAF [zt]Oracle
- Oracle 10g RAC TAFOracle 10g
- Oracle RAC TAF 無縫failoverOracleAI
- 【TAF】使用Oracle RAC的TAF技術之SESSION型別OracleSession型別
- ORACLE RAC TAF 配置(透明故障轉移)Oracle
- Oracle 10g RAC TAF介紹Oracle 10g
- Oracle RAC的TAF簡單測試Oracle
- oracle 11g rac TAF 測試方案Oracle
- 【TAF】使用Oracle RAC的TAF技術實現不間斷查詢Oracle
- [轉載]Oracle 10g RAC TAF介紹Oracle 10g
- Jdbc thin not suppot Rac TAFJDBC
- Linux平臺上Oracle Rac中的TAF配置LinuxOracle
- 在JDBC連線池中啟動Oracle RAC的TAFJDBCOracle
- Oracle RAC 客戶端故障轉移(failover) TAFOracle客戶端AI
- Oracle RAC Failove 之一:Client-Side Connect Time FailoverOracleAIclientIDE
- 【Oracle】 RAC 環境刪除oracle 之二Oracle
- RAC TAF 連線 (tnsnames.ora)
- Oracle 11gR2 RAC Service-Side TAF 配置示例OracleIDE
- rac 的Client-side TAF配置clientIDE
- oracle10g rac(rhel4)_load balancing_taf(一)Oracle
- oracle10g rac(rhel4)_load balancing_taf(二)Oracle
- oracle10g rac(rhel4)_load balancing_taf(三)Oracle
- oracle10g rac(rhel4)_load balancing_taf(四)Oracle
- oracle的TAF淺析Oracle
- TNSNAMES TAF TEMPLATE , LOCAL_LISTENER RAC FAILOVERAI
- 【RAC】RAC中的負載均衡和故障切換--TAF配置負載
- VMWARE+linux+oracle 10g RAC 之二LinuxOracle 10g
- Oracle 12c RAC構築之二:共享磁碟配置Oracle
- 11gr2 RAC配置Service-Side TAFIDE
- Oracle LOAD_BALANCE&TAF總結Oracle
- Oracle Failover - TAF 透明應用切換OracleAI
- 【RAC】Creating a filesystem physical standby from ASM (RAC ) primary 之二ASM
- Oracle DataPump之二Oracle
- 【Oracle】Oracle常用EVENT之二Oracle
- oracle taf unknown 問題處理過程Oracle
- 靈活實現RAC三節點的負載均衡及TAF配置(五)負載
- 靈活實現RAC三節點的負載均衡及TAF配置(二)負載