Обработка COMMIT
Сервер Oracle использует быстрый механизм фиксации, который гарантирует, что зафиксированные изменения могут быть восстановлены в случае отказа экземпляра.

Системный Номер Изменения
Всякий раз, когда транзакция фиксируется, сервер Oracle присваивает транзакции SCN фиксации.
SCN постепенно монотонно увеличивается и является уникальным в пределах базы данных. Он используется сервером Oracle в качестве внутренней метки времени, чтобы синхронизировать данные и обеспечить согласованность по чтению, когда данные извлекаются из файлов данных. Использование SCN позволяет серверу Oracle выполнять проверки согласованности без зависимости от даты и времени операционной системы.
Шаги в Обработке Фиксаций
Когда выполяется обработка COMMIT, происходят следующие шаги:
Серверный процесс помещает запись фиксации, наряду с SCN, в буфер журнала транзакций.
LGWR
выполняет непрерывную запись всех буферных записей журнала транзакций до и включая запись фиксации в файлы журнала транзакций. После этой точки сервер Oracle может гарантировать, что изменения не будут потеряны, даже если произойдет отказ экземпляра.Пользователю сообщается, что
COMMIT
выполнен.Серверный процесс записывает информацию, чтобы указать, что транзакция выполнена и что блокировки ресурса могут быть освобождены.
Сбрасывание грязных буферов в файл данных выполняется независимо DBW0
и может произойти или до, или после фиксации.
Преимущества Быстрой Фиксации
Механизм быстрой фиксации гарантирует возможность восстановления данных путем записи изменений в буфер журнала транзакций, вместо файлов данных. У этого есть следующие преимущества:
Последовательные записи в файлы журнала быстрее, чем запись в различные блоки в файле данных.
Только минимальная информация, которая необходима, чтобы записать изменения, пишется в файлы журнала; запись в файлы данных потребовала бы, чтобы целые блоки данных были записаны.
Если несколько транзакций фиксируются одновременно, экземпляр осуществляет комбинирование нескольких записей журнала транзакций и пишет их за один раз.
Пока буфер журнала транзакций не будет частично заполнен, только одна синхронная запись требуется на транзакцию. Если происходит комбинированная запись, может быть меньше чем одна синхронная запись на транзакцию.
Поскольку буфер журнала транзакций может быть сброшен перед выполнением
COMMIT
, размер транзакции не влияет на количество времени, необходимое для фактической операцииCOMMIT
.
Отметьте: Откат транзакции не инициирует запись LGWR
на диск. Сервер Oracle всегда откатывает незафиксированные изменения при восстановлении после отказов. Если происходит отказ после отката, прежде, чем записи отката будут записаны на диск, отсутствие записи фиксации достаточно, чтобы гарантировать, что изменения, произведенные транзакцией, откатываются.