Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> ORA-4030 8.1.7.4 AIX - No Clue - Memory Added - Never Released

ORA-4030 8.1.7.4 AIX - No Clue - Memory Added - Never Released

From: Post, Ethan <Ethan.Post_at_ps.net>
Date: Tue, 29 Mar 2005 11:33:25 -0600
Message-ID: <3DB2A430E2B0834DBA69D7F843EB66E4504CBB@pscdalpexch02.perotsystems.net>

We have a situation in which we are hitting an OS limit of 500MB for PGA and getting 4030 error. We have instrumented the code in question and we see steady growth of PGA. Code contains 2 loops, outer loop and inner loop. The memory is being added in inner loop but we are not sure where.

The inner loop contains a number of open/close cursor calls but it appears all of the cursors are being closed.

The inner loop makes one call to another procedure which does NOT close cursors.

STRANGE THING IS =3D I wrote my own code in which I repeatedly called a procedure which opened a cursor, fetched into a variable declared using %ROWTYPE, then exited without closing. I could not see any growth in the amount of memory used. So if this is the problem I can not seem to replicate it. We are in the process now of adding CLOSE statements and retesting. =20

There is one other area we think the problem might be, which is messaging (messages stored in array during run of job), however I have been assured that prior testing validated that removing messaging had no effect on the amount of memory used.

The next step is to add a ton of instrumentation (we are logging the size of the PGA/UGA) and try to determine the exact spot in the procedure where the memory is added but never released.

CURSOR_SPACE_FOR_TIME was true, we have tested setting false and no effect.
SESSION_CACHED_CURSORS was 50, we changed to 0 along with above and no effect.

Any ideas here? Is there any way I can try to dump memory for the session or something and try to determine which objects are utilizing all the memory, any X$ tables etc...I know there is a way to find out how much memory some objects are utilizing but not sure if there is a way to find out how much memory a particular array or cursor is using.

Thanks,
Ethan

--
http://www.freelists.org/webpage/oracle-l
Received on Tue Mar 29 2005 - 12:38:07 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US