日期:2014-05-16 浏览次数:20417 次
不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册。与单实例相同,RAC非缺省端口的监听器也是通过设置参数local_listener来达到目的。除此之外,还可以对实例进行远程注册,以达到负载均衡的目的。这是通过一个参数remote_listener来实现。
有关Oracle 网络配置相关基础以及概念性的问题请参考:
配置ORACLE 客户端连接到数据库
配置非默认端口的动态服务注册
配置sqlnet.ora限制IP访问Oracle
Oracle 监听器日志配置与管理
设置 Oracle 监听器密码(LISTENER)
配置RAC负载均衡与故障转移
Oracle RAC 监听配置
一、创建非缺省的监听器
使用netca新建一个非缺省的listener,当然也可以直接修改各节点上的listener.ora
oracle@bo2dbp:~> export DISPLAY=192.168.7.133:0.0
oracle@bo2dbp:~> netca
--选择cluster configuration
--选择所有的节点
--选择listener configuration
--选择add
--设定一个新的监听器的名字,假定为LISTENER_NEW
--选择tcp
--设定非缺省的端口号,此处设定为1314
--选择no,点击next等待完成
--如之前已经存在缺省的监听器,此时出现提示选择启动那个监听,选择刚建的LISTENER_NEW
--next,提示完成, finish
二、缺省监听器与非缺省监听器对照
oracle@bo2dbp:~> ps -ef | grep lsnr oracle 21097 1 0 17:40 ? 00:00:00 /u01/oracle/db/bin/tnslsnr LISTENER_BO2DBP -inherit oracle 26228 1 0 17:58 ? 00:00:00 /u01/oracle/db/bin/tnslsnr LISTENER_NEW_BO2DBP -inherit oracle 28842 19468 0 17:58 pts/1 00:00:00 grep lsnr 此时可以看到有两个监听器,一个是原来缺省的,一个是新增加的,注意监听器的命名,RAC环境下是监听器的名字加上hostname 下面的listener.ora的内容已经包含了两个监听器,一个是缺省的,一个是非缺省的。 相应地,listener.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_NEW_BO2DBP = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = bo2dbp-vip.2gotrade.com)(PORT = 1314)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.51)(PORT = 1314)(IP = FIRST)) ) ) 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_NEW_BO2DBP = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/oracle/db) (PROGRAM = extproc) ) ) SID_LIST_LISTENER_BO2DBP = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/oracle/db) (PROGRAM = extproc) ) ) #查看监听器的状态 oracle@bo2dbp:~> ./crs_stat.sh Resource name Target State -------------- ------ ----- ora.GOBO4.GOBO4A.inst ONLINE ONLINE on bo2dbp ora.GOBO4.GOBO4B.inst ONLINE ONLINE on bo2dbs ora.GOBO4.db ONLINE ONLINE on bo2dbp ora.bo2dbp.ASM1.