How to repair a corrupt Firebird database?

Запись создана 19 ноября, 2008

Частично повредилась база данных Firebird, ругается и не дает делать бакапы. К счастью в серверной установке Firebird есть утилиты для восстановления БД (если повреждения не серьезные). Ниже листинг батника.
[cc lang=»dos»]
echo подготавливаем базу к дампу
gfix.exe -mend -user SYSDBA -pas masterkey server:c:\databases\base.gdb

echo делаем дамп
gbak.exe -b -g -user SYSDBA -pas masterkey server:c:\databases\base.gdb c:\databases\backup\base.bak

echo переименовываем файл базы
rename c:\databases\base.gdb c:\databases\base.orig

echo восстанавливаем базу из дампа.
gbak.exe -user SYSDBA -pas masterkey C:\databases\backup\base.bak server:c:\databases\base.gdb
[/cc]

Принятые умолчания и пояснения:
c:\databases\base.gdb — путь к файлу бд
server:c:\databases\base.gdb — сетевой путь к файлу бд (server менять на имя машины и БД)
у GFIX есть еще пара ключей. -v проверка БД, и -v -f полная проверка БД Firebird

» Запись из раздела Базы данных | 8 комментариев

Комментарии



8 комментариев to “How to repair a corrupt Firebird database?”

  1. Firebird News » How to fix an corrupt database on 25 ноября, 2008 16:47

    […] Here is the article in russian (gfix is used) Permalink |                       […]

  2. kdv on 25 ноября, 2008 19:14

    очень, конечно, интересно, но
    1. зачем ключ -t при бэкапе?
    2. зачем учите людей ключу -r при ресторе?
    3. убивать базу после бэкапа — это вообще ни в какие ворота. Вы в курсе, что рестор может и не пройти?

    в общем, учиться, учиться и учиться.

  3. admin on 25 ноября, 2008 19:22

    1. -T(RANSPORTABLE) transportable backup — data in XDR format
    2. -R(EPLACE_DATABASE) replace database from backup file
    3. mv/rename

    дома будете хамить и поучать.

  4. kdv on 25 ноября, 2008 19:34

    я не хамлю.

    — Вы наверное не знаете, зачем нужна опция -t. в данном случае она не нужна абсолютно.
    — ключ -r приводит к удалению совпадающей с восстанавливаемой базой данных. И уже столько людей на это напоролось, что давным давно рекомендуется стандартный -c, а также в Firebird 2.0 использование в приведенном Вами виде ключа -r запрещено.

    Удалять ссылку на мою статью тоже было не обязательно. А вот Ваш «пост» наоборот, может навредить людям. «Грохать файл базы» после бэкапа категорически нельзя.

  5. admin on 25 ноября, 2008 21:00

    Чем же плох RANSPORTABLE бакап?

    по поводу REPLACE_DATABASE я тоже вкурсе, маны читать умею. Там где я это делал, особой роли не играл этот ключ.

    Обязательно, не люблю исходящие ссылки без моего ведома. еслиб сайт Ваш не был коммерческим, ссылку бы не тронул.

    ок, для защиты от дурака заменю del на rename.

    В скрипте который отрабатывает у меня по крону, оригинал базы переносится во временную папку. И резервное копирование (позже выложу скрипт) делается 4 раза в сутки.

  6. kdv on 26 ноября, 2008 10:14

    >Чем же плох TRANSPORTABLE бакап?
    он ничем не плох. плохо не знать, в чем состоит «транспортабельность», и указывать опцию, когда она не нужна. -t это формат бэкапа переносимый между железными платформами. Intel, Sparc, RS, HP, и так далее. Поэтому для обычного бэкапа-рестора, и даже при переносе бэкапа с Windows на Linux и обратно — этот ключ абсолютно лишний.
    Можно, но не нужно.

    насчет ссылок и прочего — мне вообще тут эта переписка не нужна, я бы предпочел по email. Но раз Вы аноним, то приходится комментировать в блоге. Моя основная претензия была в том, что хоть мы и занимаемся коммерцией в этой области, лучше бы не иметь новых клиентов, которые будут обращаться к нам после следования Вашим советам в блоге.

  7. admin on 1 декабря, 2008 16:18

    kdv, я вывесил свои контакты на видном месте (посмотреть их до этого можно было во whois).

    давайте итог подведем, единственное что не так было сказанно в этом посте так это про удаление оригинала файла БД. Я это исправил, а человек с мозгами и сам бы догадался что делать манипуляции нужно на отдельной копии базы.

  8. Alexey Kovyazin on 26 ноября, 2010 13:59

    У Вас некорректная команда для восстановления указана

    echo восстанавливаем базу из дампа.
    gbak.exe -user SYSDBA -pas masterkey C:databasesbackupbase.bak server:c:databasesbase.gdb

    Не указан переключатель -c для оcуществления restore.




Ответить