Процесс Записи в Журнал (LGWR)

Рубрика: Архитектура БД Oracle

  • Записывает буфер журнала повторов в файл журнала повторов на диске

  • Осуществляет запись:

    • Когда пользовательский процесс фиксирует транзакцию

    • Когда буфер журнала повторов заполнен на одну треть

    • Перед тем, как процесс DBWn записывает модифицированные буферы на диск

    • Каждые 3 секунды

Процесс Записи в Журнал (LGWR)

Процесс записи в Журнал (LGWR) ответственен за управление буфером журнала повторов, сохраняя записи в буфере журнала повторов в файле журнала повторов на диске. LGWR записывает все записи повторов, которые были скопированы в буфер с момента последней записи.

Буфер журнала повторов - это циклический буфер. Когда LGWR записывает записи повторов из буфера журнала повторов в файл журнала повторов, серверные процессы затем могут скопировать новые записи поверх записей в буфере журнала повторов, которые были записаны на диск. LGWR обычно пишет достаточно быстро, чтобы гарантировать, что пространство в буфере всегда будет доступно для новых записей, даже когда доступ к журналу повторов происходит интенсивно. LGWR записывает одну непрерывную часть буфера на диск.

LGWR пишет:

  • Когда пользовательский процесс фиксирует транзакцию

  • Когда буфер журнала повторов заполняется на одну треть

  • Перед тем, как процесс DBWn записывает модифицированные буферы на диск (в случае необходимости)

  • Каждые три секунды

Прежде, чем DBWn сможет записать модифицированный буфер, все записи повторов, которые связаны с изменениями в буфере, должны быть записаны на диск (протокол упреждающей записи). Если DBWn обнаруживает, что некоторые записи повторов не были записаны, он сигнализирует LGWR, чтобы тот сохранил записи повторов на диск, и ожидает LGWR, чтобы тот завершил запись буфера журнала повторов прежде, чем он сможет записать буферы данных. LGWR пишет в текущую группу журналов. Если один из файлов в группе повреждается или недоступен, LGWR продолжает писать в другие файлы в группе и регистрирует ошибку в файле трассировки LGWR и в системном журнале предупреждений. Если все файлы в группе повреждены, или если группа недоступна, поскольку она не была заархивирована, LGWR не может продолжать работу.

Когда пользователь выполняет оператор COMMIT, LGWR помещает запись фиксации в буфер журнала повторов и тут же записывает ее на диск наряду с записями повторов транзакций. Соответствующие изменения блоков данных откладываются, пока не наступит момент, когда их можно будет записывать наиболее эффективным образом. Это называется быстрым механизмом фиксации. Простейшее сохранение записи повтора, содержащей запись фиксации транзакции, является единственным событием, которое определяет, была ли зафиксирована транзакция. База данных Oracle возвращает код успеха фиксации транзакции, хотя буферы данных еще не были записаны на диск.

Если потребуется больше пространства буфера, LGWR иногда сохраняет записи журнала повторов прежде, чем транзакция будет зафиксирована. Эти записи становятся постоянными, только если транзакция будет зафиксирована позже. Когда пользователь фиксирует транзакцию, транзакции присваивается системный номер изменения (SCN), который База данных Oracle записывает наряду с записями повторов транзакций в журнал повторов. Номера SCN записываются в журнал повторов для того, чтобы операции восстановления могли синхронизироваться в RAC и распределенных базах данных.

Во время высокой активности, LGWR может записать в файл журнала повторов, используя групповые фиксации. Например, предположим, что пользователь фиксирует транзакцию. LGWR должен сохранить записи повтора транзакции на диск. Когда это происходит, другие пользователи выполняют операторы COMMIT. Однако, LGWR не может записать в файл журнала повторов, чтобы зафиксировать эти транзакции, пока он не завершил свою предыдущую операцию записи. После того, как записи первой транзакции записаны в файл журнала повторов, весь список записей повторов ожидающих транзакций (еще не зафиксированных) может быть записан на диск за раз в одной операции, требуя меньшего количества ввода-вывода, чем потребовали бы записи транзакций, обрабатываемые индивидуально. Поэтому, База данных Oracle минимизирует операции дискового ввода-вывода и максимизирует производительность LGWR. Если запросы на фиксацию продолжаются с высоким темпом, каждая запись (LGWR) из буфера журнала повторов может содержать несколько записей фиксации.

Далее: Создание Реестра. Выполнение Проверки Необходимых Условий

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)