linux db2v9.7 意外退出 SQL1072C

Db2数据库错误:

突然收到监控平台报警,db2 50000端口无法访问。进入对应用户查看,查询db2线程已被杀死,尝试再次启动db2,报如下错误。

SQL1072C  The database manager resources are in an inconsistent state.  DB2 may have been incorrectly terminated, or another application may be using system resources in a way which conflicts with DB2's use of system resources.  System resource cleanup may be required

通过db2diag分析,线程被某个应用杀死。这个时候想了下就只有linux kernel有这个权限了。

打开messages日志查看到如下:

发现session被内核关闭了!

查看红色部分是需要重点关注的:

根据上述日志排除:

libdb2e.so.1 此程序映射的内存地址为7f65bldfc000,

segfault at和error 4这两条信息可以得出是内存读出错,6的意义如下,可以对照参考

需要将错误代码转换成二进制

bit2:值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 
值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
bit0: 
值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址

用户无法直接操作内存,由kernel作为介质来进行操。根据上述信息

db2inst1用户在写操作时发生了内存访问越界,导致linux关闭了此seesion。

这里关于底层问题!!!!!,本人技术有限…所有无法在进行分析。

若有兴趣可访问此URL

https://stackoverflow.com/questions/2549214/interpreting-segfault-messages


知道问题为什么会发生后,根据对应操作来进行恢复数据库:

也就是db2 发现通信进程无法通信,我们只需要更新一下这个

 

在数据库用户上运行

$db2_kill

$ipclean

补充说明:

ipclean(如果实例或停止数据库命令都挂起的话,最后采取的方法,清除所有实例资源)

对于要更新的实例,确保已清除了所有 DB2 进程间通信(IPC)。作为实例拥有者,在每个物理节点上运行以下命令:ipclean

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值