Утилита gbak имеет большое значение для поддержания базы данных в работоспособном состоянии и для устранения некоторых типов разрушения данных. Другим инструментом, который вы можете использовать для выполнения задач администрирования, ведения и восстановления базы данных, является программа gfix, обсуждаемая дальше. Комбинированное использование gfix и gbak для анализа и иногда починки разрушенной базы данных описывается в приложении 4.
ГЛАВА 39. Утилита gfix.
Как пользователь SYSDBA или владелец базы данных, вы можете использовать административный инструмент командной строки gfix для подключения к базе данных и выполнения разнообразных задач по поддержанию работоспособности и восстановлению базы данных.
Используя gfix, вы можете:
* выполнять чистку (sweep);
* изменять интервал автоматического sweep;
* инициировать закрытие базы данных для получения исключительного доступа и опять переводить базу данных в активное состояние;
* переключаться между синхронным и асинхронным выводом;
* переводить базу данных для чтения/записи в базу данных только для чтения и наоборот;
* изменять диалект;
* устанавливать размер кэша базы данных;
* отыскивать и подтверждать или отменять зависшие транзакции;
* чинить разрушенные базы данных и данные при некоторых условиях;
* активировать и удалять теневые копии базы данных.
Использование gfix
Утилита gfix может быть запущена только из командной строки. Для использования этой утилиты вы должны быть владельцем базы данных или пользователем SYSDBA. Для запуска gfix откройте окно командной строки и перейдите в каталог /bin в корневом каталоге Firebird.
Синтаксис команды gfix:
gfix [режимы] база-данных
База-данных должна быть полным именем первичного файла базы данных, с которой вы собираетесь работать.
Первичный файл однофайловой базы данных является собственно файлом базы данных. Для многофайловых баз данных первичный файл является первым файлом в наборе.
Режимы являются допустимой комбинацией переключателей и, в некоторых случаях, аргументов. Они представлены позже в табл. 39.1. Для большинства переключателей могут быть использованы сокращения. Необязательные символы показаны в квадратных скобках ([ ]).
! ! !
СОВЕТ. Как и в других инструментах командной строки Firebird, вы можете включить любое количество необязательных символов в имя переключателя вплоть до полного имени переключателя, если ни один символ не будет пропущен в последовательности слева направо.
. ! .
Получение доступа к базе данных из gfix
Если вы соединяетесь с сервером удаленно, то в список переключателей вы должны включить имя пользователя и пароль для пользователя SYSDBA или для владельца базы данных. Такими переключателями являются:
-pas[sword] <пароль> -u[ser] <имя>
Следующий пример команды gfix устанавливает синхронный режим (Forced Writes).
POSIX:
bin]$ ./gfix -w sync customer.fdb -pas heureuse -user SYSDBA
Windows:
bin> gfix -w sync customer.fdb -pas heureuse -user SYSDBA
Перед стартом сервера для расширенной локальной работы с копией проблемной базы данных или для восстановления транзакции вы можете добавить две системные переменные ISC_USER и ISC PASSWORD для исключения необходимости набора имени и пароля пользователя SYSDBA или владельца базы данных в каждой команде:
shell prompt> SET ISC_USER=SYSDBA
shell prompt> SET ISC_PASSWORD=heureuse
Из соображений безопасности вы должны удалить эти переменные окружения, как только завершите вашу работу. Не рекомендуется конфигурировать эти переменные за пределами видимости вашего текущего окна командной строки или делать их постоянными в системе.
Чистка базы данных
Многоверсионная архитектура Firebird порождает ситуацию, когда множество версий строк данных хранится непосредственно на страницах базы данных. Firebird сохраняет старые версии при изменении или удалении строки. При нормальном ходе событий устаревшие версии записей, созданные изменениями данных, вычищаются фоно- вой сборкой мусора. Однако при некоторых условиях эти старые версии могут оставаться "застрявшими" и накапливаться, приводя к росту файла (файлов) базы данных пропорционально размеру данных, к которым происходит обращение. Иногда застрявшие транзакции могут сильно влиять на производительность.
Чистка базы данных является способом систематического удаления устаревших строк из базы данных и предотвращает ее слишком интенсивный рост. По умолчанию базы данных Firebird всегда установлены в режим автоматически выполняемой чистки при возникновении некоторых условий. Однако, поскольку процесс чистки может влиять на производительность, чистка может быть настроена для оптимизации ее преимуществ при минимизации воздействия на пользователей.