說說Oracle監聽器(一)
一直想寫寫監聽器。
Oracle監聽器listener是一個重要的資料庫伺服器元件,在整個Oracle體系結構中,扮演著重要的作用。
監聽器Lisener功能
從當前的Oracle版本看,Listener主要負責下面的幾方面功能:
1、 監聽客戶端請求。監聽器執行在資料庫伺服器之上,與Oracle例項(可為多個)相關關聯,是一個專門的程式process,在windows的服務專案或者Linux的執行程式列表中,都會看到對應的執行程式。Windows上名為TNSLSNR,Linux/Unix平臺上是lsnrctl。監聽器守候在伺服器制定埠(預設為:1521),監聽客戶端的請求。
2、 為客戶端請求分配Server Process。監聽器只負責接聽請求,之後將請求轉接給Oracle Server Process。在Oracle的服務模式下,客戶端程式是不允許直接運算元據庫例項和資料,而是透過一個服務程式Server Process(也稱為影子程式)作為代理。監聽器接受到請求之後,就向作業系統(或者Dispatcher元件)要求fork(或分配)一個Server Process與客戶端相連。
3、 註冊例項服務。本質上將,listener是建立例項和客戶端程式之間聯絡的橋樑。Listener與例項之間的聯絡,就是透過註冊的過程來實現的。註冊的過程就是例項告訴監聽器,它的資料庫資料庫例項名稱instance_name和服務名service_names。監聽器註冊上這樣的資訊,對客戶端請求根據監聽註冊資訊,找到正確的服務例項名稱。目前Oracle版本中,提供動態註冊和靜態註冊兩種方式。
4、 錯誤轉移failover。Failover是RAC容錯的一個重要方面功能,其功能是在資料庫例項崩潰的時候,可以自動將請求轉移到其他可用例項上的一種功能。可以提供很大程度上的可用性(Availability)功能。這個過程中,發現例項已經崩潰,並且將請求轉移到其他例項上,就屬於是listener的功能。
5、 負載均衡衡量。在RAC架構中,Oracle實現了負載均衡。當一個客戶請求到來時,Oracle會根據當前RAC叢集環境中所有例項的負載情況,避開負載較高的例項,將請求轉移到負載較低的例項進行處理。在早期RAC版本中,負載輕重的衡量是根據監聽器當前維護連線數目來確定的,而不是實時檢視多例項的負載。RAC環境中的監聽器之間進行溝通通訊。
下面的部分,會從幾個方面對監聽器進行簡單介紹。
監聽器操作
監聽器在Windows和Linux/Unix平臺上,都是可以直接操作的。下面以Windows平臺操作為例,其他平臺類似。
在命令列視窗(CMD),輸入lsnrctl,就可以進入監聽器控制視窗。
C:\Documents and Settings\Administrator>lsnrctl
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 26-12月-2010 21:5
3:04
Copyright (c) 1991, 2005, Oracle. All rights reserved.
歡迎來到LSNRCTL, 請鍵入"help"以獲得資訊。
LSNRCTL>
透過輸入命令help,可以檢視支援的監聽器操作。下面僅介紹常用的幾個。
1、 檢視當前監聽器狀態
敲入status,可以檢視當前監聽器的狀態,對應操作日誌資訊和服務註冊資訊等內容。如下:
LSNRCTL> status
//連線監聽器的名稱和資訊:主機名+監聽埠號
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 – Production //Listener版本資訊,在一臺機器多例項的情況下,很重要!因為版本對應向下相容
啟動日期 26-12月-2010 19:38:03 //啟動服務時間
正常執行時間 0 天 2 小時 23 分 51 秒
跟蹤級別 off //除錯資訊,可以設定針對監聽器的跟蹤
安全性 ON: Local OS Authentication //表明啟動、關閉監聽器的操作許可權是透過OS驗證實現的。也就意味著,可以對監聽器設定密碼專案,也是Oracle安全配置的一個重要方面;
SNMP OFF //SNMP協議開啟情況
監聽程式引數檔案 D:\oracle\network\admin\listener.ora //使用的引數
監聽程式日誌檔案 D:\oracle\network\log\listener.log //操作日誌位置
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-0e6111dff74)(PORT=1521)))
服務摘要.. //當前已經註冊在監聽器中的服務列表
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "orcl" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "orclXDB" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "orcl_XPT" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
命令執行成功
上面透過紅字,已經對結果進行一定程度說明。其中,需要額外注意的下面幾項內容。
監聽程式引數檔案 D:\oracle\network\admin\listener.ora //使用的引數
監聽器啟動時依據引數檔案的,當然沒有引數檔案監聽器也是可以啟動,那時監聽器依據預設的行為操作。這個引數指定了監聽器引數檔案的位置,listener.ora。這個檔案是一個文字型別引數檔案,描述了監聽器監聽埠,主機名稱和靜態註冊資訊。Listener.ora是隨著資料庫例項的建立之後,建立監聽器的過程中動態配置的。
監聽程式日誌檔案 D:\oracle\network\log\listener.log //操作日誌位置
監聽器日誌,是一個記錄和描述監聽器工作和錯誤的資訊庫。透過仔細研究日誌內容,可以幫助我們發現當前的監聽器的問題、解決連線故障和深入理解監聽器工作原理。
服務 "orcl" 包含 1 個例程。
例程 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
上文中已經說明,監聽器有註冊功能,透過status命令(services命令同樣效果)。可以檢視到當前有什麼服務被註冊上,用來檢查連線服務失敗,是常用的工具。
2、開啟/關閉監聽器
監聽器的行為受到引數檔案的控制,我們有時候需要調整監聽器的引數。調整監聽引數的方法,可以透過Oracle提供的GUI介面完成,還可以透過手工修改listener.ora來完成。
因為引數檔案listener.ora是一個文字檔案。Oracle對於文字型別的引數檔案,大多數情況下是不支援熱載入的。Pfile和listener.ora都是如此。
使用介面GUI,就是使用Net Configuration Assistant來配置。配置完成後,配置程式會自動重新啟動監聽器程式,來載入修改的引數檔案。如果採用手工修改listener.ora,就必須要手工的進行監聽程式關閉和啟動。
LSNRCTL> stop
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
命令執行成功
LSNRCTL> start
啟動tnslsnr: 請稍候...
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系統引數檔案為D:\oracle\network\admin\listener.ora
寫入D:\oracle\network\log\listener.log的日誌資訊
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-0e6111dff74)(PORT=1521)))
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
LISTENER 的 STATUS
------------------------
別名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
啟動日期 26-12月-2010 22:32:34
正常執行時間 0 天 0 小時 0 分 2 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程式引數檔案 D:\oracle\network\admin\listener.ora
監聽程式日誌檔案 D:\oracle\network\log\listener.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-0e6111dff74)(PORT=1521)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
命令執行成功
這裡多說一句關於監聽器的引數配置。使用GUI可以滿足大部分的情況,而且可以避免拼寫錯誤引發的監聽器故障(監聽器不會檢查配置專案的正確與否)。但是,在一些比較複雜的情況下,比如一臺機器繫結多個IP的情況,或者RAC的複雜功能配置上,還是傾向於使用手工編寫listener.ora的方法。
此外,lsnrctl提示行還提供了reload命令,可以在listener啟動的情況下,重新載入檔案和SID資訊。但是筆者還是比較喜歡stop+start的組合。
如果是在windows平臺下,啟動關閉監聽器還可以在系統服務專案列表中操作,效果是一樣的。
瞭解了監聽器工具,下期讓我們看看監聽器是怎麼工作的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25097694/viewspace-2129623/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 說說Oracle監聽器(二)Oracle
- 說一說Oracle的最佳化器(Optimizer) (轉)Oracle
- oracle 監聽器配置Oracle
- oracle 監聽器學習Oracle
- Oracle 監聽器日誌解析Oracle
- oracle例項和監聽器Oracle
- Oracle 監聽器日誌解析(續)Oracle
- 【Oracle】修改scan監聽器埠號Oracle
- 如何更改oracle監聽器的埠Oracle
- Oracle 監聽Oracle
- 我跟你說@RefreshScope跟Spring事件監聽一起用有坑!Spring事件
- 說一說監控中常見的電視牆管控功能
- 聽說你會 Python ?Python
- 聽,是版本在說話
- 聽說這四個概念,很多 Java 老手都說不清Java
- 說說 方舟編譯器編譯
- Oracle 監聽器日誌配置與管理Oracle
- 設定 Oracle 監聽器密碼(LISTENER)Oracle密碼
- 說一說影片監控領域常見的一些效能指標指標
- Oracle監聽(1)Oracle
- ORACLE動態監聽與靜態監聽Oracle
- oracle靜態監聽和動態監聽Oracle
- 【oracle】動態監聽與靜態監聽Oracle
- 說說Oracle Bind Graduation(上)Oracle
- 說說Oracle Bind Graduation(下)Oracle
- 聽說這是一道頭條面試題面試題
- 聽說"快應用"了沒?
- 聽說,阿里“拆中臺”了?阿里
- 聽說這個榜單火了?
- oracle listener 靜態監聽與動態監聽的一些小事Oracle
- 【Oracle】修改oracle監聽埠Oracle
- 聽說諦聽鬧退休?感知網路接班啦!
- 說說我和Mac(一)Mac
- oracle靜態監聽Oracle
- JMS監聽Oracle AQOracle
- Oracle監聽的作用Oracle
- ORACLE監聽簡介Oracle
- oracle 監聽重啟Oracle