供数据库和系统管理员使用的主日志文件为管理通知日志。db2diag 日志文件旨在供 IBM 软件支持机构用于进行故障诊断。
管理通知日志消息也以标准化消息格式记录到 db2diag 日志文件。
db2diag 工具用于对 db2diag 日志文件中的大量信息进行过滤和格式化。过滤 db2diag 日志文件记录可缩短诊断问题时查找所需记录的时间。
示例 1:按数据库名称过滤 db2diag 日志文件
如果实例中有若干数据库,并且您只希望显示与数据库"SAMPLE"有关的信息,那么可以按如下所示过滤 db2diag 日志文件:
db2diag -g db=SAMPLE
因此,将仅显示包含"DB: SAMPLE"的 db2diag 日志文件记录,如:
2006-02-15-19.31.36.114000-300 E21432H406 级别:错误
PID:940 TID:660 PROC:db2syscs.exe
实例:DB2 节点:000 数据库:SAMPLE
APPHDL:0-1056 APPID:*LOCAL.DB2.060216003103
函数:DB2 UDB,基本系统实用程序,sqleDatabaseQuiesce,探测点:2
消息:ADM7507W 数据库停顿请求成功完成。
示例 2:按进程标识过滤 db2diag 日志文件
以下命令可用来显示进程标识 (PID) 为 2200,并且在分区 0、1、2 或分区 3 上运行的进程生成的所有严重错误消息:
db2diag -g level=Severe,pid=2200 -n 0,1,2,3
注意,此命令可能以不同方式写入,包括 db2diag -l severe -pid 2200 -n 0,1,2,3。还要注意的是,-g 选项指定区分大小写的搜索,所以此处"Severe"会起作用,但如果使用了"severe"则会失败。满足如下要求时,这些命令将成功检索 db2diag 日志文件记录:
2006-02-13-14.34.36.027000-300 I18366H421 级别:严重
PID : 2200 TID : 660 PROC : db2syscs.exe
实例:DB2 节点:000 数据库:SAMPLE
APPHDL:0-1433 APPID:*LOCAL.DB2.060213193043
函数:DB2 UDB,数据管理,sqldPoolCreate,探测点:273
返回码:ZRC=0x8002003C=-2147352516=SQLB_BAD_CONTAINER_PATH
"错误的容器路径"
示例 3:格式化 db2diag 工具输出
以下命令过滤 2006 年 1 月 1 日之后发生,并且包含分区 0、1 或2 上记录的所有非严重错误和严重错误的所有记录。它会输出匹配的记录,因此时间戳记、分区号和级别将出现在第一行上,而 pid、tid 和实例名将出现在第二行上,之后是错误消息:
db2diag -time 2006-01-01 -node "0,1,2" -level "Severe, Error" |
db2diag -fmt "Time: %{ts}
分区:%node Message Level:%{level} \nPid:%{pid} Tid:%{tid}
实例:%{instance}\nMessage: @{msg}\n"
生成的输出示例如下所示:
时间:2006-02-15-19.31.36.099000 分区:000 消息级别:错误
Pid:940 Tid:40 实例:DB2
消息:ADM7506W 已经请求了数据库停顿。
有关更多信息,请发出下列命令:
- db2diag -help 提供了所有可用选项的简短描述
- db2diag -h brief 提供对所有不带示例的选项的描述
- db2diag -h notes 提供用法说明和限制
- db2diag -h examples 提供一小组示例以帮助您入门
- db2diag -h tutorial 提供所有可用选项的示例
- db2diag -h all 提供最完整的选项列表
示例 4:过滤来自不同工具的消息
下列示例显示如何仅查看来自数据库管理器中的特定工具(或所有工具)的消息。受支持的工具包括:
- ALL,这会返回来自所有工具的记录
- MAIN,这会返回来自 DB2® 常规诊断日志的记录,例如 db2diag 日志文件和管理通知日志
- OPTSTATS,这会返回与优化器统计信息有关的记录
要读取来自 MAIN 工具的消息,请使用以下命令:
db2diag -facility MAIN
要显示来自 OPTSTATS 工具的消息并滤出级别为 Severe 的记录,请使用以下命令:
db2diag -fac OPTSTATS -level Severe
要显示来自所有可用工具的消息并滤出实例为 harmistr 级别为 Error 的记录,请使用以下命令:
db2diag -fac all -g instance=harmistr,level=Error
要显示 OPTSTATS 工具中级别为 Error 并且以特定格式输出时间戳记和 PID 字段的所有消息,请使用以下命令:
db2diag -fac optstats -level Error -fmt " Time :%{ts} Pid :%{pid}"
示例 5:根据时间戳记来合并文件和对记录进行排序
此示例说明了如何根据时间戳记来合并两个或更多 db2diag 日志文件以及对记录进行排序。
要合并的两个 db2diag 日志文件为下列各项:
- db2diag.0.log;它包含具有以下时间戳记的 Level:Error 的记录:
- 2009-02-26-05.28.49.822637
- 2009-02-26-05.28.49.835733
- 2009-02-26-05.28.50.258887
- 2009-02-26-05.28.50.259685
- db2diag.1.log;它包含具有以下时间戳记的 Level:Error 的记录:
- 2009-02-26-05.28.11.480542
- 2009-02-26-05.28.49.764762
- 2009-02-26-05.29.11.872184
- 2009-02-26-05.29.11.872968
要根据时间戳记来合并两个诊断日志文件以及对记录进行排序,请执行以下命令:
db2diag -merge db2diag.0.log db2diag.1.log -fmt %{ts} -level error
执行合并以及对记录进行排序的结果为如下所示:
- 2009-02-26-05.28.11.480542
- 2009-02-26-05.28.49.764762
- 2009-02-26-05.28.49.822637
- 2009-02-26-05.28.49.835733
- 2009-02-26-05.28.50.258887
- 2009-02-26-05.28.50.259685
- 2009-02-26-05.29.11.872184
- 2009-02-26-05.29.11.872968
时间戳记是按时间顺序进行合并和排序的。
示例 6:按时间戳记合并单台主机中的诊断目录路径文件以及对记录进行排序
缺省情况下,每个成员和 CF 日志 写至不同 db2diag 日志文件。以下是要合并的三个 db2diag 日志文件的列表:
- ~/sqllib/db2dump/DIAG0000/db2diag.log
- ~/sqllib/db2dump/DIAG0001/db2diag.log
- ~/sqllib/db2dump/DIAG0002/db2diag.log
要根据时间戳记来合并这三个诊断日志文件以及对记录进行排序,请执行以下命令:
db2diag -merge
示例 7:合并多台主机和多个数据库分区中的诊断目录路径文件
此示例说明了如何获得所有诊断日志中所有记录的输出,以及如何合并 bower 和 horton 这两个主机中每个主机上的三个数据库分区中的诊断日志文件。以下列表显示六个 db2diag 日志文件:
- ~/sqllib/db2dump/HOST_bower/DIAG0000/db2diag.log
- ~/sqllib/db2dump/HOST_bower/DIAG0001/db2diag.log
- ~/sqllib/db2dump/HOST_bower/DIAG0002/db2diag.log
- ~/sqllib/db2dump/HOST_horton/DIAG0003/db2diag.log
- ~/sqllib/db2dump/HOST_horton/DIAG0004/db2diag.log
- ~/sqllib/db2dump/HOST_horton/DIAG0005/db2diag.log
要输出所有这六个 db2diag 日志文件中的记录,请运行以下命令:
db2diag -global
bower 和 horton 这两个主机中每个主机上有三个数据库分区,要合并这些数据库分区中的诊断数据目录路径中的所有六个 db2diag 日志文件,并且根据时间戳记设置输出的格式,请执行以下命令:
db2diag -global -merge -sdir /temp/keon -fmt %{ts}
其中 /temp/keon 是 bower 和 horton 这两个主机共享的共享目录,在处理期间用来存储每个主机的临时合并文件。
示例 8:仅过滤和合并最新的诊断日志条目
在此示例中,将过滤 db2diag 日志文件记录以仅显示特定数目的最新条目。要显示分区数据库环境中每个分区(共有 3 个分区)的 5 个最新格式化记录并按时间戳记进行合并和格式化,请输入:
db2diag -lastrecords 5 -global -merge -sdir /home/vbmithun -fmt %{ts}
2010-10-08-04.46.02.092192
2010-10-08-04.46.02.092821
2010-10-08-04.46.02.093497
2010-10-08-04.46.02.094431
2010-10-08-04.46.02.095317
2010-10-08-04.46.05.068648
2010-10-08-04.46.05.069212
2010-10-08-04.46.05.069900
2010-10-08-04.46.05.071008
2010-10-08-04.46.05.071831
2010-10-08-04.46.07.302051
2010-10-08-04.46.07.302727
2010-10-08-04.46.07.303544
2010-10-08-04.46.07.304647
2010-10-08-04.46.07.305391
还可以进一步过滤最新的诊断日志记录以仅返回特定级别的消息。例如,要仅返回最新的 10 个记录中具有严重消息级别的记录,请输入:
$ db2diag db2diag.log -lastrecords 10 -level Severe -fmt %{ts}
2010-08-11-04.11.33.733807
2010-08-11-04.11.33.735398
示例 9:归档 db2diag 日志文件
可使用 IBM® Data Server Driver Package 和 IBM Data Server for ODBC and CLI 提供的 db2diag -archive(或 -A)选项来归档无实例客户机上的诊断日志文件。例如:
$ db2diag -A
db2diag: Moving "/home/usr1/clidriver/db2dump/db2diag.log"
to "/home/usr1/clidriver/db2dump/db2diag.log_2010-09-14-01.16.26"
注: 下列命令可以在没有实例的客户机上产生相同的结果。
如果您指定除 -archive 或 -A 之外的选项,那么将返回错误消息。例如:
$ db2diag -x
db2diag: Unrecognized option: -x
$ db2diag -pid 1234
db2diag: Unrecognized option: -pid