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

Home -> Community -> Usenet -> c.d.o.server -> Re: Is it possible to tune this SQL statement?

Re: Is it possible to tune this SQL statement?

From: frodo <daniel.crosby_at_freenet.de>
Date: 11 Jan 2006 08:41:29 -0800
Message-ID: <1136997688.948394.271280@g43g2000cwa.googlegroups.com>


The explain plan on oracle 9.2.0.6 gives: 17:39:26 SQL> explain plan for
17:39:35 2 select 'DATABASENAME: ORA_UNDO_SPACE: UNDO_AU: '||round(f.undo_au

                        )||',

17:39:42 3 UNDO_SIZE: '||round(g.undo_size)|| ' MB used in 17:39:42 4 %:'||round((f.undo_au/g.undo_size) * 100,2)||' %. Please check!' f

               rom
17:39:42 5 (select nvl( sum(sumbytes), 0 ) undo_au from (select status,
17:39:42 6 sum(bytes)/1024/1024 sumbytes, count(*) from dba_undo_extents grou

                           p by
17:39:42   7  status ) sumundo
17:39:42   8  where status in ('ACTIVE','UNEXPIRED')) f,
17:39:42 9 (SELECT sum((VDF.bytes)/1024/1024) undo_size 17:39:42 10 FROM v$datafile VDF, v$tablespace VTS, dba_tablespaces DTS
17:39:42  11  WHERE DTS.status = 'ONLINE'
17:39:42  12  AND DTS.contents = 'UNDO'
17:39:42  13  AND VTS.ts# = VDF.ts#
17:39:42  14  AND DTS.tablespace_name = VTS.name) g
17:39:42  15  where (f.undo_au/g.undo_size) > 0.7;



Explained.

17:39:42 SQL> 17:39:42 SQL> 17:39:42 SQL> select * from table(dbms_xplan.display

                              );

PLAN_TABLE_OUTPUT





| Id  | Operation                           |  Name             | Rows
| Bytes
              | Cost  |

--------------------------------------------------------------------------------
--------- | 0 | SELECT STATEMENT | | 1 | 26 | 1522 | | 1 | NESTED LOOPS | | 1 | 26 | 1522 | | 2 | VIEW | | 1 | 13 | 1435 | | 3 | SORT AGGREGATE | | 1 | 19 | | | 4 | VIEW | | 1 | 19 | 1435 | | 5 | SORT GROUP BY | | 1 | 182 | 1435 | | 6 | NESTED LOOPS | | 1 | 182 | 1429 | | 7 | NESTED LOOPS | | 1 | 156 | 1429 | |* 8 | HASH JOIN | | 82 | 6396 | 35 | |* 9 | TABLE ACCESS FULL | UNDO$ | 82 | 4264 | 17 | | 10 | TABLE ACCESS FULL | TS$ | 8168 | 207K | 17 | |* 11 | FIXED TABLE FIXED INDEX | X$KTFBUE (ind:1) | 1 | 78 | 17 | |* 12 | INDEX UNIQUE SCAN | I_FILE2 | 1 | 26 | | |* 13 | VIEW | | 1 | 13 | 87 | | 14 | SORT AGGREGATE | | 1 | 810 | | | 15 | NESTED LOOPS | | 1 | 810 | 87 | | 16 | NESTED LOOPS | | 1 | 513 | 70 | | 17 | NESTED LOOPS | | 1 | 487 | 53 | |* 18 | HASH JOIN | | 1 | 190 | 36 | | 19 | NESTED LOOPS | | 1 | 99 | 18 | |* 20 | FIXED TABLE FULL | X$KCCTS | 1 | 43 | 17 | |* 21 | TABLE ACCESS BY INDEX ROWID| TS$ | 1 | 56 | 1 | |* 22 | INDEX UNIQUE SCAN | I_TS1 | 1 | | | |* 23 | FIXED TABLE FULL | X$KCCFE | 1 | 91 | 17 | |* 24 | FIXED TABLE FIXED INDEX | X$KCCFN (ind:1) | 1 | 297 | 17 | |* 25 | FIXED TABLE FIXED INDEX | X$KCVFH (ind:1) | 1 | 26 | 17 | |* 26 | FIXED TABLE FULL | X$KCCFN | 1 | 297 | 17 |
--------------------------------------------------------------------------------
---------

Predicate Information (identified by operation id):


   8 - access("T"."TS#"="U"."TS#")
   9 - filter("U"."SPARE1"=1)
  11 - filter("E"."KTFBUESEGFNO"="U"."FILE#" AND
"E"."KTFBUESEGBNO"="U"."BLOCK#"
                                      AND
              "E"."KTFBUESEGTSN"="U"."TS#" AND
(DECODE("E"."KTFBUESTA",1,'ACTIVE
                                       ',2,'EXPIRED',3,'UNEXPI
              RED','UNDEFINED')='ACTIVE' OR
DECODE("E"."KTFBUESTA",1,'ACTIVE',2,
                                          'EXPIRED',3,'UNEXPIRED'
              ,'UNDEFINED')='UNEXPIRED'))
  12 - access("U"."TS#"="F"."TS#" AND "E"."KTFBUEFNO"="F"."RELFILE#")
  13 - filter("F"."UNDO_AU"/"G"."UNDO_SIZE">0.7)
  18 - access("X$KCCTS"."TSTSN"="FE"."FETSN")
  20 - filter("X$KCCTS"."INST_ID"=:B1 AND "X$KCCTS"."TSTSN"<>(-1))   21 - filter(DECODE("TS"."ONLINE$",1,'ONLINE',2,'OFFLINE',4,'READ

              ONLY','UNDEFINED')='ONLINE' AND DECODE("TS"."CONTENTS$",0,DECODE(B

                                        ITAND("TS"."FLAGS",16),
              16,'UNDO','PERMANENT'),1,'TEMPORARY')='UNDO' AND
"TS"."ONLINE$"<>3
                       )

  22 - access("TS"."NAME"="X$KCCTS"."TSNAM")   23 - filter("FE"."INST_ID"=:B1 AND "FE"."FEDUP"<>0 AND "FE"."FETSN"<>(-1))
  24 - filter("FN"."FNFNO"="FE"."FENUM" AND "FE"."FEFNH"="FN"."FNNUM" AND "FN"."
                FNTYP"=4
              AND "FN"."FNNAM" IS NOT NULL)
  25 - filter("FN"."FNFNO"="FH"."HXFIL")
  26 - filter("FE"."FEPAX"<>65535 AND "FE"."FEPAX"<>0 AND "FE"."FEPAX"="FNAUX"."
                            FNNUM"
              OR ("FE"."FEPAX"=0 OR "FE"."FEPAX"=65535) AND
"FE"."FENUM"="FNAUX"
                          ."FNFNO" AND
              "FNAUX"."FNTYP"=4 AND "FNAUX"."FNNAM" IS NOT NULL AND
"FE"."FEFNH"
                  ="FNAUX"."FNNUM")

Note: cpu costing is off

59 rows selected.

17:39:49 SQL> Received on Wed Jan 11 2006 - 10:41:29 CST

Original text of this message

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