一、经典案例
目前遇到两种由数据库异常导致的问题,这里简单记录下,后续如果有其他类型则继续完善该文档;
案例一:有明显的数据库异常打印
[root@node18 ~]# rpm -qi atop
error: rpmdb: BDB0113 Thread/process 7230/139761069787200 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenvfailchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 - (-30973)
error: cannot open Packages database in /var/lib/rpm
error: rpmdb: BDB0113 Thread/process 7230/139761069787200 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenvfailchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages database in /var/lib/rpm
案例二:无明显数据库异常打印
直接现象是所有与rpm相关的安装查询指令都会卡主,进程处于S状态,无法自行结束。
卡主进程的调用栈如下:
二、解决方案
重新构建rpm数据库,具体步骤如下:
cd /var/lib/rpm #rpmdb所在目录
rm -f __db.* #清除原rpmdb文件
rpm --rebuilddb #重建rpm数据库
yum clean all #清除所有yum的缓存
注意:
类似上述第二种情况,则需要在重构数据库前手动将卡主的进程kill掉;