日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Oracle RAC Failover 详解

發布時間:2025/3/8 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle RAC Failover 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Oracle??RAC?同時具備HA(High?Availiablity)?和LB(LoadBalance).?而其高可用性的基礎就是Failover(故障轉移).?它指集群中任何一個節點的故障都不會影響用戶的使用,連接到故障節點的用戶會被自動轉移到健康節點,從用戶感受而言,?是感覺不到這種切換。??

?

Oracle?10g?RAC?的Failover?可以分為3種:

1.?Client-Side?Connect?time?Failover

2.?TAF

3.?Service-Side?TAF

?

注意事項:?不能在listener.ora?文件中設置GLOBAL_NAME,?因為這個參數會禁用Connect-time?Failover?和?Transparent?Application?Failover.

?

一.Client-Side?Connect?Time?Failover

Client-Side?Connect?Time?Failover的含義:如果用戶端tnsname?中配置了多個地址,用戶發起連接請求時,會先嘗試連接地址表中的第一個地址,如果這個連接嘗試失敗,則繼續嘗試使用第二個地址,直至連接成功或者遍歷了所有的地址。

這 種Failover的特點: 只在建立連接那一時刻起作用,也就是說,這種Failover方式只在發起連接時才會去感知節點故障,如果節點沒有反應,則 自動嘗試地址列表中的下一個地址。一旦連接建立之后,節點出現故障都不會做處理,從客戶端的表現就是會話斷開了,用戶程序必須重新建立連接。

啟用這種Failover的方法就是在客戶端的tnsnames.ora中添加FAILOVER=ON?條目,這個參數默認就是ON,所以即使不添加這個條目,客戶端也會獲得這種Failover能力。

?

示例:

RAC?=

??(DESCRIPTION?=

?????(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?rac1-vip)(PORT?=?1521))

?????(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?rac2-vip)(PORT?=?1521))

?????(LOAD_BALANCE=YES)

??????(

?CONNECT_DATA=

??? ?(SERVER=DEDICATED)

?(SERVICE_NAME=RAC)

??????)

????)

注:rac1-vip,rac2-vip要添加到hosts?文件中,不然可能解析不了。

?

二.?TAF(Transparent?Application?Failover)

?

?

這塊的配置,參考:

10g & 11g Configuration of TAF(Transparent Application Failover) and Load Balancing [ID 453293.1]

現 在的大部分流行的應用系統(如:weblogic,?Jboss),都是啟動時就建立若干到數據庫的長連接,在應用程序整個生命周期內重用這些連接。?而 Client-Side?Connet?Time?Failover的工作方式是它對應用程序的可用性沒有太大幫助。?

所 以從Oracle?8.1.5?版本只有引入了新的Failover?機制—TAF。?所謂TAF,就是連接建立以后,應用系統運行過程中,如果某個實例 發生故障,連接到這個實例上的用戶會被自動遷移到其他的健康實例上。對于應用程序而言,這個遷移過程是透明的,不需要用戶的介入,當然,這種透明要是有引 導的,因為用戶的未提交事務會回滾。?相對與Client-Side?Connect?Time?Failover的用戶程序中斷,拋出連接錯誤,用戶必 須重啟應用程序,TAF?這種方式在提高HA上有了很大的進步。

TAF?的配置也很簡單,只需要在客戶端的tnsnames.ora中添加FAILOVER_MODE配置項。這個條目有4個子項目需要定義。

1.?METHOD:?用戶定義何時創建到其實例的連接,有BASIC?和?PRECONNECT?兩種可選值。?

???????BASIC:?是指在感知到節點故障時才創建到其他實例的連接。

???????PRECONNECT:?是在最初建立連接時就同時建立到所有實例的連接,當發生故障時,立刻就可以切換到其他鏈路上。

兩種方法比較:?BASIC方式在Failover時會有時間延遲,PRECONNECT方式雖然沒有時間延遲,但是建立多個冗余連接會消耗更多資源,兩者就是是用時間換資源和用資源換時間的區別。

2.?TYPE:?用于定義發生故障時對完成的SQL?語句如何處理,其中有2種類型:session?和select.

這2種方式對于未提交的事務都會自動回滾,區別在于對select?語句的處理,對于select,用戶正在執行的select語句會被轉移到新的實例上,在新的節點上繼續返回后續結果集,而已經返回的記錄集則拋棄。

假 設用戶正在節點1上執行查詢,整個結果集共有100條記錄,現在已從節點1上返回10條記錄,這時節點1宕機,用戶連接被轉移到節點2上,如果是 session模式,則需要重新執行查詢語句;如果是select方式,會從節點2上繼續返回剩下的90天記錄,而已經從節點1返回的10條記錄不會重復 返回給用戶,對于用戶而言,感受不到這種切換。

顯然為了實現select?方式,Oracle?必須為每個session保存更多的內容,包括游標,用戶上下文等,需要更多的資源也是用資源換時間的方案。

3.?DELAY?和?RETRIES:?這2個參數分別代表重試間隔時間和重試次數。

示例:

RAC?=

??(DESCRIPTION?=

?????(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?rac1-vip)(PORT?=?1521))

?????(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?rac2-vip)(PORT?=?1521))

??????(LOAD_BALANCE=YES)

??????(

?CONNECT_DATA=

??? ?(SERVER=DEDICATED)

?(SERVICE_NAME=RAC)

?(

?? ?FAILOVER_MODE=

(TYPE=session)

(METHOD=basic)

(RETRIES=180)

(DELAY=5)

?)

??????)

????)

轉載于:https://my.oschina.net/u/2249726/blog/417546

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Oracle RAC Failover 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。