Перейти к основному содержанию

RPM — Thread died in Berkeley DB library

Oracle Linux

Свежий баг. Редкий, но встречается. У меня случился на Oracle Linux.

Симптомы только косвенные. Началась утечка CPU на виртуальной машине. Прошло несколько дней, гипервизор стал жаловаться на процессор:

cpu

Смотрю статистику использования CPU гипервизора и вижу такую картину:

cpu

Видно утечку, ищем виновника.

linux

Графики производительности помогают легко найти виртуальную машину с утечкой CPU. Заглянем ей в консоль.

cpu

Опа, процессоры сожраны запросами к RPM. Выполняю:

rpm -qa

Запрос зависает, Ctrl + C со скрежетом убиваем текущий процесс. Заново делаю тот же запрос, вот и виновник торжества:

ошибка: rpmdb: BDB0113 Thread/process 9817/139781811808320 failed: BDB1507 Thread died in Berkley DB library
ошибка: ошибка(5)  db_30973 из dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
ошибка: невозможно открыть индекс Packages используя db5 -  (-30973)

rpm

Быстрое решение проблемы

Пересоздаём базу RPM.

rm -f /var/lib/rpm/__db*
rpm -vv --rebuilddb

Немного терпения.

cpu

С облегчением.

cpu

Еще больше вариантов восстановления

http://wiki.rosalab.ru/ru/index.php/Если_упала_база_RPM

  1. rm -f /var/lib/rpm/__db.*
    /usr/lib/rpm/bin/rpmdbchk
    
  2. db52_recover -vh /var/lib/rpm
  3. perl -MURPM -e 'URPM::DB::convert("/", "btree", 1, 1)'
  4. rm -f /var/lib/rpm/__db*
    rpm -vv --rebuilddb
  5. urpmi.recover --list-safe
    # (найти стабильное состояние и откатить на нужное количество транзакций, обозначенных датами)
    urpmi.recover --transactions --rollback 3
    
  6. # копируем из /var/log последний здоровый rpmpkgs в удобное место.
    cp /var/log/rpmpkgs /home/username
    cp /var/lib/rpm/ /var/lib/rpm-stored
    # чистим
    rm -f /var/lib/rpm/__db*
    rm -f /var/lib/rpm/Packages
    rm -f /var/lib/rpm/log/log*
    # создаём БД
    rpm -vv --rebuilddb
    # проверим
    urpmi wget,urpmi
    # скачаем все пакеты
    cat /home/username/rpmpkgs | xargs urpmi --no-install
    # поставим
    cat /home/username/rpmpkgs | xargs urpmi --justdb
    # или
    cat /home/username/rpmpkgs | xargs rpm -i -v --nodeps --noscripts --notriggers --justdb --excludepath /

Теги

 

Похожие материалы

Установка VMware Tools на Ubuntu

VMware Tools - бесплатный набор утилит для улучшения взаимодействия виртуальной машины и платформы VMware. В Интернете пишут про то, что от установки VMware Tools улучшается производительность виртуальной машины. В качестве примера указывают на то, что только в этом наборе утилит есть драйвера для сетевой карты vmxnet3. Не согласен, драйвера можно и отдельно поставить. В linux так и без этих драйверов сетевая карта работает нормально. А вот если у вас Windows Server - рекомендую vmxnet3, меньше глюков.

Создать символическую ссылку в linux

Содержит адрес нужного файла или директории в файловой системе. При клике открывается файл или директория, на которую ссылается ссылка. Если удалить файл, то ссылка останется, но будет указывать в никуда.

Теги