listener注册类型
1. 静态注册
8i及8i以前,均采用静态注册。
把注册的信息提前写到listener.ora里面。
oem和其他服务是必须的。
2. 动态注册
Oracle9i 或Oracle8i 例程使用动态服务注册
不需要配置listener.ora文件
动态注册由PMON进程执行 在初始化参数中必须配置SERVICE_NAMES、INSTANCE_NAME这两个参数,才可以进行动态注册
缺省情况下,PMON 向TCP/IP 的缺省本地地址— 端口1521— 处的服务器上的本地监听程序进行注册
非缺省监听程序注册(e.g.prot=1522),定义LOCAL_LISTENER 初始化参数(可以通过tnsnames.ora 等命名方法将非缺省listener_alias解析,也可以直接把address字符串添加到LOCAL_LISTENER中)
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.230.68)(PORT = 1522))'
下面是分别对默认的动态注册、静态注册、非默认listener的静态注册和非默认listener的动态注册做的试验:
1. 默认listener动态注册(缺省本地地址— 端口1521-SERVICE_NAMES、INSTANCE_NAME)
dbca库以后,D:\oracle\network\admin是没有listener.ora, tnsnames.ora这两个文件的
D:\oracle\network\admin\sqlnet.ora内容:
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES = (NTS)
C:\Documents and Settings\zhanglei>lsnrctl service
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-3月 -2009 15:05:49
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
服务摘要..
服务 "leiz" 包含 1 个例程。
例程 "leiz", 状态 READY, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:17 已拒绝:0 状态:ready
LOCAL SERVER
服务 "leizXDB" 包含 1 个例程。
例程 "leiz", 状态 READY, 包含此服务的 1 个处理程序...
处理程序:
"D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready
DISPATCHER <machine: LEIZ, pid: 1348>
(ADDRESS=(PROTOCOL=tcp)(HOST=leiz)(PORT=1750))
命令执行成功
结论:9i数据库创建完以后,默认使用的是动态注册(READY代表动态注册, UNKONW代表静态注册)
2. 默认listener静态注册
netca添加 默认LISTENER,文件listener.ora文件内容如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = leiz) /*添加instance_name */
(ORACLE_HOME = d:\oracle)
--(PROGRAM = extproc)/*备注:这行一定要去掉,否则conn测试会失败*/
)
)
重启listener,查看监听服务状态
C:\Documents and Settings\zhanglei>lsnrctl service
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-3月 -2009 15:30:03
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.15.99)(PORT=1521)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
服务 "leiz" 包含 2 个例程。
例程 "leiz", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
例程 "leiz", 状态 READY, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已拒绝:0 状态:ready
LOCAL SERVER
服务 "leizXDB" 包含 1 个例程。
例程 "leiz", 状态 READY, 包含此服务的 1 个处理程序...
处理程序:
"D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready
DISPATCHER <machine: LEIZ, pid: 1348>
(ADDRESS=(PROTOCOL=tcp)(HOST=leiz)(PORT=1750))
命令执行成功
结论:此时,静态LISTENER UNKNOWN也被注册进去了。READY代表动态注册, UNKONW代表静态注册
3. 非默认listener3 静态注册
netca添加 非默认监听LISTENER3,文件listener.ora文件内容如下:
LISTENER3 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.15.99)(PORT = 1522))
)
)
)
SID_LIST_LISTENER3 =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = leiz)
(ORACLE_HOME = d:\oracle)
--(PROGRAM = extproc)/*备注:这行一定要去掉,否则conn测试会失败*/
)
)
C:\Documents and Settings\zhanglei>lsnrctl service listener3
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-3月 -2009 16:22:27
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.15.99)(PORT=1522)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
服务 "leiz" 包含 1 个例程。
例程 "leiz", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:42 已被拒绝:0
LOCAL SERVER
命令执行成功
结论:非默认LISTENER3此时为静态注册。READY代表动态注册, UNKONW代表静态注册
4. 非默认listener3 动态注册
启用非默认listener3动态注册
SQL> alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.15.99)(PORT = 1522))';
系统已更改。
C:\Documents and Settings\zhanglei>lsnrctl service listener3
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-3月 -2009 16:28:53
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.15.99)(PORT=1522)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
服务 "leiz" 包含 2 个例程。
例程 "leiz", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
例程 "leiz", 状态 READY, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已拒绝:0 状态:ready
LOCAL SERVER
服务 "leizXDB" 包含 1 个例程。
例程 "leiz", 状态 READY, 包含此服务的 1 个处理程序...
处理程序:
"D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready
DISPATCHER <machine: LEIZ, pid: 1184>
(ADDRESS=(PROTOCOL=tcp)(HOST=leiz)(PORT=1139))
命令执行成功
结论:非默认LISTENER3此时既有静态注册,又有动态注册。READY代表动态注册, UNKONW代表静态注册
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26230166/viewspace-1816526/ ,如需转载,请注明出处,否则将追究法律责任。