DB2DIAG 命令学习

1 位置
一般位于$INSTANCE_HOME/sqlib/db2dump
也可以用这种方法查看

db2 get dbm cfg  show detail| grep -i diag

或者直接db2diag回车,在最后一行,可以看到db2diag日志所在的路径。

2 用途
db2diag.log是用来记录DB2数据库运行中的信息的文件。
可以通过此文件,查看记录的有关DB2数据库详细的错误信息。此文件也是不断增大的,需要定期进行清理。
当文件系统/home的使用率达到80%-90%左右时,应及时删除db2diag.log文件。
请按以下正确步骤操作:

确认应用、DB2已经停止。
将原db2diag.log文件备份到其它文件系统下。
删除db2diag.log文件。删除后,DB2会自动创建一个新的文件。

注意:如果你觉得以上操作不保险的话,Db2提供了自动归档db2diag.log的命令https://www.cndba.cn/hbhe0316/article/4801

db2diag -A 自动将该文件以日期时间命名
db2diag -A

3 用法
查看时间戳2019-09-27-13.50.03.775522+480以后的日志

db2diag -time 2019-09-27-13.50.03.775522+480

查看日志中含有严重错误的信息Severe

db2diag -level Severe

查看某个时间段以来,所有的Severe严重错误信息的信息

db2diag -level Severe  -time 2019-09-26-23.07.56.853339+480
  1. 另外一个较有用的选项是“-rc”
    ```shell
    2019-09-26-23.07.56.853542+480 I2389720E793 LEVEL: Severe
    PID : 2295 TID : 139843514394368 PROC : db2sysc 0
    INSTANCE: db2inst1 NODE : 000 DB : TESTDB
    APPHDL : 0-8 APPID: *LOCAL.db2inst1.190926133701
    AUTHID : DB2INST1 HOSTNAME: db04
    EDUID : 24 EDUNAME: db2agent (TESTDB) 0
    FUNCTION: DB2 UDB, buffer pool services, sqlbCreateStorageGroup, probe:10664
    MESSAGE : ZRC=0x800201A5=-2147352155=SQLB_AS_INVALID_STORAGE_PATH
    "Storage path does not exist or is inaccessible."
    DATA #1 : String, 33 bytes
    Error during create storage group
    DATA #2 : Storage Group ID, PD_TYPE_SQLB_STORAGEGROUP_ID, 8 bytes
    1
    DATA #3 : Pointer, 8 bytes
    0x00007f2fa25e28a0
    DATA #4 : unsigned integer, 8 bytes

db2diag -rc 0x800201A5

查看sql1051具体信息
```shell
db2 ? sql1051

5 为显示 db2diag.log 中所记录的严重错误,使用

db2diag -gi "level=severe"

6.查看某PID的所有日志信息

db2diag -pid 2295

结合上述两种用法,以下命令将抽取 db2diag.log 文件中分区 0 和 5 上所有 2295进程的相关信息:

db2diag -pid 2295 -n 0,5

利用db2diag工具的-g选项可以对每一个列标志进行搜索,下面是-g选项的说明:

-g: 搜索符合搜索一系列“<列标志>=<列值>”条件的诊断日志记录,条件中间使用逗号分开。搜索区分大小写。
-gi: 功能等同于-g,搜索不区分大小写。
-gv: 搜索不符合一系列“<列标志>=<列值>”条件的诊断日志记录,条件中间使用逗号分开。搜索区分大小写。
-gvi:功能等同于-gv,搜索不区分大小写。

https://www.cndba.cn/hbhe0316/article/4801

另外我们的条件表达式支持如下几种:

= 全字精确匹配查询
:= 部分匹配模糊查询
!= 查找不符合全字精确匹配查询条件的记录
!:= 查找不符合部分匹配模糊查询条件的记录
^= 选择查找列中以后面的查找条件开头的记录
!^= 选择查找列中不以后面的查找条件开头的记录

另外db2diag还对于特定的列标志提供了快捷选项,如LEVEL,可以使用-l选项指定,NODE可以使用-n选项指定。下面我们就以几个例子演示一下如何使用高级查找功能:

1、查找应用程序句柄APPHDL为0-222的所有诊断日志条目:

db2diag -g APPHDL="0-222"

2、查找应用程序句柄APPHDL为0-222在分区0上的所有诊断日志条目:

https://www.cndba.cn/hbhe0316/article/4801
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”开头的诊断日志条目:

https://www.cndba.cn/hbhe0316/article/4801
db2diag -g "COMPONENT^=base sys"

6、查找所有返回码为”ZRC=0x80120086”的记录: https://www.cndba.cn/hbhe0316/article/4801

db2diag -g RETCODE:=0x80120086

日志级别

Diaglevel refers to the Diagnostic error capture level configuration parameter.

There are 5 levels:
0 - No diagnostic data captured
1 - Severe errors only
2 - All errors
3 - All errors and warnings
4 - All errors, warnings and informational messages
The default is at   3.

Change the diagnostic level with the command:
[db2inst1@db04 db2dump]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.
[db2inst1@db04 db2dump]$ db2 update dbm cfg using DIAGLEVEL 4
DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed 
successfully.

补充说明:
如果实例中有若干数据库,并且您只希望显示与数据库“TESTDB”有关的消息,那么可以按如下所示过滤 db2diag 日志文件:https://www.cndba.cn/hbhe0316/article/4801

https://www.cndba.cn/hbhe0316/article/4801
db2diag -g db=TESTDB

因此,将仅显示包含“DB: SAMPLE”的 db2diag 日志文件记录,如:https://www.cndba.cn/hbhe0316/article/4801

2019-09-22-13.19.55.940725+480 E2181864E1432         LEVEL: Info
PID     : 2467                 TID : 139626907952896 PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000            DB   : TESTDB
APPHDL  : 0-180                APPID: *LOCAL.db2inst1.190922051952
AUTHID  : DB2INST1             HOSTNAME: db04
EDUID   : 259                  EDUNAME: db2agent (TESTDB) 0
FUNCTION: DB2 UDB, database utilities, sqluxLogDataStats, probe:393
MESSAGE : Performance statistics
DATA #1 : String, 928 bytes

合并文件查询

https://www.cndba.cn/hbhe0316/article/4801
db2diag -merge db2diag.0.log db2diag.1.log -fmt %{ts} -level SEREVE

时间戳被合并https://www.cndba.cn/hbhe0316/article/4801

db2diag -merge db2diag.log db2diag.1.log -fmt %{ts} -level error
db2diag -merge db2diag.log db2diag.1.log -fmt %{ts} -level SEVERE

要合并这两个诊断日志文件并按时间戳记对记录进行排序,执行以下命令:

db2diag -merge db2diag.0.log db2diag.1.log -fmt %{ts} -level error

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle,linux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值