ISSCloud - Information Systems Solutions

isscloud

How to solve ‘DB_RUNRECOVERY: Fatal error, run database recovery’ in CentOS

How to solve ‘DB_RUNRECOVERY: Fatal error, run database recovery’ in CentOS

While rolling out updates on some servers, and without apparent reason, as yum hadn’t failed or thrown any errors before, it failed with DB_RUNRECOVERY: Fatal error, run database recovery:

yum update
error: rpmdb: BDB0113 Thread/process 26477/140596402444352 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: 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
CRITICAL:yum.main:

Error: rpmdb open failedCode language: Shell Session (shell)

YUM is failing and not accepting any command. While the reason for my YUM database corruption isn’t known, the solution is quite simple and easy to fix with a few steps.

The following commands are performed as root or using sudo:

First lets make a directory to backup the original files

mkdir /tmp/yum_db
mv -v /var/lib/rpm/__db* /tmp/yum_db/

‘/var/lib/rpm/__db.001’ -> ‘/tmp/yum_db/__db.001’
‘/var/lib/rpm/__db.002’ -> ‘/tmp/yum_db/__db.002’
‘/var/lib/rpm/__db.003’ -> ‘/tmp/yum_db/__db.003’Code language: Shell Session (shell)

Now rebuild the yum db:

rpm --rebuilddbCode language: Shell Session (shell)

And lets cleanup in the end!

yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates
Cleaning up list of fastest mirrorsCode language: Shell Session (shell)

And that’s it. After it finished I just had to run yum update again. Went through smoothly and finished without any issue.

yum update
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 29 kB 00:00:00
* base: fs-n.issc.io
* epel: mirror.hosting90.cz
* extras: centos.schlundtech.de
* updates: fs-n.issc.io
base | 3.6 kB 00:00:00
epel | 5.3 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/7): base/7/x86_64/group_gz | 165 kB 00:00:00
(2/7): base/7/x86_64/primary_db | 6.0 MB 00:00:00
(3/7): epel/x86_64/group_gz | 90 kB 00:00:00
(4/7): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(5/7): extras/7/x86_64/primary_db | 153 kB 00:00:00
(6/7): updates/7/x86_64/primary_db | 5.8 MB 00:00:00
(7/7): epel/x86_64/primary_db | 6.9 MB 00:00:00

...Code language: Shell Session (shell)

And don’t forget to clean up the files left at /tmp/yum_db.

Should you have any questions left regarding this article, or if you want to discuss it with other users, feel free to leave a comment. 

Facebook
Twitter
LinkedIn
Picture of Ricardo Mendes

Ricardo Mendes

Ricardo is a Senior Systems Administrator and Consultant at ISSCloud, after +10 years working in Private Telecom. He enjoys writing about Technology, Security & Privacy.

Leave a Reply

Your email address will not be published. Required fields are marked *