Re: avoid dynamic SQL

From: Martin Berger <martin.a.berger_at_gmail.com>
Date: Tue, 30 Jun 2009 10:06:02 +0200
Message-Id: <539350C7-BC5D-4BC3-94EA-C3C2782F460C_at_gmail.com>



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
>



--
http://www.freelists.org/webpage/oracle-l


  • application/pkcs7-signature attachment: smime.p7s
Received on Tue Jun 30 2009 - 03:06:02 CDT

Original text of this message