程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 用db2diag工具診斷日志記錄

用db2diag工具診斷日志記錄

編輯:DB2教程

   db2diag.log是DB2中非常重要的診斷日志,一般出現問題後,首先就要查看db2diag.log文件。但是很多時候特別是在多分區數據庫中,查看db2diag.log變得非常費時。因為所有分區所有應用程序的診斷日志都會寫到DB2的診斷日志中。從DB2版本8.2開始,DB2提供了db2diag工具可以用來過濾查找特定的日志,您可以參見下面的文檔獲得使用db2diag的基本方法: http://www-900.ibm.com/cn/support/v...d=1807545B21000 

   有時候我們需要做一些更高級的過濾查詢,以便幫助我們進一步診斷問題,該文章通過例子對於db2diag中的高級選項做了介紹。 

   首先簡單介紹db2diag.log中的條目構成,如下所示為一條標准的db2diag.log日志條目:
2005-12-26-19.09.14.702039+480 I84831569A398 LEVEL: SeverePID : 1060946 TID : 1 PROC : db2agent (XXXX) 0INSTANCE: db2inst1 NODE : 000 DB : XXXXAPPHDL : 0-222 APPID: C0A86402.OD11.03F806110349FUNCTION: DB2 UDB, relation data serv, sqlrr_fetch, probe:20RETCODE : ZRC=0x80120086=-2146303866=SQLR_PRTCLE "DRDA Protocol Error" 

   其中上面的黑體字部分是我們的每條診斷日志的不同列標識。其中FUNCTION包含:
   PRODUCT,COMPONENT,FUNCNAME,PROBE, 這幾個也是可以單獨搜索的列標志。 

   利用db2diag工具的-g選項可以對每一個列標志進行搜索,下面是-g選項的說明: 

   -g: 搜索符合搜索一系列“<列標志>=<列值>”條件的診斷日志記錄,條件中間使用逗號分開。搜索區分大小寫。 
   -gi: 功能等同於-g,搜索不區分大小寫。 
   -gv: 搜索不符合一系列“<列標志>=<列值>”條件的診斷日志記錄,條件中間使用逗號分開。搜索區分大小寫。 
   -gvi:功能等同於-gv,搜索不區分大小寫。 

   另外我們的條件表達式支持如下幾種: 

   = 全字精確匹配查詢 
   := 部分匹配模糊查詢 
   != 查找不符合全字精確匹配查詢條件的記錄 
   !:= 查找不符合部分匹配模糊查詢條件的記錄 
   ^= 選擇查找列中以後面的查找條件開頭的記錄 
   !^= 選擇查找列中不以後面的查找條件開頭的記錄 

   關於高級查找功能的幫助,您可以隨時通過"db2diag -h filter" 獲得。 

   另外db2diag還對於特定的列標志提供了快捷選項,如LEVEL,可以使用-l選項指定,NODE可以使用-n選項指定。下面我們就以幾個例子演示一下如何使用高級查找功能: 

   1、查找應用程序句柄APPHDL為0-222的所有診斷日志條目: 

   db2diag -g APPHDL="0-222" 

   2、查找應用程序句柄APPHDL為0-222在分區0上的所有診斷日志條目: 

   db2diag -g APPHDL="0-222",NODE=000 

   3、查找進程1060946的所有嚴重錯誤(Severe): 

   db2diag -g PID=1060946,LEVEL=Severe 

   4、查找所有FUNCTION名稱中包飯fetch的診斷日志條目: 

   db2diag -g FUNCTION:=fetch 

   5、查找所有component名稱以"base sys"開頭的診斷日志條目: 

   db2diag -g "COMPONENT^=base sys" 

   6、查找所有返回碼為"ZRC=0x80120086"的記錄: 

   db2diag -g RETCODE:=0x80120086 
  
   除了過濾查找之外,db2diag還可以格式化輸出。您可以指定查找結果的輸出格式。關於格式化輸出的詳細幫助,請使用"db2diag -h fmt"命令查看。下面簡單介紹一個例子:

db2diag -time 2005-12-22 -node "0,1,2" -level "Severe, Error" |db2diag -fmt "Time: %{ts} 
Partition: %node Message Level:%{level} \nPid: %{pid}
Tid: %{tid} Instance:%{instance}\nMessage: @{msg}\n"

   該命令將查找2005年12月22日以來在分區0,1,2上錯誤級別為Severe和Error的錯誤,並按照下面的格式輸出:

Time: 2005-12-28-14.32.01.067843 Partition: 000 Message Level:ErrorPid: 1871948 Tid: 1 Instance:db2inst1Message: ZRC=0x860F000A=-2045837302=SQLO_FNEX "File not found."DIA8411C A file "" could not be found. 

   db2diag工具非常強大,您可以查看DB2信息中心獲得db2diag的進一步使用幫助: 

   http://publib.boulder.ibm.com/infocenter/db2luw/v8/ index.JSP(SUN企業級應用的首選)?topic=/com.ibm.db2.udb.doc/core/r0011728.htm 

   參考資料: 
   1、DB2 Information Center: http://publib.boulder.ibm.com/infoc...uw/v8/index.JSP(SUN企業級應用的首選)

URl收藏 http://www.cncms.com.cn/db2/d382125.Html
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved