db2diag - db2diag 日志分析工具命令

过滤和格式化单个和循环 db2diag 日志文件。 如果设置 diagsize 数据库管理器配置参数,那么 db2diag 命令将从循环 db2diag 日志文件中读取。 否则,缺省情况下,该命令将从缺省 db2diag.log 文件中读取。

授权

需要的连接

命令语法

Read syntax diagramSkip visual syntax diagramdb2diag-global-merge-global-merge-sdirsharedDirPathname filename-facility-facALLMAINOPTSTATS-gfieldPatternList-filterfieldPatternList-gifieldPatternList-gvfieldPatternList-givfieldPatternList-gvifieldPatternList-lastrecordsnumber-of-records-pidprocessIDList-tidthreadIDList-eduidEduIDList-tenantidTenantIDLIst-n-nodenodeList-e-errorerrorList-l-levellevelList-c-count-V-verbose-cbe-v-invert-exist-strict-rcrcListswitch-fmtformatString-o-outputpathName-f-followstartTime:sleepIntervalstartTime:sleepInterval-H-historyhistoryPeriod:historyReferencehistoryPeriod:historyReference-t-timestartTime:endTimestartTime:endTime-A-archivedirName-readfile-ecfid-h-optionList-help-optionList?-optionList-lastlinesnumber-of-lines

命令参数

-global
指定所有主机上的所有数据库分区中的所有 db2diag 日志文件都包含在日志文件处理中。
注: 此选项支持旋转诊断日志文件以及位于拆分诊断数据目录中的文件。 此选项还可以与 -follow 选项结合使用。
-merge
合并诊断日志文件并根据时间戳记对记录进行排序。 此选项支持旋转诊断日志文件以及位于拆分诊断数据目录中的文件。

如果此参数后面没有两个或两个以上以空格分隔的 filename 值,那么将合并由 diagpath 数据库管理器配置参数和 alt_diagpath 数据库管理器配置参数指定的目录中的 db2diag 日志文件。 如果在多个数据库分区之间拆分诊断数据目录路径,那么将仅合并当前主机的数据库分区中的 db2diag 日志文件。

如果仅指定了一个 filename ,或者在 diagpath 数据库管理器配置参数中指定的路径中仅存在一个诊断文件,并且未设置 alt_diagpath 数据库管理器配置参数, 那么该命令将处理单个诊断日志文件,就像未指定 -merge 命令参数一样。

此参数不允许与 -facility-follow-archive 参数一起使用。 从 Db2® 版本 9.7 修订包 7 开始, -merge 参数支持自动合并 alt_diagpath 目录中的 db2diag.log 文件。

-global -merge -sdir sharedDirPathname
同时指定 -global-merge 选项将导致所有要合并的主机上的所有数据库分区中的所有 db2diag 日志文件以及根据时间戳记排序的记录。 此参数支持旋转诊断日志文件以及位于拆分诊断数据目录中的文件。

必须指定 "-sdir sharedDirPathname参数,以临时存储从不同主机获取的合并诊断日志文件。 处理完成后,将删除临时合并的诊断日志文件。 sharedDirPathname变量必须指定一个所有主机都有访问和写入权限的共享目录。

filename
指定要处理的 Db2 诊断日志的一个或多个以空格分隔的路径名。 如果省略文件名,那么将处理当前目录中的 db2diag 日志文件。 如果找不到该文件,那么将搜索由 diagpath 数据库管理器配置参数设置的一个或多个目录。
-facility | -fac
从相应设施读取文件。 设施是记录的逻辑分组。 例如,所有优化器统计信息记录都分组到 OPTSTATS 工具中。 缺省情况下,输出将采用文本格式。 有效的设施选项为以下值:
ALL
从所有设施返回记录。
MAIN
Db2 常规诊断日志 (例如 db2diag 日志文件和循环事件日志) 返回记录。
OPTSTATS
返回与优化器统计信息相关的记录。
-fmt formatString
使用格式字符串formatString 格式化 "db2diag输出,格式字符串包含 "%field、"%{field}、"@field"或 "@{field}形式的记录字段。 %{field}@{field} 用于将字段名称与可能跟在字段名称后面的字母数字 (或任何其他允许的字符) 分隔开。 所有字段名称都不区分大小写。 字段名称可以缩短为识别字段名称而不含糊不清所必需的几个首字符。 此外,别名可以用于具有长名称的字段。 字段名称% 或 @ 之前的前缀指定如果字段为空,那么字段前面的文本是显示 (%) 还是不显示 (@)。

以下字段当前可用:

timestamp | ts
时间戳记。 此字段可分为其组成字段: %tsyear%tsmonth%tsday%tshour%tsmin (分钟) , %tssec (秒) , %tsmsec (对于 UNIX 操作系统为微秒,对于 Windows 操作系统为毫秒)。
timezone | tz
与 UTC 相差的分钟数 (全球标准时间)。 例如, -300 是东部时间。
recordid | recid
记录的唯一字母数字标识,例如 I11455A696。
audience
记录的消息的预期受众。 'E' 指示外部用户 (IBM 客户,服务分析人员和开发者)。 'I' 指示内部用户 (服务分析人员和开发者)。 'D' 指示开发者的调试信息。
level
消息的诊断级别。 级别为 InfoWarningErrorSevereCriticalEvent
source
记录的错误源自的位置: OriginOSReceivedSent
instance | inst
实例名称。
node
数据库分区服务器号。
database | db
数据库名称。
pid
进程标识。
tid
线程标识。
eduid
EDU 标识。
eduname
EDU 名称。
tenantid
租户标识
process
与进程标识关联的名称,使用双引号。 例如,"db2sysc.exe"
product
产品名称。 例如,DB2 COMMON
component
组件名称。
funcname
函数名。
probe
探测器号。
function
完整函数描述: %prod%comp%funcnameprobe:%probe
appid
应用程序标识。 此值与 appl_id 监视元素数据的值相同。 有关如何解释此值的详细信息,请参阅 appl_id-Application ID 监视元素
coordnode
协调程序分区。
coordindex
协调程序索引。
apphdl
应用程序句柄: %coordnode - %coordindex
message | msg
错误消息。
calledprod
返回错误的函数的产品名称。
calledcomp
返回错误的函数的组件名称。
calledfunc
返回错误的函数的名称。
called
返回错误的函数的完整描述,格式为: %calledprod%calledcomp%calledfunc
rcval
返回码值 (32 字节)。
rcdesc
错误描述。
retcode | rc
由名为 %rcval %rcdesc的函数返回的返回码。
errno
系统错误号。
errname
特定于系统的错误名称。
oserror
系统调用返回的操作系统错误,格式为: %errno %errname
callstack
调用堆栈。
datadesc
数据描述。
dataobject
数据对象。
data
消息的完整数据部分,格式为: %datadesc %dataobject
argdesc
参数描述。
argobject
参数对象。
arg
返回错误的函数调用的自变量: %argdesc %argobject
Event descriptions:
impact
用户影响 (仅针对事件)。
startevent
开始事件描述 (*)。
stopevent
停止事件描述 (*)。
changeevent
更改事件描述 (*)。
init
初始化事件描述 (*)。
fini
完成或最终完成事件描述 (*)。
startup
启动事件描述 (*)。
terminate
终止事件描述 (*)。
bringdown
Bringdown 事件描述 (*)。
interrupt
中断事件描述 (*)。
associate
关联事件描述 (*)。
disassociate
解除事件描述 (*) 的关联。
changecfg
更改配置事件描述 (*)。
transfer
传输事件描述 (*)。
dispatch
分派事件描述 (*)。
switch
切换事件描述 (*)。
report
报告事件描述 (*)。
get
获取事件描述 (*)。
free
免费事件描述 (*)。
open
打开事件描述 (*)。
close
关闭事件描述 (*)。
work
工作事件描述 (*)。
wait
等待事件描述 (*)。
available
可用事件描述 (*)。
connect
连接事件描述 (*)。
disconnect
断开事件描述 (*)。
accept
接受事件描述 (*)。
recv
接收事件描述 (*)。
send
发送事件描述 (*)。
create
创建事件描述 (*)。
destroy
破坏事件描述 (*)。
request
请求事件描述 (*)。
reply
应答事件描述 (*)。
dependency
依赖关系事件描述 (*)。
write
写入事件描述 (*)。
read
读取事件描述 (*)。
reset
重置事件描述 (*)。
collect
收集事件描述 (*)。
add
添加事件描述 (*)。
alter
变更事件描述 (*)。
drop
删除事件描述 (*)。
invalidate
使事件描述失效 (*)。
grant
授予事件描述 (*)。
revoke
撤销事件描述 (*)。
(*) Each event field has the following subfields:
{event}type
事件类型 (START , STOP , READ , WRITE 和 GET)。
{event}desc
事件描述 (包含事件信息的头)。
{event}state
事件状态 (成功,失败,启动,停止,进行中,空闲) 或事件进度 (百分比)。
{event}attr
事件属性 (业务级别,高速缓存,同步,异步,内部,外部,逻辑,物理,自动,手动,临时,永久)。
{event}objid
唯一对象标识 (TABLE , CFG 和 DBM)。
{event}objname
事件对象名 (例如, "schema.tablename")。
{event}objdata
对象数据 (如果对象不是字符串或简单整数类型 (例如,数据结构或某些复杂类型))。
{event}qtype
事件限定符类型 (FROM , TO , ON , FOR , AT , BY 和 CONTEXT)。
{event}qname
事件限定符名称或值 (例如, FOR "DB ABC")。
{event}qdhdr
事件限定符数据头 (包含类型,文本描述和数据大小)。 与%{event}qdata 字段一起使用。
{event}qdata
事件限定符数据 (如果限定符不是字符串或简单整数类型 (例如,某些数据结构或复杂类型) 时使用)。

在上述列表中,应该将 {event} 关键字替换为特定事件 (例如,启动,停止,更改,读取或写入) 的事件类型。

要始终显示字段名称前面的文本 (例如,对于必填字段) ,应使用% 字段前缀。 要在此字段包含某些数据时显示字段名称前面的文本,应使用 @ 前缀。 允许将必填字段和可选字段与相应的文本描述组合使用。

在格式字符串中可识别以下特殊字符: \n\r\f\v\t

与其他字段相比,数据和自变量字段可以包含多个部分。 要输出特定节,请在字段名后添加 [n] ,其中 n 是节号 (1≤ n ≤64)。 例如,要输出第一个数据对象和第二个数据描述部分,请使用 %{dataobj}[1]%{datadesc}[2]。 如果未使用 [n] ,那么将使用日志消息中显示的预先格式化的已记录数据输出所记录的所有部分,因此无需在每个数据字段,自变量字段或部分之前添加适用的文本描述和分隔换行符。

-filter fieldPatternList | -g fieldPatternList
fieldPatternList是以逗号分隔的字段格式对列表,格式如下: fieldName operator searchPattern.
运算符可以是下列其中一个值:
=
仅选择包含构成完整词的匹配项的那些记录。 (Word 搜索。)
:=
选择包含匹配项的那些记录,在这些匹配项中,搜索模式可以是较大的表达式的一部分。
!=
仅选择不匹配的行。 (反转词匹配。)
!:=
仅选择搜索模式可以包含在较大表达式中的不匹配行。
^=
选择字段值以指定的搜索模式开头的记录。
!^=
选择字段值未以指定的搜索模式开头的记录。

对于 -fmt 选项,除了% 和 @ 前缀未用于此选项之外,还提供了相同的字段。

-gi fieldPatternList
-g 参数相同,但不区分大小写。
-gv fieldPatternList
搜索与指定模式不匹配的消息。
-gvi | -giv fieldPatternList
-gv相同,但不区分大小写。
-lastrecords number-of-records
显示并过滤 db2diag 日志文件中指定的最后记录数。 对于每个 db2diag 日志文件,此参数将检查指定的记录数是否可用。 如果日志文件中可用的记录数小于您指定的记录数,那么 db2diag 命令将处理该文件中可用的所有记录。 如果使用分割诊断数据目录路径,那么将为每个路径中的每个 db2diag 日志文件返回最后指定的记录数。
-pid processIDList
仅显示列出了进程标识的日志消息。
-tid threadIDList
仅显示列出了线程标识的日志消息。
-eduid EduIDList
从包含一个或多个以逗号分隔的数字值的 EDU 标识列表中查找具有指定 EDU 标识的所有记录。
-tenantidTenantIDList
从包含一个或多个以逗号分隔的数字值的 TENANT 标识列表中查找具有指定 TENANT ID 的所有记录。
-n | -node nodeList
仅显示列出了数据库分区号的日志消息。
-e | -error errorList
仅显示列出了错误号的日志消息。
-l | -level levelList
从严重性级别列表中查找具有指定严重性级别的所有记录,该严重性级别包含一个或多个以逗号分隔的文本值,即: 信息,警告,错误,严重,严重和事件。
-c | -count
显示找到的记录数。
-v | -invert
反转模式匹配以选择与指定模式不匹配的所有记录
-strict
每行仅使用一个 field: value 对显示记录。 将跳过所有空字段。 这可用于脚本以简化解析。
-V | -verbose
输出所有字段,包括空字段。
-exist
定义请求搜索时如何处理记录中的字段。 如果指定了此选项,那么必须存在一个字段才能进行处理。
-cbe
公共基本事件 (CBE) 规范情境数据。
-o | -output pathName
将输出保存到标准 pathName指定的文件中。
-f | -follow
如果输入文件是单个或旋转的 db2diag 日志文件,那么指定在处理输入文件的最后一条记录之后,该工具不会终止。 相反,该命令将在指定的时间间隔 (sleepInterval) 内休眠,然后尝试在输入文件中的进一步记录变为可用时对其进行读取和处理。 仅处理输入文件的最后 8 千字节的记录。

-f 参数可处理旋转 db2diag 日志文件。 例如,如果正在使用的最新旋转诊断日志文件是 db2diag.23.log,那么该命令将读取该文件。 当该文件满足其大小限制时,该命令将读取所创建的下一个循环日志文件,即 db2diag.24.log

当监视由另一进程写入文件的记录时,可以使用此选项。 可以指定 startTime 选项以显示在此时间之后记录的所有记录。 startTime 选项使用以下格式指定: YYYY-MM-DD-hh.mm.ss.nnnnnn,其中
YYYY
指定年份。
MM
指定一年的月份 (0112)。
DD
指定一个月中的某一天 (0131)。
hh
指定一天中的一个小时 (0023)。
mm
指定一小时 (0059) 的分钟。
ss
指定一秒 (0059)。
nnnnnn
在 UNIX 操作系统上指定微秒,在 Windows 操作系统上指定毫秒。
可以省略年份字段后面的部分或全部字段。 如果省略了这些值,那么将使用缺省值。 对于月份和日期,缺省值为 1 ,对于所有其他字段,缺省值为 0

如果诊断日志文件中不存在记录时间戳记的完全匹配,那么将使用早于指定时间戳记的最接近时间。

sleepInterval 选项指定休眠时间间隔 (以秒计)。 如果需要较小的时间单位,那么可以将其指定为浮点值。 缺省值为 2 秒

-H | -history
显示指定时间间隔内记录的消息的历史记录。 可以使用以下选项指定此选项:
historyPeriod
指定从最近记录的记录开始,在 historyPeriod指定的持续时间内显示记录的消息。 historyPeriod 选项使用以下格式指定: Number timeUnit,其中 Number 是时间单位数, timeUnit 指示时间单位类型: M (月) , d (日) , h (小时) , m (分钟) 和 s (秒)。 Number 的缺省值为 30,而 timeUnit 的缺省值为 m
historyPeriod:historyReference
指定显示在 historyReference 指定的开始时间之后的时间段内记录的已记录消息 (如果给出了 historyPeriod 的显式正值) ,或者显示在 historyReference 指定的结束时间之前的时间段内记录的已记录消息 (如果给出了 historyPeriod 的负值, 或缺省值)。
格式为 YYYY-MM-DD-hh.mm.ssnnnnnn,其中:
YYYY
指定年份。
MM
指定一年的月份 (0112)。
DD
指定一个月中的某一天 (0131)。
hh
指定一天中的一个小时 (0023)。
mm
指定一小时 (0059) 的分钟。
ss
指定一秒 (0059)。
nnnnnn
指定微秒 (UNIX 操作系统) 或毫秒 (Windows 操作系统)。
-t | -time
指定时间戳记值。 可以使用下列其中一个或两个选项来指定此选项:
startTime
显示在 startTimestartTime之后记录的所有消息。
:endTime
显示在 endTime 之前以及在 endTime记录的所有消息。
要显示从startTimeendTime 记录的信息,请指定 "-t startTime:endTime
格式为 YYYY-MM-DD-hh.mm.ssnnnnnn,其中:
YYYY
指定年份。
MM
指定一年的月份 (0112)。
DD
指定一个月中的某一天 (0131)。
hh
指定一天中的一个小时 (0023)。
mm
指定一小时 (0059) 的分钟。
ss
指定一秒 (0059)。
nnnnnn
指定微秒 (UNIX 操作系统) 或毫秒 (Windows 操作系统)。
可以省略年份字段后面的部分或全部字段。 如果省略了这些值,那么将使用缺省值。 对于月份和日期,缺省值为 1 ,对于所有其他字段,缺省值为 0

如果诊断日志文件中不存在记录时间戳记的完全匹配,那么将使用最接近指定时间戳记的时间。

-A | -archive dirName
归档单个诊断日志文件和循环诊断日志文件。 指定此选项时,将忽略所有其他选项。 如果指定了一个或多个文件名,那么将单独处理每个文件。 格式为 YYYY-MM-DD-hh.mm.ss的时间戳记将追加到文件名中。

您可以指定要将其归档的文件和目录的名称。 如果未指定目录,那么将在文件所在的目录中归档该文件,并从文件名中抽取目录名称。

如果指定目录但未指定文件名,那么将在当前目录中搜索 db2diag 日志文件。 如果找到该文件,那么将在指定的目录中归档该文件。 如果找不到该文件,那么将在 diagpathalt_diagpath 配置参数指定的目录中搜索 db2diag 日志文件。 如果找到,那么会将其归档到指定的目录中。

如果未指定文件或目录,那么将在当前目录中搜索 db2diag 日志文件。 如果找到,那么会将其归档在当前目录中。 如果找不到该文件,那么将在 diagpathalt_diagpath 配置参数指定的目录中搜索 db2diag 日志文件。 如果找到,那么将在 diagpathalt_diagpath 配置参数指定的目录中对其进行归档。

db2diag -archive 选项随 IBM® Data Server Driver Package 和 IBM Data Server for ODBC 和 CLI 提供。 此选项使您能够归档无实例客户机上的诊断日志文件。 例如:
$ db2diag -A
db2diag: Moving "/home/usr1/clidriver/db2dump/db2diag.log"
         to "/home/usr1/clidriver/db2dump/db2diag.log_2010-09-14-01.16.26"
-readfile
强制从诊断日志文件读取,忽略任何终端输入。 此选项可以在脚本中使用,以保证 db2diag 将从文件而不是终端读取,尤其是在禁用 stdin 或使用自动化工具的情况下。 使用 rahdb2_all 运行 db2diag 命令还需要使用 -readfile 选项。
-rc rcList | switch
以空格分隔的rcList 列表显示特定 ZRC 或 ECF 十六进制或负十进制返回代码的Db2内部错误返回代码说明。 可以通过指定下列其中一个开关来显示 ZRC 或 ECF 返回码的完整列表:
zrc
显示 Db2 ZRC 返回码的简短描述。
ecf
显示 Db2 ECF 返回码的简短描述。
html
以 HTML 格式显示 Db2 ZRC 返回码的简短描述。

当指定此选项时,将忽略所有其他选项,并将输出定向到屏幕。

-ecfid ecfId
显示从数字 ecfId中抽取的函数信息。 指定此选项时,将忽略所有其他选项。
-h | -help | ?
显示帮助信息。 当指定了此选项时,其他所有的选项都会被忽略,且只显示帮助信息。 如果省略了包含一个或多个逗号分隔命令参数的选项列表optionList,则会显示所有可用选项的简短说明列表。 对于选项列表中指定的每个选项,都会显示更详细的信息和使用示例。 可以使用以下开关之一代替optionList参数来修改帮助输出,以显示有关工具及其使用的更多信息:
brief
显示不带示例的所有选项的帮助信息。
examples
显示一些典型示例以帮助使用该工具。
tutorial
显示描述高级功能的示例。
notes
显示使用说明和限制。
all
显示有关所有选项的完整信息,包括每个选项的用法示例。
-lastlines number-of-lines
显示并过滤从 db2diag 日志文件中指定的最后行数。 对于每个 db2diag 日志文件,此参数将检查指定的行数是否可用。 如果日志文件中可用的行数小于您指定的记录数,那么 db2diag 命令将处理该文件中可用的所有行。 如果使用分割诊断数据目录路径,那么将为每个路径中的每个 db2diag 日志文件返回最后指定的行数。

示例

以下是一些示例的列表,这些示例说明了在各种情况下如何使用 db2diag 命令:
  • 要合并诊断数据目录路径中的所有 db2diag 日志文件,请输入以下命令:
    db2diag -merge
    如果根据数据库分区拆分诊断数据目录路径,那么此命令会合并当前主机的所有数据库分区中的 db2diag 日志文件。 如果未拆分诊断数据目录路径,那么该命令将处理单个诊断日志文件,就像未指定 -merge 选项一样。
  • 在此示例中,通过使用以下命令设置 diagpath 数据库管理器配置参数,根据物理主机和数据库分区来拆分缺省诊断数据目录路径:
    db2 update dbm cfg using diagpath '"$h$n"'
    此示例说明了如何获得所有诊断日志中所有记录的输出,以及如何合并 bowerhorton 这两个主机中每个主机上的三个数据库分区中的诊断日志文件。 以下是六个 db2diag 日志文件的列表:
    • ~/sqllib/db2dump/HOST_bower/NODE0000/db2diag.log
    • ~/sqllib/db2dump/HOST_bower/NODE0001/db2diag.log
    • ~/sqllib/db2dump/HOST_bower/NODE0002/db2diag.log
    • ~/sqllib/db2dump/HOST_horton/NODE0003/db2diag.log
    • ~/sqllib/db2dump/HOST_horton/NODE0004/db2diag.log
    • ~/sqllib/db2dump/HOST_horton/NODE0005/db2diag.log
    要输出所有这六个 db2diag 日志文件中的记录,请运行以下命令:
    db2diag -global
    要合并每个主机 bowerhorton 上所有三个数据库分区的诊断数据目录路径中的所有六个 db2diag 日志文件,并根据时间戳记格式化输出,请输入以下命令:
    db2diag -global -merge -sdir /temp/keon -fmt %{ts}
    其中 /temp/keonbowerhorton 这两个主机共享的共享目录,在处理期间用来存储每个主机的临时合并文件。
  • 要显示所有严重错误消息,请输入以下任一命令:
    db2diag -level critical
    db2diag -g 'level=Critical'
  • 要显示进程标识 (PID) 为 52356 的进程在数据库分区 1 , 2 或 3 上生成的所有严重错误消息,请输入以下命令:
    db2diag -g level=Severe,pid=952356 -n 1,2,3
  • 要显示包含数据库 SAMPLE 和实例 aabrashk的所有消息,请输入以下命令:
    db2diag -g db=SAMPLE,instance=aabrashk
  • 要显示包含数据库字段的所有严重错误消息,请输入以下命令:
    db2diag -g db:= -gi level=severe
  • 显示包含 Db2 ZRC 返回码 0x87040055和应用程序标识 G916625D.NA8C.068149162729,输入以下命令:
    db2diag -g msg:=0x87040055 -l Error | db2diag -gi appid^=G916625D.NA
  • 要显示不包含 LOADID 数据的所有消息,请输入以下命令:
    db2diag -gv data:=LOADID
  • 要在应用程序标识字段中仅显示不包含 LOCAL 模式的已记录记录记录,请输入以下任一命令:
    db2diag -gi appid!:=local
    db2diag -g appid!:=LOCAL
    将显示所有不匹配的记录。 要仅输出具有应用程序标识字段的消息,请输入以下命令:
    db2diag -gvi appid:=local -exist
  • 要显示时间戳记为 2003-03-03-12.16.26.230520 的消息之后记录的所有消息,请输入以下命令:
    db2diag -time 2003-03-03-12.16.26.230520
  • 要显示过去三天记录的严重错误,请输入以下命令:
    db2diag -gi "level=severe" -H 3d
  • 要显示与 funcname 字段的 pdLog 模式不匹配的所有日志消息,请输入下列其中一个命令:
    db2diag -g 'funcname!=pdLog'
    db2diag -gv 'funcn=pdLog'
  • 要显示包含从 "base sys" 开始的组件名称的所有严重错误消息,请输入以下命令:
    db2diag -l severe | db2diag -g "comp^=base sys"
  • 要查看 db2diag.log 文件的增长,请输入以下命令:
    db2diag -f db2diag.log
    这将显示写入当前目录中 db2diag.log 文件的所有记录。 记录将在添加到文件时显示。 屏幕将继续显示,直到您按 Ctrl-C。
  • 要将 db2diag.log 的上下文写入 /home/user/Logs 目录中的 db2diag_123.log 文件,请输入以下命令:
    db2diag -o /home/user/Logs/db2diag_123.log
  • 要使用缺省设置从 Perl 脚本调用 db2diag ,请输入:
    system("db2diag -readfile");
  • 这将强制 db2diagdiagpath 配置参数指定的目录处理 db2diag.log/db2diag.*.log 文件 (如果设置了数据库管理器 diagsize 配置参数,那么周转日志)。

  • 要从忽略任何终端输入的指定目录中读取 db2diag.log1 文件,请输入:
    system("db2diag -readfile /u/usr/sqllib/db2dump/db2diag.log1");
  • 要显示对应于 ecfId = 0x1C30000E的函数信息,请输入以下任一命令:
    db2diag -ecfid 0x1C30000E
    db2diag -ecfid 472907790
    这将显示函数名,组件和产品名。
  • 要仅显示包含 eduid = 123的记录,请输入以下命令:
    db2diag -eduid 123
  • 要显示包含 eduid = 123eduid = 5678的所有记录,请输入以下命令:
    db2diag -eduid "123,5678"
  • 要显示线程使用 eduid = 15生成的所有严重错误消息,请输入以下任一命令:
    db2diag -g "level=Severe, eduid=15"
    db2diag -g level=Severe | db2diag -eduid 15
  • 要显示来自数据库分区 1 的最后 5 个格式化记录,请输入:
    db2diag -lastrecords 5 -node 1 -fmt "%{ts} %{node}"
  • 要从所有 db2diag.log 文件中读取最后 10 行,请输入以下命令:

     db2diag -lastlines 10
  • 要合并每个日志文件的最后 20 行中的记录,请执行以下操作:

     db2diag -merge file1 file2 file3... -lastlines 20
  • 要显示来自所有主机的每个 db2diag.log 文件的最后 20 行中的记录,请执行以下操作:

     db2diag -global -lastlines 20
  • 要显示最后 100 行中所有级别为 "错误" 的记录:

    db2diag -g level=Error -lastlines 100

使用说明

  • 每个选项只能显示一次。 它们可以按任何顺序指定,并且可以具有可选参数。 不能组合参数的短名称。 例如,使用 -l -e 而不是 -le
  • 缺省情况下, db2diag 会在当前目录中查找 db2diag 日志文件。 如果找不到该文件,那么接下来将搜索 diagpath 配置参数设置的目录。 如果找不到 db2diag 日志文件,那么 db2diag 将返回错误并退出。
  • 可以在单个命令行上组合过滤和格式化选项,以使用管道执行复杂搜索。 只有在执行所有过滤后,才应使用格式化选项 -fmt-strict-cbe-verbose ,以确保仅过滤具有标准字段的原始记录消息,而不过滤用户定义或省略的那些字段。 使用管道时不需要使用 -
  • 当使用管道并且在命令行上指定了一个或多个文件名时,根据是否指定了 - ,将以不同方式处理 db2diag 输入。 如果省略了 - ,那么将从指定的文件中获取输入。 相反,当指定 - 选项时,将忽略文件名 (即使在命令行上存在) 并使用来自终端的输入。 当使用管道并且未指定文件名时,将以完全相同的方式处理 db2diag 输入,无论是否在命令行上指定了 -
  • 当输出与模式不匹配的所有记录时, -exist 选项会覆盖反转匹配搜索的缺省 db2diag 行为,无论这些记录是否包含正确的字段。 指定 -exist 选项时,将仅处理包含所请求字段的记录并输出这些记录。
  • 如果未指定 -fmt (format) 选项,那么输出的所有消息 (已过滤或未过滤) 与写入诊断日志文件的消息完全相同。 可以使用 -strict-cbe-verbose 选项来更改输出记录格式。
  • -fmt 选项覆盖 -strict-cbe-verbose 选项。
  • 如果指定了 -cbe 选项,并且 db2diag 日志文件已通过网络从原始计算机传输,那么存在一些限制。 db2diag 工具收集有关 Db2 和本地计算机主机名的信息,这意味着本地系统的 Db2 版本和源或报告者 componentID 位置字段可能与原始计算机上使用的相应值不同。
  • 建议在脚本中使用 db2diag 时指定 -readfile 选项。 它将确保从忽略任何终端输入的文件中读取。
  • 通常,退出状态为0如果找到匹配项,并且1如果找不到匹配项。 退出状态为2如果输入数据和模式中存在语法错误,那么输入文件不可访问,或者发现其他错误。
  • 可以在 db2diag 日志文件中找到由 Db2 文本搜索产生的严重错误。
  • 请注意,使用此工具读取和过滤循环 db2diag 日志文件 (当 diagsize 数据库配置参数非零时) 将导致读取和过滤所有循环诊断日志文件 (最多 10 个文件)。
  • 在进行复原时尝试连接到数据库将导致 db2diag.log中出现错误消息。 如果复原命令成功,那么可忽略这些错误消息。