第一种:explain plan命令(plsql devoloper中的F5键在内部也是调用的此命令)
用法:依次执行以下语句
explain plan for 目标SQL
select * from table(dbms_xplan.display);
第二种:使用dbms_xplan包
(1)select * from table(dbms_xplan.display);
与explain plan命令配合使用
(2)select * from table(dbms_xplan.display_cursor(null,null,'advanced'));
在sqlplus中查看刚刚执行
(3)select * from table(dbms_xplan.display_cursor('sql_id/hash_value',child_cursor_number,'advanced'));
查看指定SQL的执行计划
(4)select * from table(dbms_xplan.display_awr('sql_id'));
用于查看指定SQL的所有历史执行计划
第三种:SQLPLUS中的autotrace开关
SET AUTOTRACE OFF(默认值)(等价于SET AUTOT OFF)
SET AUTOTRACE ON(等价于SET AUTOT ON)
SET AUTOTRACE TRACEONLY(不显示执行SQL的结果)(等价于SET AUTOT TRACE)
SET AUTOTRACE TRACEONLY EXPLAIN(只显示SQL执行计划)(等价于SET AUTOT TRACE EXP)
SET AUTOTRACE TRACEONLY STATISTICS(只显示SQL资源消耗量)(等价于SET AUTOT TRACE STAT)
第四种:10046事件
查看目标sql执行计划的一种方法,和上面三种方法的不同之处在于,此方法得到的执行计划明确显示了目标SQL实际执行计划中每一步骤所消耗的逻辑读、物理读和花费的时间。
使用以下三个步骤来执行10046事件:
(1)首先在当前session中激活10046事件
(2)在此session中执行目标sql
(3)在此session中关闭10046事件
上面步骤执行完后,相关数据写入trace文件中
trace文件存放于USER_DUMP_DEST中
trace文件的格式为“实例名_ora_当前session的spid.trc”
激活10046的方法,一般有以下两种:
--alter session set events '10046 trace name context forever,level 12'
--oradebug event 10046 trace name context forever,level 12
推荐使用oradebug方式,此方式可以在激活10046事件后oradebug tracefile_name来得到trc文件的目录和名称
关闭10046事件的方法为:
--alter session set events '10046 trace name context off'
--oradebug event 10046 trace name context off
需要使用tkprof来格式化trc文件(tkprof命令位于$ORACLE_HOME/BIN目录下)