PL/SQL Using XMLDOM Packages Seems To Leak Memory Under Chunk QMXDPLS_SUBHEA
(Doc ID 784804.1)
Last updated on MARCH 05, 2019
Applies to:Oracle Database - Enterprise Edition - Version 10.2.0.1 to 22.214.171.124 [Release 10.2 to 11.1]
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Database Cloud Exadata Service - Version N/A and later
Information in this document applies to any platform.
Oracle Server Enterprise Edition - Version: 10.2.0.1 to 126.96.36.199
This article is written specifically for when the XMLDOM package is in use and a memory leak is seen in conjunction with the following symptoms:
- An ORA-04030 error 'might' be seen:
ORA-04030: out of process memory when trying to allocate 10504 bytes (pga heap,kgh stack)
ORA-27300: OS system dependent operation:fork failed with status: 12
ORA-27301: OS failure message: Not enough space
ORA-27302: failure occurred at: skgpspawn3
- A HEAPDUMP is obtained under the following conditions:
While running the PLSQL, issue:
select pid, spid, substr(username,1,20) "USER", program,
PGA_USED_MEM, PGA_ALLOC_MEM, PGA_FREEABLE_MEM, PGA_MAX_MEM
where pga_alloc_mem = (select max(pga_alloc_mem) from v$process
where program not like '%LGWR%');
Run the query over time as the job runs and see how excessive PGA memory grows for the job. If it gets into the high 100s of MBytes or even into the GBytes, then get a full heapdump to see where the memory is growing:
connect / as sysdba
oradebug setorapid <pid from above>
oradebug dump heapdump 536870917
The ORADEBUG TRACEFILE_NAME command provides the full path and filename of the heap dump just generated.
- The HEAPDUMP trace shows many extents and memory chunks of type:
HEAP DUMP heap name="session heap" desc=ffffffff7ae26298
extent sz=0xff80 alt=32767 het=32767 rec=0 flg=2 opc=2
parent=105de6a00 owner=4670e9378 nex=0 xsz=0xff80
EXTENT 0 addr=ffffffff4fbb0080
Chunk ffffffff4fbb0090 sz= 65392 free " "
EXTENT 1 addr=ffffffff4fba0080
Chunk ffffffff4fba0090 sz= 2216 freeable "qmxdpls_subhea " ds=ffffffff7a067f58
The type being: "qmxdpls_subhea "
To view full details, sign in with your My Oracle Support account.
Don't have a My Oracle Support account? Click to get started!
In this Document