Oracle RAC 負載平衡使得從用戶端發起的串連能夠有效地分配到監聽器負載較小的執行個體上。有兩種方式實現用戶端負載平衡,一是通過配置用戶端的load_balance,一是通過設定管理員端的remote_listener參數。兩種方式各有優劣,而且兩者並不相互排斥,因此可以結合兩種方式來更加有效實現負載平衡。本文將描述兩者結合的使用方式(oralce 10g rac)。
有關用戶端與服務端負載平衡的單獨測試請參考:
Oracle RAC 用戶端串連負載平衡(Load Balance)
Oracle RAC 伺服器端串連負載平衡(Load Balance)
本文的測試將結合前篇文章使用的指令碼與範例,是前兩篇測試的一個總結。
一、配置需求
1、伺服器端各節點監聽器正常提供服務,如果使用非預設的1521連接埠,請參考 ORACLE RAC 下非預設連接埠監聽配置(listener.ora tnsnames.ora) oracle@bo2dbp:~> more $ORACLE_HOME/network/admin/listener.ora # listener.ora.bo2dbp Network Configuration File: /u01/oracle/db/network/admin/listener.ora.bo2dbp # Generated by Oracle configuration tools. LISTENER_BO2DBP = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = bo2dbp-vip.2gotrade.com)(PORT = 1521)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.51)(PORT = 1521)(IP = FIRST)) ) ) SID_LIST_LISTENER_BO2DBP = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/oracle/db) (PROGRAM = extproc) ) ) oracle@bo2dbp:~> lsnrctl status Service "GOBO4" has 2 instance(s). Instance "GOBO4A", status READY, has 2 handler(s) for this service... Instance "GOBO4B", status READY, has 1 handler(s) for this service... 2、伺服器端的remote_listener參數設定 要求remote_listener參數的串連標識符在伺服器端的tnsnames.ora中有對應的條目 SQL> show parameter listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ local_listener string remote_listener string remote_lsnr_gobo4 oracle@bo2dbp:~> more $ORACLE_HOME/network/admin/tnsnames.ora # tnsnames.ora Network Configuration File: /u01/oracle/db/network/admin/tnsnames.ora # Generated by Oracle configuration tools. remote_lsnr_gobo4 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521)) )3、用戶端tnsnames.ora中啟用load_balance oracle@SZDB:~> tail -11 $ORACLE_HOME/network/admin/tnsnames.ora 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) ) )
二、測試Load Balance
#還是使用之前的腳步來進行測試#Author : Robinson#Blog : http://blog.csdn.net/robinson_0612oracle@SZDB:~> more load_balance.sh #!/bin/bashfor i in {1..1000}doecho $isqlplus -S system/oracle@GOBO4 <<EOFselect instance_name from v\$instance;EOFsleep 1doneexit 0oracle@SZDB:~> ./load_balance.sh >load_bal.log #查看日誌oracle@SZDB:~> grep GOBO4A load_bal.log |wc -l750oracle@SZDB:~> grep GOBO4B load_bal.log |wc -l250#查看監聽器的日誌oracle@bo2dbp:/u01/oracle/db/network/log> grep establish listener_bo2dbp.log |wc -l894oracle@bo2dbp:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbp.log |wc -l415#從上面的查詢中可以得知,節點bo2dbp總共接受了894個串連請求,而有415串連請求是由bo2dbs轉寄過來的#因此,實際上從用戶端發起到bo2dbp的實際串連請求數為894-415=479#下面來看在節點bo2dbs上的監聽日誌oracle@bo2dbs:/u01/oracle/db/network/log> grep establish listener_bo2dbs.log |wc -l665oracle@bo2dbs:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbs.log |wc -l 144#從上面的查詢中可知,節點bo2dbs總共接受了665個串連請求,而有144個串連請求是由bo2dbp轉寄過來的#因此,實際上從用戶端發起到bo2dbs的實際串連請求數為655-144=511#從上面的結果可知,#基於用戶端的串連請求數為節點bo2dbp為479,節點bo2dbs為511#監聽器路由到本地執行個體數目為,節點bo2dbp,479-144=335,節點bo2dbs,511-415=96#遠程監聽器路由道本地執行個體的資料為,節點bo2dpb為415,節點bo2dbs為144#監聽器路由的概念是指基於伺服器端的負載平衡#即伺服器端的監聽器根據自身以及遠程監聽器的負載情況來確定將當前的串連請求轉寄到本地或遠程,此即為路由。
三、更多參考
有關Oracle 網路設定相關基礎以及概念性的問題請參考:
配置ORACLE 用戶端串連到資料庫
配置非預設連接埠的動態服務註冊
配置sqlnet.ora限制IP訪問Oracle
Oracle 監聽器日誌配置與管理
設定 Oracle 監聽器密碼(LISTENER)
Oracle RAC 監聽配置
ORACLE RAC 下非預設連接埠監聽配置(listener.ora tnsnames.ora)
Oracle RAC 用戶端串連負載平衡(Load Balance)
配置RAC負載平衡與容錯移轉
有關基於使用者管理的備份和備份恢複的概念請參考
Oracle 冷備份
Oracle 熱備份
Oracle 備份恢複概念
Oracle 執行個體恢複
Oracle 基於使用者管理恢複的處理
SYSTEM 資料表空間管理及備份恢複
SYSAUX資料表空間管理及恢複
Oracle 基於備份控制檔案的恢複(unsing backup controlfile)
有關RMAN的備份恢複與管理請參考
RMAN 概述及其體繫結構
RMAN 配置、監控與管理
RMAN 備份詳解
RMAN 還原與恢複
RMAN catalog 的建立和使用
基於catalog 建立RMAN儲存指令碼
基於catalog 的RMAN 備份與恢複
RMAN 備份路徑困惑
有關ORACLE體繫結構請參考
Oracle 資料表空間與資料檔案
Oracle 密碼檔案
Oracle 參數檔案
Oracle 聯機重做記錄檔(ONLINE LOG FILE)
Oracle 控制檔案(CONTROLFILE)
Oracle 歸檔日誌
Oracle 復原(ROLLBACK)和撤銷(UNDO)
Oracle 資料庫執行個體啟動關閉過程
Oracle 10g SGA 的自動化管理
Oracle 執行個體和Oracle資料庫(Oracle體繫結構)