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?”
Ответить
[…] Here is the article in russian (gfix is used) Permalink | […]
очень, конечно, интересно, но
1. зачем ключ -t при бэкапе?
2. зачем учите людей ключу -r при ресторе?
3. убивать базу после бэкапа — это вообще ни в какие ворота. Вы в курсе, что рестор может и не пройти?
в общем, учиться, учиться и учиться.
1. -T(RANSPORTABLE) transportable backup — data in XDR format
2. -R(EPLACE_DATABASE) replace database from backup file
3. mv/rename
дома будете хамить и поучать.
я не хамлю.
— Вы наверное не знаете, зачем нужна опция -t. в данном случае она не нужна абсолютно.
— ключ -r приводит к удалению совпадающей с восстанавливаемой базой данных. И уже столько людей на это напоролось, что давным давно рекомендуется стандартный -c, а также в Firebird 2.0 использование в приведенном Вами виде ключа -r запрещено.
Удалять ссылку на мою статью тоже было не обязательно. А вот Ваш «пост» наоборот, может навредить людям. «Грохать файл базы» после бэкапа категорически нельзя.
Чем же плох RANSPORTABLE бакап?
по поводу REPLACE_DATABASE я тоже вкурсе, маны читать умею. Там где я это делал, особой роли не играл этот ключ.
Обязательно, не люблю исходящие ссылки без моего ведома. еслиб сайт Ваш не был коммерческим, ссылку бы не тронул.
ок, для защиты от дурака заменю del на rename.
В скрипте который отрабатывает у меня по крону, оригинал базы переносится во временную папку. И резервное копирование (позже выложу скрипт) делается 4 раза в сутки.
>Чем же плох TRANSPORTABLE бакап?
он ничем не плох. плохо не знать, в чем состоит «транспортабельность», и указывать опцию, когда она не нужна. -t это формат бэкапа переносимый между железными платформами. Intel, Sparc, RS, HP, и так далее. Поэтому для обычного бэкапа-рестора, и даже при переносе бэкапа с Windows на Linux и обратно — этот ключ абсолютно лишний.
Можно, но не нужно.
насчет ссылок и прочего — мне вообще тут эта переписка не нужна, я бы предпочел по email. Но раз Вы аноним, то приходится комментировать в блоге. Моя основная претензия была в том, что хоть мы и занимаемся коммерцией в этой области, лучше бы не иметь новых клиентов, которые будут обращаться к нам после следования Вашим советам в блоге.
kdv, я вывесил свои контакты на видном месте (посмотреть их до этого можно было во whois).
давайте итог подведем, единственное что не так было сказанно в этом посте так это про удаление оригинала файла БД. Я это исправил, а человек с мозгами и сам бы догадался что делать манипуляции нужно на отдельной копии базы.
У Вас некорректная команда для восстановления указана
echo восстанавливаем базу из дампа.
gbak.exe -user SYSDBA -pas masterkey C:databasesbackupbase.bak server:c:databasesbase.gdb
Не указан переключатель -c для оcуществления restore.