Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Mutating (SQL) execution plan!?...is that possible...strangest thing I have every seen

Re: Mutating (SQL) execution plan!?...is that possible...strangest thing I have every seen

From: Wolfgang Breitling <breitliw_at_centrexcc.com>
Date: Thu, 10 Mar 2005 07:34:25 -0700
Message-ID: <42305AF1.2090608@centrexcc.com>


How do you gather statistics? Do you per chance gather histograms ( "for all indexed columns size skewonly" or somethink like it?). I have the feeling you are setting yourself up for the bind variable peeking trap (you also seem to run with cursor_sharing=force) and appear to be falling into it.

BTW. if you change something in the sql, like the case of the word "AND" to "and" then it IS a different sql and will get parsed anew.

Marquez, Chris wrote:
> -Environment:
> Oracle 9205 RAC / RHEL3
> cursor_sharing =3D FORCE
> Table MONITORING ON and STATISTICS updated every night (for tables that
> need it).
> Perl / Web based application.
>
> This is strangest thing I have every seen.
> This query uses an index on "id" and return in 2 seconds...I tested it
> and normally our end user experience confirms that.
> The explain plan confirms this. When forcing a full table scan on this
> 2+ mill table it take < 2 min.
>
> SELECT COUNT(*) AS COUNT
> FROM MEMBERS
> WHERE UPPER (active) =3D :"SYS_B_0"=20
> AND id =3D :"SYS_B_1"
>
> He is the strange part. We are starting notice that after some (up)
> time (couple of days?) the query start degrading...slows down.
> Instead of taking seconds like when the db is first started-up, it
> starts taking 2 minutes ....the same time as a full table scan!?
> When I watch the session, I see its wait event is for "db file scattered
> read"...Full Table Scan, right?
>
> This is where things get really strange.
> If developer changes something trivial, like the case of the word and,
> like; "AND" to "and", in he Perl code and runs it again and it takes
> only seconds!!!
> Now I realize that maybe Oracle sees this as technically new SQL, but it
> is the same query and they should use the same plan!?
> Finally as soon as we flush the shared pool the original query (in the
> program code) starts performing within seconds again!?
>
> What do you think?
>
> Thanks...please reply directly to me as well as to the list;
> cmarquez_at_aarp.org.
>
> Chris Marquez
> Oracle DBA
> HEYMONitor(tm) - heymonitor.com
> "Oracle Monitoring & Alerting Solution"
> --
> http://www.freelists.org/webpage/oracle-l
>

-- 
Regards

Wolfgang Breitling
Centrex Consulting Corporation
www.centrexcc.com
--
http://www.freelists.org/webpage/oracle-l
Received on Thu Mar 10 2005 - 09:37:46 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US