| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: ora - 4031 while inserting into a parent table
Raganath,
Sounds like you got some bad SQL operating. Usually the error you are seeing is caused not by the shared pool being too small (although if it's too small for you're trying to do, nothing will help), but rather by excessive fragmentation making the requisite amount of continuous free space unavailable.
Your remark that this is an insert involving 42 tables from another DB sort of reinforces my suspicions. One of the things I found out (from this list last year) was that you need to commit across DB links after DML to free memory. Make sure you're using bind variables. Make sure you're sharing SQL. Try using fully qualified table names.
You could try flushing the shared pool to see if this resolves your problem, but you run the risk of losing sequences unless you've specified they should not be flushed using dbms_shared_pool.keep.
The kqls heap message might also indicate library cache problems. Oracle suggests using the following to determine which parameters you need to address in tuning:
First determine if the ORA-04031 was a result of fragmentation in the
library
cache or in the shared pool reserved space by issuing the following query:
SELECT free_space, avg_free_size, used_space,
avg_used_size, request_failures, last_failure_size
FROM v$shared_pool_reserved;
The ORA-04031 is a result of lack of contiguous space in the shared
pool
reserved space if:
REQUEST_FAILURES is > 0 and LAST_FAILURE_SIZE is >
SHARED_POOL_RESERVED_MIN_ALLOC.
To resolve this consider increasing SHARED_POOL_RESERVED_MIN_ALLOC to
lower
the number of objects being cached into the shared pool reserved space
and
increase SHARED_POOL_RESERVED_SIZE and SHARED_POOL_SIZE to increase
the
available memory in the shared pool reserved space.
The ORA-04031 is a result of lack of contiguous space in the library
cache if:
REQUEST_FAILURES is > 0 and LAST_FAILURE_SIZE is <
SHARED_POOL_RESERVED_MIN_ALLOC
or
REQUEST_FAILURES is 0 and LAST_FAILURE_SIZE is <
SHARED_POOL_RESERVED_MIN_ALLOC
The first step would be to consider lowering
SHARED_POOL_RESERVED_MIN_ALLOC to
put more objects into the shared pool reserved space and increase
SHARED_POOL_SIZE.
Note that _shared_pool_reserved_min_alloc is a hidden parameter in
8i.
If all else fails, increase the size of the shared pool again.
Hope some of this helps.
David A. Barbour
Oracle DBA, OCP
AISD
512-414-1002
"Ranganath K"
<ranganathk_at_subex To: Multiple recipients of list
ORACLE-L <ORACLE-L_at_fatcity.com>
group.com> cc:
Sent by: Subject: ora - 4031 while inserting
into a parent table
root_at_fatcity.com
08/30/2001 09:37
AM
Please respond to
ORACLE-L
Dear DBA Gurus,
I am getting the following error while inserting into a schema's parent table which is being referred by 42 tables of another schema.
ORA-04031: unable to allocate 2196 bytes of shared memory ("shared pool","RA_VOLUME_PLAN_POOL","KQLS heap","KQLS MEM BLOCK");
How do I resolve this? I increased the shared_pool_size from 15mb to 30mb
and shared_pool_reserved_size from 1mb to 5mb but it didn't solve the
problem. I also set the _db_cached_cursors parameter to 0 and bounced the
database but in vain. BTW I am using oracle 8.1.6 enterprise edition on
Sun
Solaris 2.7. Any help in this regard will be very much appreciated.
TIA and Regards,
Ranganath
DISCLAIMER: This correspondence is confidential and intended for the named
recipient(s) only. If you are not the named recipient and receive this
correspondence in error, you must not copy, distribute or take any action
in
reliance on it and you should delete it from your system and notify the
sender immediately. Unless otherwise stated, any views or opinions
expressed
are solely those of the author and do not represent those of Subex Systems
Limited.
www.subexgroup.com
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Ranganath K
INET: ranganathk_at_subexgroup.com
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Liststo: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author:
INET: DBarbour_at_austin.isd.tenet.edu
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Liststo: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). Received on Thu Aug 30 2001 - 11:50:26 CDT
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
![]() |
![]() |