oracle v$,Oracle V$sesstat视图

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#;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值