Восстановление базы данных FireBird/InterBase

Введение

Базы данных FireBird и InterBase являются довольно популярными среди разработчиков различных систем. В связи с этим имеется такая особенность у данных БД – повреждаться, как, впрочем, и у других баз данных.

Порой бывает, что восстановить данную БД очень сложно и без платных услуг не обойтись, либо же без платного софта. Но в данной статье мы рассмотрим именно возможность восстановление баз данных FireBird и InterBase бесплатным и платным методами.

Скажу сразу, что таким образом восстанавливаются не все БД, все зависит от тяжести повреждений, но часть данных можно спасти.

Если же подобным методом у Вас не получается восстановить базу данных, то придется пользоваться платными решениями, вплоть до того, что необходимо будет обращаться даже в специальные фирмы. Но опять же, никто не будет гарантировать Вам восстановление данных со 100-процентной уверенностью.

Причины повреждения любых БД схожие: отключение питания компьютера, поврежденный жесткий диск, определенные действия пользователя, другие приложения.

Восстановление базы при помощи утилит gbak и gfix

Это стандартные утилиты, которые идут вместе с сервером FireBird. Обращаться к ним можно при помощи командной строки, либо же любого файлового менеджера, например, Total Commander или Far.

Утилиты gbak и gfix находятся по следующему пути:

c:\Program Files (x86)\Firebird\Firebird_1_5\bin\

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

При таком раскладе:

Командная строка
Командная строка

Необходимо скопировать утилиты gbak и gfix в папку пользователя. Если же я выполню в командной строке команду перехода в папку, где находятся соответствующие утилиты, то переносить мне ничего не потребуется:

Переход в папку через командную строку
Переход в папку через командную строку

Так как я напрямую обращаюсь в папку, где находятся утилиты gbak и gfix, таким образом я могу с легкостью использовать их команды.

Теперь давайте перейдем непосредственно к восстановлению базы данных. Не забудьте сделать копию БД, перед тем как производить над ней какие-либо действия.

1. Устанавливаем логин и пароль для базы данных (системные переменные), чтобы каждый раз не вводить их при обращении к БД, это делается при помощи следующих команд (по умолчанию пользователь SYSDBA, а пароль masterkey):

SET ISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey
Установка системных переменных в командной строке
Установка системных переменных в командной строке

2. Делаем копию БД и работаем только с ней, это делается при помощи команды:

copy database.fdb copydatabase.fdb
Копия БД при помощи комадной строки
Копия БД при помощи командной строки

Перед копированием смотрите, чтобы к базе данных не было никаких подключений, так как копия базы может не создаться, либо же создаться поврежденной (некорректной).

3. Переводим базу данных в режим неисправности. После того, как процесс восстановления с базой данных будет завершен, не забудьте перевести ее в режим онлайн. В режим неисправности переводим при помощи команды (не забываем, что работаем мы с копией базы):

gfix copydatabase.fdb -shut -force 0
Перевод БД в режим неисправность
Перевод БД в режим неисправность

4. Проверяем нашу базу данных на повреждения, делается это при помощи команды:

gfix -v -full copydatabase.fdb

Если же появились ошибки checksum error, то выполняем следующую команду:

gfix -v -ignore copydatabase.fdb

5. Исправляем ошибки при их существовании, выполняем команду:

gfix -mend copydatabase.gdb

При помощи ключа mend происходит пометка поврежденных данных при архивировании БД.

6. Пробуем делать бекап базы при помощи следующей команды:

gbak -b -v -ig -g copydatabase.fdb backupdatabase.fbk
Создание копии базы данных
Создание копии базы данных

Данная команда исключает поврежденные данные при архивировании БД. В итоге в папке у Вас должен появиться файл с расширением fbk – это и есть копия БД, но уже без поврежденных данных.

7. Восстанавливаем базу из копии. Никогда не восстанавливайте базу поверх оригинальной, лучше задайте новое имя БД:

gbak -c -v backupdatabase.fbk newdatabase.fdb

8. Переводим базу данных в режим онлайн:

gfix copydatabase.fdb –online

Если же все у Вас получилось сделать без ошибок, то база данных восстановлена, конечно с определенным процентом потерь данных. Если этого не получилось сделать, при помощи данных действий, то стоит попробовать заархивировать только структуру базы данных и попытаться перенеси данные из поврежденной БД в пустую, при помощи утилиты InterBase DataPump.

Платные способы восстановления

Если же Вам не удалось восстановить базу данных FireBird/InterBase при помощи способа, который описан выше, то можно попробовать платные способы.

Существуют множество платных утилит и приложений, которые способны восстанавливать самые сложные поврежденные базы данных. Имеются также фирмы, которые специализируются на восстановлении данных из поврежденных БД.

Каждый решает сам, как ему действовать в той или иной ситуации. Каждый отталкивается от своего бюджета и знаний. Хочется упомянуть одну интересную программы — IBSurgeon FirstAID, которая является платной, платная только на восстановление и ремонт БД. Диагностика БД, а также просмотр данных в поврежденной БД при помощи данной утилиты является совершенно бесплатной.

Приложение FirstAID может починить даже самые серьезные повреждения в базе данных, если же не удалось сделать, то Вам поможет служба поддержки, которой следует выслать лишь лог с диагностикой базы.

Вот так выглядит просмотр поврежденных данных в БД:

Просмотр данных в поврежденной БД при помощи FirsAID
Просмотр данных в поврежденной БД при помощи FirsAID

А вот так выглядит диагностика БД при помощи утилиты FirsAID:

Диагностика базы данных при помощи FirstAID
Диагностика базы данных при помощи FirstAID

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

Как я сказал ранее, ремонт и восстановление данных из поврежденной БД при помощи утилиты FirsAID является платным, необходимо приобретать лицензию.

Заключение

Бесплатным методом можно восстановить достаточное количество поврежденных БД, все зависит от степени повреждения. Если у Вас такой случай, что восстановить данные при помощи gbak и gfix невозможно, то можно воспользоваться услугами специальных компаний, но опять же, у них также не 100-процентная гарантия, что база будет восстановлена.

Чтобы избежать подобных случаев, старайтесь делать как можно чаще копию базы данных. Это можно сделать сразу при разработке систем, можно сделать при помощи стандартных утилит FireBird/Interbase и планировщика. Если позаботитесь о своевременном создании копии базы данных, то проблем у Вас станет намного меньше.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Была ли эта статья полезна?

Статьи по теме

Оставить комментарий

Пожалуйста, авторизуйтесь чтобы добавить комментарий.
  Подписаться  
Уведомление о