Часто бывает нужно посмотреть текущую активность в БД 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
Slot Machines Casino - JM Hub
ReplyDeleteSlot Machines Casino. 아산 출장샵 Join the 통영 출장샵 latest slot machines online in 남양주 출장마사지 the UK and Ireland at Slot Machines Casino, 밀양 출장샵 with over 100 fantastic games 김천 출장마사지 including: jackpot