監聽器控制程式lsnrctl跟蹤trace file
Oracle監聽器是一個獨立的資料庫元件,在整個體系中扮演非常重要的作用。即使在windows平臺上,監聽器listener也被實現成為一個獨立的程式程式。
在一些與網路相關的故障中,監聽器相關故障佔了很大部分。瞭解監聽器的工作過程,分析每個環節出現問題的機率,是監聽器發生故障時我們常常需要做的事情。這個過程我們就需要使用監聽器trace功能。
本篇主要介紹如何使用lsnrctl工具獲取到監聽器跟蹤檔案(trace file),以及獲取的跟蹤級別。
1、環境介紹
本次我們選擇10g監聽器進行試驗。
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>lsnrctl
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-12月-2011 20:31:59
Copyright (c) 1991, 2005, Oracle. All rights reserved.
歡迎來到LSNRCTL, 請鍵入"help"以獲得資訊。
注意,lsnrctl並不是監聽器程式本身,而是監聽器控制的一個小工具。藉助這個工具,我們可以操縱監聽器行為、設定監聽器引數。Lsnrctl命令列使用的命令很簡單。
LSNRCTL> help
以下操作可用
星號 (*) 表示修改符或擴充套件命令:
start stop status
services version reload
save_config trace change_password
quit exit set*
show*
此時,資料庫尚未啟動。監聽器處於執行狀態。
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
啟動日期 19-12月-2011 20:28:53
正常執行時間 0 天 0 小時 3 分 32 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程式引數檔案 D:\oracle\network\admin\listener.ora
監聽程式日誌檔案 D:\oracle\network\log\listener.log
(篇幅原因,有省略……)
LSNRCTL>
此時,沒有進行跟蹤檔案輸出。
2、簡單跟蹤檔案生成
我們先介紹如何使用一般監聽跟蹤方法。該配置從lsnrctl設定。在lsnrctl配置中,有一些與trace相關的內容。
LSNRCTL> show
show之後提供了以下操作
星號 (*) 表示修改符或擴充套件命令:
rawmode displaymode
rules trc_file
trc_directory trc_level
log_file log_directory
(篇幅原因,有省略……)
其中,以trc開頭的幾個引數顯然是與trace檔案操作生成有關。我們可以使用show命令加以顯示。
--跟蹤檔名稱
LSNRCTL> show trc_file
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP) (HOST=www-0e6111dff74)(PORT=1521)))
LISTENER 引數 "trc_file" 設為 listener.trc
命令執行成功
--跟蹤檔案目錄
LSNRCTL> show trc_directory
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
LISTENER 引數 "trc_directory" 設為 D:\oracle\network\trace
命令執行成功
--跟蹤程度
LSNRCTL> show trc_level
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
LISTENER 引數 "trc_level" 設為 off
命令執行成功
透過上面引數,我們可以配置跟蹤檔案的位置、名稱和跟蹤級別。
開啟跟蹤,我們可以使用trace命令。具體格式如下:
LSNRCTL> help trace
trace OFF | USER | ADMIN | SUPPORT [<listener_name>] : set tracing to the specif
ied level
注意,我們開啟跟蹤是有三個級別的,分別為user、admin和support級別。具體含義如下:
ü Off或者數值0:表示對當前的監聽器不開啟跟蹤;
ü User或者數值4:user trace information;
ü Admin或者數值10:administration trace information;
ü Support或者數值16:Oracle support Services trace information;
通常,我們使用support級別作為跟蹤。
LSNRCTL> trace 12
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
開啟的跟蹤檔案: D:\oracle\network\trace\listener.trc
LSNRCTL> show trc_level
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
LISTENER 引數 "trc_level" 設為 admin
命令執行成功
從返回資訊和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
啟動日期 19-12月-2011 20:28:53
正常執行時間 0 天 0 小時 15 分 5 秒
跟蹤級別 admin
安全性 ON: Local OS Authentication
SNMP OFF
監聽程式引數檔案 D:\oracle\network\admin\listener.ora
監聽程式日誌檔案 D:\oracle\network\log\listener.log
監聽程式跟蹤檔案 D:\oracle\network\trace\listener.trc
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-0e6111dff74)(PORT=1521)))
(篇幅原因,有省略……)
LSNRCTL>
我們可以在這個過程中,嘗試進行動態註冊或者新連線連入等操作。最後關閉監聽。
LSNRCTL> trace off
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)))
命令執行成功
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
啟動日期 19-12月-2011 20:28:53
正常執行時間 0 天 0 小時 17 分 16 秒
跟蹤級別 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)))
此時,我們到監聽目錄下,就可以找到監聽檔案。下面是片段:
nsglrespond: entry
nsdo: cid=3, pcode=67, *bl=97, *what=1, uflgs=0x0, cflgs=0x3
nsdo: rank=64, nsctxrnk=0
nsdo: nsctx: state=8, flg=0x100400c, mvd=0
nsdo: gtn=206, gtc=206, ptn=10, ptc=2011
nsdo: 97 bytes to NS buffer
nsdo: nsctxrnk=0
nsglrespond: exit
nsgldissolve: entry
nstimarmed: no timer allocated
nsdo: cid=3, pcode=66, *bl=0, *what=0, uflgs=0x0, cflgs=0x2
nsdo: rank=64, nsctxrnk=0
nsdo: nsctx: state=8, flg=0x1004008, mvd=0
nsevunreg: cid=3, sgt=0, rdm=2
上面每一行記錄,都對應監聽器程式的動作資訊。當然,直觀上是不容易讀懂的。我們以後再討論如何讀懂監聽跟蹤檔案內容。
3、帶時間資訊的監聽跟蹤檔案
上面部分中,我們已經獲得了簡單的跟蹤檔案。但是我們診斷問題的時候,通常是希望得到每個階段操作執行時間的長短,從而發現問題瓶頸。
例如:我們發現透過監聽器連線速度很慢,但是繞過監聽器直接連線的速度很快。說明連線操作中,一個或者幾個環節存在效能問題。具體是哪個?還是需要進一步時間間隔判斷。
我們想要獲得時間資訊,需要配置兩個引數在listener.ora檔案中。
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = www-0e6111dff74)(PORT = 1521))
)
)
TRACE_TIMESTAMP_LISTENER=true
TRACE_LEVEL_LISTENER=16
首先,需要在引數檔案listener.ora中,加入兩個引數取值。其中trace_timestamp_<listener_name>表示是否開啟跟蹤時間功能。如果設定為true/on,表示記錄跟蹤事件的時候,同時會記錄上具體的時間。
另一個引數trace_level_<listener_name>表示啟動監聽程式時的跟蹤級別。要讓這兩個引數生效,需要reload或者重新啟動監聽器。
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的日誌資訊
寫入D:\oracle\network\trace\listener.trc的跟蹤資訊
監聽: (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 - Produ
ction
啟動日期 19-12月-2011 21:47:12
正常執行時間 0 天 0 小時 0 分 1 秒
跟蹤級別 support
安全性 ON: Local OS Authentication
SNMP OFF
監聽程式引數檔案 D:\oracle\network\admin\listener.ora
監聽程式日誌檔案 D:\oracle\network\log\listener.log
監聽程式跟蹤檔案 D:\oracle\network\trace\listener.trc
(篇幅原因,省略部分……)
LSNRCTL> trace 0
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
命令執行成功
LSNRCTL> trace 16
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=www-0e6111dff74)(PORT=1521)
))
開啟的跟蹤檔案: D:\oracle\network\trace\listener.trc
命令執行成功
此時生成的trace檔案中,有如下內容:
[19-12月-2011 21:53:40:281] nsglrespond: entry
[19-12月-2011 21:53:40:281] nsdo: entry
[19-12月-2011 21:53:40:281] nsdo: cid=5, pcode=67, *bl=97, *what=1, uflgs=0x0, cflgs=0x3
[19-12月-2011 21:53:40:281] nsdo: rank=64, nsctxrnk=0
[19-12月-2011 21:53:40:281] nsdo: nsctx: state=8, flg=0x100400c, mvd=0
[19-12月-2011 21:53:40:281] nsdo: gtn=206, gtc=206, ptn=10, ptc=2011
[19-12月-2011 21:53:40:281] nsdo: 97 bytes to NS buffer
[19-12月-2011 21:53:40:281] nsdo: nsctxrnk=0
[19-12月-2011 21:53:40:281] nsiooverflow: entry
[19-12月-2011 21:53:40:281] nsdo: normal exit
[19-12月-2011 21:53:40:281] nsglrespond: exit
[19-12月-2011 21:53:40:281] nsgldissolve: entry
[19-12月-2011 21:53:40:281] nsdisc: entry
[19-12月-2011 21:53:40:281] nsclose: entry
記錄在毫秒級別的跟蹤資訊。
4、結論
監聽器是一個涉及網路、Oracle例項、連線、客戶端和Oracle Net複雜元件。我們遇到的很多問題,根源其實都與監聽器有或多或少的關係。掌握跟蹤檔案,對於監聽器診斷至關重要。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224914/viewspace-2121664/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【TRACE】如何設定或動態跟蹤Oracle net偵聽器Oracle
- oracle 資料庫lsnrctl監聽的日誌路徑和trace檔案Oracle資料庫
- Golang 大殺器之跟蹤剖析 traceGolang
- sp_trace_setfilter sqlserver篩選跟蹤或跟蹤過濾FilterSQLServer
- Golang 效能測試 (3) 跟蹤刨析 golang traceGolang
- ABAP的許可權檢查跟蹤(Authorization trace)工具
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- 使用dbms_monitor.session_trace_enable跟蹤一個會話Session會話
- 【TRACE】如果通過10046跟蹤資料庫效能問題資料庫
- SAP CRM One Order跟蹤和日誌工具CRMD_TRACE_SET
- Linux 跟蹤器之選Linux
- 當心你的手機暗藏“臥底軟體”!已有6萬人被監聽和跟蹤→
- 2.5.2. 監聽程式(listener)配置——2.5.2.3. 手工編輯監聽器配置檔案
- Istio Trace鏈路追蹤方案
- Mac好用的時間跟蹤器Mac
- JMeter—監聽器(十二)JMeter
- 從v$diag_info定位trace file
- 監聽器和過濾器過濾器
- 如何做好專案進度監控與跟蹤
- 一個非侵入式跟蹤分析程式
- matlab練習程式(LQR路徑跟蹤)Matlab
- 事件和事件監聽器事件
- javaWeb中的監聽器JavaWeb
- 如何移除事件監聽器事件
- JavaWeb之Servlet、攔截器、監聽器及程式設計思想JavaWebServlet程式設計
- Netty中自定義事件處理程式和監聽器Netty事件
- Java呼叫鏈跟蹤關鍵技術(四)SQL監控JavaSQL
- Android 程式碼跟蹤到native怎麼辦Android
- svn + 釘釘機器人制作簡單的程式碼跟蹤系統機器人
- Springboot中自定義監聽器Spring Boot
- day25-Listener監聽器
- jmeter監聽器(Transactions per Second)JMeter
- 【spring原始碼】十二、監聽器Spring原始碼
- Flutter 滾動控制元件篇-->滾動監聽及控制(ScrollController)Flutter控制元件Controller
- SpringBoot 攔截器、過濾器、監聽器Spring Boot過濾器
- Trace file的命名規則和存放路徑
- 過濾器和監聽器總結過濾器
- centos的監聽http小程式CentOSHTTP
- 監聽 watch props物件屬性監聽 或深度監聽物件