DB2 V9.7 for Linux, UNIX, and Windows

使用 db2trc 获取 DB2 跟踪

db2trc 命令控制随 DB2® 提供的跟踪设施。跟踪设施记录有关操作的信息并将此信息格式化为可读格式。

记住,运行跟踪时会增加开销,所以启用跟踪设施可能会影响系统性能。

注: 在 Windows 操作系统上,db2trc 命令将跟踪所有属于相同已安装副本的 DB2 实例。在 Linux 和 UNIX 操作系统上,可以单独跟踪 DB2 实例。

通常,IBM 软件支持机构和开发团队使用 DB2 跟踪进行故障诊断。您可以运行跟踪来获取有关正在调查的问题的信息,但如果您不了解 DB2 源代码,它的用途将十分有限。

即使只要求您获取跟踪文件,您也应该知道如何正确地启动跟踪以及如何转储跟踪文件。

注: 您需要 SYSADM、SYSCTRL 或 SYSMAINT 权限的其中一种权限来使用 db2trc
要大致了解可用的选项,执行不带任何参数的 db2trc 命令:
C:\>db2trc 
用法:db2trc (chg|clr|dmp|flw|fmt|inf|off|on) options
有关特定 db2trc 命令参数的更多信息,请使用 -u 选项。例如,要查看有关启动跟踪的更多信息,请执行以下命令:
db2trc on -u
这会提供有关可在启动 DB2 跟踪时指定的所有附加选项(标注为“工具”)的信息。

启用跟踪时,最重要的选项是 -L。它指定用于存储跟踪信息的内存缓冲区的大小。缓冲区大小可以字节或兆字节为单位来指定。要指定兆字节,那么在值后面追加“M”或“m”。跟踪缓冲区大小必须是 2 兆字节的幂。如果指定的大小不符合此要求,那么缓冲区大小将自动舍入为下一个 2 的幂。

如果缓冲区太小,那么信息可能会丢失。在缺省情况下,如果缓冲区变满,那么只会保留最新的跟踪信息。如果缓冲区太大,那么可能难以将文件发送至 IBM 软件支持团队。

如果跟踪时间相对较短的操作(如数据库连接),那么大概 8 MB 大小通常就已足够:
C:\> db2trc on -l 8M 
Trace is turned on

但是,如果跟踪规模较大的操作或者同时在进行大量工作,那么可能需要较大的跟踪缓冲区。

在大多数平台上,跟踪可按如上所述随时打开并工作。但是,有些特定情况需要注意:
  1. 在多数据库分区系统上,必须对每个物理(相对于逻辑)数据库分区运行跟踪。
  2. 在 HP-UX 上,Linux 和 Solaris 平台上,如果在启动实例后关闭跟踪,那么不管指定大小如何,下一次启动跟踪时都会使用非常小的缓冲区。例如,昨天您通过使用 db2trc on -l 8m 启动了跟踪,然后收集了跟踪信息,然后停止了跟踪 (db2trc off)。今天您希望在不关闭并重新启动实例的情况下,运行跟踪并将内存缓冲区设置为 32 MB(db2trc on -l 32m)。您会发现在此情况下,跟踪仅获得很小的缓冲区。为了在这些平台上有效地运行跟踪,应在启动实例前以所需大小缓冲区启动跟踪,并在以后必要时“清除”缓冲区。

为了减少收集或格式化的数据量,db2trc 命令支持若干掩码选项。减少收集的数据量很有用,这是因为它可以减少由于进行跟踪收集所导致的开销并且您可以更有针对性地收集数据。更有针对性地收集数据还可以帮助提高问题诊断速度。

通常应该在 IBM 支持机构的指导下使用 -m 掩码选项。然而,可以使用 -p 掩码选项来仅收集特定进程标识(还可以选择线程标识)的跟踪。例如,要对具有线程 1、2、3 和 4 的进程 77 以及具有线程 5、6、7 和 8 的进程 88 启用跟踪,请使用以下语法:

db2trc on -p 77.1.2.3.4,88.5.6.7.8

使用 trcon 和 troff 脚本来控制跟踪收集

这两个脚本都可以使用单个脚本调用来替换若干手动发出的命令,从而使跟踪收集更简单。

db2trcon 脚本用于打开跟踪并且支持若干选项。可以使用此脚本来将 db2trc 打开一段指定的时间、指定仅收集耗费处理器时间最多的几个引擎可分派单元 (EDU) 的跟踪以及自动生成转储文件、流文件和格式文件。例如,要对耗费处理器时间最多的 5 个 EDU 打开跟踪,将持续时间设置为 45 秒并从运行该脚本时起以 15 秒的时间间隔进行采样,请发出以下命令:

db2trcon -duration 45 -top 5 -interval 15 -flw -fmt

在指定的持续时间后关闭 db2trc 时,db2trcon 会自动生成转储文件、流文件和格式文件。

db2trcoff 用于关闭跟踪并可以使用单个命令自动生成转储文件、流文件和格式文件。例如,要使用 -force 来关闭 db2trc 并生成流文件、格式文件和转储文件,请发出以下命令:

db2trcoff -flw -fmt -force

注意,如果您使用 db2trcon 脚本打开了跟踪并指定了持续时间,那么不需要再另外发出 db2troff 命令。