Redo Log Buffer Latch.
При частом обращении к Redo Log Buffer могут возникнуть проблемы с Redo Log
Buffer Latch. Redo allocation latch контролирует распределение памяти для
записей повторения в Redo Log Buffer. Всего один пользовательский процесс может
распределять память в буфере в каждый момент времени, так как существует всего
один redo allocation latch. Распределив память в Redo Log Buffer,
пользовательский процесс копирует запись повторения в буфер, продолжая
удерживать redo allocation latch. Большая часть случаев соперничества за замки
происходит, когда процессы ORACLE одновременно пытаются получить один и тот же
замок. Такое соперничество редко случается на однопроцессорных компьютерах, где
в каждый момент может быть активным лишь один процесс.
ORACLE собирает статистику активности для всех замков и поддерживает ее в
системной таблице V$LATCH.
а) для запросов типа willing-to-wait
GETS - количество успешных запросов на замок.
MISSES - количество раз, когда при первом обращении не получил доступ.
SLEEPS - количество раз, когда при повторном обращении поучил отказ.
б) для запросов типа immediate
IMMEDIATE_GETS - число успешных запросов на замок.
IMMEDIATE_MISSES - число безуспешных запросов на замок.
SELECT name, gets, misses, sleeps, immediate_gets, immediate_misses
FROM v$latch
WHERE name IN ('redo allocation', 'redo copy');
Если отношение числа MISSES к GETS превышает 1% или отношение числа
IMMEDIATE_MISSES к сумме IMMEDIATE_MISSES и IMMEDIATE_GETS превышает 1%, то
необходимо уменьшить соперничество за redo allocation latch, минимизировав
время, в течение которого один процесс удерживает этот замок. Для этого следует
уменьшить параметр LOG_SMALL_ENTRY_MAX_SIZE, который задает размеры записей
повторения, копируемых за один раз.