Oracle中 如何跟踪一个seesion的 SQL

解决方案 »

  1.   

    用Toad 工具。 连接上之后,进入session brower. 找到相关session,就能直接看到对应的SQL了。 ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716
      

  2.   

    --查找指定会话的SQL
    SELECT sql_text
      FROM v$sqltext a
     WHERE (a.hash_value, a.address) IN
           (SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
                   DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
              FROM v$session b
             WHERE b.sid = '&SID')
     ORDER BY piece ASC;
    --查找当前会话的SQL
    SELECT sql_text
      FROM v$sqltext a
     WHERE (a.hash_value, a.address) IN
           (SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
                   DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
              FROM v$session b
             WHERE b.sid = (select sid from v$mystat where rownum < 2))
     ORDER BY piece ASC;
      

  3.   

    用工具很好用的,pl/sql看session就可以,方便的很。
      

  4.   

    alter session set sql_trace=true;会话完成后找udump文件夹下面的trace文件,通过v$prosses和v$session找出spid,spid号对应的trc文件就有会话的sql跟踪情况。
      

  5.   

    sql_trace10046事件dbms_system.set_sql_trace_in_session根据你的不同需要和场景来选择上面方法之一。
      

  6.   

    EXEC DBMS_SYSTEM.set_sql_trace_in_session(sid, serial#)
      

  7.   

    1)alter session set timed_statistics=true; /*适用于Oracle 7.3以后的版本*/2)alter session set max_dump_file_size=unlimited ; /*适用于Oracle 7.3以后的版本*/3)alter session set tracefile_identifier='POX20031031a'; /*适用于Oracle 8.1.7以后的版本*/
      

  8.   

     我只会alter session set sql_trace=true;
    继续加油!
      

  9.   

    对 ,用pl/sql很方便的,试试看