oracle 監聽器學習
關於Oracle動態註冊和靜態註冊的一些實驗:
實驗平臺:oracle 10.2.0.1
據目前所知Oracle 8i(含)以後都推薦使用service_name而不是sid來連線資料庫了。
透過service_name連線有幾個好處:
1、同個例項可透過多個不同的service_name來連線。而不是像sid一樣只能唯一的指定了。
2、可以最大指定255個字元的名稱,而不是sid的8個字元限制。
首先說下標準配置下的動態註冊過程:
1、Oracle啟動例項;
2、監聽器啟動(lsnrctl start);
3、由pmon程式向監聽器進行註冊。
註冊的名稱從service_names從取出來,然後註冊到監聽器的hostname:1521上面。
註冊的結果就是我們在不用對listener.ora做任何設定的情況下就可以直接登入資料庫了。
實驗:
顯示service_names列表:
> show parameter service_names;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl,dyndb
> host lsnrctl service
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-9月 -2009 14:58:07
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
服務 "dyndb" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:10 已拒絕:0 狀態:ready
LOCAL SERVER
服務 "orcl" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:10 已拒絕:0 狀態:ready
LOCAL SERVER
....
命令執行成功
以上服務列表中列出了所有已經註冊的服務。
可以看到其中有dyndb和orcl列個服務,目前狀態是ready的。
由於動態註冊是由資料庫主動發起到監聽器的註冊,因此其狀態是可以的,所以顯示的狀態是ready的。
而靜態註冊是直接配置到listener.ora中的,實際上並不知道此時資料庫的狀態,所以監聽器對該伺服器的狀態顯示是unknown的。
服務在監聽器端註冊好後,客戶端即可透過tnsname.ora到監聽器中取對應的service name
以上註冊的兩個service name可同時使用:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dyndb)
)
)
或者
HSCUSTOMER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
現在如果要新增一個service name,則使用如下命令即可:
alter system set service_names='orcl,dyndb,testdb' scope=memory;
配置完成後,即可用lsnrctl service或lsnrctl status檢查狀態:
> host lsnrctl status
........
服務 "testdb" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
命令執行成功
但是,如果監聽器的監聽埠不是預設的,資料庫就不能註冊。
> host lsnrctl service
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-9月 -2009 15:37:45
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
處理程式:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
命令執行成功
沒有出現前面配置好的監聽服務。
所以就要顯式的註冊了,這次需要用到local_listenter引數。
alter system set local_listenter = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=8888)))';
然後手動處罰pmon到監聽器去註冊:
alter system register;
再次檢視,發現註冊成功:
> host lsnrctl status
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-9月 -2009 15:39:17
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
啟動日期 02-9月 -2009 15:33:31
正常執行時間 0 天 0 小時 5 分 46 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程式引數檔案 e:\oracle\product\10.2.0\db_1\network\admin\listener.ora
監聽程式日誌檔案 e:\oracle\product\10.2.0\db_1\network\log\listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8888)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "dyndb" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "orcl" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "orclXDB" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "orcl_XPT" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "testdb" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
命令執行成功
參考文章:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-613790/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 27、監聽器學習
- oracle 監聽器配置Oracle
- 說說Oracle監聽器(一)Oracle
- 說說Oracle監聽器(二)Oracle
- Oracle 監聽器日誌解析Oracle
- oracle例項和監聽器Oracle
- Oracle 監聽器日誌解析(續)Oracle
- 【Oracle】修改scan監聽器埠號Oracle
- 如何更改oracle監聽器的埠Oracle
- Oracle 監聽Oracle
- Oracle 監聽器日誌配置與管理Oracle
- 設定 Oracle 監聽器密碼(LISTENER)Oracle密碼
- Oracle監聽(1)Oracle
- ORACLE動態監聽與靜態監聽Oracle
- oracle靜態監聽和動態監聽Oracle
- 【oracle】動態監聽與靜態監聽Oracle
- 【Oracle】修改oracle監聽埠Oracle
- oracle靜態監聽Oracle
- JMS監聽Oracle AQOracle
- Oracle監聽的作用Oracle
- ORACLE監聽簡介Oracle
- oracle 監聽重啟Oracle
- JS事件監聽器JS事件
- 2 Day DBA-檢視監聽器配置-練習:使用Database Control檢視監聽器資訊Database
- 監聽器和過濾器過濾器
- jmeter學習指南之OOM和監聽器使用JMeterOOM
- JavaScript學習筆記10: 事件繫結&監聽JavaScript筆記事件
- 【listener】oracle靜態監聽和動態監聽 【轉載】Oracle
- oracle清理監聽日誌Oracle
- Oracle資料庫監聽Oracle資料庫
- oracle 多庫配監聽Oracle
- oracle的監聽問題Oracle
- Oracle 監聽配置詳解Oracle
- Oracle 動態監聽配置Oracle
- 6、oracle網路(監聽)Oracle
- Oracle監聽器中的XDB、XPT和PLSExtProc服務Oracle
- 關於oracle11g RAC 監聽器問題Oracle
- oracle監聽器日誌過大-處理辦法Oracle