Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103734455
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-16 21:27:37

  来源:

问题:如何得到Statspack的两个相邻snap_id 的一个list?

解决:在实际的工作中,很多人经常会用到statspack来计算一段内每两个相邻的snapshot的一些data的差值。

大家可以这样用:

select stat1.value - stat2.value , snap_id from stats $systat stat1 , stats $systat stat2 where stat1.snap_id = stat2.snap_id + 1

但是,上面的这种情况必须snap_id没有断号,不然就会出现问题。

下面,我们来介绍一种更为缜密的view,在断号时也可以正常的使用。

CREATE or replace VIEW stats $snapshot_1_2 AS

SELECT sn1.snap_id sn1,

(SELECT MIN(sn2.snap_id)

FROM stats $snapshot sn2

WHERE sn1.snap_id < sn2.snap_id)

AS

sn2 , snap_time

FROM stats $snapshot sn1;

最后的使用方法如下:

select stat1.value - stat2.value , snap_time from stats $systat stat1 , stats $systat stat2 ,stats $snapshot_1_2 sn where stat1.snap_id = sn.sn1 and stat2.snap_id=sn.sn2 and snap_time between ……

阅读(365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~