Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2005161
  • 博文数量: 507
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 7251
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(507)

文章存档

2018年(3)

2017年(36)

2016年(22)

2015年(1)

2013年(10)

2012年(19)

2011年(15)

2010年(15)

2009年(238)

2008年(148)

分类: Oracle

2012-09-09 12:58:10

V$SESSTAT

This view lists user session statistics. To find the name of the statistic associated with each statistic number (STATISTIC#), query the V$STATNAME view.

Column Datatype Description
SID NUMBER Session identifier
STATISTIC# NUMBER Statistic number

Note: Statistics numbers are not guaranteed to remain constant from one release to another. Therefore, you should rely on the statistics name rather than its number in your applications.

VALUE NUMBER Statistic value

2相关SQL
select a.name,b.value from v$statname a,v$sesstat b
where a.STATISTIC#=b.STATISTIC#
and b.sid=&sid
and b.value <>0
order by b.value desc;
3 详细介绍 按照OracleOnlineBook中的描述,v$sesstat存储session从login到logout的详细资源使用统计。
 
类似于v$sysstat,该视图存储下列类别的统计:
 
l        事件发生次数的统计,如用户提交数。
l        数据产生,存取或者操作的total列(如:redo size)
l        执行操作所花费的时间累积,例如session CPU占用(如果TIMED_STATISTICS值为true)
注意:
如果初始参数STATISTICS_LEVEL被设置为TYPICAL或ALL,时间统计被数据库自动收集如果STATISTICS_LEVEL被设置为BASIC,你必须设置TIMED_STATISTICS值为TRUE以打开收集功能。
 
如果你已设置了DB_CACHE_ADVICE,TIMED_STATISTICS或TIMED_OS_STATISTICS,或在初始参数文件或使用ALTER_SYSTEM或ALTER SESSION,那么你所设定的值的值将覆盖STATISTICS_LEVEL的值。
 
v$sysstat和v$sesstat差别如下:
n        v$sesstat只保存session数据,而v$sysstat则保存所有sessions的累积值。
n        v$sesstat只是暂存数据,session退出后数据即清空。v$sysstat则是累积的,只有当实例被shutdown才会清空。
n        v$sesstat不包括统计项名称,如果要获得统计项名称则必须与v$sysstat或v$statname连接查询获得。
 
v$sesstat可被用于找出如下类型session:
n        高资源占用
n        高平均资源占用比(登陆后资源使用率)
n        默认资源占用比(两快照之间)
 
在V$SESSTAT中使用统计
  多数v$sesstat中的统计参考是v$sysstat描述的子集,包括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$SESSTAT常用列说明
n        SID:session唯一ID
n        STATISTIC#:资源唯一ID
n        VALUE:资源使用
 
 
示例1:下列找出当前session中最高的logical和Physical I/O比率.
 
  下列SQL语句显示了所有连接到数据库的session逻辑、物理读比率(每秒)。logical和physical I/O比率是通过自登陆后的时间消耗计算得出。对于sessions连接到数据库这种长周期操作而言也许不够精确,不过做个示例却足够了。
 
先获得session逻辑读和物理读统计项的STATISTIC#值:
SELECTname, statistic#
 FROMV$STATNAME
 WHEREnameIN('session logical reads','physical reads') ;
NAME                          STATISTIC#
------------------------------ ----------
session logical reads                  9
physical reads                       54
 
通过上面获得的STATISTIC#值执行下列语句:
 
SELECTses.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#,54,sta.value,0))
      /greatest(3600*24*(sysdate-ses.logon_time),1)    "Phy IO/s"
    , 60*24*(sysdate-ses.logon_time)                   "Minutes"
 FROMV$SESSION ses
   , V$SESSTAT sta
WHEREses.status    = 'ACTIVE'
 AND sta.sid       = ses.sid
 AND sta.statistic# IN (9,54)
GROUP BYses.sid, ses.action, ses.logon_time <==先按sid分组,再按action分组,最后按登录时间分组
ORDER BY
       SUM( DECODE(sta.statistic#,54,100*sta.value,sta.value) )
     / greatest(3600*24*(sysdate-ses.logon_time),1) DESC;
 
 SID User  Log IO/s Phy IO/s Minutes
----- ------ -------- -------- -------
 1951 batch      291   257.3      1
 470 online   6,161    62.9      0
 730 batch    7,568    43.2    197
 2153 online   1,482    98.9     10
 2386 batch    7,620    35.6     35
 1815 batch    7,503    35.5     26
 1965 online   4,879    42.9     19
 1668 online   4,318    44.5      1
 1142 online     955    69.2     35
 1855 batch      573    70.5      8
 1971 online   1,138    56.6      1
 1323 online   3,263    32.4      5
 1479 batch    2,857    35.1      3
 421 online   1,322    46.8     15
 2405 online     258    50.4      8
Tips:
Ø        DECODE函数
语法:DECODE(条件表达式,值,返回值1,返回值2)
解释:当“条件表达式”计算出来的结果等于“值”,那么返回“返回值1”否则返回“返回值2”
Ø        MAX函数可以返回一组数值中的最大值,忽略逻辑值和文本字符
Ø        greatest( expr1, expr2, ... expr_n )
expr1, expr2, . expr_n可以值也可以是函数.
函数功能: 取得值最大值。
影响版本:Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g
例子:
greatest(2, 5, 12, 3) would return 12
greatest('2', '5', '12', '3') would return '5'
greatest('apples', 'oranges', 'bananas') would return 'oranges'
greatest('apples', 'applis', 'applas') would return 'applis'
 
示例2:又例如通过v$sesstat和v$statname连接查询某个SID各项信息。
selecta.*,b.name
 fromv$sesstat a,v$statname b
 wherea.sid=164anda.statistic#=b.statistic#;
 
 
 
阅读(4553) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册