zOs/SQL/SPCDIFF
-- Diff: Differenz des benutzten DB2-TS Spaces zwischen zwei Daten
-- neues Datum im where von n eingeben
-- altes Datum im where von o eingeben
-- weitere Selektion (db, ts) im where von n UND o eingeben
--
-- für Gruppierung auf TS Ebene alle
-- auskommentierten TS-Ausdrücke aktivieren
--
-- Sortierung: absteigen nach diff oder ration
--
--
-- Output:
-- ratio = Verhältnis Grösse neu zu alte in % (100=gleich)
-- diff = Differenz Grösse neu - alt in Bytes
-- nDSNs = Anzahl Datasets neu
-- nSpc = benutzer Space neu in Bytes
-- oDSNs = Anzahl Datasets alt
-- oSpc = benutzer Space alt in Bytes
--
-- benutzt: table oa1?.tadm09A1: tabelle mit historischen Space Daten
-- udf oa1?.fosFmtE8/E7: Formatierung siehe fosFmtE8
--
-- 6. 1.09 W. Keller neu
--
with n as -- n = new
(
select db_name nDb,
-- ts_name nTs,
count(*) nCn, sum(hi_u_rba) nSp
from oa1a.tadm09A1
where
-- datum = current date
datum = '05.01.2010'
-- and db_name like 'M%'
-- and ts_name like 'A%'
group by db_name
-- , ts_name
)
, o as -- o = old
(
select db_name oDb,
-- ts_name oTs,
count(*) oCn, sum(hi_u_rba) oSp
from oa1a.tadm09A1
where
-- datum = current date - 7 days
datum = '01.01.2010'
-- and db_name like 'M%'
-- and ts_name like 'A%'
group by db_name
-- , ts_name
)
, diff as
(
select coalesce(oDb, nDb) db,
-- coalesce(oTs, nTs) ts,
smallint(case when oSp is null or oSp < 1 then 9999
else min(9999, coalesce(nSp, 0) * 100 / oSp) end) ratio,
coalesce(nSp, 0) - coalesce(oSp, 0) diff,
oCn, oSp, nCn, nSp
from o
full join n
on oDb = nDb
-- and oTs = nTs
)
select db,
-- ts,
ratio "ratio %",
oa1a.fosFmtE8(diff) " diff B",
nCn "nDSNs",
oa1a.fosFmtE7(nSp) " nSpc B",
oCn "oDSNs",
oa1a.fosFmtE7(oSp) " oSpc B"
from diff
order by diff desc
with ur
;