在linux 系统中 用top命令查出CPU最高的SPID,再将SPID给存储过程,可以查出该进程的SQLTEXT

create or replace procedure pro_get_sqltext(pin_spid      in varchar2,
                                            pout_sqltext out varchar2,
                                            pout_sqltests out clob,
                                            pout_sql_kill_sid out varchar2) is

  v_spid    number := 0;
  v_sid     number := 0;
  v_serial  number := 0;
  v_sqltext varchar2(4000) := '';
  v_sqltexts clob:='';
  v_sql_kill_sid varchar2(4000) :='';

begin

  begin
    select SID, serial#
      into v_sid, v_serial
      from v$session
     where paddr in (select addr from v$process where spid in (pin_spid));
    
     v_sql_kill_sid:=' alter system kill session '||''''||v_sid||','||v_serial||''''||';';
     pout_sql_kill_sid:=v_sql_kill_sid;
  
  exception
    when NO_DATA_FOUND THEN
      pout_sqltext := 'the sid do not be founded';
      v_sql_kill_sid := 'the sid do not be founded';
  end;
  
  begin
    select q.SQL_TEXT,q.SQL_FULLTEXT
      into v_sqltext,v_sqltexts
      from v$sqlarea q
     where exists (select *
              from v$sqltext a
             where exists (select sql_hash_value
                      from v$session b
                     where b.SID = v_sid
                       and a.HASH_VALUE = b.sql_hash_value)
               and q.SQL_ID = a.SQL_ID);
  
    pout_sqltext := v_sqltext;
    pout_sqltests:=v_sqltexts;
  
  exception
    when NO_DATA_FOUND then
      pout_sqltext := 'the SQL_TEXT do not be founded';
  end;
   commit;
   
end pro_get_sqltext;
存储过程:通过操作系统进程查询SQL

相关文章:

  • 2022-12-23
  • 2022-01-25
  • 2021-11-22
  • 2021-04-19
  • 2021-10-17
  • 2022-12-23
  • 2021-07-08
猜你喜欢
  • 2021-12-09
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
  • 2021-12-22
相关资源
相似解决方案