解释诊断日志文件条目

您可以使用 db2diag 日志文件分析工具(db2diag)对 db2diag 日志文件进行过滤和格式化。 虽然已使用标准化消息格式将管理通知日志消息记录至 db2diag 日志文件,但还是建议先查看 db2diag 日志文件以了解数据库所发生的情况。

除了使用 db2diag 之外,还可使用文本编辑器来查看怀疑发生了问题的机器上的诊断日志文件。 记录的最新事件在文件的最后面。

注: 管理通知 (instance_name.nfy) 和诊断 (db2diag) 日志 持续 增长为单个日志文件。 如果 diagsize 数据库管理器配置参数设置为非零值,那么管理通知和 db2diag log 文件将变为一系列旋转日志文件(instance_name.N.nfy 和 db2diag.N.log),这些文件具有由 diagsize 配置参数值确定的有限总大小。

以下示例显示样本日志条目的头信息,且标识了日志的所有部分。

注: 并非每个日志条目都将包含所有这些部分。 只有开头的一些字段(时间戳记至 TID)和函数才会显示在所有 db2diag 日志文件记录中。
2007-05-18-14.20.46.973000-240 1  I27204F655 2  LEVEL: Info 3 
PID : 3228 4  TID : 8796 5  PROC : db2syscs.exe 6 
INSTANCE: DB2MPP 7  NODE : 002 8  DB : WIN3DB1 9 
APPHDL : 0-51 10  APPID: 9.26.54.62.45837.070518182042 11 
AUTHID : UDBADM 12  
EDUID : 8796 13  EDUNAME: db2agntp 14  (WIN3DB1) 2
FUNCTION: 15  Db2, data management, sqldInitDBCB, probe:4820
DATA #1 : 16  String, 26 bytes
Setting ADC Threshold to: 
DATA #2 : unsigned integer, 8 bytes 
1048576

图注:

1
消息的时间戳记和时区。
注: db2diag 日志文件中的时间戳记包含时区。 例如:2006-02-13-14.34.35.965000-300,其中 "-300"是 UTC (全球标准时间,以前称为 GMT) 与应用程序服务器上的本地时间 (以分钟为单位) 之间的差异。 因此,-300 表示 UTC - 5 小时,如 EST(东部标准时间)。
2.
记录标识字段。 db2diag 日志文件的 recordID 指定在其中记录当前消息的文件偏移量 (例如, 27204) 和创建 Db2® 诊断日志的平台的消息长度 (例如, 655)。
3.
消息的诊断级别。 级别为Info, Warning, Error, Severe, CriticalEvent.
4。
进程标识。
5
线程标识。
6
进程名称。
7
生成该消息的实例的名称。
8
对于多分区系统,此项为生成该消息的数据库分区。 在非分区数据库中,该值为“000”。
9
数据库名称。
10
应用程序句柄。 此值与 db2pd 输出和锁定转储文件中使用的值相对应。 它包括后跟协调程序索引编号并且用破折号分开的协调程序分区号。
11.
进程正在为其工作的应用程序的标识。 在本示例中,生成消息的进程代表标识为 9.26.54.62.45837.070518182042 的应用程序工作。

TCP/IP 生成的应用程序标识由三个部分组成:

  1. IP 地址:它表示为 32-bit 位数字,最大显示为 8 位十六进制字符。
  2. 端口号:显示为 4 位十六进制字符。
  3. 此应用程序的实例的唯一标识
注: 当 IP 地址或端口号的十六进制版本以 0 到 9 开头时,它们将更改为 G 到 P。 例如,将“0”映射到“G”,“1”映射到“H”,以此类推。 IP 地址 AC10150C.NA04.006D07064947 表示为如下所示:IP 地址仍为 AC10150C,它将转换为 172.16.21.12。 端口号为 NA04。 第一个字符为“N”,它将映射为“7”。 因此,端口号的十六进制为 7A04,它将转换为十进制格式 31236。

此值与 appl_id 监视元素数据相同。 有关如何解释此值的详细信息,请参阅 appl_id 监视元素的文档。

要标识关于特定应用程序标识的信息,执行下列其中一项操作:

  • 使用 Db2 服务器上的 LIST APPLICATIONS 命令或 Db2 Connect 网关上的 LIST DCS APPLICATIONS 来查看应用程序标识列表。 可以根据此列表确定有关遇到错误的客户机的信息,例如其数据库分区名以及其 TCP/IP 地址。
  • 使用 GET SNAPSHOT FOR APPLICATION 命令查看应用程序标识列表。
  • 使用 db2pd -applications -db <dbname> 命令。
12
授权标识。
13
引擎可分派单元标识。
14
引擎可分派单元的名称。
15.
写入信息的产品名称(Db2")、组件名称(数据管理)和函数名称sqlInitDBCB)(以及函数内的探测点(4820))。
16.
被调用函数返回的信息。 可能会返回多个数据字段。

既然已经看到了样本 db2diag 日志文件条目,以下是所有可能字段的列表:

<timestamp><timezone>       <recordID>         LEVEL: <level> (<source>)
PID     : <pid>             TID  : <tid>       PROC : <procName>  
INSTANCE: <instance>        NODE : <node>      DB   : <database>
APPHDL  : <appHandle>       APPID: <appID>	
AUTHID  : <authID>
EDUID   : <eduID>           EDUNAME: <engine dispatchable unit name>
FUNCTION: <prodName>, <compName>, <funcName>, probe:<probeNum>
MESSAGE : <messageID>  <msgText>
CALLED  : <prodName>, <compName>, <funcName>   OSERR: <errorName> (<errno>)
RETCODE : <type>=<retCode> <errorDesc>
ARG #N  : <typeTitle>, <typeName>, <size> bytes
... argument ...
DATA #N : <typeTitle>, <typeName>, <size> bytes
... data ...

尚未在示例中说明的字段包括:

  • <source> 指示记录的错误的来源。 (可在样本的第一行结尾找到。) 可能的值包括:

    • origin-消息由产生错误的函数 (先启点) 记录
    • OS-操作系统已生成错误
    • received-从其他进程 (客户机/服务器) 接收到错误
    • sent-错误已发送到另一个进程 (客户机/服务器)
  • MESSAGE包含正在记录的消息。 它包括:

    • <messageID>-消息号,例如, ECF=0x9000004A 或 DIA8604C
    • <msgText>-错误描述

    如果在请求中未找到CALLED字段,<msgText> 是错误返回的影响CALLED在函数上记录消息的函数 (如 FUNCTION 字段中所指定)

  • CALLED这是返回错误的函数。 它包括:

    • <prodName>-产品名称: "OS" , "Db2" , "Db2 工具" 或 "Db2 公共"
    • <compName>-组件名称 (对于系统调用,为 "-")
    • <funcName>-调用的函数名
  • OSERR这是 CALLED 系统调用返回的操作系统错误。 (可在 CALLED 所在行的结尾找到。) 它包括:
    • <errorName>-特定于系统的错误名称
    • <errno>-操作系统错误号
  • ARG本部分列出了返回了错误的函数调用的自变量。 它包括:
    • <N>-自变量在 "被调用" 函数的调用中的位置
    • <typeTitle>-与第 N 个自变量 typename 关联的标签
    • <typeName>-要记录的自变量类型的名称
    • <size>-要记录的参数的大小
  • DATA这包含由日志记录函数转储的任何额外数据。 它包括:
    • <N>-要转储的数据对象的序号
    • <typeTitle>-要转储的数据的标签
    • <typeName>-要记录的数据字段类型的名称,例如, PD_TYPE_UINT32和 PD_TYPE_STRING
    • <size>-数据对象的大小