一台Oracle数据库服务器上两个监听同时使用(2)

Because all of the configuration parameters have default values, it is possible to start
and use a listener with no configuration. This default listener has a name of LISTENER,
supports no services on startup, and listens on the following TCP/IP protocol address:
(ADDRESS=(PROTOCOL=tcp)(HOST=host_name)(PORT=1521))

这句话就能解释为什么会启动1521端口的监听。我也做了实验,即使是在没有listener.ora文件的情况下,也会可以启动名为LISTENER的监听来监听1521端口。

解释了监听起来的问题,再来看第一个问题,为什么两个监听都可以用呢?

先了解一下动态监听和静态监听:

动态监听是在数据库启动后,PMON进程会向本地的端口注册服务信息,默认是向本地地址的1521端口注册。而前面启动的对1521端口的监听正符合默认的注册方式,所以直接可以注册成功,数据库也可以对外提供服务。

而最开始配置的静态监听的目的就是代替PMON进程注册的工作,直接把数据库的服务强制绑定到监听上,即使数据库没有启动,这个数据库的服务名还是会在监听中显示的。

了解了这些之前,就不难理解为什么两个监听可以同时使用了:数据库默���册到了1521端口的监听上了,而静态监听又强制数据库绑定到了1581端口上,所以两个监听端口都是可以通的。

所以出现这种情况的原因是配置静态监听的时候,使用了是1581端口而非默认的1521端口,而且又启动了默认的监听。如果静态监听使用的1521端口,也不会出现这样的情况。

那如何能避免使用非默认监听端口时出现这种情况呢?可以在数据库中配置local_listener参数,详细参考之前的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6537c3bf75e57b62ffa2c395caad12ee.html