查看SID是否啟動OK命令:
echo $ORACLE_SID
監聽器相關命令:
lsnrctl status --查看狀態
lsnrctl start --啟動
lsnrctl stop --關閉
lsnrctl reload --重啟等於stop與start
lsnrctl service --啟動服務
http://blog.itpub.net/95233/viewspace-623699/
http://blog.csdn.net/tianlesoftware/article/details/6617827
http://www.cnblogs.com/czjie/archive/2011/10/30/2228196.html
Oracle動態注冊機制從ORACLE8I就已提供,以前在學習此部分內容時,理解得不夠透徹,似是而非,沒有真正掌握。
最近重新學習了一下此部分內容,並查閱了一些文檔,初有成就。現小結一下:
測試環境:
操作系統:RHEL4.6
數據庫:ORACLE10G 10.2.0.4
一、首先要理解基本概念
1、 Oracle的監聽器和實例,是完全獨立開的。
2、 實例必須要注冊到某一個或多個實例上,這樣遠程用戶方可連上。
3、 端口號,是由監聽器決定的。遠程連接的端口,必須要跟監聽器的端口一致。
二、實踐測試
1、 測試用例1,創建第一個監聽器(PROTOCOL=TCP、HOST=linux1、端口號為1521),創建第一個實例ORCL,其自動注冊到PROTOCOL=TCP、HOST=linux1、端口號為1521的監聽器上。
Listener.ora內容如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/ora10g/product/10.2.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /opt/ora10g/product/10.2.0)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = linux1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
首先啟動監聽器LISTENER:
[oracle@linux1 ~]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:07:58
Copyright (c) 1991, 2007, Oracle. All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
TNS-12541: TNS: 無監聽程序
TNS-12560: TNS: 協議適配器錯誤
TNS-00511: 無監聽程序
Linux Error: 111: Connection refused
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-12541: TNS: 無監聽程序
TNS-12560: TNS: 協議適配器錯誤
TNS-00511: 無監聽程序
Linux Error: 111: Connection refused
[oracle@linux1 ~]$ lsnrctl start
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:09:25
Copyright (c) 1991, 2007, Oracle. All rights reserved.
啟動/opt/ora10g/product/10.2.0/bin/tnslsnr: 請稍候...
TNSLSNR for Linux: Version 10.2.0.4.0 - Production
系統參數文件為/opt/ora10g/product/10.2.0/network/admin/listener.ora
寫入/opt/ora10g/product/10.2.0/network/log/listener.log的日志信息
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:09:27
正常運行時間 0 天 0 小時 0 分 1 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服務摘要..
服務 "ORCL" 包含 1 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
然后,啟動數據庫實例ORCL
[oracle@linux1 ~]$ export ORACLE_SID=ORCL
[oracle@linux1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12月 27 22:11:41 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 268435456 bytes
Fixed Size 1266968 bytes
Variable Size 88083176 bytes
Database Buffers 176160768 bytes
Redo Buffers 2924544 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> exit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
再查看監聽器狀態:
[oracle@linux1 ~]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:12:53
Copyright (c) 1991, 2007, Oracle. All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:09:27
正常運行時間 0 天 0 小時 3 分 26 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服務摘要..
服務 "ORCL" 包含 2 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "ORCL_XPT" 包含 1 個例程。
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
[oracle@linux1 ~]$ lsnrctl service
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:13:06
Copyright (c) 1991, 2007, Oracle. All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
服務摘要..
服務 "ORCL" 包含 2 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "ORCL_XPT" 包含 1 個例程。
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
命令執行成功
此時實例ORCL已自動注冊到監聽器LISTENER上。實例ORCL既有靜態注冊也有動態注冊。
2、 測試用例2,創建第二個實例ORCL1522,其也自動注冊到PROTOCOL=TCP、HOST=linux1、端口號為1521的監聽器上。
LISTENER.ORA文件內容沒有變化:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/ora10g/product/10.2.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /opt/ora10g/product/10.2.0)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = linux1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
啟動實例orcl1522:
[oracle@linux1 admin]$ export ORACLE_SID=orcl1522
[oracle@linux1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12月 27 22:19:16 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 268435456 bytes
Fixed Size 1266968 bytes
Variable Size 100666088 bytes
Database Buffers 163577856 bytes
Redo Buffers 2924544 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> exit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
查看監聽器LISTENER狀態:
[oracle@linux1 admin]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:19:39
Copyright (c) 1991, 2007, Oracle. All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:09:27
正常運行時間 0 天 0 小時 10 分 12 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服務摘要..
服務 "ORCL" 包含 2 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "ORCL_XPT" 包含 1 個例程。
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "orcl1522" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "orcl1522_XPT" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
命令執行成功
[oracle@linux1 admin]$ lsnrctl service
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:19:49
Copyright (c) 1991, 2007, Oracle. All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
服務摘要..
服務 "ORCL" 包含 2 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "ORCL_XPT" 包含 1 個例程。
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
服務 "orcl1522" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "orcl1522_XPT" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
命令執行成功
此時實例和實例均已注冊到監聽器LISTENER上,其中實例ORCL既有靜態注冊也有動態注冊,實例orcl1522只有動態注冊。
3、 測試用例3,創建第二個監聽器(PROTOCOL=TCP、HOST=linux1、端口號為1522),同時修改第二個數據庫ORCL1522的local_listener為(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1522))
創建完第二個監聽器LISTENER1522后,LISTENER.ORA文件的內容如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/ora10g/product/10.2.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /opt/ora10g/product/10.2.0)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = linux1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
LISTENER1522 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1522))
)
)
同時在服務器端的TNSNAMES.ORA文件中增加一下內容:
listener1522=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1522))
啟動實例orcl1522:
[oracle@linux1 admin]$ export ORACLE_SID=orcl1522
[oracle@linux1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12月 27 22:19:16 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
已連接到空閑例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 268435456 bytes
Fixed Size 1266968 bytes
Variable Size 100666088 bytes
Database Buffers 163577856 bytes
Redo Buffers 2924544 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> exit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
修改參數LOCAL_LISTENER,然后重啟實例:
[oracle@linux1 admin]$ export ORACLE_SID=orcl1522
[oracle@linux1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12月 27 22:22:18 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
remote_listener string
SQL> alter system set local_listener='listener1522';
系統已更改。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 268435456 bytes
Fixed Size 1266968 bytes
Variable Size 100666088 bytes
Database Buffers 163577856 bytes
Redo Buffers 2924544 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> exit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
查看默認監聽器LISTENER狀態:
[oracle@linux1 admin]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:23:56
Copyright (c) 1991, 2007, Oracle. All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:09:27
正常運行時間 0 天 0 小時 14 分 28 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服務摘要..
服務 "ORCL" 包含 2 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "ORCL_XPT" 包含 1 個例程。
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
此時監聽器上只有ORCL實例,原來注冊的實例orcl1522已去掉。
啟動新的監聽器LISTENER1522,同時啟動它:
[oracle@linux1 admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:24:11
Copyright (c) 1991, 2007, Oracle. All rights reserved.
歡迎來到LSNRCTL, 請鍵入"help"以獲得信息。
LSNRCTL> set current_listener listener1522
目前的監聽程序為 listener1522
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
TNS-12541: TNS: 無監聽程序
TNS-12560: TNS: 協議適配器錯誤
TNS-00511: 無監聽程序
Linux Error: 111: Connection refused
LSNRCTL> start
啟動/opt/ora10g/product/10.2.0/bin/tnslsnr: 請稍候...
TNSLSNR for Linux: Version 10.2.0.4.0 - Production
系統參數文件為/opt/ora10g/product/10.2.0/network/admin/listener.ora
寫入/opt/ora10g/product/10.2.0/network/log/listener1522.log的日志信息
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 listener1522
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:24:48
正常運行時間 0 天 0 小時 0 分 0 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener1522.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))
監聽程序不支持服務
命令執行成功
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 listener1522
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:24:48
正常運行時間 0 天 0 小時 0 分 7 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener1522.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))
監聽程序不支持服務
命令執行成功
LSNRCTL> exit
監聽器LISTENER1522剛啟動時,實例orcl1522尚未注冊,需手工到實例中注冊一下(alter system register),或者等一下由實例的PMON進程自動注冊到監聽器LISTENER1522上。
[oracle@linux1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12月 27 22:25:11 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter system register;
系統已更改。
SQL> exit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
查看監聽器LISTENER1522狀態:
[oracle@linux1 admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:25:24
Copyright (c) 1991, 2007, Oracle. All rights reserved.
歡迎來到LSNRCTL, 請鍵入"help"以獲得信息。
LSNRCTL> set current_listener listener1522
目前的監聽程序為 listener1522
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 listener1522
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:24:48
正常運行時間 0 天 0 小時 0 分 54 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener1522.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))
服務摘要..
服務 "orcl1522" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "orcl1522_XPT" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
命令執行成功
LSNRCTL> service
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
服務摘要..
服務 "orcl1522" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "orcl1522_XPT" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
命令執行成功
LSNRCTL> set cuurent_listener listener
NL-00853: 未定義的 set 命令 "cuurent_listener"。請嘗試 "help set"
LSNRCTL> set current_listener listener
目前的監聽程序為 listener
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:09:27
正常運行時間 0 天 0 小時 17 分 12 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服務摘要..
服務 "ORCL" 包含 2 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "ORCL_XPT" 包含 1 個例程。
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功
LSNRCTL> exit
此時發現實例orcl1522已注冊到監聽器LISTENER1522上,實例ORCL注冊到監聽器LISTENER上。同時,實例orcl1522均為動態注冊,實例ORCL既有動態注冊也有靜態注冊。
再在實例orcl1522中去掉參數local_listener的值:
[oracle@linux1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12月 27 22:27:40 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter system set local_listener='';
系統已更改。
SQL> exit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
分別查看監聽器LISTENER1522、LISTENER狀態:
[oracle@linux1 admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12月-2009 22:27:59
Copyright (c) 1991, 2007, Oracle. All rights reserved.
歡迎來到LSNRCTL, 請鍵入"help"以獲得信息。
LSNRCTL> set current_listener listener1522
目前的監聽程序為 listener1522
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 listener1522
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:24:48
正常運行時間 0 天 0 小時 3 分 28 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener1522.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))
監聽程序不支持服務
命令執行成功
LSNRCTL> set current_listener listener
目前的監聽程序為 listener
LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for Linux: Version 10.2.0.4.0 - Production
啟動日期 27-12月-2009 22:09:27
正常運行時間 0 天 0 小時 19 分 13 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程序參數文件 /opt/ora10g/product/10.2.0/network/admin/listener.ora
監聽程序日志文件 /opt/ora10g/product/10.2.0/network/log/listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服務摘要..
服務 "ORCL" 包含 2 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "ORCL_XPT" 包含 1 個例程。
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "orcl1522" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "orcl1522_XPT" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
命令執行成功
LSNRCTL> service
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))
服務摘要..
服務 "ORCL" 包含 2 個例程。
例程 "ORCL", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "ORCL_XPT" 包含 1 個例程。
例程 "ORCL", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
服務 "orcl1522" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "orcl1522_XPT" 包含 1 個例程。
例程 "orcl1522", 狀態 READY, 包含此服務的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態:ready
LOCAL SERVER
命令執行成功
LSNRCTL>
實例orcl1522去掉local_listener參數值后,其馬上重新自動注冊到默認監聽器LISTENER上。
三、總結
1、 數據庫時自動注冊時,監聽器必須滿足三條件:PROTOCOL=TCP,HOST=本機電腦名(或為localhost),PORT=1521。這三個條件只有有一個不滿足,實例都不能自動注冊。
2、 采用自動注冊時,監聽器配置中的HOST=?,需要設置為其電腦的機器名(或為localhost),不要直接設置為IP地址。否則,對於第一個實例而言,其就無法自動注冊到1521這個監聽器上。
3、 同一個監聽器可以監聽多個實例,都是TCP、端口號1521。見測試用例2。
4、 在一台配置多個監聽器的電腦上,本地的一個實例能夠注冊到的本地監聽器只能有一個。見測試用例3。
5、 一個實例除了可注冊到本地的監聽器外,還可通過remote_listener注冊到遠程服務器上。主要的應用為RAC數據庫,用例請參見http://space.itpub.net/9252210/viewspace-592111。
參考文檔:
1、eygle_第一章數據庫的啟動和關閉.pdf
2、http://warehouse.itpub.net/post/777/472788
3、http://space.itpub.net/9252210/viewspace-592111
4、http://space.itpub.net/175005/viewspace-173527
5、http://www.lorentzcenter.nl/awcourse/oracle/network.920/a96580/listener.htm
