最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

查看执行计划的几种方式

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-26 21:12:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

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]


显示执行计划和统计信息
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中的执行计划
  • 会话在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
楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-28 09:18

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表