Для восстановления согласованного состояния БД после аппаратного или программного сбоя поддерживается **журнал изменений БД (ЖИ)**. Ситуации, при которых требуется восстановление: 1. **Индивидуальный откат ТА** - завершение оператором **rollback**, откат ТА по инициативе системы, исключительные ситуации в программе, выбор ТА в качестве жертвы 2. **Потеря содержимого ОЗУ при "мягком" сбое** - при аварийном выключении питания, при сбое процессора 3. **Поломка ВЗУ** В основе восстановления хранение избыточных данных в ЖИ БД и архивной копии. ## Восстановление после "мягкого" сбоя ![Возможные сценарии выполнения транзакций при мягком сбое](../Pictures/09_01.%20Возможные%20сценарии%20выполнения%20транзакций%20при%20мягком%20сбое.png) В ЖИ отмечаются **точки физической согласованности (ТФС)** - это моменты времени, когда в ВЗУ содержатся согласованные результаты операций, завершившихся до момента "мягкого" сбоя и отсутствуют результаты операций, которые не завершились. Что сделать для восстановления БД: - $T_1$ - ничего не надо делать, т. к. ТА закончилась до ТФС, все результаты отражены в ВЗУ - $T_2$ - необходимо повторно выполнить оставшуюся часть ТА (**redo**) - $T_3$ - выполняют в обратном направлении 1 часть операции (**undo**). В ВЗУ нет результатов $T_3$, которые выполнены после ТФС, но есть результаты до ТФС - $T_4$ - она успела начаться после ТФС и закончится до "мягкого сбоя". Поэтому нужно выполнить полную повторную прямую интерпретацию команд этой ТА (**redo**) - $T_5$ - ничего не поможет, т. к. результатов нет в ВЗУ