您的位置:首页 > 其它

dbms_xplan.display_cursor使用

2016-06-21 18:41 232 查看
在扩完归档空间后,这个sql变慢,通过expain plan for的形式抓取执行计划,但是发现执行计划没有问题。通过重新收集该表得统计信息,在执行这个sql,执行的时间从20分钟 变成 了10秒。用explain plan for来抓取统计信息,跟之前的一样。感觉是第一次通过explain plan for 的形式抓取的不正确,应该通过select * from table(dbms_xplan.display_cursor(‘c44r77saxh2b5//sqlid’,’0’,’ADVANCED’));这种方式来抓取真实的信息。可见在硬件条件改变的情况下,确实sql的执行计划发生了改变。

DBMS_XPLAN.DISPLAY_CURSOR(

sql_id IN VARCHAR2 DEFAULT NULL,

child_number IN NUMBER DEFAULT NULL,

format IN VARCHAR2 DEFAULT ‘TYPICAL’);

2、display_cursor函数参数描述

sql_id

指定位于库缓存执行计划中SQL语句的父游标。默认值为null。当使用默认值时当前会话的最后一条SQL语句的执行计划将被返回

可以通过查询VSQL或VSQLAREA的SQL_ID列来获得SQL语句的SQL_ID。

child_number

指定父游标下子游标的序号。即指定被返回执行计划的SQL语句的子游标。默认值为0。如果为null,则sql_id所指父游标下所有子游标

的执行计划都将被返回。

format

控制SQL语句执行计划的输出部分,即哪些可以显示哪些不显示。使用与display函数的format参数与修饰符在这里同样适用。

除此之外当在开启statistics_level=all时或使用gather_plan_statistics提示可以获得执行计划中实时的统计信息

有关详细的format格式描述请参考:dbms_xplan之display函数的使用 中format参数的描述

下面给出启用统计信息时format新增的修饰符

iostats 控制I/O统计的显示

last 默认,显示所有执行计算过的统计。如果指定该值,则只显示最后一次执行的统计信息

memstats 控制pga相关统计的显示

allstats 此为iostats memstats的快捷方式,即allstats包含了iostats和memstats

run_stats_last 等同于iostats last。只能用于oracle 10g R1

run_stats_tot 等同于iostats。只能用于oracle 10g R1

VSQL中列出了共享SQL区中所有语句的信息,它不包含GROUPBY字句,并且为每一条SQL语句中单独存放一条记录;VSQLAREA中一条记录显示了一条共享SQL区中的统计信息。它提供了有在内存中、解析过的和准备运行的SQL语句的统计信息;

V$SQLTEXT包含了库缓存中所有共享游标对应的SQL语句。它将SQL语句分片显示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: