有关Oracle的执行计划说明,参考我的Blog:
Oracle Explain Plan
http://blog.youkuaiyun.com/xujinyang/article/details/6832655
一.查看当前session的SID
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中找到相应SQL的HASH_VALUE和ADDRESS
/* Formatted on 2011/6/20 17:38:20 (QP5 v5.163.1008.3004) */
SELECTa.sql_text,a.address,a.hash_value
FROMv$sqla,v$session b
WHEREa.hash_value=b.sql_hash_valueANDb.sid=&sid;
2)根据hash_value和address的值,从v$sql_plan中找到真实的执行计划
/* Formatted on 2011/6/20 17:39:22 (QP5 v5.163.1008.3004) */
SETLINE200;
COL oper FORMAT a100;
SELECTLPAD(oper,LENGTH(oper)+LEVEL*2,' ')oper,cost
FROM(SELECTobject_name ||':'|| operation ||' '|| optionsASoper,
cost,
id,
parent_id
FROMv$sql_plan
WHEREhash_value='&hash_value'ANDaddress='&address')
STARTWITHid=0
CONNECTBYPRIORid=parent_id;
如:

整理自网络
-------------------------------------------------------------------------------------------------------
本文介绍了如何在Oracle数据库中查看当前会话的SID,并通过SID获取缓存中的执行计划。包括使用v$sql和v$sql_plan视图来查找特定会话的SQL语句及其执行计划。
837

被折叠的 条评论
为什么被折叠?



