记录下刚刚做的一个为一个数据库(t02)配置多个监听(listener)的实验,过程有点小曲折。
(1)新增两个测试的监听,listener.ora的配置内容(可纯手动编辑该文件或使用netca)如下:
(LISTENER为系统原有;L1、L2为测试用新增的监听)
(2)配置tnsnames.ora,使数据库(t02)可同时使用以上3个监听:
(3)检查及测试,发现问题:
检查的时候发现除了默认的LISTENER监听外,L1和L2始终不能注册服务:
停止了默认的LISTENER监听后,使用tns进行连接测试的时候报错(ORA-12514):
(4)分析问题:
一阵google之后发现,如果默认端口不是1521,则需要设置LOCAL_LISTENER来手动指定监听别名:
When configuring the listener to listen on TCP/IP, you should enter the default port of 1521. If you do not, you must configure the LOCAL_LISTENER parameter in the intialization parameter file and resolve the listener name through a naming method.
http://download.oracle.com/docs/cd/B13789_01/network.101/b10775/listenercfg.htm
(5)解决问题(此处的T02为step 2的tnsnames.ora里面的T02):
(6)验证,再测试:
验证,发现L1、L2已能正常注册服务:
再测试,发现scott用户能够正常登录:
(7)总结
当监听的端口是默认的1521时,PMON会动态注册该监听(listener);
当监听的端口不是默认的1521时,需要使用alter system set local_listener="T02";来手动注册监听。