动态监听和静态监听的最大区别,就是静态监听可以在数据库停机的状态下进行DBA运行维护操作。
动态监听是由实例PMON动态注册到tnslsnr进程上的。
PMON动态注册有两个条件:1.监听别名为LISTENER
1.监听端口为1521.
我们尝试一下:


结果显示实例没注册到监听上。

如何让动态监听注册到非默认监听(监听别名不为LISTENER或端口不为1521)?
通过参数local_listener配置就可以了。
local_listener有三种配置方式:
1.不配置,为空(默认注册到LISTENER,端口1521监听)。
2.配置为网络服务名(tnsnames连接别名?没错,就是它!)。
3.直接硬编码监听地址(语法与tnsnames里面ADDRESS段相同)。
我们看看第二种:
tnsnames.ora文件

设置local_listener参数,并强制注册到监听:

再看看监听:

从上面监听看到有几个问题:
1.监听别名为LISTENER,端口1522,local_listener配置为LIST2的服务名,端口指向1522.注册成功。说明动态注册跟据网络连接描述符所定内容进行端口注册。
2.系统默认注册ocp和ocpXDB两个服务,外加一个参数service_name指定的服务ocp1。说明实例注册服务到监听遵循几个点,第一,注册与SID同名服务。第二,注册{$SID}XDB服务(用于共享连接)。第三,注册service_name显示的服务(可以以逗号分隔多个)。
附上service_name参数:

回到静态监听

再看一下监听配置文件

是不是有点规律?静态监听是SID_LIST_开头,后一段名字和监听名称相同。其格式和监听配置还是有一定区别的。另外,GLOBAL_DBNAME是指定注册服务名。其实前面一点,对使用NetManager图形化配置静态监听的同学来说,其实很容易理解的,看一下配置图示:

如果再配LISTENER的静态监听:

看看效果:
看看Listener的静态静听ocps。

再看看listener1的静态监听ocps

好了,监听这块就这么多了。如果有不明白的,可以留言。知无不言。




