查看oracle數據庫的使用狀態



所要用到的視圖:
 v$session,v$sesstat,v$statname,v$sqlarea,v$session_wait,v$process
select * from v$process;
select * from v$session;
select * from v$sqlarea;


查看每個session的CPU的佔用情況:
select ss.sid,se.command,ss.value CPU,se.username,se.program
from v$sesstat ss,v$session se
where ss.statistic# in
(select statistic#
from v$statname
where name='CPU used by this session')
and se.sid=se.sid
and ss.sid>6
order by ss.sid;


比較哪個session的CPU佔用時間最多,然後查看該session的具體情況:
select s.sid,event,wait_time,w.seq#,q.sql_text
from v$session_wait w,v$session s,v$process p,v$sqlarea q
where s.paddr=p.addr and
s.sid=p.pid and
s.sql_address=q.address;


下列找出當前session中最高的logical和Physical I/O比率:
SELECT name, statistic#
FROM V$STATNAME
WHERE name IN('session logical reads','physical reads') ;
SELECT ses.sid, DECODE(ses.action,NULL,'online','batch')"User",ses.username, MAX(DECODE(sta.statistic#,12,sta.value,0))/greatest(3600*24*(sysdate-ses.logon_time),1)"Log IO/s",
       MAX(DECODE(sta.statistic#,78,sta.value,0))/greatest(3600*24*(sysdate-ses.logon_time),1)"Phy IO/s",60*24*(sysdate-ses.logon_time)"Minutes"
FROM V$SESSION ses,V$SESSTAT sta
WHERE ses.status= 'ACTIVE'
AND sta.sid= ses.sid
AND sta.statistic# IN (12,78)
GROUP BY ses.sid, ses.username,ses.action, ses.logon_time
ORDER BY SUM( DECODE(sta.statistic#,78,100*sta.value,sta.value) )/greatest(3600*24*(sysdate-ses.logon_time),1) DESC;


統計session中每個用戶下cpu佔用情況:
select distinct(nvl(se.username,0))"username",sum(nvl(ss.value,0))"CPU"
from v$sesstat ss,v$session se
where ss.statistic# in
(select statistic#
from v$statname
where name='CPU used by this session')
and se.sid=se.sid
and ss.sid>6
group by se.username
order by sum(nvl(ss.value,0)) desc;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章