有关oracle 的执行计划说明,参考:oracle explain plan 见
一. 查看当前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) */
select a.sql_text, a.address, a.hash_value
from v$sql a, v$session b
where a.hash_value = b.sql_hash_value and b.sid = &sid;
2)根据hash_value和address的值,从v$sql_plan中找到真实的执行计划
/* formatted on 2011/6/20 17:39:22 (qp5 v5.163.1008.3004) */
set line 200;
col oper format a100;
select lpad (oper, length (oper) + level * 2, ' ') oper, cost
from (select object_name || ':' || operation || ' ' || options as oper,
cost,
id,
parent_id
from v$sql_plan
where hash_value = '&hash_value' and address = '&address')
start with id = 0
connect by prior id = parent_id;
如:
,
