Oracle RAC 叢集最突出的表現就是高可用性,這些內容主要包括load balance以及failover,通過這些技術使得單點故障不影響用戶端端應用程式對資料庫的正常訪問,以及通過建立service實現節點間負載平衡。本文主要描述Oracle 10g rac環境下的Oracle failover測試。
下面是一些關於這方面的基礎參考連結:
有關負監聽配置,載均衡(load balance)請參考
ORACLE RAC 下非預設連接埠監聽配置(listener.ora tnsnames.ora)
Oracle RAC 用戶端串連負載平衡(Load Balance)
Oracle RAC 伺服器端串連負載平衡(Load Balance)
Oracle RAC 負載平衡測試(結合伺服器端與用戶端)
1、Oracle failover的幾種方式
Oracle failover也叫容錯移轉,從Oracle 10g開始,分為3種方式:
a. Client-Side Connect time Failover
用戶端串連failover模式,此方式較為簡單,只要安裝了rac叢集,預設情況下即被啟用。
b. TAF
透明容錯移轉,此方式同樣基於用戶端完成,需要配置用戶端tnsnames.ora,串連故障發生時,無須重新串連
c. Service-Side TAF
伺服器端透明容錯移轉,通過配置service來實現,用戶端無須任何配置。
本文主要示範第一種情形,即用戶端在發起串連請求時如何?容錯移轉
注意事項: 不能在listener.ora 檔案中設定GLOBAL_NAME
該參數會禁用Connect-time Failover 和 Transparent Application Failover
2、Client-Side Connect time Failover
下面關於Client-Side Connect time Failover來自Oracle 的官方描述 ID 453293.1
The connect-time failover enables clients to connect to another listener if the initial connection to the first
listener fails. The number of listener protocol addresses determines how many listeners are tried. Without
connect-time failover, Oracle Net attempts a connection with only one listener. The default is on.
Tnsnames Parameter: FAILOVER
(failover=on) is default for ADDRESS_LISTs, DESCRIPTION_LISTs, and a set of
DESCRIPTIONs., therefore, you do not have to specify it explicitly.
基於用戶端的failover比較好理解。對於在用戶端tnsnames.ora有多個VIP的情形,用戶端會首先請求定位到第一個VIP,如果第一個VIP不
可達,則繼續嘗試使用下一個VIP,直到成功建立串連,如果所有的VIP無法串連將收到錯誤訊息。
通常情況下,我們使用vip作為tnsnames.ora中的串連地址
3、伺服器端、用戶端的環境
#伺服器端環境,host資訊
oracle@bo2dbp:~> cat /etc/hosts |grep vip
192.168.7.61 bo2dbp-vip.2gotrade.com bo2dbp-vip
192.168.7.62 bo2dbs-vip.2gotrade.com bo2dbs-vip
#伺服器端環境,叢集資訊
oracle@bo2dbp:~> ./crs_stat.sh
Resource name Target State
-------------- ------ -----
ora.GOBO4.GOBO4A.inst ONLINE ONLINE on bo2dbp
ora.GOBO4.GOBO4B.inst ONLINE ONLINE on bo2dbs
ora.GOBO4.db ONLINE ONLINE on bo2dbp
ora.bo2dbp.ASM1.asm ONLINE ONLINE on bo2dbp
ora.bo2dbp.LISTENER_BO2DBP.lsnr ONLINE ONLINE on bo2dbp
ora.bo2dbp.LISTENER_ORA10G_BO2DBP.lsnr ONLINE ONLINE on bo2dbp
ora.bo2dbp.gsd ONLINE ONLINE on bo2dbp
ora.bo2dbp.ons ONLINE ONLINE on bo2dbp
ora.bo2dbp.vip ONLINE ONLINE on bo2dbp
ora.bo2dbs.ASM2.asm ONLINE ONLINE on bo2dbs
ora.bo2dbs.LISTENER_BO2DBS.lsnr ONLINE ONLINE on bo2dbs
ora.bo2dbs.LISTENER_ORA10G_BO2DBS.lsnr ONLINE ONLINE on bo2dbs
ora.bo2dbs.gsd ONLINE ONLINE on bo2dbs
ora.bo2dbs.ons ONLINE ONLINE on bo2dbs
ora.bo2dbs.vip ONLINE ONLINE on bo2dbs
ora.ora10g.db ONLINE ONLINE on bo2dbp
#用戶端環境
robin@SZDB:~> cat /etc/issue
Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l).
robin@SZDB:~> sqlplus -v
SQL*Plus: Release 10.2.0.3.0 - Production
#用戶端tnsnames配置
GOBO4 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = GOBO4)
)
)