分类: DB2/Informix
2008-05-31 16:44:04
使用用于故障诊断的 IDS 数据库和工具
可以使用各种工具和数据库研究引擎和共享内存结构的状态。本教程讨论以下数据库和工具:
onstat
实用程序
故障诊断是一个反复的过程。要进行故障诊断,就需要了解检查系统的过程。
要想使用这里介绍的各种方法,就需要了解哪些行为是正常的,哪些是异常的。一旦发现了异常情况,就可以使用这些工具进一步探索问题的原因。
本教程将介绍解决以下问题的一般技术:
本教程并不讨论跟踪。
在对 IDS 这样的应用程序进行故障诊断时,其中一个主要问题是要了解从哪里下手。通常,用一个句子描述问题,把问题条理化,这种做法非常有用。条理越接近 IDS 条件,问题解决就越容易。
例如,DBA 可能遇到的一个问题是,一个客户机应用程序似乎被锁定了。
所以,为了从 IDS 的角度考察这个问题,可以这样问:“这个应用程序正在等待什么?”
通过对体系结构进行检查,发现这个应用程序到引擎的入口点是 sqlexec。所以,要问的下一个问题是 “sqlexec 线程是哪一个?”
然后可以执行 onstat -u
来查看所有用户线程,然后就可以与应用程序联系起来(使用 tty 列或用户名)。
现在,通过研究 onstat -u
的标志,可以发现需要的东西。假设标志的第一列是 B。这说明正在等待缓冲区。下面要问的问题是 “哪个缓冲区?谁拥有它?”
执行 onstat -b
并寻找 onstat -u
输出的最后一列中的地址,就会发现拥有这个缓冲区的用户线程。
然后,再通过 onstat -u
的输出了解这个用户线程的会话。
然后,可以运行 onstat -g ses sesid
,了解这个用户线程正在做什么。
还可以通过查询 sysmaster 数据库来收集这一信息。sysmaster 数据库的好处是,可以保存查询供以后使用。所以,在找到问题的原因之后,以后可以用 SQL 重新执行这种方法,而不需要输入命令。这只是个人喜好问题。
在本教程中,将用示例说明如何应用这些技术来查找 IDS 问题的原因。