Безотносительно к тому, каковы коэффициенты попадания в библиотечный
и словарный кэши, необходимо определить события ожидания, влияющие на
область коллективного пула. Это можно сделать, задав запрос к представлению V$SESSION_WAIT и найдя там события типа свободной защелки (latch free), если она является защелкой загрузки коллективного пула, библиотечного кэша, словарного кэша и т. д.
О Select SW.Sid, S.Username, subslr(SW. Event. 1, 35), SW.Wait.,.t.irne from V$SESSI0N S, V$SESSION_WAIT SW where SW. Event not like 'SQL*Net%'
and SW.Sid = S.Sid order by SW.Wait_time, SW.Event;
Запрос производит список событий, которые в настоящий момент находятся в состоянии ожидания. Если события ожидания имеют место для ресурсов коллективного пула, используйте эту информацию для прямого разрешения
проблемы, либо увеличивая (до известного предела) его размеры, либо, что более важно, организуя лучшее использование различных пулов (большого пула,
резервной области, пула Java). Однако следует отметить, что уменьшение потребности в этих ресурсах за счет повторного использования SQL и сведения числа разборок к минимуму - это только начало длинного пути по направлению к находящемуся вне конкуренции кэшу. Ниже приводятся несколько типичных
событий, относящихся к области коллективного пула. Полный список событий
ожидания можно найти в справочном руководстве Oracle.
latch free Конкуренция защелок за защелку latch*, освобождения которой Если
проблема остается, необходимо определить, что вызывает конкуренцию за защелку. Нашей целью должно быть лечение болезни, а не симптомов. Событие latch free является симптомом более крупой проблемы. Например, если выведенный отсюда latch* является защелкой библиотечного кэша (в предположении, что коллективный пул настроен должным образом), это может подразумевать значительное количество жестких разборок. Обычно это означает проблему с приложениями, которые содержат операторы SQL с жестко закодированными значениями. Их следуе1 или переписать, используя переменные связи, или сделать модернизацию до 0racle8i и использовать CURSOR_SHARING=FORCE, либо просто искать другой путь.
library cache load lock Требуется для загрузки объектов в библиотечный кэш. Событие ожидания может произойти, если имеет место значительное количество загрузок/перезагрузок (которые обычно вызываются либо недостаточным повторным использованием операторов SQL, либо неверно заданным размером области коллективного пула).
Настройка экземпляра — область коллективного пула
library cache lock Связаны с одновременным выполнением нескольких процессов, обращающихся
к библиотечному кэшу. Могут означать неправильный выбор размера области . коллективного пула, так как эта блокировка должна быть захвачена для размещения объектов в библиотечном кэше.
library cache Связано с параллелизмом библиотечного кэша и может происходить, если
объект необходимо модифицировать или проверить его в библиотечном кэше.
< Предыдущая | Следующая > |
---|