oracle静态与动态监听
在运行lsnrctl命令的status时,常会看到如下返回值:
服务“test”包含1个例程。例程"mydata",状态 UNKOWN,包含此服务的一个处理程序。。。服务"a"包含1个例程。例程"mydata",状态 READY,包含此服务的一个处理程序。。。
这里的,状态UNKOWN即表明为静态注册(手动填写参数);
监听配置中,数据库服务中的全局数据库名,可以写任意内容,与数据库无关,只要保证SID正确即可连上数据库。
由于静态注册,参数是手动静态添加,与数据库无关。数据库无法确认监听是否正确配置。因此,lsnrctl中的status显示状态为unkown。即不保证能连通数据库。
注意:静态注册监听,客户端在配置tnsnames.ora服务命名时,“(Oracle 8i或更高版本)服务名”里填写内容要与服务端静态注册监听器时的全局数据库名一致。否则,无法连通。
服务“test”包含1个例程。例程“mydata”,状态UNKOWN,包含此服务的一个处理程序。。。
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = test)(ORACLE_HOME = /orahome/oracle/product/10.2.0/db_1)(SID_NAME = mydata)))
ABC =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.23)(PORT = 1521)))(SERVICE_NAME =(CONNECT_DATA =
test)))
1、缺省的动态注册
pmon在数据库启动到mount或open时,动态从参数文件中读取service_names值。service_names可以为多个值。
service_names缺省为dbca建立数据库时的全局数据库名。
设置参数service_names为‘a,b,c‘,命令如下:
alter system set service_names=‘a,b,c‘;
则:
服务“test”包含1个例程。例程"mydata",状态 UNKOWN,包含此服务的一个处理程序。。。服务"a"包含1个例程。例程"mydata",状态 READY,包含此服务的一个处理程序。。。服务"b"包含1个例程。例程"mydata",状态 READY,包含此服务的一个处理程序。。。服务"c"包含1个例程。例程"mydata",状态 READY,包含此服务的一个处理程序。。。服务 "mydata.ccddt.cn" 包含一个例程。例程"mydata",状态 READY, 包含此服务的一个处理程序。。。
以上服务名a, b, c, mydata.ccddt.cn都为READY,为动态注册。
这里多了最后一条"mydata.ccddt.cn",是PMON缺省动态注册到监听器内的。
注意:不管参数service_names为何值,pmon都会自动以全局数据库名(这里为mydata.ccddt.cn)为服务名,动态注册一个监听。
缺省情况下,若启用动态注册监听,端口号必须为1521。若启用其他端口的动态监听注册,必须要做相关配置。
通过查看v$session,状态为SYS$USERS的连接为通过静态注册监听连接到服务器。
2、自定义端口的动态监听注册
若要启用非默认端口1521的动态监听注册,缺省状态,Oracle不会进行动态注册。要启用动态注册,必须设置local_listener参数。并在服务端配置tnsnames.ora指定监听参数,或者直接通过修改local_listener指定监听参数。步骤如下:
1)服务端
netmgr,配置监听程序,监听端口为1525(非默认端口)
保存配置
(1)法1:直接通过修改local_listener参数指定
SQL>alter system set LOCAL_LISTENER=‘(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.23)(PORT=1525))‘;
System altered
SQL>alter system register
(DESCRIPTION =mytest =
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.1.23)(PORT = 1525))
)
)
这里的mytest也可以根据自己需要,修改为其他字符串。如a或b等。SQL>alter system set local_listener=mytest;设置参数,指定通过tnsnames.ora内的信息指定监听参数
System alteredSQL>alter system register;
3、查看监听器状态
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.23)(PORT=1525)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 15-MAR-2011 10:43:47
Uptime 0 days 0 hr. 0 min. 56 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /orahome/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /orahome/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraserver)(PORT=1525)))
Services Summary...
Service "a" has 1 instance(s).
Instance "mydata", status READY, has 1 handler(s) for this service...
Service "b" has 1 instance(s).
Instance "mydata", status READY, has 1 handler(s) for this service...
Service "c" has 1 instance(s).
Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydata" has 1 instance(s).
Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydataXDB" has 1 instance(s).
Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydata_XPT" has 1 instance(s).
Instance "mydata", status READY, has 1 handler(s) for this service...
The command completed successfully
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。