用 select s.sid, s.username, s.program, a.SQL_TEXT
  from v$session s, v$process p, v$sqlArea a
 where p.addr = s.paddr
   and s.OWNERID = a.HASH_VALUE
   and spid = 19920;跟踪到的问题语句是:SELECT 'x'  FROM DUAL请问怎么追溯现在的问题。

解决方案 »

  1.   

    呵呵,写错了。应该是下面这句,后面注释的语句都用过,都某用,SQL_HASH_VALUE为0:
    select s.sid, s.username, s.program, a.SQL_TEXT
      from v$session s, v$process p, v$sqlArea a
     where p.addr = s.paddr
       and s.PREV_HASH_VALUE=a.HASH_VALUE
       and spid = 19920;
       
       --s.PREV_SQL_ADDR = a.HASH_VALUE or 
       --s.MODULE_HASH=a.HASH_VALUE
       --s.AUDSID=a.HASH_VALUE
       --s.SERIAL#=a.HASH_VALUE
       --s.FIXED_TABLE_SEQUENCE=a.HASH_VALUE
       --s.OWNERID=a.HASH_VALUE
       
      

  2.   


    select s.sid, 
          s.username, 
          s.program, 
          a.SQL_TEXT
      from v$session s, 
           v$process p, 
           v$sqlarea a
     where p.addr = s.paddr
      and s.SQL_HASH_VALUE = a.HASH_VALUE   and spid = 19920;
      

  3.   

    SQL_HASH_VALUE 为 0,这样查没结果。
      

  4.   

    建议步骤:
    1.通过操作系统进程ID查询进程执行的SQL
    select s.sid, s.SERIAL#, s.SQL_ID
      from v$session s, v$process p
     where s.PADDR = p.ADDR
       and s.sql_id is not null
       and p.spid = &spid;2.通过sql_id查询出相关sql语句及执行计划
    select * from table(dbms_xplan.display_cursor('&sql_id', ''));