db2trc - 跟踪命令
db2trc 命令用于控制 Db2® 实例或 Db2 管理服务器 (DAS) 的跟踪工具。运行 db2trc 命令时,跟踪工具就会记录有关操作的信息,并将这些信息格式化为可读格式。
启用跟踪工具(缺省情况下关闭)可能会影响系统性能。因此,只有在 Db2 技术支持代表的指示下,才应使用跟踪工具。
Db2 跟踪对于分析复发的可再现问题可能特别有用。
使用 Db2 数据库系统时,您有时可能会遇到错误消息,指示您“获取跟踪并致电 IBM 软件支持人员”、“开启跟踪并检查跟踪记录”或“与技术支持代表联系并提供以下信息:问题描述、SQLCODE、SQLCA 内容(如果有可能)和跟踪文件(如果有可能)”。或者,当您向 IBM 软件支持人员报告问题时,可能会要求您执行跟踪,以捕获有关环境的详细信息。
权限
- SYSADM
- SYSCTRL
- SYSMAINT
- DASADM
需要的连接
无
命令语法
命令参数
- -appid
- 指定要跟踪的应用程序标识。-appid 选项与 on 和 change 选项配合使用。-appid 不能与 -perfcount 选项配合使用。
- -apphdl
- 指定要跟踪的应用程序句柄。-apphdl 选项与 on 和 change 选项配合使用。-apphdl 不能与 -perfcount 选项配合使用。
- -member member_number | member_range
- 指定要跟踪的数据库成员(或分区)。如果未指定此选项,那么会对发出 db2trc 命令的主机上的所有逻辑成员执行该命令。可以逗号分隔的 member_number 列表 (member1, member2) 形式指定多个成员,或使用 member_range,其中 member_range 是成员范围 (member1-member3),或者使用这两种方法的任意组合。
- 所有
- 指定要在 db2nodes.cfg 中定义的所有成员上发出该命令。
-member 选项与 on、change、format(flow 和 format 选项)、stop 以及 off 选项配合使用。有关更多详细信息,请参阅下面的示例 2 和 3。-member 选项不能与 -perfcount 选项配合使用。
- db2
- 指定要在 Db2 实例上执行所有跟踪操作。这是缺省值。
- das
- 指定要在 Db2 管理服务器实例上执行所有跟踪操作。
- cf
- 指定要在 CF 服务器上执行所有跟踪操作。-change、-clear 和 -stop 选项不能与此选项配合使用。
- cfcli
- 指定要在成员上执行所有跟踪操作。注: 要启用 CF 客户机跟踪,必须将环境变量 CA_TRACE_KEY_FILE 设置为现有文件。CF 客户机库使用此文件来创建 SHARED MEMORY 集。这个集合用于收集跟踪数据。另外,此文件的许可权和所有者信息用来设置所创建的 SHARED MEMORY 的许可权和所有者。在此环境变量设置为相同值的情况下启动的任何进程都会使用同一个 SHARED MEMORY 段。Db2 所使用的缺省名称为 ${INSTHOME}/sqllib/tmp/.CF_DB2TRACE.key。此环境变量在 db2profile 和 db2cshrc 文件中自动设置。但是,如果未读取并应用这些文件,您必须手动设置此值。注: CF 客户机跟踪缓冲区不能超过 10 MB。
- on
- 使用此参数可启动跟踪工具。请参阅以下共享跟踪选项小节,以获取参数列表。
- -l [bufferSize]
- 此选项指定跟踪缓冲区的大小和行为。-l 指定保留最新的跟踪记录(即,缓冲区填满时覆盖最前面的记录)。缓冲区大小可以字节或兆字节为单位来指定。要以兆字节为单位指定缓冲区大小,请在缓冲区大小之后添加字符 M | m。例如,要使用 4 MB 的缓冲区启动 db2trc:
缺省值和最大跟踪缓冲区大小随操作系统而异。最小缓冲区大小为 1 MB。缓冲区大小必须是 2 的幂。db2trc on -l 4m - -i [bufferSize]
- 此选项指定跟踪缓冲区的大小和行为。-i 指定保留初始跟踪记录(即,缓冲区填满后,就不再将更多记录写入缓冲区)。缓冲区大小可以字节或兆字节为单位来指定。要以兆字节为单位指定缓冲区大小,请在缓冲区大小之后添加字符 M | m。
- -f filename
- 跟踪到文件时,必须指定标准文件名,如果 -l 或 -i 与 -f 选项配合使用,那么它们的 buffersize 值会限制磁盘上文件的大小。-l 表示保留最新的跟踪记录,并且允许在文件中回绕。-i 表示保留初始跟踪记录,并在达到文件大小限制时停止跟踪。要以兆字节为单位指定文件大小,请在对 -i 和/或 -l buffersize 指定的值之后添加字符 M | m,而对于千兆字节,请添加字符 G | g。
- -cli
- 跟踪 CLI/ODBC 驱动程序和 CLI 应用程序。
- -clitracelevel loglevel
- 此参数从 V11.1 MP2 和 FP1 开始可用。此参数控制对于 CLI/ODBC 驱动程序和 CLI 应用程序,要转储至 CLI 跟踪的信息的日志记录级别。如果开启跟踪时未提供 -cli,那么将忽略此选项。可能的 loglevel 值是 [0-3],每个值的定义如下所示:
- 0 - 记录捕获到的所有信息(当前缺省行为)。
- 1 - 不记录应用程序所提供的数据绑定输入数据。绑定输入数据是指应用程序通过 API 调用(例如,SQLBindParameter()、SQLBindCol() 和 SQLExtendedBind() 等等),使用 rgbValue 应用程序数据指针提供给客户机的数据。
- 2 - 不记录返回到应用程序的绑定输出数据。绑定输出数据是指客户机通过 API 调用 SQLBindParameter()、SQLBindCol() 和 SQLExtendedBind() 等等所设置的应用程序数据指针,使用 rgbValue 应用程序数据指针返回给应用程序的数据。
- 3 - 不记录应用程序所提供的绑定输入数据,以及返回到应用程序的绑定输出数据。
如果开启跟踪时未指定 -cli,那么此选项不适用。db2trc on -cli -clitracelevel 1 -f dumpFile db2trc off db2trc fmt -cli dumpFile clitrcfile.txt - -pattern
- 此参数从 V11.1 MP2 和 FP1 开始可用。此参数允许用户根据搜索模式,将信息记录到 CLI 跟踪中。此选项接受以 ;(分号)字符分隔的多个搜索模式。指定多个搜索模式时,应将其括在双引号内。指定以分号字符分隔的模式时,最多可以指定 10 个搜索模式,而且总长度不能超过 255 个字符。如果指定 10 个以上的搜索模式,那么将只考虑前 10 个搜索模式,而其他则予以忽略。如果长度超过 255 个字符,那么将返回相应错误,并且不会执行任何操作。只能在收集转储文件期间指定此选项,不能在格式化所生成转储文件中的 CLI 跟踪期间指定。搜索模式还可以包含 SELECT%table1 格式。这表示搜索 SELECT 关键字,后跟任何字符,再后跟 table1 关键字。以下示例显示 -pattern 参数的用法:
- 示例 1
以下命令搜索所有含“tab1”模式的语句。与“tab1”模式匹配的语句句柄的所有相关信息都会记录到转储文件中。
db2trc on -cli -pattern tab1 -f file1.dmp - 示例 2
以下命令搜索所有含“tabl”或“tab2”模式的语句。与“tab1”或“tab2”模式匹配的语句句柄的所有相关信息都会记录到转储文件中。这将搜索每一个所准备或执行的 SQL,并记录第一个匹配的模式。
db2trc on -cli -pattern "tab1;tab2" -f file1.dmp - 示例 3以下命令搜索所有含 SELECT 且后跟“tab1”模式的语句。与“SELECT”关键字后跟任意字符再后跟“tab1”关键字匹配的语句句柄的所有相关信息都会记录到转储文件中。
db2trc on -cli -pattern SELECT%tab1 -f file1.dmp
- 示例 1
- -dumpstmt
- 获取在启用 Db2 跟踪之前,CLI 驱动程序所分配的所有语句句柄的详细信息。这些详细信息包括启用 Db2 跟踪之前分配的语句句柄的所有预编译 SQL 语句。-dumpstmt 选项可以随 -cli 选项一起指定,也可以单独指定。同时指定 -dumpstmt 选项与 -m 选项时,掩码必须包含 191 组成部分 (
*.*.191.*.*),以使 -dumpstmt 选项生效。CLI 和 ODBC 应用程序必须具备线程安全性,并且您的操作系统必须支持多线程,才能使用 -dumpstmt 选项启用 Db2 跟踪。-dumpstmt 选项会跟踪使用 CLI 驱动程序的应用程序。
- -errors
- 仅跟踪函数出口上的错误和非零返回码。不能将此选项与 -debug 或 -perfcount 选项一起指定。
- -lc
- 列示 CF 服务器或 CF 客户机的所有有效 CF 跟踪组件和跟踪级别。
- -id [cf-id]
- db2nodes.cfg 文件中指定的 CF 服务器标识。缺省情况下,将会针对所有 CF 服务器执行操作。但是,如果指定了此选项,那么将只影响指定的 CF 服务器。
- -trccom
- 在 CLI/ODBC 跟踪中显示网络请求。
- -stoptrc [-sqlcodes]
- 出现 -sqlcodes 所指定的其中一个 SQLCODE 时停止跟踪。-sqlcodes 是最多 20 个 SQLCODE 的列表(以逗号分隔),这些 SQLCODE 必须以带符号整数形式指定。
- change
- 使用 change 选项可更改生效中的跟踪选项。请参阅以下共享跟踪选项小节,以获取参数列表。
- -resume
- 使用此选项可继续执行暂挂的进程。如果未启用 -suspend,那么无法继续执行。
- 共享的 trace-options
- 在 on 与 change 之间共享的公共跟踪选项。
- -m mask
- 减少所收集或格式化的数据量。跟踪掩码的格式如下所示:types.products.components.functions.categories
掩码值由 IBM 支持人员提供。
该掩码由 5 个部分组成(跟踪记录类型、产品、组件、函数和函数类别)。每一部分都可以由逗号分隔的列表、连字符分隔的范围或单个条目组成。可以使用星号 (*) 来匹配任何内容。可以按名称或对应的编号来指定字段值。可以使用由 products、components 或 functions 部分的名称组成的短掩码格式。示例:
-m "entry,exit.*.SQLO,SQLE.*.*"将掩码设置为
"*.*.*.*.*"相当于不指定掩码。在 Db2 pureScale® 环境中,掩码已重载,因此可以启用 CF 服务器和/或 CF 客户机跟踪。处理 CF 时,使用掩码的方式略有不同。
您可使用 -lc 选项来查找掩码的值。对于 CF 服务器和 CF 客户机,跟踪掩码的各个部分有如下含义:- types 始终为 *
- products 是 CF 或 CFCLI(大小写无关紧要)
- components 是可以使用 -lc 标志列出的一个或多个 CF 服务器或 CF 客户机组件的任意组合
- functions 始终为 *,因为 CF 不支持此功能
- categories 是可以使用 -lc 标志列出的一个或多个 CF 服务器或 CF 客户机跟踪级别的任意组合
-m "*.CF.svr_list.*.CF_TRACE_ERROR,CF_TRACE_ALL" - -p pid [.tid]
-
仅针对指定的进程标识 (pid) 和线程标识 (tid) 启用跟踪工具。如果指定了 tid,那么必须包括句点 (.)。对于一个进程标识,可以指定多个线程标识。一个 pid 的多个 tids 以句点分隔。各个 pid tid 对之间以逗号分隔。最多可以有 64 个 tid 与一个 pid 配对。例如,要对进程 10、20 和 30 启用跟踪,语法为:
要仅对进程 100 的线程 33 以及进程 200 的线程 66 启用跟踪,语法为:db2trc on -p 10,20,30
要对具有线程 1、2、3 和 4 的进程 77 以及具有线程 5、6、7 和 8 的进程 88 启用跟踪,请使用以下语法:db2trc on -p 100.33,200.66db2trc on -p 77.1.2.3.4,88.5.6.7.8 - -c cpid
- 仅跟踪或格式化此同伴进程。
- -rc returnCode
- 将 returnCode 视为系统错误。必须以带符号整数形式指定 returnCode。
- -e maxSysErrors
- 发生 maxSysErrors 系统错误后停止跟踪。
- -t
- 包括时间戳记。
- -debug
- 这是供 IBM 支持人员用于调试的内部选项。不建议使用。
- info
- 以下是此参数所列环境信息的示例:
D:\Program Files\IBM\SQLLIB\BIN>db2trc info Marker : @TRACE@ Trace version : 7.0 Platform : NT Build level : s060629 maxBufferSize : 2097152 bytes (2 MB) auxBufferSize : 6291456 bytes (6 MB) allocationCount : 1 DB2TRCD pid : 2384 DB2TRCD64 pid : 0 Trace destination : <shared memory buffer> debug : disabled debug runtime passno : 0 numSuspended : 0 Trace starting time : 2011-03-25-15.03.58.909713-240 Buffer size : 2097152 bytes (2 MB) Allow buffer to wrap : yes Mask : *.*.*.*.* Timestamps : enabled PID.TID mask : all Fixed data mask #1 : all Fixed data mask #2 : all Max system errors : infinite Treat this rc as sys err: none Member mask : none Application ID mask : none Application Handle mask : none - dump dumpFile
- 将存储在缓冲区中的二进制格式跟踪信息转储至文件。以下命令将信息放入当前目录中名为 db2trc.dmp 的文件:
请随此参数一起指定转储文件名。除非指定了路径,否则二进制格式转储文件会保存在当前目录中。db2trc dump db2trc.dmp- -q
- 静默方式。
- ccfmt destFile
- 转储并格式代码覆盖范围跟踪。请指定转储目标文件名。
- flow dumpFile destFile
- 将跟踪转储至二进制文件后,将其格式化为可读文本文件。请使用 flow 选项来格式化按进程或线程排序的记录。请指定转储文件名,以及要生成的目标文件名。例如:
db2trc flow db2trc.dmp db2trc.flw- -x firstRecord [-lastRecord]
- 仅显示记录号 firstRecord 到 lastRecord。
- -data
- 将任何跟踪记录数据包括在流中。
- -t
- 包括 sec:nsec 格式的时间戳记(如果可用)。
- -wc
- 包括挂钟时间戳记(如果可用)。要使用此选项,必须通过同时指定 -t 选项(用于捕获时间戳记)来开启跟踪。要获取用法示例,请参阅示例 1。
- -mf
- 为每个不同的流生成单独的目标文件。
- -rds
- 包括 RDS 操作员信息(如果可用)。
- format dumpFile destFile
- 将跟踪转储至二进制文件后,将其格式化为可读文本文件。使用 format 选项可按时间顺序格式化记录。
- -x firstRecord [-lastRecord]
- 仅显示记录号 firstRecord 到 lastRecord。
- -r
- 逆序输出。
- -xml
- 以 XML 可解析格式输出数据。
- -c
- 格式化通信缓冲区。
- -cli
- 格式化跟踪二进制文件,以便在可读文本文件中显示 CLI 驱动程序函数和 CLI 应用程序缓冲区。destFile 变量可以是下列其中一个对象:
- 要创建的格式化跟踪文件的名称。
db2trc fmt –cli dumpFile clitrcfile.txt - 含路径名的格式化跟踪文件名。
db2trc fmt –cli dumpFile /TMP/clitrcfile.txt - 用户有权写入的现有目录。
db2trc fmt –cli dumpFile /TMP
destFile 目录中跟踪文件的名称包含 p<pid>t<tid>.cli。如果存在与 destFile 值同名的目录,并且用户对该目录不具有写许可权,那么会返回错误。[processor_ticks.milliseconds - mm/dd/yyyy hour:min:sec.milliseconds]从 Db2 V11.1 M4FP4 开始,使用 db2trc 命令生成的 CLI 跟踪文件也包含 db2 跟踪记录号。CLI 跟踪中 ODBC API 的记录号与生成的流文件和格式文件中存在的这些 API 的记录号相同。
- 要创建的格式化跟踪文件的名称。
- -ncf
- 请勿使用组件定制格式化。
- -errors
- 仅跟踪函数出口上的错误和非零返回码。
- -global
- 指定 db2trc 也在远程主机上运行。 在 Db2 V9.7 FP4 和更高版本的修订包中,此选项已不推荐使用。
- -host hostname
- 指定仅在指定的主机上运行 db2trc。如果未指定此参数,那么将在本地主机上发出此命令。如果指定了多台主机,那么所有主机名都必须有效,此命令才能完成。
- -sdir shared directory path
- 指定共享目录,供 db2trc 命令用来保存适用于 -f 和 dump 参数的文件。
- perffmt dumpFile destFile
- 将包含性能计数器数据的转储文件格式化为可读文本。
- formattedFlow| fflw dumpFile destFile
- 将转储到二进制文件的跟踪格式化为可读文件。此文件中的数据按时间顺序排序,而不是按 PID 和 TID 分组(指定了 -flow 参数时发生的情况)。
- -x firstRecord [-lastRecord]
- 显示记录号 firstRecord 到 lastRecord。
- -data
- 将任何跟踪记录数据包括在流中。
- -t
- 包括 sec:nsec 格式的时间戳记(如果可用)。
- -wc
- 包括挂钟时间戳记(如果可用)。要使用此参数,必须通过同时指定 -t 选项(用于捕获时间戳记)来开启跟踪。
- -rds
- 包括关系数据服务 (RDS) 操作员信息(如果可用)。
- perfrep dumpFiledestFile
- 将转储到二进制文件的跟踪格式化为性能报告文本文件。
- -g
- 按跟踪的成员(节点)号、PID 和 TID 的组合对输出进行分组。
- -sort count|timespent|timeelapsed
- 通过下列其中一种方式对输出进行排序:
- count
- 每个函数的调用次数。
- timespent
- 在每个函数中花费的时间。这是缺省值。
- timeelapsed
- 在每个函数中花费的耗用时间。
- -order asc|ascending|desc|descending
- 指定输出数据的排序顺序:
- asc | ascending
- 升序。
- desc | descending
- 降序。这是缺省值。
- print -stack recordID flowFile
- 针对所指定流文件中指定的记录标识,打印所有堆栈帧的回溯。有关更多详细信息,请参阅示例 5。
- clear
- 清除跟踪缓冲区的内容,特别是正好在连接至特定数据库之前的内容。使用此选项可以从缓冲区中清除与所需数据库建立连接之前累积的无用信息,从而减少收集的信息量。
- stop
- 此收集选项停止随需应变的跟踪;所有进程都暂挂跟踪,但保留跟踪缓冲区的内容,以便稍后可以转储。此操作与 off 选项相对,后者会完全禁用跟踪工具。
- off
- 禁用跟踪工具。将跟踪转储到文件后,可通过输入以下命令禁用跟踪工具:
db2trc off - -id [cf-id]
- db2nodes.cfg 文件中指定的 CF 服务器标识。缺省情况下,将会针对所有 CF 服务器执行操作。但是,如果指定了此选项,那么仅影响指定的 CF 服务器。
- -u
- 提供有关大部分命令行选项的其他信息。命令行条目的一般格式在以下用法说明一节中给出。以下示例针对 DAS 实例,获取转储命令的更多信息:
db2trc das dump -u
示例
- 示例 1
- 要捕获包含挂钟时间戳记的跟踪,在开启跟踪时必须指定 -t 选项,并且必须指定 -t -wc 选项和 flow 选项,以便将挂钟时间戳记输出到可读文本文件中。以下是您可以执行的步骤示例:
- 通过执行以下命令开启跟踪,捕获时间戳记信息,并指定转储文件名:
db2trc on -t -f db2trc.dmp - 在跟踪时间段结束后,通过执行以下命令关闭跟踪:
db2trc off - 要将二进制转储(
.dmp)文件格式化为可读的文本文件(例如,db2trc.flw),请执行以下命令:db2trc flow -t -wc db2trc.dmp db2trc.flw以下是格式化完成时显示的输出示例:Total number of trace records : 3349 Trace truncated : NO Trace wrapped : NO Number of trace records formatted : 43 (pid: 5414 tid 182967198368 node: 0) Number of trace records formatted : 2690 (pid: 29615 tid 182960067008 node: 0) Number of trace records formatted : 118 (pid: 5394 tid 183102335328 node: 0) Number of trace records formatted : 498 (pid: 29616 tid 182965078816 node: -1) - 要查看可读文本文件 db2trc.flw 的内容,请执行以下命令:
more db2trc.flw以下是读取包含挂钟时间戳记信息的可读文本文件内容时显示的输出示例:pid = 5414 tid = 182967198368 node = 0 1 0.000000000 clp_bp_con data [probe 21] 2009-06-16-11.02.32.38407400 2 0.000038000 | sqlossig entry 2009-06-16-11.02.32.38411200 3 0.000050000 | sqlossig exit 2009-06-16-11.02.32.38412400 4 0.000057000 | sqlorque2 entry 2009-06-16-11.02.32.38413100 5 0.000062000 | | sqlogmblkEx entry 2009-06-16-11.02.32.38413600 6 0.000070000 | | | sqloGetPrivatePoolHandle entry 2009-06-16-11.02.32.38414400 7 0.000077000 | | | sqloGetPrivatePoolHandle exit 2009-06-16-11.02.32.38415100 8 0.000088000 | | sqlogmblkEx mbt [Marker:PD_OSS_ALLOCATED_MEMORY] 2009-06-16-11.02.32.38416200 9 0.000092000 | | sqlogmblkEx exit 2009-06-16-11.02.32.38416600 10 0.000094000 | | sqlorqueInternal entry 2009-06-16-11.02.32.38416800 11 0.000096000 | | | sqloSetAlarmApp entry 2009-06-16-11.02.32.38417000 12 0.000099000 | | | | sqloSigMask entry 2009-06-16-11.02.32.38417300 13 0.000101000 | | | | sqloSigMask exit 2009-06-16-11.02.32.38417500 14 0.000103000 | | | | sqlohsig entry 2009-06-16-11.02.32.38417700 15 0.000105000 | | | | sqlohsig exit 2009-06-16-11.02.32.38417900 16 0.000108000 | | | sqloSetAlarmApp exit 2009-06-16-11.02.32.38418200 2825 5.000561000 | | | sqloClearAlarmApp entry 2009-06-16-11.02.37.38463500 2826 5.000576000 | | | | sqloSigMask entry 2009-06-16-11.02.37.38465000 2827 5.000579000 | | | | sqloSigMask exit 2009-06-16-11.02.37.38465300 2828 5.000582000 | | | | sqlohsig entry 2009-06-16-11.02.37.38465600 2829 5.000585000 | | | | sqlohsig exit 2009-06-16-11.02.37.38465900 2830 5.000587000 | | | sqloClearAlarmApp exit 2009-06-16-11.02.37.38466100 2831 5.000589000 | | sqlorqueInternal exit [rc = 0x870F00B9 = -2029059911 = SQLO_SEM_TIMEOUT] 2009-06-16... 2832 5.000592000 | | sqlofmblkEx entry 2009-06-16-11.02.37.38466600 2833 5.000597000 | | sqlofmblkEx mbt [Marker:PD_OSS_FREED_MEMORY] 2009-06-16-11.02.37.38467100 2834 5.000599000 | | sqlofmblkEx exit 2009-06-16-11.02.37.38467300 2835 5.000601000 | sqlorque2 exit [rc = 0x870F00B9 = -2029059911 = SQLO_SEM_TIMEOUT] 2009-06-16-11.02.37.38467500 2836 5.000614000 clp_bp_con data [probe 21] 2009-06-16-11.02.37.38468800 2837 5.000617000 | sqlossig entry 2009-06-16-11.02.37.38469100 2838 5.000620000 | sqlossig exit 2009-06-16-11.02.37.38469400 2839 5.000623000 | sqlorque2 entry 2009-06-16-11.02.37.38469700 2840 5.000626000 | | sqlogmblkEx entry 2009-06-16-11.02.37.38470000 2841 5.000628000 | | | sqloGetPrivatePoolHandle entry 2009-06-16-11.02.37.38470200 2842 5.000631000 | | | sqloGetPrivatePoolHandle exit 2009-06-16-11.02.37.38470500 2843 5.000636000 | | sqlogmblkEx mbt [Marker:PD_OSS_ALLOCATED_MEMORY] 2009-06-16-11.02.37.38471000 2844 5.000638000 | | sqlogmblkEx exit 2009-06-16-11.02.37.38471200 2845 5.000640000 | | sqlorqueInternal entry 2009-06-16-11.02.37.38471400 2846 5.000643000 | | | sqloSetAlarmApp entry 2009-06-16-11.02.37.38471700 2847 5.000646000 | | | | sqloSigMask entry 2009-06-16-11.02.37.38472000 2848 5.000647000 | | | | sqloSigMask exit 2009-06-16-11.02.37.38472100 2849 5.000649000 | | | | sqlohsig entry 2009-06-16-11.02.37.38472300 2850 5.000651000 | | | | sqlohsig exit 2009-06-16-11.02.37.38472500 2851 5.000654000 | | | sqloSetAlarmApp exit 2009-06-16-11.02.37.38472800
- 通过执行以下命令开启跟踪,捕获时间戳记信息,并指定转储文件名:
- 示例 2
- 以下是使用 -member 跟踪掩码的示例
db2trc on -member n1[,n2,n3,n64]使用此命令可指定所要跟踪的数据库成员或分区。注: 必须是整数。如果指定了多个成员,那么必须以逗号分隔。最多可以指定 64 个成员。db2trc chg -member n1[,n2,n3,n64]使用此命令可将成员掩码更改为指定的数据库成员或分区。
db2trc stop -member n1[,n2,n3,n64]使用此命令可从成员掩码中移除成员。从成员掩码中移除最后一个成员时,跟踪就会完全停止,这与运行 db2trc stop 命令的效果相同。- 此命令所发出的成员号必须存在于当前成员掩码中。运行 db2trc info 可显示当前成员掩码。
- 如果在未指定 -member 选项的情况下运行 db2trc on 命令,那么成员掩码中不会有任何成员。这意味着跟踪所有成员。
- 在此命令中指定当前主机中的所有成员(由 db2nodes.cfg 文件定义)相当于运行 db2trc stop。在此情况下,运行不带 -member 选项的 db2trc stop 时,将会对该主机上的所有成员完全停止跟踪。
db2trc off -member n1[,n2,n3,n64]使用此命令可从成员掩码中移除成员。从成员掩码中移除最后一个成员时,将会关闭跟踪,这与运行 db2trc off 的效果相同。- 此命令所发出的成员号必须存在于当前成员掩码中。运行 db2trc info 可显示当前成员掩码。
- 如果在未指定 -member 选项的情况下运行 db2trc on 命令,那么成员掩码中不会有任何成员。这意味着跟踪所有成员。
- 在此命令中指定当前主机中的所有成员(由 db2nodes.cfg 文件定义)相当于运行 db2trc off。在不指定 -member 选项的情况下运行 db2trc off 时,将会在该主机上关闭跟踪
db2trc flw -member n1[,n2,n3,n64]和db2trc fmt -member n1[,n2,n3,n64]使用此命令可指定要包括在格式化跟踪中的成员。
- 示例 3
- 以下是将 -member 跟踪掩码与定义为以下数据的 db2nodes.cfg 配合使用的示例:
0 host1 0 1 host1 1 2 host1 2 3 host2 0 4 host3 0db2trc on[ chg] -member 1,2,3运行 -member 时,成员号会映射到 -member 所指定的相关主机名,然后通过 rah(或 db2_all)命令在相关主机上运行。对于此示例,db2trc -member 1,2 将在 host1 上运行,而 db2trc -member 3 将在 host2 上运行。
db2trc on -host host1,host2db2trc on 将在 host1 和 host2 上运行
db2trc on -member alldb2trc on 将在 host1、host2 和 host3 上运行
- 示例 4
- 以下是使用 -appid 和 -apphdl 参数的示例。
db2trc on -appid appid1,appid2此命令针对特定的应用程序标识开启跟踪。带有 -appid 参数的 db2trc 命令最多支持 12 个应用程序标识。
db2trc chg -appid appid1,appid2此命令更改或重置特定应用程序标识。要进行重置,请运行
db2trc chg -appid none命令。此命令移除掩码中的所有应用程序标识。db2trc on -apphdl apphdl1,apphdl2,apphdl3此命令针对特定的应用程序句柄开启跟踪。此命令最多支持 16 个应用程序句柄。
db2trc chg -apphdl apphdl1,apphdl2,apphdl3此命令更改或重置特定应用程序句柄。要进行重置,请运行
db2trc chg -apphdl none命令。此命令会移除掩码中的所有应用程序句柄
- 示例 5
- 以下示例是样本流文件
test.flw:pid = 1608 tid = 47604608002368 node = 0 1 sqlossig entry [eduid 1 eduname db2sysc] 2 sqlossig exit [rc = 0x840F0001 = -2079391743 = SQLO_ACCD] 3 sqkfFastCommManager::ResourceSelfTuning entry [eduid 1 eduname db2sysc] 4 | sqlogmt entry [eduid 1 eduname db2sysc] 5 | sqlogmt exit 6 sqkfFastCommManager::ResourceSelfTuning exit 7 sqkfFastCommManager::CollectResourceUsageStats entry [eduid 1 eduname db2sysc] 8 | sqlogmt entry [eduid 1 eduname db2sysc] 9 | sqlogmt exit 10 sqkfFastCommMandager::CollectResourceUsageStats exit 11 sqkfFastCommManager::UpdateMemoryConsumptionStats entry [eduid 1 eduname db2sysc] 12 sqkfFastCommManager::UpdateMemoryConsumptionStats exit 13 sqleSyscUpdateDynamicVars entry [eduid 1 eduname db2sysc] 14 | sqloGetSysMonSetting entry [eduid 1 eduname db2sysc] 15 | | sqloGetEnvUnCached entry [eduid 1 eduname db2sysc] 16 | | | EnvPrfOpen entry [eduid 1 eduname db2sysc] 17 | | | | EnvKeyName entry [eduid 1 eduname db2sysc] 19 | | | | | | sqloxltc_app entry [eduid 1 eduname db2sysc] 20 | | | | | | sqloxltc_app exit 21 | | | | | sqloGetUserAttribByName data [probe 770] 22 | | | | | sqloGetUserAttribByName data [probe 820] 23 | | | | | | sqloxult_app entry [eduid 1 eduname db2sysc] 24 | | | | | | sqloxult_app exit 25 | | | | | sqloGetUserAttribByName exit 26 | | | | EnvKeyName exit 27 | | | EnvPrfOpen exit 28 | | sqloGetEnvUnCached exit 29 | sqloGetSysMonSetting exit 30 sqleSyscUpdateDynamicVars exit要打印test.flw文件中第 5 行的所有堆栈帧回溯,请执行以下命令:
或db2trc print -stack 5 test.flwdb2trc print -s 5 test.flw以下是显示的输出:pid = 1608 tid = 47604608002368 node = 0 3 sqkfFastCommManager::ResourceSelfTuning entry [eduid 1 eduname db2sysc] 4 | sqlogmt entry [eduid 1 eduname db2sysc] 5 | sqlogmt exit请注意,test.flw文件中不存在第 18 行。如果指定的记录标识不存在,您会收到错误消息:$ db2trc print -stack 18 test.flw ERROR: Unable to find the Record ID 18 . Exiting.
CF 和 CFCLI 用法示例
- 示例 6
- 要针对
xport_common (CF_TRACE_WARNING)、srv_init (CF_TRACE_PATH|CF_TRACE_ERROR)和srv_common (CF_TRACE_ALL)组件开启跟踪,请运行以下命令:db2trc cf on -m "*.CF.xport_common,srv_init,srv_common.*.CF_TRACE_WARNING,0x09,CF_TRACE_ALL" - 示例 7
- 要针对 CF_TRACE_ALL 级别的所有 CF 客户机组件开启跟踪,请运行以下命令:
db2trc cfcli on - 示例 8
- 要针对
srv_list (CF_TRACE_ERROR)组件以及 CF_TRACE_ALL 级别的所有其他组件开启跟踪,请运行以下命令:db2trc cf on -m "*.CF.srv_list.*.CF_TRACE_ERROR,CF_TRACE_ALL" - 示例 9
- 要针对 CF_TRACE_WARNING 或 CF_TRACE_DEBUG 级别的所有 CF 组件开启跟踪,请运行以下命令:
db2trc cf on -m "*.CF.*.*.CF_TRACE_WARNING|CF_TRACE_DEBUG" - 示例 10
- 要针对 db2nodes.cfg 文件中列示的所有 CF 服务器以及 CF_TRACE_ALL 级别的所有 CF 组件开启跟踪,请运行以下命令:
db2trc cf on - 示例 11
- 要仅针对 db2nodes.cfg 文件中列示的 CF 服务器 129 以及 CF_TRACE_ALL 级别的所有 CF 组件开启跟踪,请运行以下命令:
db2trc cf on -id 129 - 示例 12
- 以下示例显示 perfrep 参数的用法:
- 通过发出以下命令开启跟踪:
db2trc on -t - 执行 Db2 操作,例如,发出以下命令:
db2start - 要将跟踪信息转储至二进制文件,请发出以下命令:
db2trc dump db2trc.dmp - 要将二进制文件格式化为按成员号、PID 和 TID 分组的可读输出,请发出以下命令:
db2trc perfrep -g db2trc.dmp db2trc.perfrep样本输出如下所示:Node : 0 , PID : 12648456 , TID : 258 nCalls TotalElapsed AvgElapsed TotalSpent AvgSpent FunctionName 2 22.163451643 11.081725821 22.163444161 11.081722081 sqlorqueInternal 3 0.097682328 0.032560776 0.097682328 0.032560776 OSSHLibrary::load 1 0.015628456 0.015628456 0.015579146 0.015579146 sqlnlsgetcpcc 1 0.015929874 0.015929874 0.010516227 0.010516227 sqloRunInstance 1 0.007650045 0.007650045 0.006686877 0.006686877 sqloexec 1 0.004468380 0.004468380 0.004468380 0.004468380 sqlosearchpath 1 0.004469429 0.004469429 0.002867957 0.002867957 sqloWatchDogSetup 2 0.049929905 0.024964952 0.002643447 0.001321724 pdLogInternal 10 0.002660025 0.000266002 0.002576667 0.000257667 sqloGetUserAttribByName 3 0.002527244 0.000842415 0.002504231 0.000834744 sqloopenp 2 0.001962144 0.000981072 0.001932671 0.000966335 sqloGetUserAttribById 5 0.001829002 0.000365800 0.001344719 0.000268944 GlobalReg::GlobalReg 15 0.001569204 0.000104614 0.001109852 0.000073990 sqlogmblkEx 1 0.044276370 0.044276370 0.000982115 0.000982115 ossGetCPUInfo 1 22.178500518 22.178500518 0.000686105 0.000686105 sqleWatchDog 3 0.000667789 0.000222596 0.000667789 0.000222596 sqloAddOneReservedHandle 40 0.000720231 0.000018006 0.000604822 0.000015121 GlobalReg::UnpackRecord 5 0.002412400 0.000482480 0.000589444 0.000117889 GenRegBin::GetNext [....] Node : 0 , PID : 11731144 , TID : 2 nCalls TotalElapsed AvgElapsed TotalSpent AvgSpent FunctionName 1 18.300280961 18.300280961 18.300280961 18.300280961 sqloAlarmThreadEntry 1 18.301955934 18.301955934 0.000651340 0.000651340 sqloEDUEntry 10 0.000346784 0.000034678 0.000216876 0.000021688 sqlogmblkEx 1 0.000475853 0.000475853 0.000161166 0.000161166 sqlo_create_init_EDU_data 10 0.000157996 0.000015800 0.000140807 0.000014081 sqlofmblkEx 1 0.000178087 0.000178087 0.000124753 0.000124753 sqloGetShrEDUWaitElem 1 0.000129908 0.000129908 0.000081576 0.000081576 SMemBasePool::getNewChunkSubgroup 1 0.000200591 0.000200591 0.000047364 0.000047364 sqlo_destroy_EDU_data 1 0.000045839 0.000045839 0.000045839 0.000045839 sqlo_waitlist::post 1 0.000031140 0.000031140 0.000024636 0.000024636 SMemSet::getChunksFromTree 1 0.000033143 0.000033143 0.000018288 0.000018288 sqloFreeShrEDUWaitElem 2 0.000016570 0.000008285 0.000016570 0.000008285 sqloMemProtEDU_init 2 0.000013807 0.000006904 0.000013807 0.000006904 SqloMemController::updateCachedMemory 1 0.000059408 0.000059408 0.000013568 0.000013568 sqloPostEDUWaitPost 1 0.000017188 0.000017188 0.000011827 0.000011827 SMemSet::returnContiguousChunks 2 0.000011225 0.000005613 0.000011225 0.000005613 sqlogmt2 [....]
- 通过发出以下命令开启跟踪:
- 示例 13
- 以下示例显示 formattedFlow 参数的用法:
- 通过发出以下命令开启跟踪:
db2trc on -t - 执行 Db2 操作,例如,发出以下命令:
db2start - 要将跟踪信息转储至二进制文件,请发出以下命令:
db2trc dump db2trc.dmp - 要将二进制文件格式化为可读报告,请发出以下命令:
db2trc fflw db2trc.dmp db2trc.fflw样本输出如下所示:PID-TID EduName Node RecNum Function [...] 12648456-258 db2wdog [ 0] 19735 |||cryptContextInit entry 12648456-258 db2wdog [ 0] 19736 |||cryptContextInit data [probe 10] 12648456-258 db2wdog [ 0] 19737 |||cryptContextInit data [probe 100] 12648456-258 db2wdog [ 0] 19738 |||cryptContextInit exit 12648456-258 db2wdog [ 0] 19739 ||sqloWatchDogSetup data [probe 2] 12648456-258 db2wdog [ 0] 19740 ||sqloWatchDogSetup exit 12648456-258 db2wdog [ 0] 19741 ||sqlogmblkEx entry 12648456-258 db2wdog [ 0] 19742 |||sqloGetPrivatePoolHandle entry 12648456-258 db2wdog [ 0] 19743 |||sqloGetPrivatePoolHandle exit 11731144-258 db2sysc [ 0] 19744 sqloGetEnvInternal entry 11731144-258 db2sysc [ 0] 19745 sqloGetEnvInternal exit [rc = 0x870F0104 = -2029059836 = RC_ENV_NOT_FOUND] 12648456-258 db2wdog [ 0] 19746 ||sqlogmblkEx mbt [Marker:PD_OSS_ALLOCATED_MEMORY] 12648456-258 db2wdog [ 0] 19747 ||sqlogmblkEx exit 11731144-258 db2sysc [ 0] 19748 sqloSystemControllerMain entry 11731144-258 db2sysc [ 0] 19749 |sqloChangeProcessName entry 11731144-258 db2sysc [ 0] 19750 |sqloChangeProcessName data [probe 5] 11731144-258 db2sysc [ 0] 19751 |sqloChangeProcessName exit 11731144-258 db2sysc [ 0] 19752 |sqloGetShrEDUWaitElem entry 11731144-258 db2sysc [ 0] 19753 ||sqlo_waitlist::initialize entry 11731144-258 db2sysc [ 0] 19754 ||sqlo_waitlist::initialize exit 11731144-258 db2sysc [ 0] 19755 ||sqlogmblkEx entry 11731144-258 db2sysc [ 0] 19756 ||sqlogmblkEx mbt [Marker:PD_OSS_ALLOCATED_MEMORY] 11731144-258 db2sysc [ 0] 19757 ||sqlogmblkEx exit 11731144-258 db2sysc [ 0] 19758 |sqloGetShrEDUWaitElem data [probe 10] 11731144-258 db2sysc [ 0] 19759 |sqloGetShrEDUWaitElem data [probe 20] 11731144-258 db2sysc [ 0] 19760 |sqloGetShrEDUWaitElem exit 12648456-258 db2wdog [ 0] 19761 |sqloRunInstance data [probe 2] 12648456-258 db2wdog [ 0] 19762 |sqloRunInstance exit 11731144-258 db2sysc [ 0] 19763 |sqloGetKernelThreadIDFromEDUID entry [eduid 258 eduname db2sysc] [...]
- 通过发出以下命令开启跟踪:
用法说明
在执行跟踪的过程中,必须多次发出 db2trc 命令。- 开启跟踪,这会在 Db2 实例启动之后,立即开始收集指定数据并将其存储在缓冲区中
- 在连接至数据库之前清空缓冲区
- 将二进制格式数据转储到转储文件中
- 关闭跟踪
- 将转储文件格式化为易读文本目标文件
- 停止 Db2 实例
- 使用 -l 参数开启跟踪,并设置最大跟踪缓冲区大小
- 启动 Db2 实例
- 清空跟踪缓冲区
db2trc on -i 8m -m "*.*.2.*.*" -t
db2start
db2trc clear
db2 connect to sample
db2trc dump dmp
db2trc off
- 收集选项包括开启或关闭跟踪,指定跟踪缓冲区大小,指定或更改跟踪选项,转储跟踪,以及清空跟踪缓冲区。
- 解析选项包括按进程或线程对格式化跟踪记录进行时间顺序排序。
第一阶段 - 收集
用法:db2trc [facility] <command> [-u]
[facility]
db2 - Db2 实例(缺省值)
das - Db2 管理服务器实例
<command>
change - 更改跟踪选项
clear - 清空跟踪缓冲区
dump - 生成跟踪转储文件
info - 信息
off - 禁用跟踪工具
on - 启用跟踪工具
stop - 停止跟踪
第二阶段 - 解析
用法:db2trc <command> [-u]
<command>
ccfmt - 转储并格式化代码覆盖范围跟踪
flow - 生成控制流图
format - 格式化
info - 信息
perffmt - 格式化性能跟踪
有关更多信息,请对上述任何命令添加“-u”选项
在以上“第二阶段 - 解析”小节中,命令 ccfmt
转储并格式化代码覆盖范围跟踪。代码覆盖范围跟踪是 db2trc 的扩展,用于保存函数入口、出口、探测点和代码路径的计数。您可以使用代码覆盖范围跟踪来收集有关哪些函数的使用量较大,或者哪些函数在测试期间未曾涉及的统计信息。
跟踪数据库服务器时,建议先开启跟踪工具,再启动数据库管理器。对于在任何 UNIX 和 Linux 平台上运行的数据库管理器,这是让其立即了解到跟踪更改的最可靠方法。
cie 组件代码 (155) 的掩码:
db2trc on -m "*.*.155.*.*"当您知道问题与特定数据库分区相关时,请仅跟踪该数据库分区。请使用选项 db2trc on -member NN 来指定要跟踪的数据库分区。
当问题与特定应用程序标识相关时,您可使用 db2trc 选项 db2trc on -appid <appID>,将跟踪限制为仅针对该特定应用程序标识进行。
