db2trc 命令控制随 DB2® 提供的跟踪工具。跟踪工具记录有关操作的信息并将此信息格式化为可读格式。
记住,运行跟踪时会增加开销,所以启用跟踪工具可能会影响系统性能。
通常 DB2 支持机构和开发团队使用 DB2 跟踪故障诊断。您可以运行跟踪来获取有关正在调查的问题的信息,但如果您不了解 DB2 源代码,它的用途将十分有限。
即使只要求您获取跟踪文件,您也应该知道如何正确地启动跟踪以及如何转储跟踪文件。
[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 on -u这会提供有关可在启动 DB2 跟踪时指定的所有附加选项(标注为“工具”)的信息。
启用跟踪时,最重要的选项是 -L。它指定用于存储跟踪信息的内存缓冲区的大小。缓冲区大小可以字节或兆字节为单位来指定。要指定兆字节,那么在值后面追加“M”或“m”。跟踪缓冲区大小必须是 2 兆字节的幂。如果指定的大小不符合此要求,那么缓冲区大小将自动舍入为最接近的 2 的幂。
如果缓冲区太小,那么信息可能会丢失。在缺省情况下,如果缓冲区变满,那么只会保留最新的跟踪信息。如果缓冲太大,可能难以将文件发送至 DB2 支持团队。
C:\> db2trc on -l 8M 已启动跟踪
但是,如果跟踪规模较大的操作或者同时在进行大量工作,那么可能需要较大的跟踪缓冲区。
使用 on 选项启用跟踪工具后,将跟踪实例所作的所有后续工作。
跟踪运行时,可使用 clr 选项来清除跟踪缓冲区。将除去跟踪缓冲区中的所有现有信息。
C:\>db2trc clr 已清除跟踪
要跟踪的操作完成后,请使用后跟跟踪文件名的 dmp 选项将内存缓冲池转储至磁盘。例如:
C:\>db2trc dmp trace.dmp 跟踪已转储至文件
跟踪缓冲区转储至磁盘后,跟踪工具将继续运行。要关闭跟踪,请使用 off 选项:
C:\>db2trc off 已关闭跟踪
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