oracle 执行计划的获取方法
1.用explain plan for来获取执行计划
explain plan for <sql>; select * from table(dbms_xplan.display());
结果如下:
---------------------------------------------------------------------------------------------------------------------
优点
- 不需要真实执行sql,方便快捷
缺点
- 这里的执行计划并不是真实的执行计划
- 不能获取运行时的相关统计信息(产生多少逻辑读,多少次递归调用,多少次物理读的情况)
- 无法判断表被访问了多少次
- 无法判断处理了多少行数据
---------------------------------------------------------------------------------------------------------------------
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 时,显示执行计划和统计信息如图:
---------------------------------------------------------------------------------------------------------------------
优点
- 可以输出运行时的相关统计信息(产生多少逻辑读,多少次递归调用,多少次物理读的情况);
缺点
- 获取的不是真实的执行计划
- 无法看到表被访问了多少次。
---------------------------------------------------------------------------------------------------------------------
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'));
如图:
---------------------------------------------------------------------------------------------------------------------
优点
- 真实的执行计划
- 能看到表被扫描的次数
- 能看到oracle预测行数和真实返回的行数
- 可以看到逻辑读数
缺点
- 必须等sql真实执行过才能看到执行计划
- 没有统计信息
---------------------------------------------------------------------------------------------------------------------
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 执行计划的获取方法的更多相关文章
- 查看Oracle执行计划的几种方法
查看Oracle执行计划的几种方法 一.通过PL/SQL Dev工具 1.直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果.其中,Cos ...
- 看懂Oracle执行计划
最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...
- 转:Oracle 执行计划(Explain Plan) 说明
Oracle 执行计划(Explain Plan) 说明 原贴地址:http://blog.csdn.net/tianlesoftware/article/details/5827245 如果要分 ...
- [转]看懂Oracle执行计划
原文地址:https://www.cnblogs.com/Dreamer-1/p/6076440.html 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径 ...
- 看懂Oracle执行计划、表连接方式
看懂Oracle执行计划 原文:https://www.cnblogs.com/Dreamer-1/p/6076440.html 最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也 ...
- 02 看懂Oracle执行计划
看懂Oracle执行计划 最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing… 一:什么是Oracle执行计划? 执行计划是一条查询语句在 ...
- oracle执行计划(转载)
转载自 https://www.cnblogs.com/Dreamer-1/p/6076440.html 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的 ...
- Oracle调优之看懂Oracle执行计划
@ 目录 1.文章写作前言简介 2.什么是执行计划? 3.怎么查看执行计划? 4.查看真实执行计划 5.看懂Oracle执行计划 5.1 查看explain 5.2 explain执行顺序 5.3 访 ...
- (Oracle)看懂Oracle执行计划(转载)
最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...
随机推荐
- 攻防世界 Misc 新手练习区 gif Writeup
攻防世界 Misc 新手练习区 gif Writeup 题目介绍 题目考点 仔细联想 字符转换 Writeup 下载附件并打开 104张黑白图 发现是一堆黑色和白色的图片,按某种规律排列,猜想flag ...
- 菜鸡的Java笔记 第十三 String 类的两种实例化方法
String 类的两种实例化方法 String 类的两种实例化方式的区别 String 类对象的比较 Stirng 类对象的使用分析 /* 1.String 类的两种实例化方式的区别 ...
- ESP32-S3 搭建 micropython 开发环境,固件编译,烧录
简述 上手了一块乐鑫科技官方推出的ESP32-S3-DevKitC-1开发板,发现 ESP32-S3 的综合性能较比前两代有着非常明显的提升,wifi与蓝牙功能,更充足的外设扩展能力,可以看出其在未来 ...
- AnnotationConfigApplicationContext(1)之初始化Scanner和Reader
AnnotationConfigApplicationContext(1)初始化Scanner和Reader 我们以AnnotationConfigApplicationContext为起点来探究Sp ...
- python实现模板匹配
目录: (一)原理 (二)代码实现和几种常见的模板匹配算法 正文: (一)原理 在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大. 作用有局限性, ...
- java:字符串与数字的转换
各种数字类型转换成字符串型 int i =8; String s =Integer.toString(i);// String g =String.valueOf(i); // 其中 value 为任 ...
- Java JDBC 理论笔记
一.JDBC常用接口.类介绍 JDBC提供对独立于数据库统一的API,用以执行SQL命令.API常用的类.接口如下: DriverManager 管理JDBC驱动的服务类,主要通过它获取Connect ...
- [bzoj5510]唱跳rap和篮球
显然答案可以理解为有(不是仅有)0对情况-1对情况+2对情况-- 考虑这个怎么计算,先计算这t对情况的位置,有c(n-3t,t)种情况(可以理解为将这4个点缩为1个,然后再从中选t个位置),然后相当于 ...
- [bzoj1106]立方体大作战
先贪心,容易发现如果两个点中间没有点对,那么一定可以先把这两个点消掉分析一下,就可以发现这样两个点的答案就是这两个点对中间不成对的点数量扫描过去,线段树维护每一个点的权值(是否会被算入答案)即可 1 ...
- Identity Server 4 从入门到落地(一)—— 从IdentityServer4.Admin开始
最近项目中需要使用Identity Server 4,以前对这个技术只是有些了解,没有系统研究过,网上相关的资料不少,大多是从编写一个简单的认证服务开始,离能够落地使用有相当的距离,理论学习如何不结合 ...