1. 程式人生 > >動態註冊監聽

動態註冊監聽

rod span desc -h pos acl row ora star

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‘;
系統已更改。



確認監聽進程已停:
[[email protected] ~]$ 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

監聽進程已經停止

[[email protected] ~]$ 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把監聽註冊進來了:

[[email protected] ~]$ 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 個處理程序...
命令運行成功

動態註冊監聽