1.用explain plan for来获取执行计划

explain plan for <sql>;

select * from table(dbms_xplan.display());

结果如下:

---------------------------------------------------------------------------------------------------------------------

优点

  1. 不需要真实执行sql,方便快捷

缺点

  1. 这里的执行计划并不是真实的执行计划
  2. 不能获取运行时的相关统计信息(产生多少逻辑读,多少次递归调用,多少次物理读的情况)
  3. 无法判断表被访问了多少次
  4. 无法判断处理了多少行数据

---------------------------------------------------------------------------------------------------------------------

2.用autotrace 来获取执行计划

SET AUTOTRACE OFF  --此为默认值,即关闭Autotrace 

SET AUTOTRACE ON EXPLAIN  --只显示执行计划和执行结果

SET AUTOTRACE ON STATISTICS  --只显示执行的统计信息和执行结果

SET AUTOTRACE ON  --包含执行计划,统计信息和执行结果

SET AUTOTRACE TRACEONLY  --只显示执行计划
使用 SET AUTOTRACE ON EXPLAIN 时,显示执行结果,和执行计划,如图:

使用 SET AUTOTRACE ON STATISTICS 时,显示执行结果,和统计信息,如图:

使用 SET AUTOTRACE ON 时,显示执行结果,执行计划和统计信息,如图:

使用 SET AUTOTRACE TRACEONLY 时,显示执行计划和统计信息如图:

---------------------------------------------------------------------------------------------------------------------
优点

  1. 可以输出运行时的相关统计信息(产生多少逻辑读,多少次递归调用,多少次物理读的情况);

缺点

  1. 获取的不是真实的执行计划
  2. 无法看到表被访问了多少次。

---------------------------------------------------------------------------------------------------------------------
3.使用 gather_plan_statistics 获取高级执行计划

--方法1
alter session set statistics_level=all ; sql; select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); --方法2
sql;(sql中加 HINT (gather_plan_statistics)) select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));

如图:

---------------------------------------------------------------------------------------------------------------------

优点

  1. 真实的执行计划
  2. 能看到表被扫描的次数
  3. 能看到oracle预测行数和真实返回的行数
  4. 可以看到逻辑读数

缺点

  1. 必须等sql真实执行过才能看到执行计划
  2. 没有统计信息

---------------------------------------------------------------------------------------------------------------------

4.使用10046事件来获取执行计划

alter session set events '10046 trace name context  forever,level 12';

SELECT *  FROM t1, t2 WHERE t1.id = t2.t1_id   AND t1.n IN (18, 19);

alter session set events '10046 trace name context off';  

select d.value
|| '/'
|| LOWER (RTRIM(i.INSTANCE, CHR(0)))
|| '_ora_'
|| p.spid
|| '.trc' trace_file_name
from (select p.spid
from v$mystat m,v$session s, v$process p
where m.statistic#=1 and s.sid=m.sid and p.addr=s.paddr) p,
(select t.INSTANCE
FROM v$thread t,v$parameter v
WHERE v.name='thread'
AND(v.VALUE=0 OR t.thread#=to_number(v.value))) i,
(select value
from v$parameter
where name='user_dump_dest') d; exit tkprof 源trc文件路径 格式化后路径 格式化参数

oracle 执行计划的获取方法的更多相关文章

  1. 查看Oracle执行计划的几种方法

    查看Oracle执行计划的几种方法 一.通过PL/SQL Dev工具 1.直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果.其中,Cos ...

  2. 看懂Oracle执行计划

    最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...

  3. 转:Oracle 执行计划(Explain Plan) 说明

    Oracle 执行计划(Explain Plan) 说明 原贴地址:http://blog.csdn.net/tianlesoftware/article/details/5827245   如果要分 ...

  4. [转]看懂Oracle执行计划

    原文地址:https://www.cnblogs.com/Dreamer-1/p/6076440.html 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径 ...

  5. 看懂Oracle执行计划、表连接方式

    看懂Oracle执行计划  原文:https://www.cnblogs.com/Dreamer-1/p/6076440.html 最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也 ...

  6. 02 看懂Oracle执行计划

    看懂Oracle执行计划   最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing… 一:什么是Oracle执行计划? 执行计划是一条查询语句在 ...

  7. oracle执行计划(转载)

    转载自 https://www.cnblogs.com/Dreamer-1/p/6076440.html 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的 ...

  8. Oracle调优之看懂Oracle执行计划

    @ 目录 1.文章写作前言简介 2.什么是执行计划? 3.怎么查看执行计划? 4.查看真实执行计划 5.看懂Oracle执行计划 5.1 查看explain 5.2 explain执行顺序 5.3 访 ...

  9. (Oracle)看懂Oracle执行计划(转载)

    最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...

随机推荐

  1. ESP32-IDF安装并在VSCode上编译Hello World

    ESP32-IDF安装 准备工作 安装python 3 安装方法参考链接:https://blog.csdn.net/hg_qry/article/details/106415252 安装git 安装 ...

  2. 【Docker】Asp.net core在docker容器中的端口问题

    还记得[One by one系列]一步步学习docker(三)--实战部署dotnetcore中遇到的问题么?容器内部启动始终是80端口,并不由命令左右. docker run --name cont ...

  3. Part 35 AngularJS caseInsensitiveMatch and Inline Templates

    In this video we will discuss 2 simple but useful features in Angular caseInsensitiveMatch Inline Te ...

  4. Python命令行参数及文件读出写入

    看完了柯老板的个人编程作业,虽然是评测组不用做此次作业,但还是想对本次作业涉及到利用Python命令行参数以及进行文件读出写入操作做一个简单的总结.(个人编程作业还是想自己能敲一敲,毕竟我的码力还是小 ...

  5. Python知识整理(一)

    一.Python交互模式(终端上进行) python # 进入到Python交互模式,提示符是 >>> exit() # 退出Python交互模式 python xxx.py # 执 ...

  6. shuffle.java

    /************************************************************************* * Compilation: javac Shuf ...

  7. Maven pom常用plugins配置说明

    maven-compiler-plugin 编译Java源码,一般只需设置编译的jdk版本 <plugin> <groupId>org.apache.maven.plugins ...

  8. 8.2 k8s 基于StatefulSet运行mysql 一主多从 ,数据通过pv/pvc结合NFS服务器持久化

    1.准备mysql和xtrabackup镜像 下载mysql官方镜像并上传到本地harbor docker pull mysql:5.7 docker tag m ysql:5.7 192.168.1 ...

  9. CF1175G

    叉姐牛逼. \(f_{k,i} = \min_{0\leq j <i}{f_{k - 1,j} + RMQ(j + 1,i) * (i - j)}\) 我们考虑在序列上分治一波. 按照\(m\) ...

  10. Codeforces 702F - T-shirts(平衡树+势能分析)

    题面传送门 首先肯定将所有物品排个序. 考虑暴力做法,对于每个询问,枚举所有物品,能买就买.不过扫一眼就知道无法直接优化. 不妨换个角度,暴力做法是枚举询问,这次我们枚举物品.从左到右依次枚举所有物品 ...