查看AWR和获取缓存库中的执行计划

1、AWR执行计划
 
select * from table(dbms_xplan.display_awr('8qfs8857jc8fw',null,null,'ADVANCED'));
 
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('8qfs8857jc8fw'))
 
select tf.* from dba_hist_sqltext ht, table(dbms_xplan.display_awr(ht.sql_id, null, null, 'all')) tf where ht.sql_text like '%mac%';

2、获取库缓存中的执行计划
select t.* from v$sql s,table(dbms_xplan.display_cursor(s.sql_id,s.child_number,'ADVANCED ALLSTATS LAST PEEKED_BINDS')) t where s.sql_id = '6g0tcbdcr08b9';
 
为了获取缓存库中的执行计划,可以直接查询动态性能视图v$sql_plan和v$sql_plan_statistics_all等,但更方便的方法是: 
select t.* from v$sql s,table(dbms_xplan.display_cursor(s.sql_id,s.child_number,'allstats last')) t where s.sql_id = '8qfs8857jc8fw';
 
获取a-rows(实际行数) 信息需要执行 alter session set statistics_level=all 或 /*+ gather_plan_statistics */

E-Rows 为预估行数 A-Rows 为实际行数
select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));
 
statistics_level设置为all或在sql语句中指定gather_plan_statistics提示),那么也支持修饰符.它的缺省值为typical
 
sql_id 识别父游标.这个信息只有当使用display_cursor和display_awr时才有,使用默认值(NULL)当前会话的最后一条SQL的执行计划被返回
 
cursor_child_no 与sql_id一起用来识别子游标,这种信息只有当使用display_cursor时才有,默认值0,若设为null,
 
sql_id所指父游标下所有子游标的执行计划被返回
 
format设置为allstats即包含iostats(控制I/O统计的显示)和memstats(控制PGA相关统计显示)。
 
默认是所有执行的累积统计被显示,如果last被指定只有最后的执行统计被显示
 




posted on 2015-01-22 13:32  夜拿水果刀  阅读(1181)  评论(0编辑  收藏  举报

导航