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执行结果数量和资源消耗