Для восстановления согласованного состояния БД после аппаратного или программного сбоя поддерживается **журнал изменений БД (ЖИ)**.  
Ситуации, при которых требуется восстановление:
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$ - ничего не поможет, т. к. результатов нет в ВЗУ
  
