Oracle Failover - TAF 透明應用切換
failover =
(DESCRIPTION =
(enable=broken)
(LOAD_BALANCE = yes)
(ADDRESS = (PROTOCOL = TCP)(HOST = hprac-22)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hprac-23)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hprac-24)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hprac-25)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = rac)
(failover_mode=(type=select)(method=basic))
)
)
對於已有連線的失敗切換,首先要求FAILOVER = ON,並且設定了FAILOVER_MODE
FAILOVER_MODE的子引數含義:
TYPE:1)session---如果使用者連線丟失,將建立一個新的會話連線到備用節點,使用者的所有未提交的操作必須回滾,然後再次執行,SELECT操作也被中止.
2)select---如果使用者連線丟失,將使用遊標和之前的快照繼續執行SELECT操作,叫做SQL接管,SQL接管能夠無縫接管理的事務型別只有SELECT語句.其它的操作也必須要回滾然後再次執行.
3)none---客戶端預設值,禁止SQL接管功能,主要用於測試的目地,在實際應用中TYPE應指定為session 或者select
METHOD:1)basic---僅僅在FAILOVER發生時才連線備用節點
2)preconnect---在使用者連線到主節點時同時也在備用節點產生一個連線會話,設定預連線模式,能夠快速接管SQL
RETRIES:當前節點失敗後,失敗切換功能會嘗試連線備用節點,這個值確定了嘗試的次數,如果僅DELAY被指定,RETRIES預設為5
DELAY:兩次嘗試之間等待的秒數,如果僅指定RETRIES,DELAY預設為1秒
BACKUP:指定另外一個用於備份連線的網路服務名,當RAC設定為主次模式時,使用此引數,並且METHOD應該設為preconnect
如果要使用預連線,就不能使用客戶端負載均衡和伺服器端負載均衡,否則沒有意義!!!
具有客戶端負載均衡及透明應用切換無預連線的tnsnames配置
RAC9I =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = rac9iaw)(PORT = 1521))
(ADDRESS = (PROTOCOL = tcp)(HOST = rac9ibw)(PORT = 1521))
(LOAD_BALANCE = ON)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVICE_NAME = rac9i.xyf)
(FAILOVER_MODE =
(TYPE = select)
(METHOD = basic)
(RETRIES = 10)
(DELAY = 1)
)
)
)
無客戶端負載均衡有透明應用切換且有預連線的tnsnames配置
RAC9I1 =
(DEscrīptION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = rac9iaw)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVICE_NAME = rac9i.xyf)
(INSTANCE_NAME = rac9i1)
(FAILOVER_MODE =
(BACKUP=RAC9I2)
(TYPE = select)
(METHOD = preconnect)
)
)
)
RAC9I2 =
(DEscrīptION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = rac9ibw)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVICE_NAME = rac9i.xyf)
(INSTANCE_NAME = rac9i2)
(FAILOVER_MODE =
(BACKUP=RAC9I1)
(TYPE = select)
(METHOD = preconnect)
)
)
)
RAC設定為主次模式時的tnsnames配置
無客戶端負載均衡(主次模式就不要客戶端負載均衡了),有透明應用切換且有預連線的tnsnames配置
RAC9I1 =
(DEscrīptION =
(ADDRESS = (PROTOCOL = tcp)(HOST = rac9iaw)(PORT = 1521))
(ADDRESS = (PROTOCOL = tcp)(HOST = rac9ibw)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVICE_NAME = rac9i.xyf)
(INSTANCE_ROLE = PRIMARY)
(INSTANCE_NAME = rac9i1)
(FAILOVER_MODE =
(BACKUP=RAC9I2)
(TYPE = select)
(METHOD = preconnect)
)
)
)
RAC9I2 =
(DEscrīptION =
(ADDRESS = (PROTOCOL = tcp)(HOST = rac9ibw)(PORT = 1521))
(ADDRESS = (PROTOCOL = tcp)(HOST = rac9iaw)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVICE_NAME = rac9i.xyf)
(INSTANCE_ROLE = SECONDARY)
(INSTANCE_NAME = rac9i2)
(FAILOVER_MODE =
(BACKUP=RAC9I1)
(TYPE = select)
(METHOD = preconnect)
)
)
)
也可以設定為有透明應用切換但無預連線的模式,只要把上面的設定中的METHOD設定為basic。
與雙主模式時的配置相比,多了INSTANCE_ROLE這樣一個引數,當這個引數為SECONDARY時,這個本地服務命名不直接接收連線,只在主節點失敗後才會接收連線。不直接接收連線,並不是指在客戶端不能連通這個服務命名,只不過這個連線會被路由到主節點,次要次點並不真正有連線連上去。
自動切換特性是OCI8的內在特性,以下表格列出對TAF的support status
Application or Tool
Earliest release with TAF Support
Oracle Call Interface (Oracle Call Interface)
Release 8
Release 8
ODBC driver
Release 8.0.5
JDBC driver
Release 8.1.5 (thick driver only)
Pro* Pre-compilers
Release 8.0.6 for transparent reconnect
Release 8.1.5 for full transparent functionality
SQL*Plus
Release 8.0.4
Oracle Objects™ for OLE
Release 8i
測試
> sqlplus
SQL*Plus: Release 9.0.1.3.0 - Production on Thu Jun 6 19:44:57 2002
(c) Copyright 2001 Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.0.1.3.0 - 64bit Production
With the Partitioning and Real Application Clusters options
JServer Release 9.0.1.3.0 - Production
SQL> col sid format 999
SQL> col serial# format 9999999
SQL> col failover_type format a13
SQL> col failover_method format a15
SQL> col failed_over format a11
SQL> select sid, serial#, failover_type, failover_method, failed_over
from v$session where username = 'SU';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
---------- ---------- ------------- --------------- -----------
13 8 SELECT BASIC NO
If you see NONE under failover_type and failover_method, STOP!! You need
to fix your tnsnames.ora file, it does not make sense to continue to test
'shutdown abort' or reboot server.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac4
*** Due to the load balancing, we need to find out which instance it currently connects to. Now, we can continue our TAF testing.
SQL> select count(*) from
(select * from dba_source
union
select * from dba_source
union
select * from dba_source
union
select * from dba_source
union
select * from dba_source)
/
*** At this point, I ‘shutdown abort’ rac4 from another window. The query
did not stop and the result should be back.
COUNT(*)
----------
60221
*** The query results is back without any error.
SQL> col sid format 999
SQL> col serial# format 9999999
SQL> col failover_type format a13
SQL> col failover_method format a15
SQL> col failed_over format a11
SQL> select sid, serial#, failover_type, failover_method, failed_over
from v$session where username = 'SU';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
---------- ---------- ------------- --------------- -----------
13 5 SELECT BASIC YES
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac1
*** Note here, it failed over to rac1 with different serial# and
failed_over flag was set.
Restarted rac4, make this database back to 4 instances database.
SQL> select count(*) from
(select * from dba_source
union
select * from dba_source
union
select * from dba_source
union
select * from dba_source
union
select * from dba_source)
/
*** At this point, I ‘shutdown abort’ rac1 from another window. The query
did not stop and the result should be back.
COUNT(*)
----------
60221
The query results is back without any error.
SQL>
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
---------- ---------- ------------- --------------- -----------
14 20 SELECT BASIC YES
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac2
*** Note here, it failed over to rac2 with different sid, serial# and
failed_over flag was set.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-659989/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle RAC TAF 無縫failoverOracleAI
- 主備切換(failover)AI
- ORACLE RAC TAF 配置(透明故障轉移)Oracle
- Dataguard failover切換實驗AI
- Oracle RAC 客戶端故障轉移(failover) TAFOracle客戶端AI
- Oracle 10g DataGuard物理主備切換-switchover與failoverOracle 10gAI
- dataguard之物理standby庫failover 切換AI
- RAC環境STANDBY的FAILOVER切換AI
- 物理Standby角色切換作業failoverAI
- 【DATAGUARD】物理dg的failover切換(六)AI
- DATA GUARD物理STANDBY的FAILOVER切換AI
- oracle 19c使用dgmgrl來執行switchover和failover切換OracleAI
- Oracle Data Guard快速啟動故障切換 - fast-start failover(FSFO)OracleASTAI
- Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAFAIclientIDE
- 理解透明應用程式故障轉移 (TAF) 和快速連線故障轉移 (FCF)
- TNSNAMES TAF TEMPLATE , LOCAL_LISTENER RAC FAILOVERAI
- 單節點DG的failover切換介紹AI
- RAC環境LOGICAL STANDBY的FAILOVER切換AI
- openGauss主備切換之switchover與failoverAI
- 【RAC】RAC中的負載均衡和故障切換--TAF配置負載
- MySQL高可用之MHA切換測試(switchover & failover)MySqlAI
- 物理DataGuard客戶端無縫切換--客戶端TAF 配置客戶端
- oracle 11g dg broker 開啟fast-start failover自動故障切換OracleASTAI
- oracle dataguard 切換Oracle
- oracle 跨小版本dg切換應用補丁報錯處理Oracle
- Oracle 12c Data guard 物理備庫應急切換(failover)流程OracleAI
- Oracle 11g Data guard 物理備庫應急切換(failover)流程OracleAI
- 應用程式切換工具:rcmd–App Switcher for MacAPPMac
- Oracle RAC TAF [zt]Oracle
- MySQL故障切換之應用無感知設計MySql
- failover切換後恢復原來主庫為新備庫AI
- 理解透明應用程式故障轉移 (TAF) 和快速連線故障轉移 (FCF) (文件 ID 1602113.1)
- oracle dg切換操作示例Oracle
- Oracle日誌模式切換Oracle模式
- Oracle DataGuard切換步驟Oracle
- oracle 之dataguard standby 切換Oracle
- iPhone使用教程:多工應用切換器外掛iPhone
- 【DATAGUARD】物理dg配置客戶端無縫切換 (八.3)--客戶端TAF 配置客戶端