Помещаемая в файл журнала информация предназначена для использования в процессе восстановления системы после отказа. Одно из основных затруднений в этой схеме состоит в том, что, когда происходит отказ, может отсутствовать какая-либо информация о том, насколько далеко назад следует "откатиться" в файле журнала, чтобы начать повторный прогон уже завершенных транзакций. В результате, может оказаться, что повторный прогон будет выполнен для тех транзакций, которые уже были окончательно зафиксированы в базе данных. Для ограничения объема поиска в файле журнала используется технология создания контрольных точек.
Контрольная точка – это момент синхронизации между базой данных и журналом транзакций. Все буфера системы принудительно записываются во вторичную память системы.
Контрольные точки организуются через установленный интервал времени и включают выполнение следующих действий:
1) запись всех имеющихся в оперативной памяти записей журнала во вторичную память.
2) запись всех модифицированных блоков в буферах базы данных во вторичную память.
3) помещение в файл журнала записи контрольной точки. Эта запись содержит идентификаторы всех транзакций, которые были активны в момент создания этой контрольной точки.
Если транзакции выполняются последовательно, то после возникновения отказа файл журнала просматривается с целью обнаружения последней из транзакций, начавших свою работу до момента создания последней контрольной точки. Любая более ранняя транзакция будет зафиксирована в базе данных, это значит, что ее изменения были перенесены на диск в момент создания последней контрольной точки. Следовательно, прогону подлежит только транзакция, которая была активна в момент создания контрольной точки, а также все прочие транзакции, которые начали свою работу позже, и для которых в журнале присутствуют записи как начала, так и завершения. Та транзакция, которая была активна в момент отказа, должна быть отменена. В случае, если транзакции выполняются в системе параллельно, потребуется повторный прогон всех транзакций, которые завершили свою работу с момента создания контрольной точки, и выполнение отката всех транзакций, которые были активны в момент отказа.