查看任何之前已经执行过的sql语句保存在库高速缓存中的执行计划,最简单方法就是使用dbms_xplan.display_curor函数
使用 gather_plan_statistics 提示 则在sql执行后,会在v$sql_plan_statistics_all视图中查到SQL的执行统计信息,例如逻辑读,物理读取次数,物理写入次数以及每一个运算在一行数据上的运行时间。 或者也可以将statistics_level 实例参数的值设置为all,抓取这些统计信息确实增加了语句执行成本,所以不必总是把这个功能打开。而hint提示仅仅是在使用的语句上生效。gather_plan_statistics提示会显示Starts E-row(期望返回行数) ,A_rows
select /*+gather_plan_statistics*/ e.empno,e.ename from emp e where e.ename='KING';
set serveroutput off;
//serveroutput 如果是打开的,都会隐式的调用dbms_output 如果没有将 serveroutput 关闭
//那么最后执行的一条语句将会是dbms_output的调用.将不能返回所执行sql语句,而是试图给你
//dbms_output调用所使用的计划
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST'));
不使用提示 显示统计信息
可以看到警告信息中表明如何获取统计信息。
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST'));
还可以使用sql_id child_number取值
sql_id child_number 通过V$sql获得
select t.SQL_TEXT,t.SQL_ID,t.CHILD_NUMBER from v$sql t where t.SQL_TEXT like '%gather_plan_statistics%';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('692za5rczkx3w',0,'ALLSTATS LAST'));
同样也可以获得执行计划