Get access plan via Explain Plan
Build the PLAN_TABLE in the current schema by runnning this in SQL*Plus:
--in case there is already an old version drop table plan_table; @$ORACLE_HOME/rdbms/admin/utlxplan.sql
The you can use the dbms_xplan package to get a nicely formatted display of the plan (use @$ORACLE_HOME/rdbms/admin/dbmsutil.sql to create if it doesn't exsit).
select * from table(dbms_xplan.DISPLAY());
to get the plan, e.g.
explain plan for select table_name from user_tables where table_name like '%E'; select * from table(dbms_xplan.DISPLAY());
will give you something like
PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | ------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | | 1 | NESTED LOOPS | | | | | | 2 | NESTED LOOPS OUTER | | | | | | 3 | NESTED LOOPS OUTER | | | | | | 4 | NESTED LOOPS OUTER | | | | | | 5 | NESTED LOOPS OUTER | | | | | | 6 | NESTED LOOPS | | | | | | 7 | TABLE ACCESS BY INDEX ROWID| OBJ$ | | | | |* 8 | INDEX RANGE SCAN | I_OBJ2 | | | | |* 9 | TABLE ACCESS CLUSTER | TAB$ | | | | |* 10 | INDEX UNIQUE SCAN | I_OBJ# | | | | | 11 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | | |* 12 | INDEX UNIQUE SCAN | I_OBJ1 | | | | |* 13 | INDEX UNIQUE SCAN | I_OBJ1 | | | | | 14 | TABLE ACCESS CLUSTER | USER$ | | | | |* 15 | INDEX UNIQUE SCAN | I_USER# | | | | | 16 | TABLE ACCESS CLUSTER | SEG$ | | | | |* 17 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | | | | | 18 | TABLE ACCESS CLUSTER | TS$ | | | | |* 19 | INDEX UNIQUE SCAN | I_TS# | | | | ------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 8 - access("O"."OWNER#"=:B1) filter("O"."NAME" LIKE '%E') 9 - filter(BITAND("T"."PROPERTY",1)=0) 10 - access("O"."OBJ#"="T"."OBJ#") 12 - access("T"."DATAOBJ#"="CX"."OBJ#"(+)) 13 - access("T"."BOBJ#"="CO"."OBJ#"(+)) 15 - access("CX"."OWNER#"="CU"."USER#"(+)) 17 - access("T"."TS#"="S"."TS#"(+) AND "T"."FILE#"="S"."FILE#"(+) AND "T"."BLOCK#"="S"."BLOCK#"(+)) 19 - access("T"."TS#"="TS"."TS#") Note: rule based optimization
You can only get a cost based plan from the optimizer if you have collected statistics for the tables and indexes in this query. The rows/bytes/cost columns in the table above will then also contain data.
There are no comments.