Hi Martin the formulas are such as 1/1+2+3+4+5+6+7 2/5+43+434+33+22 1 2+3+4+4 The shared pool is full of BEGIN :EXITCODE statements and is causing ORA-4031 :-[ Using 9.2.0.8 TIA Alex 2009/6/30 Martin Berger <martin.a.berger@xxxxxxxxx> > Alex, > > Can you give some examples of the formula, please? > what version are you on? In 11g (and 10.2.0.4 with backport and event [1] ) > you can use dbms_shared_pool.purge to purge single sql statements. Maybe > that helps? > Another method I would try is to handle the cursor of your execute > immediate explicite and close it asap afterwards. > > But as I have to confess I does not know what really causes the ORA-4031, > these are all pure suggestions. > Can you check what fills up your SGA? > > best regards, > Martin > > [1] > http://kerryosborne.oracle-guy.com/2008/09/flush-a-single-sql-statement/ > > > > > Am 30.06.2009 um 08:42 schrieb amonte: > > > Hi all >> >> >> I have some problem with some dynamic sql generated by a package, it is >> causing ORA-4031 and I have to reboot the instance to get rid of the >> problem. >> >> The code does something like >> >> for i in (... cursor ...) >> loop >> select formula >> into vFormula >> from calculators >> where ....... >> execute immediate 'BEGIN :EXITCODE:='||vFormula||'; END;'; >> end loop; >> >> vFormula contains mathematical formulas >> >> The cursor returns around 30000 rows and this is hammering the shared pool >> 30000 times! >> >> I dont see how can I avoid this dynamic SQL without doing some major >> changes (how the formulas are stored for example) and wonder if anyone have >> some idea. >> >> >> TIA >> >> >> Alex >> >> >