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

dbms_xplan之display函数的使用

 
阅读更多
DBMS_XPLAN包包括一系列函数,主要是用于显示SQL语句的执行计划,且不同的情形下使用不同的函数来显示,如预估的执行计划则使用
display函数,而实际的执行计划则是用display_cursor函数,对于awr中的执行计划,则是用display_awr函数,而SQL tuning集合中的执行计划
则由display_sqlset来完成。本文主要描述DBMS_XPLAN包中display函数的使用,尽管可以通过SQL语句来查询缺省表plan_table来获得执行计划,
事实上,使用display函数更便捷,且display函数提供了多种不同的显示格式。

有关执行计划中各字段模块的描述请参考: 执行计划中各字段各模块描述
有关由SQL语句来获取执行计划请参考: 使用 EXPLAIN PLAN 获取SQL语句执行计划
有关使用autotrace来获取执行计划请参考:启用 AUTOTRACE 功能
有关display_cursor函数的使用请参考: dbms_xplan之display_cursor函数的使用

一、DBMS_XPLAN包中的函数
二、display函数
1、display函数的几个参数
table_name
指定计划表的名字,缺省值为 'PLAN_TABLE'.
statement_id
SQL语句的ID号,是在生成执行计划时使用set statement_id名令设定的值,默认值为NULL,当使用默认值时,将显示最近
插入计划表中的执行计划(filter_preds参数的值为空时)
format
用于控制display函数输出的内容。其常用取值为basic,typical,serial,all,advanced。其中typical为缺省值
除了上述几个取值外,还可以配合一些额外的修饰符来显示不同的内容。如:
alias、bytes、cost、note、outline、parallel、paration、predicate等
常用取值组合修饰符的例子:
basic +predicate、basic +outline(需要某个修饰符使用"+"号来连接)
typical -bytes、typical +alias -bytes -cost(不需要某个修饰符使用"-"号来连接)
注:"+"号与"-"号前面应保留空格
filter_preds
过滤谓词。用于过滤从plan_table表中返回的记录。当该值为NULL时,执行计划显示最近插入计划表中的执行计划。
如:filter_preds=>'plan_id = 223'
2、format参数常用值描述
basic 仅仅显示最少的信息。基本上包括操作和操作的对象
typical 显示大部分信息。基本上包括除了别名,提纲和字段投影外的所有信息,此为缺省值。
serial 类似于typical,但不显示并行操作
all 显示除提纲之外的所有信息
advanced 显示所有信息
3、format参数修饰符
alias 控制包含查询块与别名的显示部分
bytes 控制执行计划表中字段bytes的显示
cost 控制执行计划表中字段cost的显示
note 控制包含注释信息的显示部分
outline 控制包含提纲信息的显示部分
parallel 控制包含并行处理信息的提示
partition 控制并行处理信息的显示,尤其是执行计划表中字段TQ、IN-OUT、PQ Distrib的显示
peeked_binds 控制包含绑定变量窥探部分的显示。仅当生成执行计划时使用了绑定变量是可见
predicate 控制包含谓词filter和access显示部分
projection 控制包含投影信息的显示部分
remote 控制远程执行的SQL语句的显示
rows 控制执行计划表中字段rows的显示

三、演示使用display函数获取执行计划(演示版本Oracle 10g R2)
1、使用EXPLAIN PLAN加载预估的执行计划
2、使用display函数查看执行计划 四、总结
1、display函数仅仅针对预估的执行计划,而不是实际的执行计划
2、display函数显示了预估的执行计划且显示格式灵活,可以以不同的输出格式呈现
3、当所有参数为null的情况下,显示执行计划表中(缺省为plan_table)最后一条语句的执行计划
4、尽管可以通过SQL语句查询plan_table来获取执行计划,建议直接使用display函数,这足够说明一切问题
5、当SQL语句中使用了绑定变量时,由explain plan获得的执行计划是不可靠的
分享到:
评论

相关推荐

    Re-post: DBMS_XPLAN : Display Oracle Execution Plans

    1. `xplan.package.sql` - 这可能是一个创建或调整DBMS_XPLAN包的脚本,包含定义函数和过程的源代码,用户可以使用这些函数和过程来获取执行计划信息。 2. `xplan.display_awr.sql` - AWR(Automatic Workload ...

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

    在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5个函数分别对应不同的显示计划的方式,DBMS_XPLAN包不仅可以获取解释计划,它还...

    获取SQL语句的执行计划v1

    2. **查看执行计划**:使用`dbms_xplan.display()`函数来查看生成的执行计划。 ```sql select * from table(dbms_xplan.display()); ``` 3. **查看高级执行计划**:如果需要查看更详细的执行计划信息,可以使用...

    oracle的索引学习

    总之,Oracle的索引学习涵盖了从索引创建、选择合适的索引类型、理解数据操作对索引的影响,到使用Autotrace和DBMS_XPLAN进行性能分析等多个方面。深入理解和实践这些知识点,能帮助我们更好地管理和优化Oracle...

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

    通过查询动态性能视图,如`V$SESSION`和`V$SQL`,可以找到SQL语句的游标信息,然后使用`DBMS_XPLAN.DISPLAY_CURSOR`函数来显示对应的执行计划。这种方法可以获取到最新的执行计划信息。 3. 查询历史执行计划(DBMS_...

    Oracle运维最佳实践-下.pdf 带书签

    - 使用`DBMS_XPLAN.DISPLAY_CURSOR`显示执行计划,检查是否使用了索引。 - 使用`DBMS_STATS`重新收集索引统计信息,确保准确性。 - **2.1.24 Shared Pool优化和Library Cache Latch冲突优化** - Shared Pool是...

    为快捷显示Oracle执行计划创建存储过程

    4. **OPEN语句**:打开游标,查询`DBMS_XPLAN.DISPLAY()`函数返回的结果。`DBMS_XPLAN.DISPLAY()`是Oracle提供的一个包,用于展示执行计划的详细信息。 5. **LOOP-FETCH结构**:遍历游标中的每一行数据,通过`DBMS_...

    《Pro Oracle SQL》Chapter10 -- 10.2 Optimizing SQL -10.2.1Testing Execution Plans

    使用`DBMS_XPLAN.DISPLAY`或`DBMS_XPLAN.DISPLAY_CURSOR`函数,可以获取带有格式化的执行计划和额外的统计信息。 3. **执行计划的分析** - **操作符**:执行计划由一系列操作符组成,如TABLE ACCESS(表访问)、...

    读懂oracle sql执行计划

    最常用的方法包括使用EXPLAIN PLAN命令,SET AUTOTRACE ON命令和DBMS_XPLAN.DISPLAY函数。EXPLAIN PLAN命令将执行计划存入plan_table表中,然后通过查询这个表来查看执行计划。而SET AUTOTRACE ON命令则可以在执行...

    ORACLEEXPLAINPLAN的总结[文].pdf

    执行`EXPLAIN PLAN`后,可以通过查询`PLAN_TABLE`表或者使用`DBMS_XPLAN.DISPLAY`函数来查看执行计划。例如: ```sql SELECT A.OPERATION, OPTIONS, OBJECT_NAME, OBJECT_TYPE, ID, PARENT_ID FROM PLAN_TABLE a ...

    oracle优化文档

    例如,使用`EXPLAIN PLAN FOR`语句预解析SQL,然后用`SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)`显示其详细信息。 执行计划中的关键指标包括: 1. **访问路径**:决定了数据如何从表或索引中获取。 2. **过滤条件**...

    Oracle sql文总结(case when,查看执行计画,文本操作,查看锁表及解锁,游标)

    SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); ``` 这可以帮助优化查询性能,了解数据库如何处理查询,包括使用的索引、连接方法等。 3. **文本操作**: Oracle提供了一系列函数来处理字符串,如`SUBSTR`用于提取...

    Oracle并行执行

    然后执行了一个对`emp2`表的并行查询,并使用`DBMS_XPLAN.DISPLAY()`函数展示了执行计划。执行计划显示了并行执行的不同阶段,包括并行协调器、并行发送、并行接收等操作,以及如何将表扫描操作并行化。 #### 九、...

    oracle执行计划建立与阅读

    然后通过`DBMS_XPLAN.DISPLAY`包中的函数来显示执行计划,如: ``` SQL> @?/rdbms/admin/utlxpls 或 SQL> select * from table(DBMS_XPLAN.DISPLAY); ``` 2. **使用AUTOTRACE** `AUTOTRACE`是一种自动分析和...

    Oracle执行计划介绍与测试.pdf

    - **使用`DBMS_XPLAN.DISPLAY()`函数**:通过调用Oracle提供的包`DBMS_XPLAN`中的`DISPLAY()`函数,可以格式化地展示执行计划。 - **直接查询`EXPLAIN_TABLE`**:通过`SELECT`语句直接查询`EXPLAIN_TABLE`,可以...

    planOracle

    另外,还可以使用DBMS_XPLAN包的函数来获取更详细的输出,包括执行计划的成本、行数估计和额外的执行计划选项。 "msnshow的个人空间 - 51Testing软件测试网"和"CSDN_NET"的博客文章可能会提供更具体的实例和技巧,...

    oracl unix 问题集

    5. 解释计划(Explain Plan)和执行计划的查看:通过DBMS_XPLAN.DISPLAY函数来查看SQL执行的详细计划,能够帮助数据库管理员分析并行操作的实际效果,如使用了多少CPU资源、处理的行数、执行的成本和时间等。...

    Oracle+面试及答案-经典.docx

    上述命令首先将执行计划存储到PLAN_TABLE中,然后通过`DBMS_XPLAN.DISPLAY`函数显示详细信息,包括访问路径、成本、行数估计等。 理解并熟练运用这些连接方式和执行计划分析是Oracle数据库管理员和开发人员的基本...

    oracle 数据库性能调优技术 3 中文

    通过先使用`explain plan for`命令,然后通过`DBMS_XPLAN.display`函数来查看具体的执行计划,可以避免实际执行查询所带来的资源消耗。 #### 四、示例演示 为了更好地理解上述概念,下面给出一个简单的示例: 1. ...

Global site tag (gtag.js) - Google Analytics