2008-10-08 3 views
0

Что это за штука, называемая SIMLATOR KGL, и как управлять ее использованием памяти разработчиками приложений?Что такое Oracle KGL SIMULATOR?

Вопрос к тому, что я иногда получаю ошибки, подобные следующим, и хотел бы получить общее представление о том, что использует это кучное пространство?

ORA-04031: не удалось выделить 4032 байтов разделяемой памяти ("общий пул", "выберите текст из> вид $, где ...", "SGA куча (3,0)", "kglsim куча ")

Я читал сообщения на форуме через Google, предлагая, чтобы kglsim был связан с SIMULATOR KGL, но нет определения этого компонента или каких-либо советов для разработчиков.

ответ

3

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

1

Я обнаружил, что KGL означает «Универсальная библиотека ядра».

Ваша проблема может быть утечкой памяти в Oracle. Вероятно, вы должны открыть случай с поддержкой Oracle.

Смежные вопросы