用的是oracle 9i,发现有些session跑得很慢,有办法可以知道该session跑的是哪个存储过程或者JOB吗?

解决方案 »

  1.   

    我只知道去看session跑的SQL。。
      

  2.   

    --查询指定SESSION正在执行的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;
      

  3.   

    --查找正在执行的JOB的会话和执行的存储过程信息
    SELECT a.job, a.SID, b.WHAT, b.interval
      FROM dba_jobs_running a, dba_jobs b
     WHERE a.JOB = b.JOB;
      

  4.   

    v$session中可以查询到活动的会话,然后根据正在运行的语句进行查询。
      

  5.   

    SELECT * FROM V$DB_OBJECT_CACHE