Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: Is it possible to tune this SQL statement?
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
)||',
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 )
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
![]() |
![]() |