dbms_xplan包的输出

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

select * from table (dbms_xplan.display_awr('2345wef23rfds',2343512356,NULL,'basic'));

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8102208/viewspace-664172/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8102208/viewspace-664172/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值