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日志查看到如下:

linux db2v9.7 意外退出 SQL1072C_第1张图片

发现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

 

你可能感兴趣的:(database)