Bug 13250244 Shared pool leak of "KGLHD" memory when using multiple subpools
This note gives a brief overview of bug 13250244.The content was last updated on: 05-JUL-2013
Click here for details of each of the sections below.
Affects:
Product (Component) Oracle Server (Rdbms) Range of versions believed to be affected Versions >= 11.1 but BELOW 12.1 Versions confirmed as being affected Platforms affected Generic (all / most platforms affected)
Fixed:
This issue is fixed in
Symptoms: | Related To: |
|
Description
Shared pool memory of type "KGLHD" may be leaker, potentially leading to ORA-4031 errors when multiple shared pool subpools are in use. The problem is easily triggered if stored outlines are used, but the use of stored outlines is not required to hit this problem. Rediscovery Notes: This problem may be being seen of both of the following are true: (a) Hitting ORA-4031 or shared pool usage increases due to many "KGLHD" allocations (b) Multiple shared pool subpools are in use. (eg the internal parameter _kghdsidx_count set to a value greater than 1) Workaround Set "_kghdsidx_count"=1 so that only one shared pool subpool is used. Note that in highly concurrent environments this workaround may cause shared pool and library cache latch related contention issues.
Getting a Fix Use one of the "Fixed" versions listed above (for Patch Sets / bundles use the latest version available as contents are cumulative - the "Fixed" version listed above is the first version where the fix is included) or You can check for existing interim patches here: Patch:13250244
Please note: The above is a summary description only. Actual symptoms can vary. Matching to any symptoms here does not confirm that you are encountering this problem. For questions about this bug please consult Oracle Support. |
References
Bug:13250244 (This link will only work for PUBLISHED bugs)
Note:245840.1 Information on the sections in this article
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
KGLHD is not Function
KGL -> Kernel Generic Library
KGLHD Library cache Handle structure
KGLOB - Object structure
KGLNA - Name structure
KGLHD -> KGLOB
-> KGLNA -> KGLNA->KGLNA
Object Handles
All objects that are stored in the library cache are accessed by using handles (kglhd). The handle stores the name of the object, its namespace, some flags that are used to get information about the object (if the object is read-only, remote or local, in CGA memory, marked to be kept pinned in memory, and so on), and statistical information regarding the object. The handle is also used by the library cache to keep a list of all users who have locks, pins, or references to the object as well as those who are waiting to acquire locks or pins on it.
Object handles are placed in linked lists according to a hashing algorithm, which is a function of the object’s name and namespace.
When a process requests an object, the library cache manager applies the hashing algorithm to determine the linked list (hash bucket) to be searched. If the object is in cache, the appropriate object handle will be found. It is possible for the handle to be in memory but the object heaps have been aged out. The object handle will tell us that. In this case, the required object heaps are reloaded. Finally, it is possible that the object handle is not found. In this case, a new one must be allocated, it must be populated with the object information, and the object heaps must be loaded.
Handles: kglhd
Files kgl.c kgl2.c kgl.h