1.查询oracle 正在执行的语句中 消耗最多的资源SQL;2.查看oracle中过程还有多长时间运行完成;3.查看oracle中的job信息;

解决方案 »

  1.   

    1.v$open_cursor视图可以看session正在打开的和存入session cache 中的sql
    这个不准确,如果要看当前session正在执行的,最好还是从v$sesstat入手3.select * from dba_jobs;对于2,对于过程什么时候结束,这个无法确定吧 。
      

  2.   

    不使用dba_jobs,查看数据库中所有的job信息
      

  3.   

    1,select TO_CHAR(M.END_TIME,'yyyy-mm-dd hh24:mi:ss') END_TIME,
    M.INTSIZE_CSEC/100  INTS,
    S.USERNAME USR,
    M.SESSION_ID sid,
    M.SESSION_SERIAL_NUM SSN,
    ROUND(M.CPU) CPU100,
    M.PHYSICAL_READS PRDS,
    M.logical_reads LRDS,
    M.PGA_MEMORY PGA,
    M.HARD_PARSES HP,
    M.SOFT_PARSES SP,
    M.PHYSICAL_READ_PCT PRP,
    M.LOGICAL_READ_PCT LRP,
    S.SQL_ID
    from V$SESSMETRIC M,V$SESSION S
    where (M.PHYSICAL_READS>100 or M.CPU>100 or M.LOGICAL_READS>100) and M.SESSION_ID=S.sid
    and M.SESSION_SERIAL_NUM=S.SERIAL#
    order by M.PHYSICAL_READS desc,M.CPU desc ,M.LOGICAL_READS desc;2.有正在执行的sql所剩余的时间。
    select username,sid,opname,
      round(sofar*100 / totalwork,0) || '%' as progress,
      time_remaining,sql_text
      from v$session_longops , v$sql
      where time_remaining <> 0
      and sql_address = address
      and sql_hash_value = hash_value;  
    3.除了dba_jobs,不知道别的了。