Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 系統 yum 資料庫損毀報錯「Fatal error, run database recovery」的極速修復

編輯:關於 Linux

執行 yum 指令時出現 rpmdb: Thread/process ... failed: Thread died in Berkeley DB library、error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery,表示 RPM 資料庫(Berkeley DB)因進程異常中斷(如 yum upgrade 被 kill、網路中斷、電源中斷)導致損毀。修復僅需三條指令。

yum 資料庫損毀報錯畫面

錯誤現象

[root@localhost byrd]# yum clean all
rpmdb: Thread/process 17911/140557035468544 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

極速修復三步驟

# 1. 刪除損毀的 Berkeley DB 環境檔案(__db.001, __db.002, lock 等)
rm -f /var/lib/rpm/__db*

# 2. 重建 RPM 資料庫索引
rpm --rebuilddb

# 3. 清理 yum 快取並驗證
yum clean all

原理解析

  • /var/lib/rpm/__db* 是 Berkeley DB 的共享記憶體環境檔案,進程異常退出時未正常關閉,導致鎖殘留、校驗和失效。
  • rpm --rebuilddb 會掃描 /var/lib/rpm/Packages 主資料庫,重新建立所有索引(Name、Provides、Requires 等),並產生乾淨的 __db* 環境檔。
  • 操作通常在 10~30 秒內完成,資料不會遺失(套件安裝記錄保留在 Packages 檔中)。

預防建議

  1. 避免在 yum 交易進行中強制 kill -9 或斷電。
  2. 定期備份 /var/lib/rpm 目錄(如每日 tar czf rpmdb_$(date +%F).tar.gz /var/lib/rpm)。
  3. 生產環境建議啟用 yum-cron 自動更新,而非手動長時間運行 yum upgrade。

遇到此錯誤無需驚慌,三條指令即可讓 yum 重獲新生。

Copyright © Windows教程網 All Rights Reserved