系统级、session级给出资源的使用统计数据
V$SYSSTAT (统计)
系统级资源使用情况,session 级查看v$sessstat
包括:
一个动作发生的次数(user commits)
某种数据产生的大小(redo size)
做某种动作积累的时间(cup used by this session)
SQL> desc v$sysstat
Name
----------------------
STATISTIC#
NAME
CLASS
VALUE
其中 class:
1 - User
2 - Redo
4 - Enqueue
8 - Cache
16 - OS
32 - Real Application Clusters
64 - SQL
128 - Debug
V$SESSTAT(统计)
Session 级资源使用情况,是临时的,如果session logout,信息就丢失
经常查看的列:
session logical reads, CPU used by this session, db block changes, redo size, physical writes, parse count (hard), parse count (total), sorts (memory), and sorts (disk).
通过与V$STATNAME关联,查到name 和 statistic#的关系
Script:
SELECT name, statistic#
FROM V$STATNAME
WHERE name IN ('session logical reads','physical reads') ;
NAME STATISTIC#
------------------------------ ----------
session logical reads 9
physical reads 40
SELECT ses.sid
, DECODE(ses.action,NULL,'online','batch') "User"
, MAX(DECODE(sta.statistic#,9,sta.value,0))
/greatest(3600*24*(sysdate-ses.logon_time),1) "Log IO/s"
, MAX(DECODE(sta.statistic#,40,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 (9,40)
GROUP BY ses.sid, ses.action, ses.logon_time
ORDER BY
SUM( DECODE(sta.statistic#,40,100*sta.value,sta.value) )
/ greatest(3600*24*(sysdate-ses.logon_time),1) DESC;
其中:
V$session.action: DBMS_APPLICATION_INFO.SET_ACTION 的name
通过物理和逻辑读的和进行排序的,但是Physical read * 100 ,表示物理读的权重为100
这个权重是这么计算的:
物理读:v$system_event.average_wait 查询db file sequential read, db file scattered read,值为10ms(毫秒)
逻辑读:v$sysstat 查询 session logical reads,值为13000/second/CPU,即130/ms
This provides a ratio of 130 logical reads for each 10 ms, and 1 physical read for each 10 ms for this configuration. This ratio was rounded to the ballpark number of 100.
V$MYSTAT(统计)
当前session 的信息,可以通过这个查找到当前session 的sid
Select sid from v$mystat where rownum=1;