1.问题现象
任何DB2 CLP操作无返回值;
应用程序无返回值;
当以上现象发生,数据库可能已经挂起。

2.问题诊断
根据以下命令,判断数据库实例的确出现异常。​

#ps -ef | grep db2sysc(确认系统存在db2sysc进程)
#su - <db2_instance_name>
$db2gcf -s -p <Partition_Num> -i <db2_instance_name>(确认实例状态为Available)
备注:如果是单分区<Partition_Num>为0,如果是DPF环境,<Partition_Num>为0,1,2,3,4…,n

3.收集数据
利用db2pd收集数据:

mkdir /tmp/$(date +%Y%m%d)
a)收集db2pd -stack all dumpdir=/tmp/$(date +%Y%m%d) -repeat 5信息
b)收集db2pd -latch -repeat 5信息
重新启动后收集db2support
$db2support <output path> -d <db_name> -c -s
收集操作系统snap数据,以便分析数据库实例进程为何出现异常
#snap -ac (example for AIX)

4.恢复步骤
强制杀掉DB2进程

#su - <db2_instance_name>
$db2_kill
在许多异常情况下,数据库实例往往不能正常停止,通过db2stop或db2stop force依然无法停止
a.DB2V9.5以后版本请使用db2_kill
b.如果db2_kill依然无法停止,可以采用ps -ef | grep db2|awk ‘{print $2}’ | xargs kill -9
c.如果第b步不能正常停止,则可以采用ipcs -a | grep -i <instance name>
d.采用ipcrm -m <共享内存id>或者采用ipclean
e.以上办法都不行,则重启机器

验证没有DB2进程存在

#su  -  <db2_instance_name>
$ps -ef | grep db2

启动DB2进程

#su  -  <db2_instance_name>
$db2start

验证DB2数据库操作正常

#su  -  <db2_instance_name>
$db2 connect to <dbname>

对以被强制关闭的数据库存在自动恢复 的情况,在连接数据中如果连接时间很慢可对当前连接查看

$db2 “select * from <schema>.<tabname>”
$db2pd -db <dbname> - tablespaces or
$db2 “select tbsp_name ,tbsp_state from sysibmadm.tbsp_utilization”

版权声明:本文为博主原创文章,未经博主允许不得转载。

DB2