Приложение 4. Как выполнять ремонт базы данных

We use cookies. Read the Privacy and Cookie Policy

Приложение 4. Как выполнять ремонт базы данных

Вам придется потратить много сил для разрушения базы данных Firebird - система спроектирована так, чтобы выдержать тяжелые удары, которые ломают базы данных в других системах. Вы узнаете о том, что база данных разрушена, если вы не сможете с ней соединиться, не сможете выполнить ее резервное копирование или когда сообщение в протоколе firebird или от gbak -b сообщает вам, что существуют нарушения в базе, или появляются сообщения об ошибке контрольной суммы.

Если вы хотите понять, как могут появиться нарушения в вашей базе данных, вернитесь к разд. "Как разрушить базу данных Firebird" в конце главы 15[166]

Восемь шагов восстановления

В этом приложении описаны шаги, которые вам нужно выполнить при использовании инструментов командной строки gfix или gbak, чтобы попытаться восстановить неповрежденные данные при некоторых видах разрушения. Однако имейте в виду, что существуют отдельные виды разрушения сервера, которые такая процедура не может исправить. См. в приложении 12 ресурсы, доступные для использования в этих случаях.

Для применения gfix и gbak в этой процедуре сделайте текущим каталог Firebird /bin на серверной машине.

Получение исключительного доступа

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

Проверка базы данных требует исключительного доступа к базе данных, иначе вы увидите следующее сообщение при попытке запустить gfix:

OBJECT database_name IS IN USE [Объект имя-базы-данных используется]

To же сообщение может появиться, если вы единственный пользователь, но имеете другую активную транзакцию. Например, утилита isql использует до трех параллельных транзакций. Остановив isql и другие инструменты администратора, вы можете выполнять работу.

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

gfix -sh -force 120 -user SYSDBA-password yourpword