DB2 实例挂起
原创
©著作权归作者所有:来自51CTO博客作者wx62e28ac222a20的原创作品,请联系作者获取转载授权,否则将追究法律责任
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