Re: How to force Oracle generate a new execution plan
Date: Thu, 10 Nov 2016 23:26:49 +0100
Message-ID: <CAJ2-Qb80tK8NhbEkrBAa5XfSdLqXjq65zaNZkRu-zzRxBD8AYg_at_mail.gmail.com>
Hi
With dbms_shared_pool you can purge the execution plan for a sql_id but I am not sure how effective can that be.
Or you can use FGAC as suggested in this post by Dion Cho: http://dioncho.wordpress.com/2009/02/06/making-sql-always-hard-parsed-using-row-level-security/
BR
On Thu, Nov 10, 2016 at 11:12 PM, Eriovaldo Andrietta <ecandrietta_at_gmail.com
> Hello,
> wrote:
>
> I have a dynamic query that is mounted by a java application.
> This query uses IN (:b1, :b2, :b3 ... :b1000)
>
> When the application submit the sql statment using until 20 bind
> variables, the return is fast.
> When the application submit the sql statment using more than 20 bind
> variables, the return is slow, very slow. Here It maybe using a certain bad
> execution plan.
> The limit of bind variables is 1000.
>
> 1.) How can I do to force Oracle always generate a new execution plan and
> not reuse the plan that is in cache ?
> 2.) Is there a way to clear a execution plan for a specific sql_id ? (I
> have the sql_id that supose is with the bad execution plan).
>
> Is there any hint to do it ?
>
> I cannot use:
> alter system flush BUFFER_CACHE;
> alter system flush SHARED_POOL;
> because I will clear all execution plans of the instance. I would like to
> solve only 1 sql_id.
>
>
> Regards
> Eriovaldo
>
>
-- http://www.freelists.org/webpage/oracle-lReceived on Thu Nov 10 2016 - 23:26:49 CET