The primary log file intended for use by database
and system administrators is the administration notification log.
The db2diag log files are intended for use by IBM Software Support
for troubleshooting purposes.
Administration notification log messages
are also logged to the db2diag log files using
a standardized message format.
The db2diag tool
serves to filter and format the volume of information available in
the db2diag log files. Filtering db2diag log
file records can reduce the time required to locate the records needed
when troubleshooting problems.
Example 1: Filtering the db2diag log
files by database name
If there are several
databases in the instance, and you want to only see those messages
which pertain to the database "SAMPLE", you can filter the
db2diag log
files as follows:
db2diag -g db=SAMPLE
Thus you would only see
db2diag log
file records that contained "DB: SAMPLE", such as:
2006-02-15-19.31.36.114000-300 E21432H406 LEVEL: Error
PID : 940 TID : 660 PROC : db2syscs.exe
INSTANCE: DB2 NODE : 000 DB : SAMPLE
APPHDL : 0-1056 APPID: *LOCAL.DB2.060216003103
FUNCTION: DB2 UDB, base sys utilities, sqleDatabaseQuiesce, probe:2
MESSAGE : ADM7507W Database quiesce request has completed successfully.
Example 2: Filtering the db2diag log
files by process ID
The following command can be used to
display all severe error messages produced by processes running on
partitions 0,1,2, or 3 with the process ID (PID) 2200:
db2diag -g level=Severe,pid=2200 -n 0,1,2,3
Note that this command could have been written a
couple of different ways, including
db2diag -l severe -pid
2200 -n 0,1,2,3. It should also be noted that the
-g option
specifies case-sensitive search, so here "Severe" will work but will
fail if "severe" is used. These commands would successfully retrieve
db2diag log
file records which meet these requirements, such as:
2006-02-13-14.34.36.027000-300 I18366H421 LEVEL: Severe
PID : 2200 TID : 660 PROC : db2syscs.exe
INSTANCE: DB2 NODE : 000 DB : SAMPLE
APPHDL : 0-1433 APPID: *LOCAL.DB2.060213193043
FUNCTION: DB2 UDB, data management, sqldPoolCreate, probe:273
RETCODE : ZRC=0x8002003C=-2147352516=SQLB_BAD_CONTAINER_PATH
"Bad container path"
Example 3: Formatting the db2diag tool
output
The following command filters all records occurring
after January 1, 2006 containing non-severe and severe errors logged
on partitions 0,1 or 2. It outputs the matched records such that
the time stamp, partition number and level appear on the first line,
pid, tid and instance name on the second line, and the error message
follows thereafter:
db2diag -time 2006-01-01 -node "0,1,2" -level "Severe, Error" | db2diag -fmt
"Time: %{ts}
Partition: %node Message Level: %{level} \nPid: %{pid} Tid: %{tid}
Instance: %{instance}\nMessage: @{msg}\n"
An example
of the output produced is as follows:
Time: 2006-02-15-19.31.36.099000 Partition: 000 Message Level: Error
Pid: 940 Tid:940 Instance: DB2
Message: ADM7506W Database quiesce has been requested.
For
more information, issue the following commands:
- db2diag -help provides a short description
of all available options
- db2diag -h brief provides descriptions for
all options without examples
- db2diag -h notes provides usage notes and restrictions
- db2diag -h examples provides a small set of
examples to get started
- db2diag -h tutorial provides examples for all
available options
- db2diag -h all provides the most complete list
of options
Example 4: Filtering messages from different
facilities
The following examples show how to only see messages
from a specific facility (or from all of them) from within the database
manager. The supported facilities are:
- ALL which returns records from all facilities
- MAIN which returns records
from DB2® general diagnostic
logs such as the db2diag log files and the administration
notification log
- OPTSTATS which returns records related to optimizer
statistics
To read messages from the MAIN facility:
db2diag -facility MAIN
To
display messages from the OPTSTATS facility and filter out records
having a level of Severe:
db2diag -fac OPTSTATS -level Severe
To
display messages from all facilities available and filter out records
having instance=harmistr and level=Error:
db2diag -fac all -g instance=harmistr,level=Error
To display all messages from the OPTSTATS facility having
a level of Error and then outputting the Timestamp and PID field in
a specific format:
db2diag -fac optstats -level Error -fmt " Time :%{ts} Pid :%{pid}"
Example 5: Merging files and
sorting records according to timestamps
This example shows
how to merge two or more db2diag log files and
sort the records according to timestamps.
The two
db2diag log
files to merge are the following:
- db2diag.0.log; contains records of Level:Error
with the following timestamps:
- 2009-02-26-05.28.49.822637
- 2009-02-26-05.28.49.835733
- 2009-02-26-05.28.50.258887
- 2009-02-26-05.28.50.259685
- db2diag.1.log; contains records of Level:Error
with the following timestamps:
- 2009-02-26-05.28.11.480542
- 2009-02-26-05.28.49.764762
- 2009-02-26-05.29.11.872184
- 2009-02-26-05.29.11.872968
To merge the two diagnostic log files and sort the records
according to timestamps, execute the following command:
db2diag -merge db2diag.0.log db2diag.1.log -fmt %{ts} -level error
The
result of the merge and sort of the records is the following:
- 2009-02-26-05.28.11.480542
- 2009-02-26-05.28.49.764762
- 2009-02-26-05.28.49.822637
- 2009-02-26-05.28.49.835733
- 2009-02-26-05.28.50.258887
- 2009-02-26-05.28.50.259685
- 2009-02-26-05.29.11.872184
- 2009-02-26-05.29.11.872968
where the timestamps are merged and sorted chronologically.
Example 6: Merging split diagnostic
directory path files from a single host and sorting records by timestamps
This
example shows how to merge files from three database partitions on
the current host. To obtain the split diagnostic directory paths,
the
diagpath database manager configuration parameter
was set in the following way:
db2 update dbm cfg using diagpath '"$n"'
The
following is a list of the three
db2diag log files
to merge:
- ~/sqllib/db2dump/NODE0000/db2diag.log
- ~/sqllib/db2dump/NODE0001/db2diag.log
- ~/sqllib/db2dump/NODE0002/db2diag.log
To merge the three diagnostic log files and sort the records
according to timestamps, execute the following command:
db2diag -merge
Example 7: Merging split diagnostic
directory path files from multiple hosts and database partitions
In
this example, the default diagnostic data directory path was split
according to physical host and database partition by setting the
diagpath database
manager configuration parameter using the following command:
db2 update dbm cfg using diagpath '"$h$n"'
This
example shows how to obtain an output of all the records from all
the diagnostic logs and merge the diagnostic log files from three
database partitions on each of two hosts,
bower and
horton.
The following is a list of the six
db2diag log
files:
- ~/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
To output the records from all six
db2diag log
files, run the following command:
db2diag -global
To
merge all six
db2diag log files in the diagnostic
data directory path from all three database partitions on each of
the hosts
bower and
horton and format
the output based on the timestamp, execute the following command:
db2diag -global -merge -sdir /temp/keon -fmt %{ts}
where
/temp/keon is
a shared directory, shared by the hosts
bower and
horton,
to store temporary merged files from each host during processing.
Example 8: Filtering and merging
only recent diagnostic log entries
In this example,
db2diag log
file records are filtered to display only a specific number of recent
entries. To display the last 5 formatted records for each of the 3
partitions in a partitioned database environment, merged and formatted
by timestamp, enter:
db2diag -lastrecords 5 -global -merge -sdir /home/vbmithun -fmt %{ts}
2010-10-08-04.46.02.092192
2010-10-08-04.46.02.092821
2010-10-08-04.46.02.093497
2010-10-08-04.46.02.094431
2010-10-08-04.46.02.095317
2010-10-08-04.46.05.068648
2010-10-08-04.46.05.069212
2010-10-08-04.46.05.069900
2010-10-08-04.46.05.071008
2010-10-08-04.46.05.071831
2010-10-08-04.46.07.302051
2010-10-08-04.46.07.302727
2010-10-08-04.46.07.303544
2010-10-08-04.46.07.304647
2010-10-08-04.46.07.305391
You can also filter recent diagnostic
log records further to return only messages of a specific level. For
example, to return only those records in the last 10 records that
have a severe message level, enter:
$ db2diag db2diag.log -lastrecords 10 -level Severe -fmt %{ts}
2010-08-11-04.11.33.733807
2010-08-11-04.11.33.735398
Example 9: Archiving the db2diag
log files on an instance-less client
Starting with Version
9.7, Fixpack 4, the
db2diag -archive (or
-A)
option is available with IBM® Data
Server Driver Package and IBM Data
Server for ODBC and CLI. This option enables you to archive the diagnostic
log file on an instance-less client. For example:
$ db2diag -A
db2diag: Moving "/home/usr1/clidriver/db2dump/db2diag.log"
to "/home/usr1/clidriver/db2dump/db2diag.log_2010-09-14-01.16.26"
If you specify options other than
-archive or
-A,
an error message is returned. For example:
$ db2diag -x
db2diag: Unrecognized option: -x
$ db2diag -pid 1234
db2diag: Unrecognized option: -pid