通過對session進行trace的方式查看。
1、獲取當前session的sid和serial#
2、他通過sid獲取操作系統的pid
select p.spid
from v$session s,v$process p
where s.paddr=p.addr
and s.sid=3214
;
3、對session進行trace
exec dbms_system.set_sql_trace_in_session(3214,48681,true);
4、在3214 session 下執行存儲過程
var o_result_flag varchar2(200);
var o_error_msg varchar2(200);
declare
begin
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx('20200706','20070706',:o_result_flag ,:o_error_msg);
end;
/
5、關閉對session的trace
exec dbms_system.set_sql_trace_in_session(3214,48681,false);
6、找到對應的trc文件
cd $ORACLE_BASE/diag/rdbms/iltdb/iltdb/trace 下
ora_xxxx文件即是。其中xxxx即為步驟2中查詢出來的pid
7、對trc文件進行格式轉換
tkprof ora_xxxx.trc ora_xxxx.txt
最終的ora_xxxx.txt中包含了整個存儲過程的執行計划。