如何查看执行计划

2.2 如何查看执行计划

  • 1. explain plan命令
  • 2. DBMS_XPLAN包
  • 3. SQLPLUS 中的AUTOTRACE开关
  • 4. 10046事件
  • 5. 10053事件
  • 6. AWR报告或Statspack报告
  • 7. 一些现成的脚本(如display_cursor_9i.sql等)

其中前四种方法使用得尤为普遍:

2.2.1 explain plan 命令

语法是依次执行如下两条命令:
explain plan for + 目标SQL
select * from table(dbms_xplan.display)

收集统计信息:
exec dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'EMP',estimate_percent=>100,cascade=>true,method_opt=>'for all columns size 1');

2.2.2 DBMS_XPLAN包

共四种方法如下:
--结合explain plan for 使用      
1.select * from table(dbms_xplan.display);  执行计划可能不准确
--用于查看刚刚执行过的SQL执行计划。advanced也可以改为使用all,但是advanced显示结果更详细
2.select * from table(dbms_xplan_cursor(null,null,'advanced'));  执行计划准确
--用于查看指定SQL的执行计划
3.select * from table(dbms_xplan_cursor('sql_id/hash_value',child_cursor_number,'advanced'));   执行计划准确
--awr报告
4.select * from table(dbms_xplan.display_awr('sql_id'));  执行计划准确


2.2.3 AUTOTRACE开关    

所有使用AUTOTRACE的执行计划都可能不准确
在SQLPLUS中设置AUTOTRACE开关的语法如下所示:
SET AUTOTRACE {OFF|ON|TRACEONLY} [EXPLAIN] [STATISTICS]

  • 1.SET AUTOTRACE ON --显示SQL执行结果内容、执行计划、资源消耗
  • 2.SET AUTOTRACE OFF --显示SQL执行结果内容
  • 3.SET AUTOTRACE TRACEONLY --显示QL执行结果的数量、执行计划、资源消耗
  • 4.SET AUTOTRACE TRACEONLY EXPLAIN --只显示执行计划
  • 5.SET AUTOTRACE TRACEONLY STATISTICS --不显示执行计划,只显示目标SQL执行结果数量和资源消耗

猜你喜欢

转载自www.cnblogs.com/studyking/p/11613606.html