Friday, January 22, 2016

Чем сейчас занята моя БД Oracle? Просмотр активных сессий, их ожиданий, запросов, выполняемых этими сессиями.

Часто бывает нужно посмотреть текущую активность в БД Oracle. Для этого я пользуюсь следующим запросом (для БД, открытой несколькими экземплярами с использованием RAC ):

 

 

select ses.inst_id,

       username,

       ses.sid,

       client_identifier,

       case when w.state <> 'WAITING' then 'working '

            else 'waiting '

       end

       ||

       case when w.state <> 'WAITING' then 'on CPU or runqueue'

           else w.event

       end event,

       w.wait_time_micro   wait_time_mc_sec,

       w.time_since_last_wait_micro since_last_w_mcs,

       ses.sql_id,

       sa.sql_text,

       sa.sql_fulltext

 from gv$session ses, gv$session_wait w, gv$sqlarea sa

 where ses.status = 'ACTIVE'

   and ses.type = 'USER'

   and w.SID = ses.sid

   and w.inst_id = ses.inst_id

   and ses.sql_id = sa.sql_id(+)

   and ses.inst_id = sa.inst_id(+)

 

Некоторые поля:

 

client_identifier – нужен мне для определения пользователя SAP R3

 

event – то, чем занята сессия в данный момент

 

wait_time_micro – длительность ожидания в микросекундах. Если ждет сейчас – то длительность текущего ожидания, если сейчас не ждет – длительность последнего ожидания.

 

time_since_last_wait_micro – если не ждет в момент запроса – время в микросекундах, прошедшее с момента ожидания.

 

Запрос для одиночного экземпляра выглядит так:

 

select

       username,

       ses.sid,

       client_identifier,

       case when w.state <> 'WAITING' then 'working '

            else 'waiting '

       end

       ||

       case when w.state <> 'WAITING' then 'on CPU or runqueue'

           else w.event

       end event,

       w.wait_time_micro   wait_time_mc_sec,

       w.time_since_last_wait_micro since_last_w_mcs,

       ses.sql_id,

       sa.sql_text,

       sa.sql_fulltext

 from v$session ses, v$session_wait w, v$sqlarea sa

 where ses.status = 'ACTIVE'

   and ses.type = 'USER'

   and w.SID = ses.sid

   and ses.sql_id = sa.sql_id(+)

 

 

Это все в Oracle Database 11.2

 

 

1 comment :

  1. Slot Machines Casino - JM Hub
    Slot Machines Casino. 아산 출장샵 Join the 통영 출장샵 latest slot machines online in 남양주 출장마사지 the UK and Ireland at Slot Machines Casino, 밀양 출장샵 with over 100 fantastic games 김천 출장마사지 including: jackpot

    ReplyDelete