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

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

Переключатель-t[wo_phase] {ID | all} инициирует автоматическое двухфазное восстановление.

Используйте all для выполнения двухфазного восстановления всех зависших транзакций:

gfix -t all база-данных

Используйте ID для ввода идентификатора одной транзакции, для которой вы хотите выполнить двухфазное восстановление:

gfix -t nnnnnn база-данных

Здесь nnnnnn - идентификатор транзакции.

Задание подтверждения или отката

Чтобы попытаться разрешить зависшие транзакции их подтверждением, используйте переключатель-c[ommit] {ID | all}. Для восстановления всех зависших транзакций таким способом введите:

gfix -с all база-данных

Для разрешения одной зависшей транзакции попыткой ее подтверждения введите:

gfix -с nnnnnn база-данных

Здесь nnnnnn - идентификатор транзакции.

Для попытки разрешения зависших транзакций путем их отката используйте переключатель -r[ollback] {ID | all}. Для восстановления всех зависших транзакций таким способом введите:

gfix -r all база-данных

Для разрешения одной зависшей транзакции попыткой ее отката введите:

gfix -r nnnnnn база-данных

Здесь nnnnnn - идентификатор транзакции.

Теневые копии

Концепция, создание и поддержка теневых копий базы данных подробно обсуждались в главе 15. Утилита gfix имеет средства для работы с теневыми копиями.

Активизация теневой копии

Ключ для активизации теневой копии, когда база данных "умерла", -ac[tivate]. Синтаксис:

gfix -ас <путь-к-первому-тому-оперативном-копии>

Предположим, что первым томом теневой копии является employee.shl. Находится в каталоге /opt/dbshadows. Вы можете активизировать ее следующей командой:

./gfix -ас /opt/dbshadows/employee.shl

Удаление недоступных теневых копий

Переключатель для удаления недоступных теневых копий -k[ill]. Синтаксис:

gfix -k[ill] база-данных

Для удаления недоступных теневых копий для базы данных employee.fdb введите:

./gfix -k /opt/firebird/examples/employee.fdb

Список переключателей gfix

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

Таблица 39.1. Список переключателей gfix

Переключатель

Задача

Назначение

-ас[tivate]

файл-оперативной-копии

Оперативная копия

Используется с путем к первичному файлу оперативной копии для активизации оперативного копирования

-at[tach]

Закрытие базы данных

Используется с -shut для предотвращения новых подключений к базе данных за период времени ожидания в n секунд. Закрытие будет отменено, если все еще будут оставаться активные соединения по прошествии n секунд

-b[uffers] n

Буферы кэша

Устанавливает размер буферов кэша базы данных по умолчанию в n страниц. Это рекомендованный способ установки размера кэша базы данных по умолчанию

-ca[che] n

Не используется

-c[ommit] {ID | all}

Восстановление транзакций

Подтверждает зависшую транзакцию с идентификатором ID или подтверждает все зависшие транзакции

-f[orce] n

Закрытие базы данных

Используется вместе с -shut для форсированного закрытия базы данных через n секунд - радикальное решение, которое должно быть использовано как последнее средство

-full

Починка данных

Используется вместе с -v[alidate] для проверки структур записей и страниц; освобождает неназначенные фрагменты записей

-h[ousekeeping]

Чистка

Изменяет порог автоматической чистки в n транзакций. Значение по умолчанию 20 000. Устанавливайте n в 0 для отключения автоматической чистки

-i[gnore]

Починка данных

Игнорировать ошибки контрольных сумм при проверке или чистке

-k[ill] база-данных

Теневая копия

Используется вместе с путем к файлу базы данных для уничтожения всех неиспользуемых теневых копий

-l[ist]

Восстановление транзакций

Отображает идентификаторы всех зависших транзакций и указывает, что должно произойти, если будет задано -t [wo_phase] при автоматическом двухфазном подтверждении

-m[end]

Починка данных

Отмечает разрушенные записи как неиспользуемые, следовательно, они будут пропущены при последующей проверке или копировании

-n[o update]

Починка данных

Используется вместе с -v[alidate] для проверки разрушенных или неразмещенных структур, сообщая о них, но не исправляя их

-o[nline]

Закрытие базы данных

Отменяет операцию -shut, которая была в списке, или отменяет выполняющееся в настоящий момент закрытие базы данных

-pa[ssword] пароль

Удаленный доступ

Передает пароль для доступа к базе данных. Для большинства операций gfix это должен быть пароль пользователя SYSDBA, владельца базы данных или (для POSIX) пользователя с привилегиями root

-p[rompt]

Восстановление транзакций

Используется вместе с -l[ist] для перехода в режим подсказок во время восстановления транзакций

-r[ollback] {ID | all}

Восстановление транзакций

Выполняет откат зависшей транзакции с идентификатором ID или выполняет откат всех зависших транзакций

-s[weep]

Чистка

Запускает немедленную чистку базы данных

-sh[ut]

Закрытие базы данных

Закрывает базу данных. Требует указания

-at[ach], -f[orce], или -tr[an] n

-sql[dialect] n

Миграция

n = 3. Изменяет SQL диалект базы данных с 1 на 3. Не изменяет данные и не преобразует существующие типы данных

-t[wo_phase] {ID | all}

Восстановление транзакций

Выполняет автоматическое двухфазное восстановление либо транзакции с указанным идентификатором ID, либо всех зависших транзакций

Назначение

-tr[an] n

Закрытие базы данных

Используется вместе с -shut для запрета запуска новых транзакций в процессе ожидания n секунд. Закрытие будет отменено, если все еще будут активные транзакции по прошествии n секунд

-use {reserve | full}

Использование всего пространства

Включает или отключает использование полного пространства, отведенного для страниц базы данных. Режим по умолчанию reserve использует 80-процентное заполнение. При переключении на full будет использоваться все выделенное пространство

-user пользователь