How do I show running processes in Oracle DB?

前端 未结 4 597
北荒
北荒 2020-12-12 11:09

Is it possible to show other processes in progress on an Oracle database? Something like Sybases sp_who

4条回答
  •  半阙折子戏
    2020-12-12 11:52

    This one shows SQL that is currently "ACTIVE":-

    select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
    from v$sqltext_with_newlines t,V$SESSION s
    where t.address =s.sql_address
    and t.hash_value = s.sql_hash_value
    and s.status = 'ACTIVE'
    and s.username <> 'SYSTEM'
    order by s.sid,t.piece
    /
    

    This shows locks. Sometimes things are going slow, but it's because it is blocked waiting for a lock:

    select
      object_name, 
      object_type, 
      session_id, 
      type,         -- Type or system/user lock
      lmode,        -- lock mode in which session holds lock
      request, 
      block, 
      ctime         -- Time since current mode was granted
    from
      v$locked_object, all_objects, v$lock
    where
      v$locked_object.object_id = all_objects.object_id AND
      v$lock.id1 = all_objects.object_id AND
      v$lock.sid = v$locked_object.session_id
    order by
      session_id, ctime desc, object_name
    /
    

    This is a good one for finding long operations (e.g. full table scans). If it is because of lots of short operations, nothing will show up.

    COLUMN percent FORMAT 999.99 
    
    SELECT sid, to_char(start_time,'hh24:mi:ss') stime, 
    message,( sofar/totalwork)* 100 percent 
    FROM v$session_longops
    WHERE sofar/totalwork < 1
    /
    

提交回复
热议问题