then i dont know. CBO can be finicky. Ive seen the CBO draw two totally different 
plans when i have identically data in two different tablespaces. One ran in 10 
minutes, one ran for 18 hours and i killed it. 

what version of oracle are you on? 

also try analyze index <index_name> validate structure. in both databases. then do a 
minus. see if any of that is different. 

> 
> From: "Guang Mei" <[EMAIL PROTECTED]>
> Date: 2003/08/25 Mon PM 03:39:37 EDT
> To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
> Subject: RE: why this sql's exection plan is so different on two servers
> 
> CLUSTERING_FACTOR values of the indexes for table IDENTIFIER are identical
> on both servers. Also all table and indexes are analyzed (as I said in my
> original email).
> 
> Guang
> 
> [EMAIL PROTECTED]> select INDEX_NAME,CLUSTERING_FACTOR from user_indexes where
> TABLE_NAME = 'IDENTIFIER';
> 
> INDEX_NAME                     CLUSTERING_FACTOR
> ------------------------------ -----------------
> IDENTIFIER_GENEID_INDEX                    53544
> IDENTIFIER_ID_INDEX                         4674
> IDENTIFIER_SEQTABID_INDEX                   3376
> IDENTIFIER_SPECIESID_INDEX                  1725
> 
> 
> [EMAIL PROTECTED]> select INDEX_NAME,CLUSTERING_FACTOR from user_indexes where
> TABLE_NAME = 'IDENTIFIER';
> 
> INDEX_NAME                     CLUSTERING_FACTOR
> ------------------------------ -----------------
> IDENTIFIER_GENEID_INDEX                    53544
> IDENTIFIER_ID_INDEX                         4674
> IDENTIFIER_SEQTABID_INDEX                   3376
> IDENTIFIER_SPECIESID_INDEX                  1725
> 
> 
> -----Original Message-----
> [EMAIL PROTECTED]
> Sent: Monday, August 25, 2003 3:15 PM
> To: Multiple recipients of list ORACLE-L
> 
> 
> go to dba_indexes and check CLUSTERING_FACTOR of the index you are using
> that is slow. Oracle is more likely to use an index if that value is close
> to the number of blocks. Less likely if its close to the number of rows.
> 
> it basically says how well ordered the data is. Then make sure you analyze
> your indexes.
> >
> > From: "Guang Mei" <[EMAIL PROTECTED]>
> > Date: 2003/08/25 Mon PM 03:04:30 EDT
> > To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
> > Subject: why this sql's exection plan is so different on two servers
> >
> >
> > Hi:
> >
> > I have a question about what could be the reason(s) that an identical sql
> > have a dramatics execution time on two different servers.
> >
> > Both servers OS are the same (Solaris 2.8), Oracle version are the same
> > (8173). init.ora are the same, db data are identical (loaded from the same
> > dump file). All tables are indexes are analyzed right after schema import.
> > We actually run same application code on both dbs. One is used for the
> > weekly production, the other is used for backup in case we have production
> > problem. The query involved always run fast on both servers until this
> week.
> >
> > The sql statement in question is:
> >
> > select      Observationlist.id, CurationDetails.Context,
> >     (to_number(CurationDetails.text) + 2000000),
> >     Identifier.ID, Identifier.SpeciesID
> > from        Observationlist, CurationDetails, mt.Identifier, mt.Category2gene,
> >     termlist
> > where       Observationlist.SourceID = CurationDetails.ID
> >     and CurationDetails.Context in (3001044, 3001064, 3001073)
> >     and CurationDetails.Text = to_char(termlist.TermID)
> >     and Observationlist.NextObs is null
> >     and Observationlist.CurationStatus = 'E'
> >     and Observationlist.CurationType in (3000722)
> >     and Observationlist.Target = 'GeneID'
> >     and Identifier.SpeciesID not in (6, 33, 100, 101, 103, 104, 105)
> >     and Identifier.Type != 'A'
> >     and Observationlist.GeneID = Identifier.GeneID
> >     and Category2gene.CComment = 'PhenotypeLoader'||Observationlist.ID
> >     and exists (
> >             select  1 from termobs
> >             where   termobs.obsid=observationlist.id and
> >                     TermObs.TermID = 3000313)
> >     and exists (
> >             select  1 from termobs
> >             where   termobs.obsid=observationlist.id and
> >                     TermObs.TermID = 3000921);
> >
> >
> > --- on server 1, it is taking more than 10 hours to finish!:
> >
> > Execution Plan
> > ----------------------------------------------------------
> >    0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1893 Card=5 Bytes=76
> >           5)
> >
> >    1    0   FILTER
> >    2    1     HASH JOIN (Cost=1893 Card=5 Bytes=765)
> >    3    2       NESTED LOOPS (Cost=922 Card=4 Bytes=536)
> >    4    3         NESTED LOOPS (Cost=622 Card=4 Bytes=512)
> >    5    4           HASH JOIN (Cost=614 Card=4 Bytes=464)
> >    6    5             TABLE ACCESS (BY INDEX ROWID) OF 'OBSERVATIONLIS
> >           T' (Cost=519 Card=4 Bytes=132)
> >
> >    7    6               BITMAP CONVERSION (TO ROWIDS)
> >    8    7                 BITMAP AND
> >    9    8                   BITMAP INDEX (SINGLE VALUE) OF 'OBSERVATIO
> >           NLISTTARGETINDEX'
> >
> >   10    8                   BITMAP INDEX (SINGLE VALUE) OF 'CURATIONST
> >           ATUSINDEX'
> >
> >   11    8                   BITMAP INDEX (SINGLE VALUE) OF 'CURATIONTY
> >           PEINDEX'
> >
> >   12    5             TABLE ACCESS (FULL) OF 'CURATIONDETAILS' (Cost=9
> >           4 Card=10368 Bytes=860544)
> >
> >   13    4           TABLE ACCESS (BY INDEX ROWID) OF 'IDENTIFIER' (Cos
> >           t=2 Card=62405 Bytes=748860)
> >
> >   14   13             INDEX (RANGE SCAN) OF 'IDENTIFIER_GENEID_INDEX'
> >           (NON-UNIQUE) (Cost=1 Card=62405)
> >
> >   15    3         INDEX (FAST FULL SCAN) OF 'PK_TERM' (UNIQUE) (Cost=7
> >           5 Card=221033 Bytes=1326198)
> >
> >   16    2       TABLE ACCESS (FULL) OF 'CATEGORY2GENE' (Cost=970 Card=
> >           841893 Bytes=15995967)
> >
> >   17    1     TABLE ACCESS (BY INDEX ROWID) OF 'TERMOBS' (Cost=4 Card=
> >           1 Bytes=11)
> >
> >   18   17       INDEX (RANGE SCAN) OF 'TERMOBSIDINDEX' (NON-UNIQUE) (C
> >           ost=3 Card=1)
> >
> >   19    1     TABLE ACCESS (BY INDEX ROWID) OF 'TERMOBS' (Cost=4 Card=
> >           1 Bytes=11)
> >
> >   20   19       INDEX (RANGE SCAN) OF 'TERMOBSIDINDEX' (NON-UNIQUE) (C
> >           ost=3 Card=1)
> >
> >
> > ------ on server 2, it is taking less than a minute to finish :
> >
> > Execution Plan
> > ----------------------------------------------------------
> >    0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1777 Card=9190 Bytes
> >           =1406070)
> >
> >    1    0   FILTER
> >    2    1     HASH JOIN (Cost=1777 Card=9190 Bytes=1406070)
> >    3    2       HASH JOIN (Cost=794 Card=8004 Bytes=1072536)
> >    4    3         HASH JOIN (Cost=697 Card=8087 Bytes=986614)
> >    5    4           TABLE ACCESS (BY INDEX ROWID) OF 'OBSERVATIONLIST'
> >            (Cost=519 Card=4 Bytes=132)
> >
> >    6    5             BITMAP CONVERSION (TO ROWIDS)
> >    7    6               BITMAP AND
> >    8    7                 BITMAP INDEX (SINGLE VALUE) OF 'OBSERVATIONL
> >           ISTTARGETINDEX'
> >
> >    9    7                 BITMAP INDEX (SINGLE VALUE) OF 'CURATIONSTAT
> >           USINDEX'
> >
> >   10    7                 BITMAP INDEX (SINGLE VALUE) OF 'CURATIONTYPE
> >           INDEX'
> >
> >   11    4           HASH JOIN (Cost=177 Card=10368 Bytes=922752)
> >   12   11             TABLE ACCESS (FULL) OF 'CURATIONDETAILS' (Cost=9
> >           4 Card=10368 Bytes=860544)
> >
> >   13   11             INDEX (FAST FULL SCAN) OF 'PK_TERM' (UNIQUE) (Co
> >           st=75 Card=221033 Bytes=1326198)
> >
> >   14    3         TABLE ACCESS (FULL) OF 'IDENTIFIER' (Cost=88 Card=62
> >           405 Bytes=748860)
> >
> >   15    2       TABLE ACCESS (FULL) OF 'CATEGORY2GENE' (Cost=970 Card=
> >           841893 Bytes=15995967)
> >
> >   16    1     TABLE ACCESS (BY INDEX ROWID) OF 'TERMOBS' (Cost=4 Card=
> >           1 Bytes=11)
> >
> >   17   16       INDEX (RANGE SCAN) OF 'TERMOBSIDINDEX' (NON-UNIQUE) (C
> >           ost=3 Card=1)
> >
> >   18    1     TABLE ACCESS (BY INDEX ROWID) OF 'TERMOBS' (Cost=4 Card=
> >           1 Bytes=11)
> >
> >   19   18       INDEX (RANGE SCAN) OF 'TERMOBSIDINDEX' (NON-UNIQUE) (C
> >           ost=3 Card=1)
> >
> >
> > From the execution plan I can see that when Oracle is doing FULL TABLE
> SCAN
> > on table IDENTIFIER, the query runs fast. So I added hint  "FULL
> > (Identifier)" to the sql:
> >
> > select /*+ FULL (Identifier) */
> >     Observationlist.id, CurationDetails.Context,
> >     (to_number(CurationDetails.text) + 2000000),
> >     Identifier.ID, Identifier.SpeciesID
> > from        Observationlist, CurationDetails, mt.Identifier, mt.Category2gene,
> >     termlist
> > where       Observationlist.SourceID = CurationDetails.ID
> >     and CurationDetails.Context in (3001044, 3001064, 3001073)
> >     and CurationDetails.Text = to_char(termlist.TermID)
> >     and Observationlist.NextObs is null
> >     and Observationlist.CurationStatus = 'E'
> >     and Observationlist.CurationType in (3000722)
> >     and Observationlist.Target = 'GeneID'
> >     and Identifier.SpeciesID not in (6, 33, 100, 101, 103, 104, 105)
> >     and Identifier.Type != 'A'
> >     and Observationlist.GeneID = Identifier.GeneID
> >     and Category2gene.CComment = 'PhenotypeLoader'||Observationlist.ID
> >     and exists (
> >             select  1 from termobs
> >             where   termobs.obsid=observationlist.id and
> >                     TermObs.TermID = 3000313)
> >     and exists (
> >             select  1 from termobs
> >             where   termobs.obsid=observationlist.id and
> >                     TermObs.TermID = 3000921);
> >
> > and it ran just as fast on server 1.
> >
> > Could anyone explain to me why?
> >
> > TIA.
> >
> > Guang
> >
> > --
> > Please see the official ORACLE-L FAQ: http://www.orafaq.net
> > --
> > Author: Guang Mei
> >   INET: [EMAIL PROTECTED]
> >
> > Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> > San Diego, California        -- Mailing list and web hosting services
> > ---------------------------------------------------------------------
> > To REMOVE yourself from this mailing list, send an E-Mail message
> > to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
> > the message BODY, include a line containing: UNSUB ORACLE-L
> > (or the name of mailing list you want to be removed from).  You may
> > also send the HELP command for other information (like subscribing).
> >
> 
> --
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> --
> Author: <[EMAIL PROTECTED]
>   INET: [EMAIL PROTECTED]
> 
> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> San Diego, California        -- Mailing list and web hosting services
> ---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from).  You may
> also send the HELP command for other information (like subscribing).
> 
> -- 
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> -- 
> Author: Guang Mei
>   INET: [EMAIL PROTECTED]
> 
> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> San Diego, California        -- Mailing list and web hosting services
> ---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from).  You may
> also send the HELP command for other information (like subscribing).
> 

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: <[EMAIL PROTECTED]
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to