Выбрать главу

Skipped n bytes after reading a bad attribute n . . .

(Пропущено n байт после чтения неверного атрибута т)

Не фатально

Skipped n bytes looking for next valid attribute, encountered attribute m ...

(Пропущено n байт при поиске следующего верного атрибута, встречен атрибут m)

Не фатально

Trigger <string> is invalid . . . (Триггер <строка> неверен)

Unexpected end of file on backup file

(Непредвиденное завершение копируемого файла)

Восстановление файла копии завершилось с ошибкой; видимо процедура копирования, которая создала этот файл копии, завершилась ненормально. Если возможно, создайте новый файл копии и используйте его для восстановления базы данных

Unexpected I/O error while accessing <string> backup file

(Непредвиденная ошибка ввода/вывода при обращении к файлу копии <строка>)

Вероятно, возникла ошибка диска или другого оборудования при выполнении копирования или восстановления

Unknown switch <string> (Неизвестный переключатель <строка>)

Был задан нераспознанный утилитой gbak режим

User name parameter missing (Отсутствует параметр имя пользователя)

Копирование или восстановление обращается к удаленной машине. Задайте имя пользователя переключателем -user

Validation error on column in table <string>

(Ошибка проверки столбца в таблице <строка>)

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

Warning - record could not be restored

(Предупреждение - запись не может быть восстановлена)

Возможно разрушение указанных данных

Wrong length record, expected n encountered m . . .

(Неверная длина записи, ожидается n, встретилась m)

Пора дальше

Утилита 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 всегда установлены в режим автоматически выполняемой чистки при возникновении некоторых условий. Однако, поскольку процесс чистки может влиять на производительность, чистка может быть настроена для оптимизации ее преимуществ при минимизации воздействия на пользователей.

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

Информацию о том, как статистический отчет по базе данных может помочь в анализе требований к чистке вашей базы данных, см. в разд. "Получение статистики по индексам" главы 18.

Сборка мусора

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