在RAC中,负载均衡分为两种,一种是基于客户端连接的,另外一种是基于服务器端的。
现在主流都是基于服务端的,服务器端的负载均衡可以根据RAC中各节点的负荷及连接数情况,而判定将新的客户端连接分配到负荷最小的节点上去
服务端监听在创建实例的时候自动建好
$ lsnrctl status
LSNRCTL for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Production on 07-MAY-2014 13:37:53
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER_RAC1
Version TNSLSNR for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Production
Start Date 07-MAY-2014 12:07:52
Uptime 0 days 1 hr. 30 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP ON
Listener Parameter File /u01/oracle/product/10.2/db_1/network/admin/listener.ora
Listener Log File /u01/oracle/product/10.2/db_1/network/log/listener_rac1.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.191)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.180)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "+ASM_XPT" has 1 instance(s).
Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "orcl" has 2 instance(s).
Instance "orcl1", status READY, has 2 handler(s) for this service...
Instance "orcl2", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 2 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for this service...
Instance "orcl2", status READY, has 1 handler(s) for this service...
Service "orcl_XPT" has 2 instance(s).
Instance "orcl1", status READY, has 2 handler(s) for this service...
Instance "orcl2", status READY, has 1 handler(s) for this service...
The command completed successfully
SQL> show parameter remote_listener;
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
remote_listener string
LISTENERS_ORCL
客户端配置:
1) 先手动按常规创建本地服务
Netca
输入第一个节点的VIP地址
2) 手动修改tnsnames.ora文件,将第2个节点的VIP 192.168.0.192也添加进去
D:\product\10.2.0\client_1\NETWORK\ADMIN
tnsnames.ora
修改前:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.191)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
修改后:
ORCL =
(DESCRIPTION =
(FAILOVER = on)
(LOAD_BALANCE = yes)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.191)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.192)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
(FAILOVER_MODE=
(TYPE = select)
(METHOD = basic)
(RETRIES = 180)
(DELAY = 5)
)
)
)
3) 测试连接
客户端会根据服务端的压力,新连接自动连接到压力小的节点上,实现负载均衡
4) 模拟主节点宕机
将主节点执行halt –q关机
过几分钟
在客户端用sqlplus连接服务器数据库可能会出现如下错误:
ERROR:
ORA-12545: 因目标主机或对象不存在,连接失败
解决ORA-12545连接失败问题
配置客户端的Hosts文件
通过在客户端的Hosts文件中加入对两个服务名的主机名字解析可以解决ORA-12545问题。
192.168.0.191 rac1
192.168.0.192 rac2













