- 论坛徽章:
- 0
|
学会使用DB2指令及故障诊断
3、查看db2diag.log
有时用SQL代码查询并不能直观地看出故障所在,就要看db2诊断日志了。比如在做db2start时报错:
- CUtester-mymm >; db2start
- 04/20/2005 11:59:47 0 0 SQL5043N Support for one or more communications protocols failed to start successfully. However, core database manager functionality started successfully.
- SQL1063N DB2START processing was successful.
复制代码
直接查看SQL5043并不能确定问题所在,如果查一下db2diag.log,就很清楚了:
- 2005-04-20-11.59.46.114107+480 E33845468C447 LEVEL: Error
- PID : 25032 TID : 1 PROC : db2sysc 0
- INSTANCE: db2inst1 NODE : 000
- FUNCTION: DB2 UDB, common communication, sqlcctcpconnmgr, probe:50
- MESSAGE : ADM7006E The SVCENAME DBM configuration parameter was not
- configured. Update the SVCENAME configuration parameter using the
- service name defined in the TCP/IP services file.
-
复制代码
这样改一下SVCENAME就可以了!
db2诊断日志存在于实例目录下sqllib/db2dump(UNIX下默认,在WIN下存在于实例目录)下,可以通过修改DBM参数DIAGPATH来改变诊断日志目录,该目录还有dump文件及trap文件。诊断日志有五个诊断级别,分别是:
0--不记录诊断信息
1--只记录严重错误
2--记录所有错误
3--记录所有错误和警告(默认)
4--记录所有错误、警告和信息型信息
诊断级别可以通过DBM参数DIAGLEVEL来改变,如果想搜集更多的信息可以将级别改成4,但代价是db2diag.log增长得太快了,要注意文件系统空间不要满掉!一般设成3就够了!
以下是一个db2diag.log文件的示例,可以帮助大家读懂这个文件:
- (1) 2002-05-17-17.30.32.140000 (2) Instance:DB2MPP (3) Node:000
- (4) PID:2204(db2bp.exe) (5) TID:2224 (6) Appid:*LOCAL.DB2MPP.020517213032
- (7) database_utilities (8) sqlubckp (9) Probe:26
- DiagData
- (10) 2cfc ffff
- 2002-05-17-20.17.20.793000 Instance:DB2MPP Node:000
- PID:596(db2syscs.exe) TID:2176 Appid:
- base_sys_utilities sqleMergeSqlca Probe:20 Database:SAMPLE
- Received sqlcode 1496 for request 8000001e from node number 1
- (11) Data Title:SQLCA PID:596 TID:2176 Node:000
- sqlcaid : SQLCA sqlcabc: 136 sqlcode: 1496 sqlerrml: 0
- sqlerrmc:
- sqlerrp : SQLESRSU
- sqlerrd : (1) 0x00000000 (2) 0x00000000 (3) 0x00000000
- (4) 0x00000000 (5) 0x00000000 (6) 0x00000001
- sqlwarn : (1) (2) (3) (4) (5) (6)
- (7) (8) (9) (10) (11)
- sqlstate:
- 1. 表示记这条日志时的时间戳
- 2.实例名. 该例子中的实例名是db2mpp
- 3. 分区号. 在单分区的数据库中该值总为0
- 4. 应用或代理的进程ID.
- 5. 应用或代理的线程ID. 该值只有在windows平台上有效.
- 6. 应用ID. 该值对应于LIST APPLICATIONS命令的输出.每一个应用都有唯一的应用ID.
- 7. 组件名称(component).
- 8. 报错或信息的功能模块名, 该功能模块从属于上面的组件.
- 9. 功能模块的probe point. 对应于返回错误和信息的功能模块的源代码的位置.
- 10. 诊断信息. 该例子中的db2diag.log文件来源于Windows平台, 所以dump的信息是反字节顺序的.为了把该信息转化为sqlcode, 您需要把2cfc ffff转化成为 ffff fc2c同时从十六进制转化为十进制.请注意该值并不是都能转化为有效的sqlcode的.
复制代码
以上这个日志文件是在db27.2下的,在db28.2中,db2diag.log格式进行了改进,变得更加易读:
- 2005-04-06-05.26.53.418280+480 I11170C296 LEVEL: Event
- PID : 43018 TID : 1 PROC : db2flacc
- INSTANCE: db2inst1 NODE : 000
- FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:30
- CHANGE : CFG DBM: "Svcename" From: "" To: "DB2_db2inst1"
- 2005-04-06-05.26.55.895210+480 I11467C395 LEVEL: Warning
- PID : 20886 TID : 1 PROC : db2sysc 0
- INSTANCE: db2inst1 NODE : 000
- FUNCTION: DB2 UDB, routine_infrastructure, sqlerKillAllFmps, probe:5
- MESSAGE : Bringing down all db2fmp processes as part of db2stop
- DATA #1 : Hexdump, 4 bytes
- 0x2FF21760 : 0000 0000 ....
- 2005-04-06-05.26.55.989040+480 I11863C354 LEVEL: Severe
- PID : 21876 TID : 1 PROC : db2hmon 0
- INSTANCE: db2inst1 NODE : 000
- FUNCTION: DB2 UDB, routine_infrastructure, sqlerFmpOneTimeInit, probe:100
- MESSAGE : DiagData
- DATA #1 : Hexdump, 4 bytes
- 0x2FF22690 : FFFF FBEE
复制代码
是不是这个信息更加容易理解啊?而且8.2提供了一个非常方便的诊断日志分析工具db2diag,可以根据需要查看格式化db2diag.log的输出,有兴趣的可以用"db2diag -h"看一下帮助!
4、收集及分析db2trc跟踪信息
发生在AP中的问题用诊断日志往往不能确定,就需要用db2trc问题跟踪了!
有一篇文档讲得很清楚,大家可以看一下:
http://www-128.ibm.com/developer ... 09melnyk/index.html |
|