马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在哪些地方可以找到执行计划 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] |
显示执行计划和统计信息
不显示执行计划和统计信息
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 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事件查看执行计划,不过没有必要使用那么古老的方法。
|