KGL = Менеджер кэша общей библиотеки Kernel, так как в нем говорится, что он имеет дело с объектами библиотеки, такими как курсоры, кэшированные определения хранимых объектов (хранимые процедуры PL/SQL, определения таблиц и т. Д.).
KGL симулятор используется для оценки преимуществ кеширования, если кеш был больше, чем в настоящее время. Общая идея заключается в том, что при очистке объекта кеш-библиотеки его хэш-значение (и несколько других бит информации) все еще сохраняется в хэш-таблице симулятора KGL. Это хранит историю объектов, которые были в памяти, но вымыты.
При загрузке объекта кеш-библиотеки (что означает, что в этом кеше нет никакого существующего объекта), Oracle переходит и проверяет хеш-таблицу симулятора KGL, чтобы увидеть, есть ли объект с соответствующим значением хеш-функции. Если найден соответствующий объект, это означает, что требуемый объект был в кеше в прошлом, но сбросил избыточное давление.
Использование этой информации о том, сколько нагрузок на кеш-память библиотеки можно было бы избежать, если бы кеш был больше (благодаря истории симулятора KGL) и зная, сколько времени регенерирует объект, Oracle может предсказать, сколько ответов время было бы сохранено экземпляром, если общий пул был больше. Это видно из v $ library_cache_advice.
Во всяком случае, эта ошибка, вероятно, была вызвана сеансом жертвы из-за отсутствия общего пространства пула. Другими словами, кто-то другой, возможно, исчерпал всю память (или все достаточно большие куски), и из-за этого это распределение для KGL sim не получилось.
v $ sgastat был бы первым моментом в устранении ошибок ORA-4031, вам нужно определить, сколько свободной памяти у вас в общем пуле (и кто использует большую часть памяти).
- Тэнел Poder http://blog.tanelpoder.com