Re: oracle recompiling sql the same sql repeatedly?

  • From: "goran bogdanovic" <goran00@xxxxxxxxx>
  • To: ryan_gaffuri@xxxxxxxxxxx
  • Date: Thu, 22 Jun 2006 16:58:41 +0200

Check V$SQL_SHARED_CURSOR


On 6/22/06, ryan_gaffuri@xxxxxxxxxxx <ryan_gaffuri@xxxxxxxxxxx> wrote:

I have a test box. I am testing some things out. I noticed excessive row cache waits, so I ran this generic query:

select substr(sql_text,1,100),count(*)

from v$sql

group by substr(sql_text,1,100)

having count(*) > 500

order by 2

I found that some of my test sql was recompiling repeatedly.

1. I am using bind variables and I am not using dynamic sql.

2. I was not able to do a select count(distinct sql_fulltext) from v$sql
because its a clob, so I copied the sql to a new table with a varchar2(4000)
column.

3. I did a select count(distinct sql_fulltext) from mydifftable and I got
1 row back.

4. Copied to rows from v$sql with this sql to files locally and ran an
open source diff utility on them and got the exact same sql.

Why would oracle recompile the same sql? It is run out of the same schema?
Oracle support recommended that I use cursor_sharing=similiar; before I do
that I want to understand why this is happening.

Anyone see this before? I am on 10g release 2. Maybe I missed something in
the docs?

Other related posts: