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: Keep CBO plan stable(plan stability)

Re: Keep CBO plan stable(plan stability)

From: zhu chao <zhuchao_at_gmail.com>
Date: Thu, 13 Oct 2005 22:34:26 +0800
Message-ID: <962cf44b0510130734r7a79b3f2jec93976c34e3426d@mail.gmail.com>


Hi, Lex,

   Real life application is sometimes more complicated, for some historical reasons. In this case, I did test with dynamic sampling, it used bitmap access for btree index plan, which seems very bad.   I believe dynamic sampling is not enabled by default for not analyzed tables, unless we specify the dynamic_sampling hint in SQL, right?

Thanks

On 10/13/05, Lex de Haan <lex.de.haan_at_naturaljoin.nl> wrote:
> let me answer with a counter question:
> why do you ask the CBO to optimize your SQL statements without statistics?
> that's like forcing someone without legs to run the marathon ...
> you might at least allow the CBO to perform dynamic sampling.
>
> to answer your question, in the absence of statistics, the CBO uses a mix
> of hard-coded built-in values, information from the segment header, and
> information from the row cache.
>
> cheers,
>
> Lex.
>
> > hi, all,
> > Recently we have a SQL changed the plan, without any init
> > parameter change, and table analyze.
> > Oracle version is 9.2.0.5, and optimizer_mode=rule. Tables are not
> > analyzed, but we have a no_expand hint, so actually SQL is using CBO.
> > We have 3 database running the identical application, and 1
> > database's plan is good, but two database have their pan
> > changed(previously it should be fine, as we see no timeout in
> > application, and no heavy SQL in statspack). Plan seems changes as
> > data volume changed.
> > I tried to understand why the plan is different on two different
> > database with exact setting (the data volume is a bit didfferent, say,
> > one db the table is 5gb, and another db the table is 2gb). I tried to
> > trace with 10053, and I found Oracle saw different "number of blocks"
> > for the two tables in two database. Table is not analyzed.
> > Table with correct plan:
> > TOTAL :: (NOT ANALYZED) CDN: 2000 NBLKS: 2530 AVG_ROW_LEN: 100
> > table with wrong plan:
> > TOTAL :: (NOT ANALYZED) CDN: 2000 NBLKS: 60 AVG_ROW_LEN: 100
> >
> > Both data for NBLKS are wrong.
> >
> > So I have two questions:
> > 1. How does CBO get this information?
> > 2. When we do not analyze tables, when will CBO change the plan?
> >
> > Thansk
> >
> >
> > --
> > Regards
> > Zhu Chao
> > www.cnoug.org
> > --
> > http://www.freelists.org/webpage/oracle-l
> >
>
>
>

--
Regards
Zhu Chao
www.cnoug.org
--
http://www.freelists.org/webpage/oracle-l
Received on Thu Oct 13 2005 - 09:36:53 CDT

Original text of this message

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