本文詳細介紹了Oracle負載平衡的具體配置。通過用戶端和伺服器端兩方面進行配置,文中代碼比 較全面,值得大家參考。
對於專業的資料處理儲存的Oracle ARC而言,負載平衡的設定就更為重要了。那麼如何對Oracle負 載均衡進行配置呢?就讓我們一起看看本文來學習一下吧。我們將從用戶端和伺服器端來進行解說。
Oracle負載平衡主要是指新會話串連到RAC資料庫時,如何判定這個新的串連要連到哪個節點進行工 作,在Oracle負載平衡中分為兩種,一種是基於用戶端串連的,另外一種是基於伺服器端的,
用戶端的Oracle負載平衡配置相對簡單,只需要在tnsnames.ora中添加LOAD_BALANCE=ON這麼一個選 項即可,比如下面的TNS:
RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = ON)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)
這樣當用戶端串連RAC資料庫時,會隨機在TNS裡面挑個監聽地址進行串連,在Oracle10g以前,假如有 節點宕機或者類似事故時,用戶端可能還是選擇串連到這個節點,這樣會發生較長時間的TCP等待逾時, 而在10g以後,由於VIP和FAN的引入,這樣的情況可以得到很大程度的改善,用戶端的Oracle負載平衡在 通常情況下能夠較好地工作,但是由於串連是在用戶端隨機發起的,這樣用戶端並不知道RAC各節點的負 荷及串連數情況,有可能負荷大的節點還會源源不斷地增加新的串連,導致RAC節點無法均衡工作,
從Oracle 10g開始,伺服器端的Oracle負載平衡可以根據RAC中各節點的負荷及串連數情況,而判定將 新的用戶端串連分配到負荷最小的節點上去,RAC中各節點的PMON進程每3秒會將各自節點的負荷(包括 LOAD,最大LOAD,CPU使用率)及串連數更新到service_register裡面,然後假如節點的負荷有發生變化, 將會通知到監聽程式,由監聽程式再決定新的用戶端串連分配至哪個節點,假如RAC中一個節點的監聽失 敗了,PMON每一分鐘會去檢查一次是否已經恢複正常,
伺服器端的監聽配置是在各節點的tnsnames.ora裡面添加一個串連到各個節點監聽的條目,然後再在 初始化參數裡面設定remote_listeners這個參數,比如:
LISTENERS_RAC =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
)
ALTER SYSTEM SET REMOTE_LISTENER = LISTENERS_RAC;
這樣伺服器端的Oracle負載平衡便配置完成。
同時,Oracle MMNL進程會統計Service goodness,它是衡量一個執行個體能夠為一個服務提供資源的指 標,數值越大說明吸引力越強,能夠提供更多的串連服務。統計的結果存放在 GV$SERVICEMETRIC and GV$SERVICEMETRIC_HISTORY。
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/