Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Шрифт:
http://kinterbasdb.sourceforge.net/.
Perl
DBI - это модуль интерфейса с базой данных для Perl. Он определяет набор методов, переменных и соглашений, которые предоставляют согласованный интерфейс с базой данных, зависящий от фактически используемой базы данных.
DBD::InterBase являются открытыми кодами драйвера DBD для Firebird и InterBase. Располагаются на SourceForge . Проект приглашает к участию разработчиков и пользователей.
Поддержка: присоединяйтесь к списку переписки на/mailman/listinfo/dbi-inter-base-devel.
Загрузка:
Приложение 4. Как выполнять ремонт базы данных
Вам придется потратить много сил для разрушения базы данных Firebird - система спроектирована так, чтобы выдержать тяжелые удары, которые ломают базы данных в других системах. Вы узнаете о том, что база данных разрушена, если вы не сможете с ней соединиться, не сможете выполнить ее резервное копирование или когда сообщение в протоколе firebird или от gbak -b сообщает вам, что существуют нарушения в базе, или появляются сообщения об ошибке контрольной суммы.
Если вы хотите понять, как могут появиться нарушения в вашей базе данных, вернитесь к разд. "Как разрушить базу данных Firebird" в конце главы 15 [166]
Восемь шагов восстановления
В этом приложении описаны шаги, которые вам нужно выполнить при использовании инструментов командной строки gfix или gbak, чтобы попытаться восстановить неповрежденные данные при некоторых видах разрушения. Однако имейте в виду, что существуют отдельные виды разрушения сервера, которые такая процедура не может исправить. См. в приложении 12 ресурсы, доступные для использования в этих случаях.
166
Во время написания этой книги автор услышала о первом случае нового способа разрушения баз данных. Жертва проигнорировала все советы и разместила базу данных в каталоге NFS. После этого продолжалось соединение клиентов с базой данных клиентов через два Классических сервера Firebird 1.5 с различных машин, ни одна из которых не была владельцем жесткого диска, на котором находилась база данных. В результате база данных была разру-
Для применения gfix и gbak в этой процедуре сделайте текущим каталог Firebird /bin на серверной машине.
Получение исключительного доступа
Первым делом, что нужно выполнить, когда появилось сообщение о разрушении, - это отключить всех пользователей от системы. Не позволяйте никому пытаться продолжить работу. Продолжение попыток использования базы данных может сделать восстанавливаемую базу данных невосстанавливаемой.
Проверка базы данных требует исключительного доступа к базе данных, иначе вы увидите следующее сообщение при попытке запустить gfix:
OBJECT database_name IS IN USE [Объект имя-базы-данных используется]
To же сообщение может появиться, если вы единственный пользователь, но имеете другую активную транзакцию. Например, утилита isql использует до
Для получения исключительного доступа выполните останов базы данных, находясь пользователем SYSDBA или пользователем, являющимся владельцем базы данных. Подробности см. в главе 39. Например, следующая команда заблокирует все другие попытки соединения с базой данных и приведет к ее останову через две минуты:
gfix -sh -force 120 -user SYSDBA-password yourpword
Создание копии работающего файла
В этот момент gbak не может выполнить резервное копирование базы данных, содержащей разрушенные данные. Поскольку вы имеете исключительный доступ, выполните копирование средствами файловой системы (а не с помощью gbak) файла базы данных. В POSIX используйте команду ср, а в Windows команду сору или эквивалентное действие копировать/вставить в графическом интерфейсе. Убедитесь, что в этот момент нет пользователей, соединенных с базой данных, - даже вас!
Например, в Windows, находясь в каталоге базы данных, выполните:
copy damaged.fdb repaircopy.fdb
! ! !
ВНИМАНИЕ! Даже если вы можете восстановить исправленную базу данных, которая сообщала об ошибках контрольных сумм, может оказаться сложным определить объем потерянных данных. Если это важно, вы можете выбрать более раннюю копию, в которой вы сможете отыскать отсутствующие данные после проверки и починки разрушенных структур вашей текущей базы данных.
. ! .
Работайте с repaircopy.fdb.
Выполнение проверки
В первую очередь используются переключатели -v[alidate] и -f[ull] утилиты gfix для проверки структур записей и страниц. Процесс проверки сообщает о разрушенных структурах и освобождает неназначенные фрагменты записей или "осиротевших страниц" (т. е. страниц, которые выделены, но не назначены никаким структурам данных).
gfix -v -full {путь}repaircopy.fdb -user SYSDBA -password yourpword
Переключатель -n[o update] может быть использован вместе с -v для проверки и выдачи сообщений о разрушенных или не назначенных структурах без попыток их исправить:
gfix -v -n {путь}repaircopy.fdb -user SYSDBA -password yourpword
Если постоянно появляются ошибки контрольных сумм в процессе такого способа проверки, то используйте переключатель -i[gnore], чтобы проверка их игнорировала:
gfix -v -n -i {путь}repaircopy.fdb -user SYSDBA -password yourpword
Исправление разрушенных страниц
Если gfix сообщает о поврежденных данных, то следующий шаг - исправить (или починить) базу данных, убирая такие структуры.
Переключатель -m[end] отмечает разрушенные записи как недоступные, следовательно, они будут пропущены в процессе последующего резервного копирования. Включите переключатель -f[ull], чтобы запрос исправлял все разрушенные структуры, и переключатель -i[gnore], чтобы обходить ошибки контрольных сумм в процессе исправления.