標籤:rac failover
傳統企業比如銀行業和電信業的資料庫大多採用oracle rac+dataguard的高可用架構,在rac項目實施過程中,由於商務持續性的苛刻要求,高可用的實施和測試工作顯得尤為重要。
oracle在新版本12cR2的rac官方文檔裡單獨列了一章叫Ensuring application Continuity,重視程度可見一斑。在以前的oracle10g以及11g的版本中,client為實現RAC failover(容錯移轉)特性,各類應用app以及db需要作各種配置調整工作,隨著oracle的12cR2新版本的到來,這些配置步驟變得更簡化。
下面簡要總結oracle11gR2環境下的failover配置。
首先根據是否使用了事先已經存在的串連(如串連池中的串連)將用戶端的串連分為Connect Time Connection Failover和Runtime Connection Failover,runtime首碼指串連已經存在的情況,比如使用了串連池。
1、Connect Time Connection Failover
用戶端的tnsnames.ora中配置scan ip和service就可以實現串連資料庫時的Failover;
2、Runtime Connection Failover
oracle通過兩種手段來實現Runtime Connection Failover,分別為TAF(Transparent Application Failover)和 FCF(Fast Connection Failover)。
首先是TAF:
它可以在 client 端的tnsnames.ora中的串連串裡定義,也可以在 server 端的 service 中定 義。TAF 僅對使用 OCI 串連的用戶端和串連池有效,這裡的 OCI 串連可以是在 OCI 串連上的封裝,比如 JDBC-OCI driver 就支援 TAF,但 JDBC thin driver 就不支援 TAF(因為 JDBC thin driver 不是基於 OCI 的)。
其次是FCF:
Fast Connection Failover,它實際上是用戶端通過訂閱 FAN HA events 來實現的。
因為 JDBC thin 串連不是基於 OCI 的,所以這種情況下的 Runtime Connection Failover 不能使用 TAF,只能用 FCF。
如果想讓應用app具備TAF屬性,可進行簡單app改造:首先在app的client環境安裝oracle用戶端程式,然後將jdbc thin串連調整為jdbc oci的串連方式。
在oracle12cR2的版本中,failover可基於事務,且replay dml語句,相對於11g基於會話,failover功能又大大提升了。
Oracle RAC環境下的應用連續性