伺服器端監聽器配置
1、伺服器端監聽器配置
Oracle監聽器是執行在資料庫端的一個程式,這個程式負責監聽使用者的連線請求。每當收到一個使用者請求,監聽器程式就會建立一個影子程式(Shraw Process),然後把使用者請求轉交給這個影子程式,由影子程式繼續完成使用者提交的各種命令。一旦監聽器程式把使用者轉交給影子程式,監聽程式的任務就算完成了,它就繼續監聽下一個使用者請求。所以監聽器的角色就像一箇中間人,它只是負責為使用者程式和影子程式搭橋牽線。
監聽器是根據配置檔案工作的,這個檔案叫做listener.ora,位於$ORACLE_HOME/network/admin目錄下,因為監聽器只工作在資料庫伺服器端,因此這個檔案只有伺服器端需要,客戶端並不需要這個檔案。這個檔案的內容如下:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.51)(PORT = 1521))
)
)
這個檔案內容說明監聽器在IP地址192.168.2.51的1521埠上監聽。
Oracle能夠支援兩種連線方式,分別是專有模式(Dedicated Service)和共享模式(Shared Server)。二者的區別在於,專有模式為每個使用者連線啟動一個單獨的程式(Shadow Process),相當於為每個使用者提供一個單獨的到伺服器的會話通道,專有由此得名。而共享模式是躲個使用者連線共享一個程式,也就是多個使用者共享一個會話通道,因此叫做共享。Net Services Administrator’s Guide,使用哪一種模式是在建立資料庫時確定的。
2、靜態註冊和動態註冊
伺服器端的監聽程式和資料庫是兩組獨立的程式。換句話說,一臺物理伺服器上可以同時執行多個資料庫,具體數量取決於伺服器的資源能力,理論上可以是無限的。但是一臺伺服器上一般只需要一個監聽程式就足夠了,一個監聽程式足以為它所在的伺服器上的所有資料庫提供服務,也就是說,監聽程式並不固定為一個資料庫服務。
因為監聽程式並不繫結在特定資料庫,所以監聽器要想完成它的使命——傳遞使用者的連線請求,首先必須知道如果才能知道找到目標資料庫,這個資訊的獲得可以透過兩種方式,靜態註冊和動態註冊。
2.1、靜態配置
所謂靜態配置,就是在配置監聽器時,就明確的告訴監聽器某個資料庫的資訊,監聽器在啟動過程中就會載入這一部分資訊。這個資訊同樣是記錄在監聽器的配置檔案LISTENER.ORA中,下面就是使用靜態配置的LISTENER.ORA檔案,注意其中SID_LIST_LISTENER部分就是靜態配置內容。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL.192.168.2.51)
(ORACLE_HOME = C:\oracle\product\10.1.0\Db_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.51)(PORT = 1521))
)
)
這個例子就是說,名字叫做LISTENER的監聽器需要負責SID=ORCL的資料庫的連線請求,靜態配置的最大問題就是監聽器無法知道資料庫的真正狀態。
2.2、動態註冊。
除了靜態配置,Oracle資料庫還可以動態地像監聽器註冊。動態註冊是在instance啟動的時候PMON程式根據init.ora中的INSTANCE_NAME,SERVICE_NAMES兩個引數將例項和服務動態註冊到listener中。要想使用動態註冊功能,首先需要在資料庫的初始化SERVICE_NAME和INSTANCE_NAME。如果沒有定義SERVER_NAME引數,資料庫會使用DB_NAME和DB_DOMAIN組成的一個全域性資料庫名稱(Global Database Name)註冊到監聽器中。INSTANCE_NAME是例項名稱,通常和SID值一樣。
只要資料庫處於執行狀態,PMON程式就會自動、定期的地向監聽程式註冊、更新資訊,DBA也可以使用下面命令強制PMON立即向監聽器註冊:
SQL>alert system register;
System altered.
靜態配置和動態註冊二者在監聽器中的表現狀態不一樣,這一點可以利用Oracle提供的lsnrctl工具來驗證。比如在下面檢視結果中,有兩個ORCL條目,這兩個條目對應的是同一個資料庫,只不過記錄的生成方式不一同。第一條目的狀態是UNKNOWN,這個條目就是靜態配置產生的,而第二條目是READY,這個條目是動態註冊生成的。
在資料庫處於運動狀態時,如果執行lsnrctl status命令來檢視監聽器狀態,可以看到兩個條目。注意兩種方式的狀態區別:靜態配置的狀態是UNKNOWN,動態註冊的狀態是READY。
C:\Documents and Settings\Administrator>lsnrctl start
LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 28-10月-2011 22:04:52
Copyright (c) 1991, 2004, Oracle. All rights reserved.
Starting tnslsnr: please wait...
TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Production
System parameter file is C:\oracle\product\10.1.0\Db_1\network\admin\listener.ora
Log messages written to C:\oracle\product\10.1.0\Db_1\network\log\listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.104)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.104)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Production
Start Date 28-10月-2011 21:54:57
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\oracle\product\10.1.0\Db_1\network\admin\listener.ora
Listener Log File C:\oracle\product\10.1.0\Db_1\network\log\listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.104)(PORT=1521)))
Services Summary...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service...
Service " ORCL " has 1 instance(s).
Instance " ORCL ", status READY, has 1 handler(s) for this service...
The command completed successfully
現在關閉資料庫,然後再次檢視監聽器的狀態。現在命令結果就只剩下一個條目了,這個條目的狀態是UNKNOWN,很顯然這二個條目對應的是靜態配置產生的,而動態註冊的那個條目隨著資料庫的關閉已經自動消失了。
C:\Documents and Settings\Administrator>lsnrctl start
LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 28-10月-2011 22:14:51
Copyright (c) 1991, 2004, Oracle. All rights reserved.
Starting tnslsnr: please wait...
TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Production
System parameter file is C:\oracle\product\10.1.0\Db_1\network\admin\listener.ora
Log messages written to C:\oracle\product\10.1.0\Db_1\network\log\listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.104)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.104)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Production
Start Date 28-10月-2011 21:54:57
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\oracle\product\10.1.0\Db_1\network\admin\listener.ora
Listener Log File C:\oracle\product\10.1.0\Db_1\network\log\listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.104)(PORT=1521)))
Services Summary...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
從這個實驗已經很明顯地看出動態註冊和靜態配置的區別了:動態序號產生器制不需要對監聽器做任何額外配置,而結果卻比靜態註冊更準確。靜態配置機制需要針對每個資料庫都做額外的配置,但是結果卻不準確。
除此之外,在RAC環境中中,動態註冊還包括每個例項的負載資訊,這也是RAC能夠實現負載均衡、故障轉移的基礎。
3、LSNRCTL命令
Oracle提供了一個叫做lsnrctl的工具來管理監聽程式。我們剛剛演示了檢視狀態的方法,資料庫的狀態可以有3種。
READY:代表例項可以接受連線請求;
BLOCKED:例項目前不能接受連線請求;
UNKNOWN:這個條目是透過靜態註冊、而不是動態註冊的。
Lsnrctl命令可以使用很多個引數,具體可透過help命令檢視。
日常工作中最常用的選項包括start啟動監聽器,stop停止監聽器,status報告監聽器狀態,reload重新載入listener.ora配置檔案,不需重新啟動監聽器就使配置立即生效。
QUEUESIZE引數
如果監聽器經常同時收到大量的連線請求,這時可以使用這個引數增大監聽器的隊伍長度,這個長度預設是5,見一下例子:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.51)(PORT = 1521)(QUEUESIZE=20))
)
)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-1198362/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 監聽器配置Oracle
- 遠端控制監聽器
- 2.5.2. 監聽程式(listener)配置——2.5.2.3. 手工編輯監聽器配置檔案
- 【監聽】配置服務端靜態(動態)監聽/修改監聽埠及引數local_listener作用服務端
- 記筆記:C# Socket客戶端監聽伺服器端處理方案【同步】筆記C#客戶端伺服器
- Spring框架(一):配置&注入&監聽器Spring框架
- Oracle 監聽器日誌配置與管理Oracle
- 如何配置多個監聽器不同埠
- Oracle 10g RAC客戶端配置監聽Oracle 10g客戶端
- 多IP伺服器上監聽器的設定伺服器
- 監聽配置詳解
- 服務端配置一個多埠號(如1521/1526)監聽器服務端
- 同時配置動態監聽與靜態監聽
- Oracle 監聽配置詳解Oracle
- Oracle 動態監聽配置Oracle
- 2 Day DBA-檢視監聽器配置-練習:使用Database Control檢視監聽器資訊Database
- 伺服器端uwsgi配置檔案伺服器
- 如何發現遠端伺服器上某埠正在監聽的ORACLE例項/服務伺服器Oracle
- JS事件監聽器JS事件
- 為監聽設定密碼防止遠端關閉監聽密碼
- 利用nagios監控本地伺服器和遠端伺服器iOS伺服器
- 同一個伺服器建立兩個監聽器的話,兩個監聽器的port和KEY都不能相同伺服器
- 監聽器和過濾器過濾器
- 修改服務端監聽器埠號為1526服務端
- oracle 監聽配置多個埠Oracle
- 配置 Prometheus 伺服器監控和 Grafana 看板Prometheus伺服器Grafana
- 伺服器監控系統部署與配置伺服器
- 事件和事件監聽器事件
- javaWeb中的監聽器JavaWeb
- 如何移除事件監聽器事件
- 27、監聽器學習
- passive 的事件監聽器事件
- oracle 監聽器學習Oracle
- cisco 2509終端伺服器的配置伺服器
- 配置資料庫監聽白名單資料庫
- 11g rac監聽配置解析
- ASM例項配置監聽和TNSASM
- Oracle 11g/12c 監聽器白名單的配置Oracle