ORA-00604: error occurred at recursive SQL level 2

When my oracle run about several days, it wll show the error message below:

ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 4200 bytes of shared memory
("shared pool","TRIGGER$","sga heap","state objects")
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 4200 bytes of shared memory
("shared pool","unknown object","sga heap","state objects")

What can I do about this?

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Which version you are running. Is it 8.1.7 ?

Try to:

1. Increase SHARED_POOL_SIZE parameter
2. Set _db_handles_cached to zero

You may need to apply the patchset, Oracle recommends 8174 as it seems you run into memory leaks problem

Hope this helps

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Your shared pool is fragmented.
Try to  flush SGA.
You may have to bounce database.
Increase SHARED_POOL_SIZE parameter if it is low.
the errors can also be due to

ORA-4031 / SGA memory leak of PERMANENT memory occurs for buffer handles.
work around : use the undocumented parameter _db_handles_cached = 0 . This bug has been resolved in versions above

ORA-4031 due to leak / cache buffer chain contention from AND-EQUAL access  
This bug has been resolved in versions above

< Bug:1318267  >
   INSERT AS SELECT statements may not be shared when they should be if  TIMED_STATISTICS is set to true . It can lead to ORA-4031
Workaround : set _SQLEXEC_PROGRESSION_COST=0  
Resolved in

<  Bug:1193003 >
     Cursors may not be shared in 8.1 when they should be
Resolved after version

ORA-4031/excessive "miscellaneous"
shared pool usage possible. (many PINS) .This is known to affect the XML parser.  
resolved after
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Oracle Database

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.