分类: 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 …… |