一、如果使用默认的1521端口,让实例自动注册到该监听上,那么local_listener无需设置,listener.ora文件按照正常方式配置即可。
二、如果使用非默认1521端口,让实例自动注册到该监听上,那么需要设置local_listerner参数,local_listener = 'lsnr2' (可以动态修改)
三、编辑listener.ora文件,该监听为两个,一个为动态注册使用默认端口,一个为静态注册使用了非默认端口:
LISTENER1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oms)(PORT = 1526))
)
SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = guuc)
(Oracle_HOME = /oracle/product/10201)
(SID_NAME = cuug)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10201)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oms)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
三、数据库监听两个启动后的情况,此时数据库未启动,默认的的现在还没有,非默认的现在有了一个静态的:
[oracle@oms admin]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 14-APR-2010 00:12:37
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oms)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias listener
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 14-APR-2010 00:07:35
Uptime 0 days 0 hr. 5 min. 1 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/product/10201/network/admin/listener.ora
Listener Log File /oracle/product/10201/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oms)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
======================
[oracle@oms admin]$ lsnrctl status listener1
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 14-APR-2010 00:12:40
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oms)(PORT=1526)))
STATUS of the LISTENER
------------------------
Alias listener1
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 14-APR-2010 00:06:56
Uptime 0 days 0 hr. 5 min. 43 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/product/10201/network/admin/listener.ora
Listener Log File /oracle/product/10201/network/log/listener1.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oms)(PORT=1526)))
Services Summary...
Service "guuc" has 1 instance(s).
Instance "cuug", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
四、启动数据库,观察监听的变化,默认的注册了一个实例,非默认的不变:
[oracle@oms admin]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 14-APR-2010 00:18:40
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oms)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias listener
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 14-APR-2010 00:07:35
Uptime 0 days 0 hr. 11 min. 4 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/product/10201/network/admin/listener.ora
Listener Log File /oracle/product/10201/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oms)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "cuug" has 1 instance(s).
Instance "cuug", status READY, has 1 handler(s) for this service...
Service "cuug_XPT" has 1 instance(s).
Instance "cuug", status READY, has 1 handler(s) for this service...
The command completed successfully
==========================
[oracle@oms admin]$ lsnrctl status listener1
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 14-APR-2010 00:18:42
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oms)(PORT=1526)))
STATUS of the LISTENER
------------------------
Alias listener1
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 14-APR-2010 00:06:56
Uptime 0 days 0 hr. 11 min. 45 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/product/10201/network/admin/listener.ora
Listener Log File /oracle/product/10201/network/log/listener1.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oms)(PORT=1526)))
Services Summary...
Service "guuc" has 1 instance(s).
Instance "cuug", status UNKNOWN, has 1 handler(s) for this servi
五、配置本地的tnsnames.ora文件
LSNR2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oms)(PORT = 1526))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cuug) #此名字可以自定义,一般定义为实例的名字
)
)
六、动态更改local_listener的值:
SQL> alter system set local_listener = lsnr2;
七、注意两个监听的变化,默认的监听没有实例注册,非默认的注册了一个实例:
[oracle@oms admin]$ lsnrctl status listener
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 14-APR-2010 00:25:50
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oms)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias listener
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 14-APR-2010 00:07:35
Uptime 0 days 0 hr. 18 min. 14 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/product/10201/network/admin/listener.ora
Listener Log File /oracle/product/10201/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oms)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
=========================
[oracle@oms admin]$ lsnrctl status listener1
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 14-APR-2010 00:26:03
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oms)(PORT=1526)))
STATUS of the LISTENER
------------------------
Alias listener1
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 14-APR-2010 00:24:35
Uptime 0 days 0 hr. 1 min. 28 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/product/10201/network/admin/listener.ora
Listener Log File /oracle/product/10201/network/log/listener1.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oms)(PORT=1526)))
Services Summary...
Service "cuug" has 1 instance(s).
Instance "cuug", status READY, has 1 handler(s) for this service...
Service "cuug_XPT" has 1 instance(s).
Instance "cuug", status READY, has 1 handler(s) for this service...
Service "guuc" has 1 instance(s).
Instance "cuug", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
注意:发现实例注册到这个端口的监听上了,至此,终于明白local_listener参数的作用,默认的值是数据库的global_name,则注册到默认监听;如果设置了新值,比如lsnr2,则根据tnsnames.ora的设置,注册到指定的端口的监听,该端口与某个监听指定的端口一致。
更多Oracle相关信息见 专题页面