
Более того, при перезагрузке системы, возможно, потребуется повторно выполнить транзакции, которые успешно завершились до аварийного отказа, но выполненные ими обновления еще не были перенесены из буферов базы данных в физическую базу данных во вторичной памяти.
Возникает очевидный вопрос: "Как в процессе перезагрузки система узнает, какую транзакцию следует отменить, а какую выполнить повторно?". Ответ заключается в том, что система автоматически создает контрольные точки с некоторым наперед заданным интервалом (обычно, когда в журнале накапливается определенное число записей).
Очевидно, что при перезагрузке системы транзакции типа ТЗ и Т5 должны быть отменены, а транзакции типа Т2 и Т4 — выполнены повторно. Заметьте, что транзакции типа Т1 вообще не участвуют в процессе перезагрузки, так как выполненные ими обновления были принудительно занесены в физическую базу данных в момент tc как часть процедуры создании этой контрольной точки. Обратите внимание также на то, что транзакции, завершившиеся неудачно (т.е. для них был выполнен откат) до момента tf, также не будут принимать участия в процессе перезагрузки (подумайте, почему).
Следовательно, во время перезагрузки система прежде всего идентифицирует все транзакции типа Т2-Т5.
После этого система просматривает журнал регистрации в обратном направлении, выполняя откат транзакций из списка UNDO, а затем вновь просматривает журнал в прямом направлении, повторно выполняя транзакции из списка REDO.
Замечание. Восстановление согласованного состояния базы данных посредством отмены выполненных операций иногда называется обратным восстановлением. Аналогично восстановление согласованного состояния базы данных за счет повторного выполнения уже выполненных действий называется прямым восстановлением.
И наконец, когда такая восстановительная работа будет завершена, тогда (и только тогда) система будет готова к дальнейшей работе.