ORACLE 获取执行计划的方法

一.获取执行计划的6种方法(详细步骤已经在每个例子的开头注释部分说明了):
  1. explain plan for获取;
  2. set autotrace on ;
  3. statistics_level=all;
  4. 通过dbms_xplan.display_cursor输入sql_id参数直接获取
  5. 10046 trace跟踪
  6. awrsqrpt.sql

二.适用场合分析
  1.如果某SQL执行非常长时间才会出结果,甚至慢到返回不了结果,这时候看执行计划就只能用方法1;
  2.跟踪某条SQL最简单的方法是方法1,其次就是方法2;
  3.如果想观察到某条SQL有多条执行计划的情况,只能用方法4和方法6;
  4.如果SQL中含有多函数,函数中套有SQL等多层递归调用,想准确分析,只能使用方法5;
  5.要想确保看到真实的执行计划,不能用方法1和方法2;
  6.要想获取表被访问的次数,只能使用方法3;

时间: 2024-08-08 21:56:05

ORACLE 获取执行计划的方法的相关文章

Oracle获取执行计划方法

获取执行计划的6种方法 1. explain plan for获取: 2. set autotrace on : 3. statistics_level=all; 4. 通过dbms_xplan.display_cursor输入sql_id参数直接获取 5. 10046 trace跟踪 6. awrsqrpt.sql 适用场合分析 1.如果某SQL执行非常长时间才会出结果,甚至慢到返回不了结果,这时候看执行计划就只能用方法1: 2.跟踪某条SQL最简单的方法是方法1,其次就是方法2,方法2要执行

mysql 获取执行计划的方法

mysql 获取执行计划方法:1.通过explain进行查看sql的执行计划:2.通线程正在执行的sql查看该sql的执行计划: explain进行查看sql的执行计划相对简单,其实通线程正在执行的sql查看执行计划也很简单,那么为什么还需要第二种方式呢? 因为日常工作会发现很多sql一直在执行,执行发生异常,如果把该sql拿出来执行又很快,于是我们想获取该sql执行异常时候的执行计划,同时因为数据在时刻的变化,统计信息也有可能变化,有可能导致执行计划发生改变,好在mysql5.7开始已经可以通

oracle各种执行计划优缺点

一. 获取oracle执行计划的方法有6种,各自的优缺点如下,根据实际情况进行选择使用: explain plan for 方式 步骤1:explain plan for 后跟着SQL语句 步骤2:select * from table(dbms_xplan.display()); 优点: 1.不需要真正的去执行语句,快捷方便缺点: 1.虽然快捷但是因为没有真正去运行,所以没有输出运行时的相关统计信息(逻辑读,递归调用,物理读)2.不知道被处理的行数3.不知道表被访问的次数 set autotr

sql-查看执行计划的方法

sql执行计划:把SQL语句拆分为每个的操作步骤组合,按照一定的顺序执行得出结果,查看并看懂执行计划是调优的关键步骤 查看执行计划的方法 DBMS_XPLAN包 sql*plus AUTO trace V$SQL_PLAN.DBA_HIST_SQL_PLAN ?/rdbms/admin/awrsqrpt.sql 工具类:toad.pl/SQL DEV 跟踪dump:10046,10053 大多数人比较喜欢用工具直接看,以下来说明这些方式的不同用处 一.DBMS_XPLAN包 10g以后可以查看A

Oracle SQL执行计划基线总结(SQL Plan Baseline)

一.基础概念 Oracle 11g开始,提供了一种新的固定执行计划的方法,即SQL plan baseline,中文名SQL执行计划基线(简称基线),可以认为是OUTLINE(大纲)或者SQL PROFILE的改进版本,基本上它的主要作用可以归纳为如下两个: 1.稳定给定SQL语句的执行计划,防止执行环境或对象统计信息等等因子的改变对SQL语句的执行计划产生影响! 2.减少数据库中出现SQL语句性能退化的概率,理论上不允许一条语句切换到一个比已经执行过的执行计划慢很多的新的执行计划上! 注意:

如何获取执行计划

如何oracle的获取执行计划 1.获取普通执行计划,效果类似于先执行set autot on exp;然后执行sql. explan plan for your_sql; select * from table(dbms_xplan.display); 2.获取具有outline信息的执行计划,用sqlprofile调优时非常有用,或者用这个执行计划了解更多oracle内部的hint explan plan for your_sql; select * from table(dbms_xpla

oracle查看执行计划之DBMS_XPLAN

使用DBMS_XPLAN包中的方法是在oracle数据库中得到目标SQL的执行计划的另一种方法.针对不同的应用场景吗,你可以选择如下四种方法中的一种: select * from table(dbms_xplan.display) select * from table(dbms_xplan.display_cursor(null,null,'advenced')); select * from table(dbms_xplan.display_cursor('sql_id/hash_value

dbms_xplan.display_awr方式获取执行计划的实验和之前的误导

<查看Oracle执行计划的几种常用方法-系列1>(http://blog.csdn.net/bisal/article/details/38919181)这篇博文中曾提到一个隐藏问题: "隐藏问题2: 实验这部分内容发现使用select * from table(dbms_xplan.display_awr('sql_id'));并没有结果,@黄玮老师说有可能是AWR收集的是top的SQL,有可能测试用的SQL不是most intensive SQL,但我是用alter syste

oracle稳定执行计划1

稳定执行计划 1 策略: Oracle的sql 执行计划在一些场景下会发生变化,导致系统会发生不可知的情况,影响系统的稳定性,特别是关键业务的sql. 比如下面的场景: 统计信息过老,重新收集了统计信息. 为表添加了新的分区,删除分区. 而oracle提供的稳定执行计划的策略也大致有: 存储纲要(stored outlines) Sql 基线(sql baseline 11g) Sql profile Hint 在这几种方式中,在应用端任何的sql变动都会使stored outlines, sq