一、pmon默认只会动态注册port等于1521的监听
要想让pmon动态注册listener,需要设置local_listener参数。
二、Pmon动态注册顺序,无法自动注册时查看
1、先查找listener.ora[动态注册情况下,此配置无用,只有静态有关时,才会用此文件]
(1)正常情况下,没有listener.ora文件,可以正常启动监听
(2)如果listener.ora文件存在,且不正确,比如主机名没有填对,则报错,找不到主机名等,修改好对应主机名即可
TNS-12545: Connect failed because target host or object does not exist
(3)如果listener.ora文件存在,且正确,则可能会使用这个值,也可能使用local_listener对应的值【此种情况没搞清楚】
(4)如果listener.ora文件不存在,则直接找local_listener对应的值
2、查找show parameter 中的local_listener的值'LISTENER_ORCL';
如果1中无法解决,使用此方法。
默认local_listener的值是’LISTENER_ORCL‘,这个值是在tnsnames.ora中定义:
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(1)如果默认定义中的HOST名称不正确,即无法对应ip地址,则也会出现注册不成功的现象,修改HOST名称
(2)如果默认定义信息都正确,仍然注册不成功,那么需要手动将参数local_listener指定监听值,进行手动强制注册
SQL> Alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))';
更改后,此时监听处于start状态,它会自动注册监听 此时,重启监听,仍然会自动注册监听
或直接SQL> Alter system set local_listener=LISTENER_ORCL可以看到会自动注册监听
(3)注册监听生效后,再给local_listener修改回来:LISTENER_ORCL,仍然会自动监听
SQL>alter system set local_listener=LISTENER_ORCL
3、数据库不重启动,1、2生效后,删除掉listener.ora,tnsnames.ora,重启监听,pmon仍然可以动态注册成功【很神奇,不知道最终是用的哪里的参数进行注册,或者是缓存】,
4、数据库重启动,
(1)如果先删掉listener.ora,tnsnames.ora,监听无法启动,再次执行alter system set local_listener=LISTENER_ORCL注册成功
(2)如果不删除listener.ora,tnsnames.ora监听启动仍然可以正常启动
三、使用LOCAL_LISTENER参数进行多监听动态注册
1、默认情况下
oracle使用1521作为默认端口进行动态注册,而共享服务器模式则必须通过动态注册方式进行配置。
2、多个监听需要同时进行动态注册
LOCAL_LISTENER=(ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = RHEL4)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = RHEL4)(PORT = 1522)))
(2)第二种方式:通过TNS名字进行地址解析,设置LOCAL_LISTENER=LOCAL_LSNR LOCAL_LSNR = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = RHEL4)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = RHEL4)(PORT = 1521)) ) )
文章评论