开发学院数据库DB2 用db2diag工具诊断日志记录 阅读

用db2diag工具诊断日志记录

 2007-11-19 21:39:14 来源:WEB开发网   
核心提示: db2diag.log是DB2中非常重要的诊断日志,一般出现问题后,用db2diag工具诊断日志记录,首先就要查看db2diag.log文件,但是很多时候特别是在多分区数据库中,1,2上错误级别为Severe和Error的错误,查看db2diag.log变得非常费时,因为所有分区所有应用程序的诊断日志都会写到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

Tags:dbdiag 工具 诊断

编辑录入:coldstar [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接