首页 > 代码库 > 动态注冊监听

动态注冊监听

SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
SQL> !cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m
对于默认的port号为1521的监听,是非常easy,设置好了service_names,PMON自己主动帮助我们注冊,十分便捷。以下介绍的是注冊不是默认的port号:

在$ORACLE_HOME/network/admin/listener.ora加入:
LISTENER1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.115.78)(PORT = 1590))
    )
  )

(注意这里最好用IP)
设置local_listener:
SQL> alter system set local_listener = ‘(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.115.78)(PORT = 1590))‘ scope=both     
  2  ;
系统已更改。
或者设置local_listener=diy,则须要在?/rdbms/network/admin/tnsnames.ora里加入:
diy=(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.115.78)(PORT = 1590))
设置service_names:
SQL> alter system set service_names=‘a,b,c,d,diy,os‘;
系统已更改。



确认监听进程已停:
[oracle@localhost ~]$ ps -ef|grep tnslsnr|grep -v grep
oracle    7312     1  0 11:20 ?        00:00:00 /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit
oracle    7465     1  0 11:25 ?        00:00:00 /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr listener1 -inherit
直接停止监听,或者用os命令停止
这里我们直接kill  process:
SQL> !kill -9 7312


SQL> !kill -9 7465


SQL> !ps -ef|grep tnslsnr|grep -v grep

监听进程已经停止

[oracle@localhost ~]$ lsnrctl start listener1
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 08-6月 -2015 11:42:08
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
启动/u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: 请稍候...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
系统參数文件为/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
写入/u01/app/oracle/diag/tnslsnr/localhost/listener1/alert/log.xml的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.18.115.78)(PORT=1590)))
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.18.115.78)(PORT=1590)))
LISTENER 的 STATUS
------------------------
别名                      listener1
版本号                      TNSLSNR for Linux: Version 11.2.0.1.0 - Production
启动日期                  08-6月 -2015 11:42:08
正常执行时间              0 天 0 小时 0 分 0 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序參数文件          /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
监听程序日志文件          /u01/app/oracle/diag/tnslsnr/localhost/listener1/alert/log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.18.115.78)(PORT=1590)))
监听程序不支持服务
命令运行成功


过一会PMON把监听注冊进来了:

[oracle@localhost ~]$ lsnrctl status listener1
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 08-6月 -2015 11:43:06
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.18.115.78)(PORT=1590)))
LISTENER 的 STATUS
------------------------
别名                      listener1
版本号                      TNSLSNR for Linux: Version 11.2.0.1.0 - Production
启动日期                  08-6月 -2015 11:42:08
正常执行时间              0 天 0 小时 0 分 57 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序參数文件          /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
监听程序日志文件          /u01/app/oracle/diag/tnslsnr/localhost/listener1/alert/log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.18.115.78)(PORT=1590)))
服务摘要..
服务 "a.localdomain" 包括 1 个实例。


  实例 "ORCL3939", 状态 READY, 包括此服务的 1 个处理程序...
服务 "b.localdomain" 包括 1 个实例。
  实例 "ORCL3939", 状态 READY, 包括此服务的 1 个处理程序...
服务 "c.localdomain" 包括 1 个实例。
  实例 "ORCL3939", 状态 READY, 包括此服务的 1 个处理程序...
服务 "d.localdomain" 包括 1 个实例。
  实例 "ORCL3939", 状态 READY, 包括此服务的 1 个处理程序...
服务 "diy.localdomain" 包括 1 个实例。
  实例 "ORCL3939", 状态 READY, 包括此服务的 1 个处理程序...
服务 "orcl3939.localdomain" 包括 1 个实例。
  实例 "ORCL3939", 状态 READY, 包括此服务的 1 个处理程序...
服务 "orcl3939XDB.localdomain" 包括 1 个实例。
  实例 "ORCL3939", 状态 READY, 包括此服务的 1 个处理程序...
服务 "os.localdomain" 包括 1 个实例。
  实例 "ORCL3939", 状态 READY, 包括此服务的 1 个处理程序...
命令运行成功

动态注冊监听