DB2 db2diag.log 日志分析

原文:http://blog.csdn.net/lyjiau/article/details/52129997

db2diag.log是用来记录DB2数据库运行中的信息的文件。
可以通过此文件,查看记录的有关DB2数据库详细的错误信息。此文件也是不断增大的,需要定期进行清理。 
可以通过查看实例的配置参数DIAGPATH,来确定db2diag.log文件是放在哪个目录下:db2 get dbm cfg 
如果Diagnostic data directory path(DIAGPATH) = /home/db2inst1/sqllib/db2dump,
则此文件是放在/home/db2inst1/sqllib/db2dump目录下。
当文件系统/home的使用率达到80%-90%左右时,应及时删除db2diag.log文件。 
请按以下正确步骤操作:
确认应用、DB2已经停止。
将原db2diag.log文件备份到其它文件系统下。 
删除db2diag.log文件。删除后,DB2会自动创建一个新的文件。
 
注意:如果你觉得以上操作不保险的话,Db2提供了自动归档db2diag.log的命令
db2diag -a 自动将该文件以日期时间命名
 
下面是查看该文件时经常会碰到的一个片段(蓝色部分是为了便于讲解而加上去的编号): 
----------------------------------------------- 
2003-04-24-13.56.13.453290(1) Instance:svtdbm2(2)    Node:100(3) 
PID:672(db2agent (SUN102) 100)(4)    TID:1(5)    Appid:*N100.svtdbm2.0074F4174930(6) 
buffer pool services(7) sqlbCheckAllocation(8) Probe:800(9)    Database:SUN102(10) 
----------------------------------------------- 
 
上面的蓝色部分分别如下含义: 
1) timestamp (时间戳) 
2) instance (数据库实例) 
3) partition number (分区号) 
4) process and database (进程和数据库) 
5) thread Id (线程ID) 
6) application ID (应用程序ID) 
7) component (组件) 
8) function (函数) 
9) internal error point (内部错误指针) 
10) database (数据库) 
 
了解这些基本含义有助于分析和诊断DB2的相关问题。
 
2. 要显示 db2diag.log 文件中所有关于 119664 进程的信息,可利用以下命令: 
 
db2diag -pid 119664 
 
2004-10-11-19.01.56.555034-300 I7109918C313 LEVEL: Event 
PID : 119664 TID : 1 PROC : db2star2 
INSTANCE: dimi NODE : 000 
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:30 
CHANGE : CFG DBM: "Instance_Memory" <automatic> From: "11126" To: "11126" 
.... 
 
结合上述两种用法,以下命令将抽取 db2diag.log 文件中分区 0 和 4 上所有 119664 进程的相关信息: 
 
db2diag -pid 119664 -n 0,4 
 
3. 为显示 db2diag.log 文件中包含的时间戳“2004-11-02-11.00.907665-360”之后的所有信息,可用下述命令: 
 
db2diag -time 2004-11-02-11.00.907665-360 
 
 
4. 另外一个较有用的选项是“-rc”。对于以前的 DB2 版本,用户经常希望了解的 db2diag.log 中的常出现十六进制返回码所提示的信息,在 v8.2 上,如果使用该选项便可得到关于这些十六进制返回码的解释。如对于以下一段信息: 
 
2004-10-19-12.19.46.033037-300 I7202340C354 LEVEL: Severe 
PID : 139048 TID : 1 PROC : db2hmon 4 
INSTANCE: dimi NODE : 000 
FUNCTION: DB2 UDB, routine_infrastructure, sqlerFmpOneTimeInit, probe:100 
MESSAGE : DiagData 
DATA #1 : Hexdump, 4 bytes 
0x2FF225B0 : FFFF FBEE .... 
...... 
 
为了解十六进制 0xFFFF FBEE 所提示的信息,可使用下面的命令: 
 
db2diag -rc FFFFFBEE 
 
其输出为: 
 
Input ECF string 'FFFFFBEE' parsed as 0xFFFFFBEE (-1042). 
ERROR: ../sqz/sqlzwhatisrc.C: 
Input ZRC 0xFFFFFBEE (-1042) cannot be identified as a V7 or V6 ZRC value 
 
即该返回码提示的错误码为:SQL1042C,用户可使用: 
 
db2 "? sql1042" 
 
获得关于这个错误的具体解释。 
 
 
5. 为显示 db2diag.log 中所记录的严重错误,使用: 
 
db2diag -gi "level=severe" 
 
输出可参看例 4 中提供的。 
 
 
如果要得到有关该工具的更多选项的帮助信息,可使用: 
 
db2diag -h 
 
使用db2diag工具的高级选项过滤查找db2diag.log诊断日志记录 
 
内容 
提要 db2diag.log是DB2中非常重要的诊断日志,一般出现问题后,首先就要查看db2diag.log文件。但是很多时候特别是在多分区数据库中,查看db2diag.log变得非常费时。因为所有分区所有应用程序的诊断日志都会写到DB2的诊断日志中。从DB2版本8.2开始,DB2提供了db2diag工具可以用来过滤查找特定的日志,
有时候我们需要做一些更高级的过滤查询,以便帮助我们进一步诊断问题,该文章通过例子对于db2diag中的高级选项做了介绍。 
正文 首先简单介绍db2diag.log中的条目构成,如下所示为一条标准的db2diag.log日志条目: 
2005-12-26-19.09.14.702039+480 I84831569A398 LEVEL: Severe 
PID : 1060946 TID : 1 PROC : db2agent (XXXX) 0 
INSTANCE: db2inst1 NODE : 000 DB : XXXX 
APPHDL : 0-222 APPID: C0A86402.OD11.03F806110349 
FUNCTION: DB2 UDB, relation data serv, sqlrr_fetch, probe:20 
RETCODE : 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:Error 
Pid: 1871948 Tid: 1 Instance:db2inst1 
Message: ZRC=0x860F000A=-2045837302=SQLO_FNEX "File not found." 
DIA8411C A file "" could not be found. 

(转)DB2 db2diag.log 日志分析的更多相关文章

  1. [日志分析] Access Log 日志分析

    0x00.前言: 如何知道自己所在的公司或单位是否被入侵了?是没人来“黑”,还是因自身感知能力不足,暂时还没发现?入侵检测是每个安全运维人员都要面临的严峻挑战.安全无小事,一旦入侵成功,后果不堪设想. ...

  2. Android log 日志分析

    一. Log 日志中 Bug 类型 程序异常强制关闭: Force Close ,Fatal 程序无响应: Application Not Response , ANR(应用无响应).一般是主线程超时 ...

  3. nginx acces.log日志分析

    1,统计各访问IP的总数 awk '{if($9>0 && $9==200 && substr($6,2)== "GET") a[$1]++} ...

  4. 【DB2】清理日志文件db2diag.log

    在数据库运行过程中,会产生很多的日志,进而使日志文件db2diag.log变大 当占用磁盘空间太大的时候,应该怎么处理呢? 方法一: db2inst1@Linux:/db2home/db2inst1/ ...

  5. Log Parser 微软强大的日志分析工具

    Log Parser(微软网站下载)是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件.XML 文件.CSV(逗号分隔符)文件,以及操作系统的事件日志.注册表.文件系统.A ...

  6. java OOM还在看log日志,兄弟你错的的很严重,正确方式是分析dump文件

    目录 OOM异常--intsmaze 正确姿势dump文件分析--intsmaze 正确的姿势--intsmaze dump丢失打印--intsmaze 哪些内存溢出会产生dump文件--intsma ...

  7. 使用mapreduce来分析网站的log日志

    近日,有人和我说分析log日志. 之前,就写过,但是忘了总结了,找了半天也没有找到,看了以后要将东西整理了. 无奈,在网上收拾,看到这个人写的,索性,就搬过来,待我找到我写的,在一块补充一下! 所有网 ...

  8. 【PHP】善用php-fpm的慢执行日志slow log,分析php性能问题

    (转)善用php-fpm的慢执行日志slow log,分析php性能问题  众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题.作为mysql的好 ...

  9. log parser分析windows日志

    首先将windows安全日志导出,步骤如下: 运行eventvwr.msc命令,打开windows日志,如下图,将所有事件另存为: 保存完之后是一个.evtx格式的文件,将使用log parser分析 ...

随机推荐

  1. js定时执行函数

    //方法一: //直接现定义函数 var time = window.setInterval(function(){ $('.lingdao_right').click(); },5000); //方 ...

  2. php 递归删除目录

    /* * 递归删除目录 */ function deletedir($dir){ if($handle = @opendir($dir)){ while($file = readdir($handle ...

  3. 如何解决diff: /../Podfile.lock: No such file or directory 的问题

    1.问题描述 之前碰到过此类问题,原因是之前用了测试版本的pod,然后回归正式版本,导致找不到pod文件 diff: /../Podfile.lock: No such file or directo ...

  4. day01.1-Python编译器的安装

    一. 在Windows环境中安装Python编译器     1. 访问Python官网https://www.python.org,下载适用于Windows环境的相关编译器版本: 2. 点击Pytho ...

  5. django使用auth模块进行身份认证

    https://docs.djangoproject.com/zh-hans/2.0/topics/auth/default/#authentication-in-web-requests djang ...

  6. React基础篇 (1)-- render&components

    render 基础用法 //1.创建虚拟DOM元素对象 var vDom=<h1>hello wold!</h1> //2.渲染 ReactDOM.render(vDom,do ...

  7. 3月份GitHub上最热门的Java开源项目

    今天,我们来盘点3月份GitHub上最热门的Java项目的时候了,如果你每月都有关注猿妹发布的排行榜,那么本月的Java项目对你来说一定不陌生,这些都是曾经多次出现在榜单中的项目: 1 advance ...

  8. 【bzoj4869】[Shoi2017]相逢是问候 线段树+扩展欧拉定理

    Description Informatikverbindetdichundmich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两 ...

  9. linux下用rpm 安装jdk

    转载自http://blog.csdn.net/ldl22847/article/details/7605650 1.下载jdk的rpm安装包,这里以jdk-7u4-linux-i586.rpm为例进 ...

  10. Vue 环境配置

    最开始摸element的时候,像盲人摸象,完全没有头绪. https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials ...