本文标题:Rac环境下正确配置LISTENER和TNS【本站如从外站转载,会注明出处】
本文链接:http://www.validba.net/2009/07/rac%e7%8e%af%e5%a2%83%e4%b8%8b%e6%ad%a3%e7%a1%ae%e9%85%8d%e7%bd%aelistener%e5%92%8ctns/
RAC环境下配置LISTENER,TNS必须考虑负载均衡,故障切换等因素.这里用一个四节点的RAC环境为例:
node1:rac1 node2:rac2 node3:rac3 node4:rac4
服务器端的配置
listener.ora的配置:
配置每个实例本地的监听器:
node1:<listener.ora>
LISTENER_RAC1 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node1-priv)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = IPC)(KEY = extproc)) ) ) )
node2:<listener.ora>
LISTENER_RAC2 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node2-priv)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = IPC)(KEY = extproc)) ) ) )
node3:<listener.ora>
LISTENER_RAC3 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node3-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node3-priv)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = IPC)(KEY = extproc)) ) ) )
node4:<listener.ora>
LISTENER_RAC4 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node4-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node4-priv)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = IPC)(KEY = extproc)) ) ) )
tnsnames.ora的配置:
在每个实例的tnsnames.ora文件中加入以下信息:
LISTENER_RAC = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node3-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node4-vip)(PORT = 1421)(IP = FIRST)) ) LISTENER_RAC1 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1421)(IP = FIRST)) ) LISTENER_RAC2 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1421)(IP = FIRST)) ) LISTENER_RAC3 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node3-vip)(PORT = 1421)(IP = FIRST)) ) LISTENER_RAC4 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = node4-vip)(PORT = 1421)(IP = FIRST)) )
设置LOCAL_LISTENER和REMOTE_LISTENER参数
前面我们讲过,设置LOCAL_LISTENER参数是由于LISTENER使用了非TCP协议或非1521端口的情况下,那么在RAC环境下不管是使用了默认的TCP和1521还是其他协议都建议配置LOCAL_LISTENER.REMOTE_LISTENER参数在RAC环境下非常重要,是服务器使用load_balance的一个工具,在服务器端的连接中,Oracle NET通过remote_listener确定当前RAC中的远程监听和实例,以便分发连接.
执行下面的语句设置LOCAL_LISTENER和REMOTE_LISTENER参数:
ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_RAC1' SCOPE=BOTH SID='RAC1'; ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_RAC2' SCOPE=BOTH SID='RAC2'; ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_RAC3' SCOPE=BOTH SID='RAC3'; ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_RAC4' SCOPE=BOTH SID='RAC4'; ................... ALTER SYSTEM SET REMOTE_LISTENER='LISTENER_RAC' SCOPE=BOTH SID='RAC1'; ALTER SYSTEM SET REMOTE_LISTENER='LISTENER_RAC' SCOPE=BOTH SID='RAC2'; ALTER SYSTEM SET REMOTE_LISTENER='LISTENER_RAC' SCOPE=BOTH SID='RAC3'; ALTER SYSTEM SET REMOTE_LISTENER='LISTENER_RAC' SCOPE=BOTH SID='RAC4';
客户端TNS的配置:
RAC环境下Client端TNS的配置和非RAC环境下,多IP的配置情况一样,都要配置load_balance 和TAF:
rac = (DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE=ON) (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node3-vip)(PORT = 1421)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = node4-vip)(PORT = 1421)(IP = FIRST)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) ) ) )
连接测试
开启多个连接测试, 并查询gv$session视图看看是否连接达到负载均衡.