暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何找到PL/SQL的sql_id

askTom 2018-01-25
967

问题描述

亲爱的团队,

如何在过去的某一天找到与特定pl/sql过程的执行相关联的sql_id,以查看问题。

意味着我如何找到pl/sql sql_id及其上次执行日期和时间。


谢谢
普拉迪普

专家解答

同样的方式,你会找到一个SQL语句: 在v $ 视图中寻找它!

create or replace procedure p1 ( p int ) as
begin
  null;
end p1;
/

begin 
  p1(1);
end;
/

call p1(1);

exec p1(1);

select sql_id, sql_text from v$sql
where  upper(sql_text) like '%P1(1)%'
and    sql_text not like '%not this%';

SQL_ID          SQL_TEXT              
curcusf2wkc2p   begin   p1(1); end;   
93rz7mjcffpf3   BEGIN p1(1); END;     
1csakzn21fu7g   call p1(1)  


当然,这仅适用于顶级调用。如果你正在寻找一个在另一个内部调用的程序,你就不走运了:

create or replace procedure p2 ( p int ) as
begin
  null;
end p2;
/

create or replace procedure p1 ( p int ) as
begin
  p2(p);
end p1;
/

exec p1(1);

select sql_id, sql_text from v$sql
where  upper(sql_text) like '%P2(%)%';

SQL_ID          SQL_TEXT                                                                   
34wxm6wdmr5nh   select sql_id, sql_text from v$sql where  upper(sql_text) like '%P2(%)%'

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论