运维联盟俱乐部

 找回密码
 立即注册
查看: 1720|回复: 0

[日常管理] dbms_xplan

[复制链接]
  • TA的每日心情
    开心
    2023-8-9 11:05
  • 发表于 2020-10-22 09:39:41 | 显示全部楼层 |阅读模式
    dbms_xplan
    DBMS_XPLAN包包括一系列函数,主要是用于显示SQL语句的执行计划,且不同的情形下使用不同的函数来显示,如预估的执行计划则使用
    display函数,而实际的执行计划则是用display_cursor函数,对于awr中的执行计划,则是用display_awr函数,而SQL tuning集合中的执行计划
    则由display_sqlset来完成。本文主要描述DBMS_XPLAN包中display函数的使用,尽管可以通过SQL语句来查询缺省表plan_table来获得执行计划,
    事实上,使用display函数更便捷,且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的显示

    1.DBMS_XPLAN.DISPLAY
    1. EXPLAIN PLAN FOR sql_stmt;
    2. SET LINESIZE 200
    3. SET PAGESIZE 0
    4. SELECT * FROM table(DBMS_XPLAN.DISPLAY);
    复制代码
    2.DBMS_XPLAN.DISPLAY_CURSOR
    By default, the table function DISPLAY_CURSOR formats the execution plan for the last SQL statement executed by the session.
    1. ZHYU@ora11> select count(*) from objs;

    2.   COUNT(*)
    3. ----------
    4.     345240

    5. SET PAGESIZE 0
    6. ZHYU@ora11> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR);
    7. SQL_ID        bw9t3qt7k1jsx, child number 0
    8. -------------------------------------
    9. select count(*) from objs

    10. Plan hash value: 1292951853

    11. -------------------------------------------------------------------
    12. | Id  | Operation           | Name | Rows  | Cost (%CPU)| Time          |
    13. -------------------------------------------------------------------
    14. |   0 | SELECT STATEMENT   |          |          |  2747 (100)|          |
    15. |   1 |  SORT AGGREGATE    |          |        1 |               |          |
    16. |   2 |   TABLE ACCESS FULL| OBJS |   345K|  2747   (1)| 00:00:33 |
    17. -------------------------------------------------------------------
    复制代码
    1. SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('76mchcvcvaf7p',0));
    2. ELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('76mchcvcvaf7p',0,'ADVANCED'));
    3. SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('76mchcvcvaf7p',0,'ALL'));
    4. SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('76mchcvcvaf7p',0,'TYPICAL'));
    复制代码
    3.DBMS_XPLAN.DISPLAY_AWR
    1. SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR('76mchcvcvaf7p'));
    复制代码
    4.DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE
    1. SET LINESIZE 150
    2. SET PAGESIZE 2000
    3. SELECT t.*
    4.   FROM TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(
    5.                  'SYS_SQL_b1d49f6074ab95af')) t;
    复制代码
    5.DBMS_XPLAN.DISPLAY_SQLSET
    To display the execution plan for the SQL statement associated with SQL ID 'gwp663cqh5qbf' and PLAN HASH 3693697075 in the SQL Tuning Set called 'OLTP_optimization_0405":
    1. SELECT * FROM table (
    2.    DBMS_XPLAN.DISPLAY_SQLSET(
    3.        'OLTP_optimization_0405','gwp663cqh5qbf', 3693697075));
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    运维联盟俱乐部 ( 冀ICP备19036648号 )

    GMT+8, 2024-5-17 10:13 , Processed in 0.050030 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表