168大数据

标题: 查看执行计划的几种方式 [打印本页]

作者: 北京小孩    时间: 2014-8-26 21:12
标题: 查看执行计划的几种方式
在哪些地方可以找到执行计划
PLAN_TABLE (explain plan for ...)
V$SQL_PLAN (Library Cache)
DBA_HIST_SQL_PLAN (AWR)
STATS$SQL_PLAN (Statspack)
Event 10046 trace file & tkprof
Event 10053 trace file


1、explain plan for 方式,得到一个预估的执行计划
第一步:获取执行计划
SQL> explain plan for select * from emp;

生成了一个会话级的临时表plan_table

第二步:格式化输出执行计划的三种方式:
SQL> @?/rdbms/admin/utlxplp
SQL> @?/rdbms/admin/utlxpls
SQL> select * from table(dbms_xplan.display());


2、AUTOTRACE方式,生成SQL语句运行时的执行计划

第一步:生成plustrace角色并把角色给普通用户
SQL> conn scott/tiger
SQL> set autotrace on
SP2-0618: Cannot find the Session Identifier.  Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report
SQL> conn / as sysdba
SQL> @?/sqlplus/admin/plustrce.sql
SQL> grant plustrace to scott;


第二步:打开autotrace并获取执行计划
SQL> conn scott/tiger
Connected.
SQL> set autotrace on
SQL> select * from emp where empno=7782;


autotrace的用法:
SET AUTOTRACE {OFF|ON|TRACEONLY} [EXPLAIN][STATISTICS]


显示执行计划和统计信息
SQL> set autotrace on


不显示执行计划和统计信息
SQL> set autotrace off


TRACEONLY
– 运行查询
– 但不显示查询结果
– 显示统计信息和执行计划
SQL>  set autotrace traceonly


TRACEONLY EXPLAIN
– 显示执行计划但不显示统计信息
– 不执行查询,但对于增、删、改会执行
SQL> set autotrace traceonly explain


TRACEONLY STATISTICS
– 显示查询统计信息
– 执行查询
SQL> set autotrace traceonly statistics

EXPLAIN
-执行查询
--显示执行计划,不显示统计信息
SQL> set autotrace on explain


STATISTICS
-显示查询结构
-显示统计信息
set autotrace on explain


set timing on ; 显示执行时间

3、V$SQL_PLAN方式 ,实际的执行计划:
10g中格式化输出V$SQL_PLAN中的执行计划
SQL> select * from table(dbms_xplan.display_cursor());



b.通过SQL_ID和CHILD_NUMBER(v$sql)
SQL>  select sql_id,child_number,sql_text from v$sql where sql_text like 'select e.ename%';
SQL> select * from table(dbms_xplan.display_cursor('f58s78jh6w00j',0,'TYPICAL'));



c.会话中长时间运行的SQL
SQL> select t.* from v$session s,table(dbms_xplan.display_cursor(s.sql_id,s.sql_child_number,'TYPICAL')) t where sid=&SID;


当然还有10046事件和10053事件查看执行计划,不过没有必要使用那么古老的方法。




image001.png (208.07 KB, 下载次数: 119)

image001.png





欢迎光临 168大数据 (http://www.bi168.cn/) Powered by Discuz! X3.2