1:什么是跟踪信息
db2trc 命令控制随 DB2® 提供的跟踪工具。跟踪工具记录有关操作的信息并将此信息格式化为可读格式。
记住,运行跟踪时会增加开销,所以启用跟踪工具可能会影响系统性能。
通常 DB2 支持机构和开发团队使用 DB2 跟踪故障诊断。您可以运行跟踪来获取有关正在调查的问题的信息,但如果您不了解 DB2 源代码,它的用途将十分有限。
即使只要求您获取跟踪文件,您也应该知道如何正确地启动跟踪以及如何转储跟踪文件。
2:启用跟踪
需要 SYSADM、SYSCTRL 或 SYSMAINT 权限的其中一种权限来使用 db2trc。
2.1:用法
-
[db2inst2@cognoswithdb2 ~]$ db2trc
-
STAGE #1 - COLLECTION
-
Usage: db2trc [facility] <command> [-u]
-
[facility]
-
db2 - DB2 instance (default)
-
das - DB2 Administration Server instance
-
cf - CF Server
-
cfcli - CF Client
-
<command>
-
change - Change trace options
-
clear - Clear the trace buffer
-
dump - Generate trace dump file
-
info - Information
-
off - Disable the trace facility
-
on - Enable the trace facility
-
stop - Stop tracing
-
STAGE #2 - PARSING
-
Usage: db2trc <command> [-u]
-
<command>
-
ccfmt - Dump and format a code coverage trace
-
flow - Generate control flow diagram
-
format - Format
-
formattedFlow - Generate global flow diagram
-
info - Information
-
perffmt - Format a performance trace
-
perfrep - Format a performance report
-
For more information add the "-u" option to any of the above commands
-
[db2inst2@cognoswithdb2 ~]$
有关特定 db2trc 命令参数的更多信息,请使用 -u 选项。例如,要查看有关启动跟踪的更多信息,请执行以下命令:
db2trc on -u
这会提供有关可在启动 DB2 跟踪时指定的所有附加选项(标注为“工具”)的信息。
启用跟踪时,最重要的选项是 -L。它指定用于存储跟踪信息的内存缓冲区的大小。缓冲区大小可以字节或兆字节为单位来指定。要指定兆字节,那么在值后面追加“M”或“m”。跟踪缓冲区大小必须是 2 兆字节的幂。如果指定的大小不符合此要求,那么缓冲区大小将自动舍入为最接近的 2 的幂。
如果缓冲区太小,那么信息可能会丢失。在缺省情况下,如果缓冲区变满,那么只会保留最新的跟踪信息。如果缓冲太大,可能难以将文件发送至 DB2 支持团队。
如果跟踪时间相对较短的操作(如数据库连接),那么大概 8MB 大小通常就已足够:
C:\> db2trc on -l 8M 已启动跟踪
但是,如果跟踪规模较大的操作或者同时在进行大量工作,那么可能需要较大的跟踪缓冲区。
在大多数平台上,跟踪可按如上所述随时打开并工作。但是,有些特定情况需要注意:
- 在多数据库分区系统上,必须对每个物理(相对于逻辑)数据库分区运行跟踪。
- 在 HP-UX 上,Linux® 和 Solaris 平台上,如果在启动实例后关闭跟踪,那么不管指定大小如何,下一次启动跟踪时都会使用非常小的缓冲区。例如,昨天您通过使用 db2trc on -l 8m 启动了跟踪,然后收集了跟踪信息,然后停止了跟踪(db2trc off)。今天您希望在不关闭并重新启动实例的情况下,运行跟踪并将内存缓冲区设置为 32 MB(db2trc on -l 32m)。您会发现在此情况下,跟踪仅获得很小的缓冲区。为了在这些平台上有效地运行跟踪,应在启动实例前以所需大小缓冲区启动跟踪,并在以后必要时“清除”缓冲区。
3:转储db2跟踪
使用 on 选项启用跟踪工具后,将跟踪实例所作的所有后续工作。
跟踪运行时,可使用 clr 选项来清除跟踪缓冲区。将除去跟踪缓冲区中的所有现有信息。
C:\>db2trc clr 已清除跟踪
要跟踪的操作完成后,请使用后跟跟踪文件名的 dmp 选项将内存缓冲池转储至磁盘。例如:
C:\>db2trc dmp trace.dmp 跟踪已转储至文件
跟踪缓冲区转储至磁盘后,跟踪工具将继续运行。要关闭跟踪,请使用 off 选项:
C:\>db2trc off 已关闭跟踪
4:格式化db2跟踪
db2trc dmp 命令创建的转储文件为二进制格式,并且不可读取。
要验证是否可读取跟踪文件,请对二进制跟踪文件进行格式化以显示流量控制并将格式化输出发送至空设备。下面的示例显示了用于执行此任务的命令:
db2trc flw example.trc nul
其中 example.trc 使用 dmp 选项生成的二进制文件。
此命令的输出将显式地指出读取文件是否有问题,以及跟踪是否已合并。
此时,可将转储文件发送至 DB2® 支持机构。他们会根据您的 DB2 服务级别来对其进行格式化。但有时可能会要求您在发送转储文件之前将其转换为 ASCII 格式。这是通过 flw 和 fmt 选项完成的。必须提供二进制转储文件的名称及要创建的 ASCII 文件的名称:
C:\>db2trc flw trace.dmp trace.flw C:\Temp>db2trc flw trace.dmp trace.flw 总跟踪记录数:18854 截断跟踪:NO 合并跟踪:NO 格式化的跟踪记录数:1513(pid:2196 tid 2148 节点:-1) 格式化的跟踪记录数:100(pid:1568 tid 1304 节点:0) ... C:\>db2trc fmt trace.dmp trace.fmt C:\Temp>db2trc fmt trace.dmp trace.fmt 截断跟踪:NO 合并跟踪:NO 总跟踪记录数:18854 格式化的跟踪记录数:18854
如果此输出指示“合并跟踪”为“YES”,那么表示跟踪缓冲区不够大,无法包含跟踪时间段收集的所有信息。根据情况,合并跟踪也许是可行的。如果您关心的是最新信息(除非指定了 -i 选项,否则这是缺省情况下保留的信息),那么跟踪文件中的内容可能已经足够。但是,如果您关心的是跟踪时间段开始时发生的情况,或者关心发生的所有情况,那么您可能想要使用更大的跟踪缓冲区重做该操作。
将二进制文件格式化为可读文本文件时,有一些选项可用。例如,可使用 db2trc fmt -xml trace.dmp trace.fmt 转换二进制数据并以 XML 可解析格式输出结果。其他选项显示在跟踪命令(db2trc)的详细描述中。
要注意的另一件事是:在 Linux® 和 UNIX® 操作系统上,DB2 在因为严重错误而关闭实例时会自动将跟踪缓冲区转储至磁盘。因此,如果实例异常结束时启用了跟踪,那么会在诊断目录中创建一个文件,其名称为 db2trdmp.###,其中 ### 是数据库分区号。Windows® 平台上不会发生这种情况。在这些情况下,您必须手动转储跟踪。
总之,以下是 db2trc 命令的常用顺序示例:
db2trc on -l 8M db2trc clr <Execute problem recreation commands> db2trc dump db2trc.dmp db2trc off db2trc flw db2trc.dmp <filename>.flw db2trc fmt db2trc.dmp <filename>.fmt db2trc fmt -c db2trc.dmp <filename>.fmtc
-------
db2trc on -f db2trc.dmp -t
db2 connect to <dbname>
db2trc off
db2trc flw db2trc.dmp db2trc.flw -t
db2trc fmt db2trc.dmp db2trc.fmt
发送命令输出 和 生成的 db2trc.flw db2trc.fmt。