天地不仁,以万物为刍狗!

DB2故障诊断教程

上一篇 / 下一篇  2008-04-21 17:35:18 / 个人分类:db2

1.故障描述
ztHhq:B/gSb2F0
正确描述你所遇到的故障,是解决问题或者寻求帮助的前提,你需要注意以下几个问题:ITPUB个人空间n3T}cy!g/]9H9j,]

N0[ J8Y Ow[n(A0
oH/K%a4z9r0rH0
故障是什么?ITPUB个人空间6aEgx^1Ky2v,U
故障发生在哪里?ITPUB个人空间[2[U(irD}6J `
故障什么时候发生的?ITPUB个人空间!lp HzFcq
故障是在哪种情况下发生的?
oN T5m-g \X-?h0
是否故障可以重现?
]z5^mS@%FS q Y4u0
i9bx h"jn6fh0ITPUB个人空间)|_ }-w"M5t-u-?(g
如果你是一个技术支持人员(就像我一样),你肯定会遇到一些用户,他们在遇到问题的时候,拿起电话就对你说:我的系统坏了,请赶快过来!。他不能给你任何信息来帮助你分析问题,你必须耐心的问完上面所提到的那几个问题。ITPUB个人空间A:iV p6}
ITPUB个人空间P3L7v?7s
对于故障是什么?这个问题,可以由以下几个方面来回答:谁遇到问题,现象是什么,是否影响应用。比如一个客户报告我的应用失败了。你可以问你的应用是什么,它在处理什么操作,比如客户回答这个应用是处理薪水信息的,它的日志显示一个SQL INSERT操作多次失败,返回值是SQLCODE SQL0289N”。这个SQL0289N将是你处理问题的重要信息。ITPUB个人空间;f}5_]FB
ITPUB个人空间:_5Z,J9w2P9f#if8E
ITPUB个人空间$Xs CF%Y0Z A x#\
要找到故障发生的根源并非易事,这是因为在现象和故障之间可能存在很多层次,另外网络、硬盘、驱动程序也是需要考虑的。如果应用是在本地的,那么我们就不需要考虑网络的问题,反之就要考虑网络方面的问题。这个问题我们将在后面给予更详细的说明,这里先暂停一下。ITPUB个人空间-_U4C6W:h {&{n8Y
ITPUB个人空间$C4\@ja~0}2L.Q
ITPUB个人空间J9jfQ)eEY
提供故障方式的具体时间,有利于支持人员通过log来查找故障的具体信息,特别是只发生一次的故障。如果故障出现了多次,那么我们需要考虑:是否故障定时出现,是否存在自动执行的脚本或者cron job.
7z/gV6r5F U-K6EkK0ITPUB个人空间4s)LXIn a"]"nuF
ITPUB个人空间[S8~1B-{a#Zf"u \
什么情况下才会出现故障,比如:是否执行了其他什么程序,或者执行了一系列操作,或者是否有其他应用也同时发生故障?很多问题的发生都与当时的环境相关,因此当我们毫无头绪时,仔细考虑环境问题。ITPUB个人空间^.p"M%`7o7Q;fr

Y\(b pD*vJ%D0
](zp}#S'Y6Q1rBo0
最后,一个可以重现的故障对于解决故障来说,是理想的情况。首先,你可以使用很多工具来监视故障发生的各种信息,这将有助于深入了解故障本质,更好的解决故障。其次,当你解决完后,也可以确认问题是否真正解决。
2Ecx%xr+gAa7b!DV0
P1v bs"|;{)zrt2noHl0ITPUB个人空间+N"L+p dK%F1P
2.
收集数据
2Y7I+aSo"C)k0ITPUB个人空间 q {ZjL$`
ITPUB个人空间%vR/| zJ eeG
很多情况下,你是无法通过客户告诉你的信息来解决问题的。DB2自身提供了很多信息来帮助你解决问题。这里我们将着重介绍以下文件:(为了便于理解,我就不翻译成中文了)
p8X/Hp2nq~?0
x Hk;HS$a3`4R0ITPUB个人空间 p3e-I;I:\A@+m|
db2diag.log
]h3XC{.V0Trap
文件
#V1IEU)o0Dump
文件
*R4P9fCJ0Messages
文件ITPUB个人空间S"`[9Q;W3yv
ITPUB个人空间o+h G9{}
ITPUB个人空间^0} f@7Lk5C)l9b
db2diag.log
是我们最常用于故障诊断的文件。它一般位于$HOME/sqllib/db2dump/目录下,如果你在改目录下没有找到该文件,那么查看DBM配置变量DIAGPATH来确定具体位置。DBM配置变量DIAGLEVEL控制着哪些信息会写入到db2diag.log里面去,可取值的范围是0-4ITPUB个人空间-arN@5h:Q q@o
0-
没有消息ITPUB个人空间[z%b9~2i1q0]
1-
严重的错误信息ITPUB个人空间o?~@&tX$^;@7D
2-
仅错误信息
pL,|W}\M03-
所有错误和警告信息(缺省值)ITPUB个人空间[ k#x;?em9t.t
4-
所有错误,警告,信息,和内部诊断消息
^,l4k[6E&bY ~n0
一般情况下,缺省值3已经足够来解决问题了。特别情况下,你可以设置为4,来得到更多的信息,但是设置4会引起性能问题,所以解决完问题之后,请修改回3ITPUB个人空间{6K/iVR|:aC

j)[6^_vY.M{d'p0ITPUB个人空间} p^;@ m ceu:X
Trap
文件:当DB2进程收到一个异常信号时,会在诊断目录(DIAGPATH)下产生trap文件。文件名为tpppppp.nnn,其中pppppp表示进程号,nnn表示产生trap的节点。具体信号代号对应,可以查看/usr/include/sys/signal.h文件,本文将在后面详细解释trap文件。ITPUB个人空间4GH4` YzX([/\ q5F;d
ITPUB个人空间`V6ONV9Q3N7U

N.Y%g}$TC:}0Dump
文件:当DB2检测到需要收集内部信息时,就会在诊断目录(DIAGPATH)中产生dump文件。这些文件有两种格式:
BNi#|%F~0
类型一:二进制dump文件ITPUB个人空间/C7OA/sC g;J
格式pppppp.nnntrap文件名意义相同
2})Eq-s'TxYnZ1a0
X `\,M YB,o0
类型二:Locklist文件(锁列表)ITPUB个人空间ad1|wUPf
格式lpppppp.nnnITPUB个人空间'Xe"Tt!\ @

HE H'bL;d&XA"e}0Messages
文件:有些DB2工具:诸如BIND,LOADEXPORTIMPORT,都提供选项可以产生消息文件。这些消息文件记录了工具执行的结果和错误信息,这对处理这些工具执行故障很有必要。
5FkH i1l-V1`B:i0ITPUB个人空间HbPh a
DB2
提供了一个工具db2support,可以自动收集所有DB2和系统诊断信息,最后生产一个db2support.zip文件,这对远程解决问题尤其重要。ITPUB个人空间Nr$\q%xT Bzo
ITPUB个人空间|6a?BX*_ MM.o+Zy
另外,还有一些其他信息需要收集,比如在AIX上,系统的错误信息errpt -a;第三方应用的错误信息;硬件错误信息。ITPUB个人空间U ^ H3e n;y
ITPUB个人空间8RT)D a?V a S
3.
安装问题诊断ITPUB个人空间 _N9a%t&j U'`

_ M0n3zg h0
在处理有关安装问题前,请先确认安装先决条件是否满足。很多奇怪的问题根源就是没有符合安装条件。在DB2安装光盘中都有详细的文档说明,请在安装之前仔细阅读,确保系统硬件和软件都满足安装要求,此外有些内核参数、环境变量也是需要关注的。ITPUB个人空间7Lk%G)O!P7A
ITPUB个人空间.xo!n.e$r D+JP U!M

!{Y~D?0
UNIX上安装DB2,一般都使用db2setup,缺省情况下,会在/tmp下产生诊断日志:db2setup.log。下面是一部分的db2setup.log
,z pnH3g `m }a0ITPUB个人空间 c"nc8_"?-S,A sH
ITPUB个人空间M3KfY0~jTz
restore: 0511-138 Cannot write to fileITPUB个人空间wXx6izG6VCm3~
./usr/lpp/db2_07_01/lib/libdb2e.a.ITPUB个人空间0?&wnL XR#U.V
Restore : There is not enough space in the file system.ITPUB个人空间_5P5Y!{]?V h;qi#p
0503-700 inurest: Error in restoring files
)x,Y+i%mKnMM%@00503-037 inurest: Failure on system call to execute commandITPUB个人空间u"{Y\WW:S*E
/usr/sbin/restbyname -S -xYAqf/cdroms/db2//db2_07_01.db2 -Z
RCS-zYWF0/tmp/inutmp_ZmF7a/sorted.al.
.RT UJ$\up0/usr/lib/instl/instal: There is not enough space in the file system.ITPUB个人空间)H#~"T"[Bk `
ITPUB个人空间&H-B C7m yb1})t[k2F
ITPUB个人空间'LFPNy*S1Q
从这个日志我们可以看出,首先出现的错误是:0511-138 Cannot write to file ./usr/lpp/db2_07_01/lib/libdb2e.a.。紧接着是:There is not enough space in the file system。这表示目标文件系统已经满了,无法再写入新的文件。我们可以用df -k来检查文件系统的使用情况:
X|t.[6u%E9^6S0ITPUB个人空间g!k/_M'^E)Z)e
ITPUB个人空间 xC+qbZE a!{/Y
Filesystem 1024-blocks Free %Used Iused %Iused Mounted onITPUB个人空间 O4~,P3Y B,rRCMS
/dev/hd4 16384 3612 78% 2194 27% /ITPUB个人空间'ie\c7L Y w
/dev/hd2 1556480 69232 96% 17684 5% /usr
S,t5f7l _z K"{ G/mJ0/dev/hd9var 32768 9220 72% 586 8% /var
y,x.~ i3vW q0
T y-@\,u Y ^q"H.|0
GrX~ H&\[0
问题是显而易见的,你应该扩大/usr文件系统。ITPUB个人空间6Gy l \}6s?ir
ITPUB个人空间(B \~ ]2E
并不是所有的问题都是那么容易解决的,有时db2setup.log记录下的信息还不足以解决问题,这时你可以在运行db2setup时加上-d选项。DB2安装程序进入debug模式,会在/tmp下生成db2setup.trc文件,里面包含了更为详细的信息。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-07  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 8071
  • 日志数: 268
  • 图片数: 1
  • 文件数: 2
  • 建立时间: 2007-12-01
  • 更新时间: 2008-09-05

RSS订阅

Open Toolbar