Oracle 从缓存里面查找真实的执行计划

来源:互联网 发布:面包机哪个牌子好 知乎 编辑:程序博客网 时间:2024/05/01 03:50

Oracle 从缓存里面查找真实的执行计划

分类: Oracle Performance 2011-06-20 17:481090人阅读 评论(0)收藏 举报

 

 

有关Oracle 的执行计划说明,参考我的Blog:

            Oracle Explain Plan

            http://blog.csdn.net/tianlesoftware/archive/2010/08/20/5827245.aspx

 

 

查看当前sessionSID

 

SYS@anqing1(rac1)> SELECT USERENV('SID') FROM DUAL;

USERENV('SID')

--------------

137

 

SYS@anqing1(rac1)> SELECT SID FROM V$MYSTAT WHERE ROWNUM =1;

SID

----------

 137

 

查看缓存中的Explain Plan

1)根据SID,从v$sql中找到相应SQLHASH_VALUEADDRESS

 

/* Formatted on 2011/6/20 17:38:20 (QP5 v5.163.1008.3004) */

SELECTa.sql_text,a.address,a.hash_value

  FROM v$sqla, v$session b

 WHEREa.hash_value= b.sql_hash_valueAND b.sid= &sid;

 

 

2)根据hash_valueaddress的值,从v$sql_plan中找到真实的执行计划

 

/* Formatted on 2011/6/20 17:39:22 (QP5 v5.163.1008.3004) */

   SET LINE200;

   COL oper FORMAT a100;

   SELECTLPAD(oper,LENGTH(oper)+LEVEL * 2,' ') oper,cost

      FROM(SELECT object_name ||':' || operation ||' ' || optionsAS oper,

                  cost,

                  id,

                   parent_id

              FROM v$sql_plan

             WHERE hash_value='&hash_value'AND address='&address')

STARTWITHid=0

CONNECTBYPRIORid= parent_id;

 

 

如: