Восстановление транзакции
Восстановление транзакции
При использовании gfix, вы имеете множество режимов для получения информации и для разрешения зависших транзакций после ошибок двухфазного подтверждения. Процесс идентификации зависших транзакций и их подтверждение либо откат называется восстановлением транзакций.
Вы можете попытаться восстановить сразу все зависшие транзакции или вы можете выполнять восстановление транзакции за транзакцией, используя идентификатор каждой индивидуальной транзакции.
Поиск зависших транзакций
Для получения списка всех зависших транзакций с индикацией, что произойдет с каждой, если было запрошено автоматическое двухфазное восстановление, используйте переключатель -l[ist]:
gfix -l база-данных
Подсказка для восстановления
Используйте переключатель -p[rompt] вместе с -l[ist] для получения от gfix списка зависших транзакций одну за другой и выдачи вам запроса на выполняемое действие:
COMMIT или ROLLBACK:
gfix -l -р база-данных
Автоматическое двухфазное восстановление
Поскольку зависшие транзакции являются результатом либо ошибок при подтверждении, либо ошибок при откате, сервер знает, как должна каждая из них заканчиваться. Следовательно, автоматическое восстановление просто является способом подтверждения, что вы хотите, чтобы утилита 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 - идентификатор транзакции.