dbms_xplan包的输出
来源:互联网 发布:微信为什么要封淘宝客 编辑:程序博客网 时间:2024/05/19 05:38
dbms_xplan包能够显示存储在三个不同地方的执行计划:plan_table,library cache,awr中。 下面分别简单介绍display函数,display_cursor函数,display_awr函数的几个参数输入和基本用法:
display函数(搭配explain plan使用)的参数输入:
1. table_name: 默认为plan_table。
2. statement_id: 默认为NULL,在默认情况下,显示最近插入plan_table中的执行计划。
3. format:取值包括,basic,typical,serial,all和advance,默认值是typical, advance则是显示所有信息。
4. filter_preds: 默认值为NULL,指定在plan_table中添加一个约束。从Oracle 10gR2开始用这个参数。
使用display函数,调用者只需要有dbms_xplan包的execute权限和计划表的SELECT权限。
注意一点:无论何时只要包含绑定变量,explain plan产生的执行计划都是不准确的。
例子:
select * from table(dbms_xplan.display(NULL,NULL,'ADVANCE',NULL));
or
select * from table(dbms_xplan.display(NULL,NULL,'basic+predicate',NULL));
display_cursor函数的参数输入(不需要explain plan搭配使用):
display_cursor返回存储在library_cache中的执行计划,这个函数从Oracle 10g开始可以使用。
1. sql_id: 指定被返回执行计划的SQL语句的父游标,默认值是NULL,表示当前会话所执行的最后一条SQL语句的执行计划被返回。
2. cursor_child_no: 表示这个父游标下的子游标的序号,默认值为0,如果指定为NULL,则表示对应sql_id所指的父游标下所有子游标的执行计划都将被返回。
3. format:同display函数,默认值仍然为Typical, 如果我们通过设置STATSTICS_LEVEL=ALL或者在sql语句中加/*+gather_plan_statistics*/之类的hints的话,还可以显示更多的信息,比如E-ROWS和A-ROWS,等等。
使用display_cursor函数,调用者需要对v$session,v$sql,v$sql_plan和v$sql_plan_statistics_all有select权限,同时角色select_catalog_role和select any dictionary权限也要授予给调用者
例子:
SELECT * FROM table (dbms_xplan.display_cursor('2345wef23rfds',NULL,'Typical'));
SELECT * FROM table(dbms_xplan.display_curso (NULL,NULL,'iostats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'runstats_last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'memstats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'allstats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'iostats'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'runstats_tot'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'memstats'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'allstats'));
display_awr函数的参数输入:
1. sql_id: 指定被返回执行计划的SQL语句的父游标,这个参数没有默认值。
2. plan_hash_value: 指定被返回sql_id的执行计划的哈希值。默认为NULL,表示返回与sql_id参数指定的父游标相关的所有执行计划都会返回。
3. db_id:默认为NULL,表示当前数据库
4. format: 同display函数,默认值仍然为Typical
使用display_awr函数,必须要引诱dba_hist_sql_plan,dba_hist_sql_text的select权限,同时如果没有指定db_id,还必须要有v$database的select权限,通过要授予select_catalog_role角色。
例子:
select * from table (dbms_xplan.display_awr('2345wef23rfds',NULL,NULL,'BAISC'));
or
display函数(搭配explain plan使用)的参数输入:
1. table_name: 默认为plan_table。
2. statement_id: 默认为NULL,在默认情况下,显示最近插入plan_table中的执行计划。
3. format:取值包括,basic,typical,serial,all和advance,默认值是typical, advance则是显示所有信息。
4. filter_preds: 默认值为NULL,指定在plan_table中添加一个约束。从Oracle 10gR2开始用这个参数。
使用display函数,调用者只需要有dbms_xplan包的execute权限和计划表的SELECT权限。
注意一点:无论何时只要包含绑定变量,explain plan产生的执行计划都是不准确的。
例子:
select * from table(dbms_xplan.display(NULL,NULL,'ADVANCE',NULL));
or
select * from table(dbms_xplan.display(NULL,NULL,'basic+predicate',NULL));
display_cursor函数的参数输入(不需要explain plan搭配使用):
display_cursor返回存储在library_cache中的执行计划,这个函数从Oracle 10g开始可以使用。
1. sql_id: 指定被返回执行计划的SQL语句的父游标,默认值是NULL,表示当前会话所执行的最后一条SQL语句的执行计划被返回。
2. cursor_child_no: 表示这个父游标下的子游标的序号,默认值为0,如果指定为NULL,则表示对应sql_id所指的父游标下所有子游标的执行计划都将被返回。
3. format:同display函数,默认值仍然为Typical, 如果我们通过设置STATSTICS_LEVEL=ALL或者在sql语句中加/*+gather_plan_statistics*/之类的hints的话,还可以显示更多的信息,比如E-ROWS和A-ROWS,等等。
使用display_cursor函数,调用者需要对v$session,v$sql,v$sql_plan和v$sql_plan_statistics_all有select权限,同时角色select_catalog_role和select any dictionary权限也要授予给调用者
例子:
SELECT * FROM table (dbms_xplan.display_cursor('2345wef23rfds',NULL,'Typical'));
SELECT * FROM table(dbms_xplan.display_curso (NULL,NULL,'iostats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'runstats_last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'memstats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'allstats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'iostats'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'runstats_tot'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'memstats'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'allstats'));
display_awr函数的参数输入:
1. sql_id: 指定被返回执行计划的SQL语句的父游标,这个参数没有默认值。
2. plan_hash_value: 指定被返回sql_id的执行计划的哈希值。默认为NULL,表示返回与sql_id参数指定的父游标相关的所有执行计划都会返回。
3. db_id:默认为NULL,表示当前数据库
4. format: 同display函数,默认值仍然为Typical
使用display_awr函数,必须要引诱dba_hist_sql_plan,dba_hist_sql_text的select权限,同时如果没有指定db_id,还必须要有v$database的select权限,通过要授予select_catalog_role角色。
例子:
select * from table (dbms_xplan.display_awr('2345wef23rfds',NULL,NULL,'BAISC'));
or
select * from table (dbms_xplan.display_awr('2345wef23rfds',2343512356,NULL,'basic'));
转自:http://blog.csdn.net/dazhabai/article/details/6681846
- dbms_xplan包的输出
- oracle sql调优学习笔记(一)dbms_xplan包的输出
- DBMS_XPLAN包中函数的使用
- Oracle dbms_xplan包简介
- dbms_xplan函数包
- dbms_xplan包-获取执行计划
- dbms_xplan包中常用函数
- dbms_xplan的增强xplan
- dbms_xplan.display_cursor的用法
- dbms_xplan常用的函数
- dbms_xplan
- DBMS_XPLAN
- DBMS_XPLAN包获取sql执行计划
- 使用dbms_xplan包查看执行计划
- dbms_xplan之display函数的使用
- dbms_xplan之display_cursor函数的使用
- dbms_xplan之display函数的使用
- dbms_xplan之display_cursor函数的使用
- siebel l 验证重复记录
- 目前最完整的Linux常用基础命令
- javascript深入了解(作用域链)
- Linux内核开发之内存与I/O访问(三)
- 基于WINSOCK控件的VC网络通讯程序
- dbms_xplan包的输出
- Perl_控制输出小数点位数_sprintf
- Linux内核开发之内存与I/O访问(四)
- eclipse+cdt+gcc 程序调用动态链接库
- Linux内核开发之内存与I/O访问(五)
- 配置Flash CS5.5支持FLASH PLAYER11 和 AIR3.0
- C#编码规范(uml.org)
- Oracle em重建方式
- 一个简单的全选Jquery插件