Oracle RAC Failove 之一:Client-Side Connect Time Failover

Jujay發表於2011-11-14
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)
      )
    )
  )
故意寫錯第一個地址。
2)測試能否連線資料庫
可正常連線資料庫,連線的例項是A:
A105024@O01RCD0>select instance_name from v$instance;

INSTANCE_NAME
----------------
O01RCD0A
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
---------- ------------
        38 14408
在OS上殺掉該程式:
 kill -9 14408
過一會兒,再查詢時,發現連線已經斷開:
A105024@O01RCD0>select instance_name from v$instance;
select instance_name from v$instance
*
ERROR at line 1:
ORA-03114: not connected to ORACLE







來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26277071/viewspace-710931/,如需轉載,請註明出處,否則將追究法律責任。

相關文章