`
liwenshui322
  • 浏览: 511974 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle dbms_xplan包简介

 
阅读更多

 一. 用途介绍

       dbms_xplan包用于展示执行计划。执行计划存储在计划表中,库缓存中和AWR中,dbms_xplan包能从这些地方将执行计划取出,格式化之后展示给我们。

 

        二. dbms_xplan输出

        dbms_xplan的输出就是执行计划的信息,从上往下看一般是这样的:

        第一部分:

        

 
         SQL_ID:识别父游标

        child number:这个sql_id子游标序号,识别子游标

        SQL文本内容:展示的是该执行计划是哪条SQL语句对应的

 

        第二部分:


 

        展示的是这条SQL语句被拆分成好几步来执行,提供了每一步的评估和运行统计。

        id列:步骤序号,如果前面有*,表示这一步会根据某一个过滤条件过滤数据。

        opration列:执行的操作,比如索引扫描,选择数据,表连接等等。

        name列:操作的对象,比如序号为3的操作是针对表主键T_PK的操作。

        rows:此操作返回的记录条数。

        bytes:此操作返回的记录字节数。

        cost(%cpu):操作的开销,这是一个累计值。(我们可以看到序号4的操作开销最大)括号里面的值是cpu开销的百分比,比如0操作的百分比是97%,1操作的百分比是3%。

        time:操作需要的时间,这也是一个累计值。(注意这个值可能不准确,因为oracle是采样计算的这个值)

 

        第三部分:

        接着我们会看到这样一部分信息:

        

 

        这里说明的是过滤数据步骤的具体过滤条件,比如:序号为4的过滤条件是T1.ID > 6. 注意前缀,序号4的为filter,说明是全表扫描T1,然后按照条件过滤,序号3为access,说明是按照指定的条件去有目的的访问。

 

        第四部分:

        我们可能在下面还是会看到这样一部分信息:

        

 

        说明的是每一步骤具体返回的字段信息,比如序号为4的步骤返回的是T1.N列。

        

 

        三. display函数

        调用display函数用于展示存储在计划表中的执行计划,格式如下:

        select * from table(dbms_xplan.display(table_name,statement_id,format,filter_preds))

        table_name:指定计划表的名字,默认值为plan_table,填null代表取默认值。

        statement_id:指定sql语句的名字,默认值为null,代表显示最近插入计划表的执行计划。

        format:输出内容的格式,基本的有:basic,typical,serial,all和advanced. basic:显示的是最基本的信息,advanced显示的是最全的信息。具体见下图:

         

 

        filter_preds:指定在查询计划表时,添加一个约束,比如statement_id ='test3',默认值为null,表示显示最近插入计划表的执行计划。

        示例如下:

        basic的结果:

        

 

        advanced的结果:

        

 

 

 

        四.  display_cursor函数

        该函数显示存储在库缓存中的执行计划,格式如下所示:

        select * from table(dbms_xplan.display_cursor(sql_id,cursor_child_no,format)) 

        sql_id:被指定返回执行计划的SQL语句的父游标,默认值为null,代表返回当前会话最后被执行的SQL语句的执行计划。

        cursor_child_no:指定父游标下子游标的序号,默认值为0,如果设定为null,代表返回所有的子游标的执行计划。

        format:跟display函数一样。

  • 大小: 16.5 KB
  • 大小: 31.5 KB
  • 大小: 36.7 KB
  • 大小: 28.5 KB
  • 大小: 60.2 KB
  • 大小: 38.7 KB
  • 大小: 8.4 KB
  • 大小: 21.4 KB
  • 大小: 51.5 KB
2
1
分享到:
评论

相关推荐

    Oracle中使用DBMS_XPLAN处理执行计划详解

    DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包;在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5...

    Re-post: DBMS_XPLAN : Display Oracle Execution Plans

    NULL 博文链接:https://huanyue.iteye.com/blog/2095594

    DBA笔试题.wps

    这篇文档整合了热门的oracle DBA面试问题 一. SQL tuning 类  1:列举几种表连接方式  hash join/merge join/nest loop(cluster join)/index join  2:不借助第三方工具,怎样查看sql的执行计划  set autot ...

    数据库管理员日常工作中必备的 sql

    包括常见sql命令!oracle管理命令,索引,物化视图,session,分区表等各方面语句。dbms_xplan的用法,事务重做,缓存分析语句

    ORACLE数据库DBA面试集锦

     select * from table(dbms_xplan.display); explain plan set statement_id= '测试一 ' for select (这里可以是很复杂的查询) 执行. 然后select * from plan_table a where a.statement_id= '测试一 ' 就可以...

    陈焕生:深入理解Oracle的并行执行(二)

    Tablequeue的编号代表了并行执行计划中,...下面的例子为dbms_xplan。display_cursor的输出。对于并行执行计划,会多出来三列:1. TQ列:为Q1:00或者Q1:01,其中Q1代表第一个DFO,00或者01代表tablequeue的编号。a

    Oracle中获取执行计划的几种方法分析

    首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下:explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下:select * from table(dbms_xplan....

    查看Oracle的执行计划一句话命令

    您可能感兴趣的文章:ORACLE数据库查看执行计划的方法Oracle中获取执行计划的几种方法分析Oracle中使用DBMS_XPLAN处理执行计划详解Oracle中基于hint的3种执行计划控制方法详细介绍Oracle中直方图对执行计划的影响...

    ORACLE重建索引总结

    SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT --------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | ----------...

    深入解析Oracle.DBA入门进阶与诊断案例

    10.2.2 EXPLAIN PLAN FOR与DBMS_XPLAN 483 10.2.3 通过AWR获取SQL执行计划 487 10.3 捕获问题SQL解决过度CPU消耗问题 488 10.3.1 使用vmstat检查系统当前情况 488 10.3.2 使用TOP工具辅助诊断 489 10.3.3...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 161 6.3 小结 169 第7章 高级分组 170 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP BY的“新”功能 175 7.4 GROUP BY的CUBE...

Global site tag (gtag.js) - Google Analytics