
ORACLE RAC 负载均衡与local_listener、remote_listener两个参数的配置关系 RAC的负载均衡主要由客户端和服务器端两种实现方式。
Oracle RAC 负载均衡与local_listener、remote_listener两个参数的配置关系
 RAC的负载均衡主要由客户端和服务器端两种实现方式。
 
 1,客户端的实现,直接在tnsnames.ora中配置LOAD_BALANCE参数来实现。默认值是NO
 clinet_LB =
 (DESCRIPTION =
 (LOAD_BALANCE = YES)
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.243)(PORT = 1521))
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.244)(PORT = 1521))
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.245)(PORT = 1521))
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.246)(PORT = 1521))
 (CONNECT_DATA =
 (SERVICE_NAME = srv_epm1)
 )
 )
 2,服务器端的负载均衡LB设置。主要是通过两个初始化参数local_listener、remote_listener来实现的。通过这两个参数,oracle分别向这两个参数指向的listener进行注册,这样,listener就能知道各个服务的状态,,进而进行连接分发。
 11gr2版本,这两个参数默认设置为如下
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
 DRESS=(PROTOCOL=TCP)(HOST=10.4
 .124.244)(PORT=1521))))
remote_listener string dtydb-scan2:1521
由于以上设置,数据库实例分别向local_listener和remote_listener进行注册。
本地listener只注册了+ASM2和epmdb2两个实例
LSNRCTL> set current_listener LISTENER
Current Listener is LISTENER
LSNRCTL> service
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
Services Summary...
Service "+ASM" has 1 instance(s).
 Instance "+ASM2", status READY, has 1 handler(s) for this service...
 Handler(s):
 "DEDICATED" established:10765 refused:0 state:ready
 LOCAL SERVER
Service "epmdb" has 1 instance(s).
 Instance "epmdb2", status READY, has 1 handler(s) for this service...
 Handler(s):
 "DEDICATED" established:10 refused:0 state:ready
 LOCAL SERVER
The command completed successfully
SCAN listener注册了所有数据库实例默认service和运行在epmdb1实例上的服务srv_epm1
查看服务注册情况,SCAN
LSNRCTL> set current_listener LISTENER_SCAN1
Current Listener is LISTENER_SCAN1
LSNRCTL> service
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
Services Summary...
Service "epmdb" has 3 instance(s).
 Instance "epmdb1", status READY, has 1 handler(s) for this service...
 Handler(s):
 "DEDICATED" established:0 refused:0 state:ready
 REMOTE SERVER
 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.4.124.243)(PORT=1521)))
 Instance "epmdb2", status READY, has 1 handler(s) for this service...
 Handler(s):
 "DEDICATED" established:0 refused:0 state:ready
 REMOTE SERVER
 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.4.124.244)(PORT=1521)))
 Instance "epmdb3", status READY, has 1 handler(s) for this service...
 Handler(s):
 "DEDICATED" established:4 refused:0 state:ready
 REMOTE SERVER
 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.4.124.245)(PORT=1521)))
Service "srv_epm1" has 1 instance(s).
 Instance "epmdb1", status READY, has 1 handler(s) for this service...
 Handler(s):
 "DEDICATED" established:0 refused:0 state:ready
 REMOTE SERVER
 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.4.124.243)(PORT=1521)))
The command completed successfully
tnsnames.ora的配置如下
tydb_srv_epm1 =
 (DESCRIPTION =
 (LOAD_BALANCE = NO)
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.243)(PORT = 1521))
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.244)(PORT = 1521))
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.245)(PORT = 1521))
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.246)(PORT = 1521))
 (CONNECT_DATA =
 (SERVICE_NAME = epmdb)
 )
 )
epmdb_scan =
 (DESCRIPTION =
 (LOAD_BALANCE = NO)
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.124.230)(PORT = 1521))
 (CONNECT_DATA =
 (SERVICE_NAME = epmdb)
 )
 )
 
