挖掘略显薄弱的系统统计信息
sql
SQL> desc v$sysstat
NAME TYPE$ NULLABLE
-------- ------------ --------
ID INTEGER Y
CLASSID INTEGER Y
NAME VARCHAR(128) Y
STAT_VAL BIGINT Y
-- 创建监控表
drop table sysstat_baseline ;
CREATE TABLE sysstat_baseline AS
SELECT s.*, SYSDATE as capture_time
FROM v$sysstat s;
-- 每隔5分钟插入一次
insert into sysstat_baseline SELECT s.*, SYSDATE as capture_time FROM v$sysstat s;
-- 查询增量
select * from (
SELECT
ss.name,
(ss.STAT_VAL - bl.STAT_VAL) as delta_STAT_VAL,
ROUND((ss.STAT_VAL - bl.STAT_VAL) /
datediff(ss,capture_time,sysdate)/60 , 2) as per_fen
FROM v$sysstat ss
JOIN sysstat_baseline bl ON ss.id = bl.id
WHERE ss.STAT_VAL != bl.STAT_VAL) order by PER_FEN desc limit 20;
-- Top 10增量统计
WITH deltas AS (
SELECT
s.name,
s.STAT_VAL - LAG(s.STAT_VAL) OVER (PARTITION BY s.id ORDER BY s.capture_time) as delta
FROM sysstat_baseline s
WHERE s.STAT_VAL > 0
)
SELECT * FROM (
SELECT name, delta,
RANK() OVER (ORDER BY delta DESC) as rank
FROM deltas
WHERE delta IS NOT NULL
)
WHERE rank <= 10;
