您的位置:首页 > 其它

如何查看共享池中不存在的执行计划

2013-07-13 23:26 323 查看
我们一般会用select * from table(dbms_xplan.display_cursor('c0q6wv27b51yh'));来查看sql语句实际执行时的执行计划。但是要知道这个sql有个前提,就是执行计划还存在于共享池中,而共享池是不断被置换的,一段时间后这个执行计划就可能查不到了,上面的语句查出来的结果可能就是:

SQL_ID: c0q6wv27b51yh, child number: 0 cannot be found 

说明该sql的执行计划已经被置换出共享池!!!!

此时就需要从AWR报告中抽出sql的执行计划:

select * from table(dbms_xplan.display_awr('c0q6wv27b51yh'));

注意这里的前提是sql_id要知道,但是sql被置换出了内存,那么v$sql,v$sqlaera是查不到该sql的,这是你需要用到下面的几个视图:

Dba_Hist_Sqltext

Dba_Hist_Sqlstat

Dba_Hist_Snapshot
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: