Поскольку зависшие транзакции являются результатом либо ошибок при подтверждении, либо ошибок при откате, сервер знает, как должна каждая из них заканчиваться. Следовательно, автоматическое восстановление просто является способом подтверждения, что вы хотите, чтобы утилита 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