1、生成某个会话跟踪文件
方式1:SQL_trace
一、跟踪其他会话
exec dbms_system.set_SQL_trace_in_session(41,49,true);
exec dbms_system.set_SQL_trace_in_session(7,284,true);

应用执行一段时间后
exec dbms_system.set_SQL_trace_in_session(41,49,false);
exec dbms_system.set_SQL_trace_in_session(7,284,false);
select value from v$diag_info where name='Default Trace File';

二、跟踪当前会话:
alter session set sql_trace=true;
执行具体想要分析的语句
alter session set sql_trace=false;
select value from v$diag_info where name='Default Trace File';

接着
$tkprof trace文件 将跟踪文件转化为标准格式的分析文件。
方式2:10046事件
一、跟踪其他会话:
exec dbms_system.set_ev(16,499,10046,8,'');
exec dbms_system.set_ev(16,499,10046,0,'');

 
二、跟踪当前会话
SQL> alter session set events '10046 trace name context forever,level 12';
执行具体想要分析的语句
SQL> alter session set events '10046 trace name context off';

2、查看执行过的语句的执行计划(必须要确保你要查询的sql语句还在shared pool中):
 
select sql_id from v$sql where sql_text='select count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id';
select * from table(dbms_xplan.display_cursor('a6hf64s57pz5b',null,'ADVANCED'));

否则需要语句在awr中记录,按照如下语句查找:
select * from table(dbms_xplan.display_awr('a6hf64s57pz5b'));
SELECT * FROM V$sqlarea a WHERE A.SQL_ID='f10pn11qharkx';

3、查看未执行的语句的执行计划:
explain plan for select salary from employees where first_name like 'Pat';
select * from table(dbms_xplan.display);

4、查看正在执行的sql语句的执行计划:
1、设置Autotrace的命令。
分别在执行sql前设置set autotrace 的不同参数,得到不同的观察效果
用法: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
--关闭跟踪执行计划和统计信息功能(默认关闭)。
SQL> set autotrace off;
--执行计划和统计信息都显示
SQL> set autotrace on ;
--只显示执行计划和统计信息,不显示sql执行结果。
SQL> set autotrace  traceonly;
--只显示执行计划
SQL> set autotrace on explain;
--只显示统计信息
SQL> set autotrace on  statistics;
使用autotrace功能时,oracle启用了两个session。
一个用来执行SQL。另一个用来记录执行计划和输出结果。

2、调优常用获取执行计划的方法( gather_plan_statistics ):
SQL> alter session set statistics_level=all;
SQL> select c1, c2, c3 from subquery_t2 t2
where c1 >= 20000
and c1 < 400000
and exists (select /*+ NO_UNNEST */
'X'
FROM SUBQUERY_T1 t1
where t1.c4 = t2.c1);

SQL>select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));
或者下面的方式可省略第一步
select /*+ gather_plan_statistics j1*/ c1, c2, c3
from subquery_t2 t2
where c1 >= 20000
and c1 < 400000
and exists (select /*+ NO_UNNEST */
'X'
FROM SUBQUERY_T1 t1
where t1.c4 = t2.c1);

SELECT SQL_ID,CHILD_NUMBER FROM V$SQL WHERE SQL_TEXT LIKE '%TEST20180122%' AND SQL_TEXT NOT LIKE '%V$SQL%';
select * from table(dbms_xplan.display_cursor('f7m13v249yp85',0,'allstats last'));
3、事件10046 trace跟踪
set autotrace off;
alter session set statistics_level=typical;
alter session set events '10046 trace name context forever,level 12';

执行要分析的sql语句
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;

tkprof trc文件 目标文件 sys=no sort=prsela,exeela,fchela
4、10053事件
详解 http://czmmiao.iteye.com/blog/1497821
alter session set events '10053 trace name context forever,level 1';
alter session set events '10053 trace name context off';

awrsqrpt.sql 可用来查看某条sql的多个执行计划

转载于:https://www.cnblogs.com/JcLevy/p/9258234.html

执行计划生成及查看的几种方法相关推荐

  1. oracle 执行计划 ppt,oracle查看执行计划的方法

    查看执行计划的方法 Explain Plan For SQL 不实际执行SQL语句,生成的计划未必是真实执行的计划 必须要有plan_table SQLPLUS AUTOTRACE 除set auto ...

  2. python requirements.txt_python生成requirements.txt的两种方法

    这篇文章主要介绍了python生成requirements.txt的两种方法,每种方法给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 python项目如何在另一个环境上重新构建项目 ...

  3. 生成唯一id的几种方法

    生成唯一id的几种方法 生成唯一id的方式有很多,UUID,自动增长列,雪花算法,redis等等. 生成id的要求: 全局唯一 趋势递增 效率高(生成.使用.索引) 控制并发 1.雪花算法(twitt ...

  4. 查找android studio版本号,Android studio版本号查看的三种方法

    Android studio版本号查看的三种方法 发布于 2016-04-10 22:50:17 | 688 次阅读 | 评论: 0 | 来源: 网友投递 Android Studio Android ...

  5. php 自动生成查询密码,php自动生成新密码的两种方法

    php自动生成新密码的两种方法,方法一采用的是随机种子,方法是乱序数组,异曲同工吧. 有需要的朋友可以参考下. 方法1: 代码示例: /* * php自动生成新密码自定义函数 适用环境: PHP5.2 ...

  6. php imagick 取得psd缩略图,PHP利用imagick读取PDF生成png缩略图的两种方法

    PHP利用imagick读取PDF生成png缩略图的两种方法 发表于2019-04-24 06:08| 次阅读| 来源网络整理| 作者session 摘要:PHP利用imagick读取PDF生成png ...

  7. Django版本查看的N种方法

                      Django版本查看的N种方法 Django是干什么的不用解释了,大概说下,是个重量级的使用Python 进行web快速开发的框架,也就是说该框架功能齐全,基本不需 ...

  8. 产生随机字符java_java生成随机字符串的两种方法

    本文实例为大家分享了java生成随机字符串的具体代码,供大家参考,具体内容如下 import java.util.Random; public class CharacterUtils { //方法1 ...

  9. mysql查看执行计划_如何查看MySQL的执行计划

    一.EXPLAIN语法 语法:EXPLAIN SELECT 1.EXPLAIN EXTENDED SELECT 将执行计划"反编译"成SELECT语句,运行SHOW WARNING ...

最新文章

  1. 在CISCO路由器上实现CHAP认证
  2. 关于举办第十五届全国大学生智能汽车竞赛浙江赛区选拔赛的通知(草案)
  3. matlab for循环_从零开始的matlab学习笔记——(5)循环
  4. 一个关于解决序列化问题的编程技巧
  5. 事务RFC(TRFC)原理和实战解析
  6. DML触发器实现日志功能
  7. 【机器学习】基于LightGBM算法实现数据挖掘!
  8. mysql5.6 error
  9. asp.net 2.0下嵌套masterpage页的可视化编辑
  10. ccxprocess可以禁用么_提效 | 5G时代网站还需要加速么?
  11. 牛客网暑期ACM多校训练营(第二场)J farm (二维树状数组)
  12. 【渝粤题库】陕西师范大学163204 旅游规划学
  13. 前端学习(2782):获取轮播图的数据
  14. php登录注册脚本,PHP - 登录脚本
  15. 深度学习(三十九)可视化理解卷积神经网络(2.0)
  16. 红橙Darren视频笔记 面试题 为什么view获取宽高为0 onCreate onResume view.post源码浅析(继承activity api27)
  17. oracle左连接没用_oracle左外连接不显示正确的空值
  18. 双协议栈服务器,10. 搭建双协议栈Web服务器:使用IPv6地址、IPv4
  19. 从底层来看函数的调用和返回
  20. 计算某日是该年的第几天

热门文章

  1. Python类的魔法方法
  2. js为操作radio
  3. [深度学习-实践]GAN入门例子-利用Tensorflow Keras与数据集CIFAR10生成新图片
  4. Python编程高手之路——第二章:流程控制
  5. Incorporating Lexical Priors into Topic Models(即交互式主题模型的应用)论文阅读
  6. 截取视频段转换为GIF动图
  7. 解决java compiler level does not match the version of the inst
  8. CoolFormat 源代码格式化工具使用手册
  9. STM32 - CubeMX 的使用实例详细(01.1)- ST-LINK V2 的配置
  10. 【编撰】linux IPC 001 - 概述