我用下面的程序查看了最后的执行计划
create or replace procedure display_plan
as
begin
for c in (select plan_table_output t from table(dbms_xplan.display_cursor('', '', 'allstats advanced last'))) loop
dbms_output.put_line(c.t);
end loop;
end;
dbms_xplan.display_cursor
可以指定 SQL_ID 。我知道您可以从表中获取 SQL_ID 列表,V$SQL
但是如何确定哪些属于当前会话?
是的,您可以指定 SQL_ID。用法是这样的:
要查找当前会话的 SQL ID,您首先需要获取会话的 SID,然后在 v$session 中搜索相关的 SQL_ID:
如果 SQL 在游标缓存中老化,您可以在 v$active_session_history 中找到它:
我建议阅读 DBMS_XPLAN 的手册页以获取完整的详细信息。