TA的每日心情 | 开心 2023-8-9 11:05 |
---|
|
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
- EXPLAIN PLAN FOR sql_stmt;
- SET LINESIZE 200
- SET PAGESIZE 0
- 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.
- ZHYU@ora11> select count(*) from objs;
- COUNT(*)
- ----------
- 345240
- SET PAGESIZE 0
- ZHYU@ora11> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR);
- SQL_ID bw9t3qt7k1jsx, child number 0
- -------------------------------------
- select count(*) from objs
- Plan hash value: 1292951853
- -------------------------------------------------------------------
- | Id | Operation | Name | Rows | Cost (%CPU)| Time |
- -------------------------------------------------------------------
- | 0 | SELECT STATEMENT | | | 2747 (100)| |
- | 1 | SORT AGGREGATE | | 1 | | |
- | 2 | TABLE ACCESS FULL| OBJS | 345K| 2747 (1)| 00:00:33 |
- -------------------------------------------------------------------
复制代码- SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('76mchcvcvaf7p',0));
- ELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('76mchcvcvaf7p',0,'ADVANCED'));
- SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('76mchcvcvaf7p',0,'ALL'));
- SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('76mchcvcvaf7p',0,'TYPICAL'));
复制代码 3.DBMS_XPLAN.DISPLAY_AWR
- SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR('76mchcvcvaf7p'));
复制代码 4.DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE
- SET LINESIZE 150
- SET PAGESIZE 2000
- SELECT t.*
- FROM TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(
- '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":
- SELECT * FROM table (
- DBMS_XPLAN.DISPLAY_SQLSET(
- 'OLTP_optimization_0405','gwp663cqh5qbf', 3693697075));
复制代码 |
|