log file sync: Ожидание: сессия ждёт, пока LGWR сбросит redo на диск при commit
OracleЧто это значит?
Когда сессия выполняет COMMIT, она ждёт, пока LGWR запишет (сбросит) записи redo в файлы redo-журналов. Если это ожидание велико, присутствует задержка commit.
Почему возникает?
Медленные диски redo-журналов (высокая задержка I/O), приложение, выполняющее commit слишком часто (commit на каждую строку), нехватка CPU у процесса LGWR или очень большой объём redo.
Как исправить
Измерьте среднее время ожидания с помощью AWR/Statspack. Перенесите файлы redo-журналов на быстрые диски с низкой задержкой (SSD). Сократите избыточную частоту commit в приложении и группируйте пакетные операции. При необходимости оцените параметры COMMIT_LOGGING/COMMIT_WAIT (commit_write) с учётом бизнес-требований; ВНИМАНИЕ: NOWAIT/BATCH снижают надёжность, и транзакции, которые выглядят зафиксированными, могут быть потеряны при сбое. Используйте их только на уровне сессии или оператора для работ, где потеря допустима; не включайте их на уровне всей системы. Изучайте задержки LGWR и системы хранения вместе.
Ещё по этой СУБД
- ORA-01722Недопустимое число
- ORA-02049Тайм-аут: распределённая транзакция ожидает блокировку
- enq: TX - row lock contentionОжидание: сессия заблокирована блокировкой уровня строки, удерживаемой другой транзакцией
- db file sequential readОжидание: одноблочное физическое чтение, обычно поиск по индексу или таблице
- db file scattered readОжидание: многоблочное физическое чтение, обычно полное сканирование таблицы или index fast full scan
- buffer busy waitsОжидание: конкуренция за буфер, который уже читается или изменяется другой сессией
- gc buffer busyОжидание (RAC): конкуренция за блок cache fusion, передаваемый между экземплярами