zOs/SQL/CATCOPYC
$*(*****************************************************************
--
-- Hochrechnug disk verbrauch für copy datasets nur aus sysCopy
-- - alt: alles älter als 24 h archiviert
-- - neu: alles älter als Save > 28h wegeputzt
-- ==> gibt SpitzenDiskverbrauch
-- - unmittelbar vor täglichem SMS-Cleanup
-- *****************************************************************
select
c.dbname, c.tsName, c.dsNum,
current timestamp - 24 hours gNeu,
max(case when icType = 'F'
and timestamp < current timestamp - 28 hours
then timestamp else '1900-01-01-00.00.00'
end) gAlt
from sysibm.syscopy c, sysibm.systablespace s
group by c.dbname, c.tsName, c.dsNum
$*)
call sqlConnect DBTF
$;
$<<eof
select
c.dbname, c.tsName, c.dsNum, s.pgSize, s.partitions,
icType, copyPagesf, nPagesF, cPagesF, dsName, timestamp,
case when timestamp > current timestamp - 24 hours then 'u'
when timestamp > current timestamp - 28 hours then 'o'
else 'n' end gest
from sysibm.syscopy c, sysibm.systablespace s
where icType in ('F', 'I') and c.dbName like '%'
and s.dbName = c.dbName and s.name = c.tsName
order by 1, 2,3, timestamp desc
with ur
eof call sql 1 $! pref = '' $@{
lst = ''
parts = 0
copys = 0
allKeys = 'DDF DDI DAF DAI ADF ADI AAF AAI' ,
'NDF NDI NAF NAI TDF TDI TAF TTI UDF UDI UAF UAI'
do kx=1 to words(allKeys)
k = word(allKeys, kx)
v.k = 0
v.k.kb = 0
end
first = 1
$@for c $@{
crn = ${c.DBNAME}'.'${c.TSNAME}'.'${c.DSNUM}
copys = copys + 1
if crn <> lst then do
if lst <> '' then do
$** $£ lst 'with' f 'full and' i 'incremental'
end
fiFu = 0
parts = parts + 1
lst = crn
if first then do
first = 0
$£ 'first' crn dsn
end
if time('e') > 300 then do
$£ 'elapsed time guillotine' time('e') crn dsn
leave
end
end
gest = ${c.GEST}
if gest == 'u' then
key = 'DD'
else if gest = 'o' then
key = 'AD'
else if fiFu then
key = 'AA'
else do
key = 'AD'
fiFu = ${c.ICTYPE} = 'F'
end
key = key || ${c.ICTYPE}
if symbol('v.key') == VAR then do
v.key = v.key + 1
v.key.kb = v.key.kb + ${c.COPYPAGESF} * ${c.PGSIZE}
end
else do
$£ 'bad key' key 'for cl' cl 'dsn' dsn
end
$}
$£ copys 'copies in' parts 'partitions'
do kx=1 to words(allKeys)
k = word(allKeys, kx)
$£ k right(v.k, 10) format(v.k.kb, 1,3,1,0)
end
$} $;
$£ timing() 'end elapsed' time(e)
call sqlDisconnect
$***out 20080307 13:51:02
first AC01A1P.A002P.0 DSN
160822 copies in 36368 partitions
DDF 1380 9.799E+7
DDI 896 4.644E+6
DAF 0 0.000
DAI 0 0.000
ADF 36384 2.115E+9
ADI 2465 1.379E+7
AAF 100524 6.567E+9
AAI 19173 7.308E+7
NDF 0 0.000
NDI 0 0.000
NAF 0 0.000
NAI 0 0.000
TDF 0 0.000
TDI 0 0.000
TAF 0 0.000
TTI 0 0.000
UDF 0 0.000
UDI 0 0.000
UAF 0 0.000
UAI 0 0.000
13:55:23 245.452290 296.17 end elapsed 245.452310
$***out 20080307 13:49:23
first MF01A1T.A101A.0 DSN
2326 copies in 698 partitions
DDF 2 6.640E+2
DDI 0 0.000
DAF 0 0.000
DAI 0 0.000
ADF 698 7.569E+7
ADI 2 3.364E+3
AAF 1613 1.687E+8
AAI 11 1.692E+4
NDF 0 0.000
NDI 0 0.000
NAF 0 0.000
NAI 0 0.000
TDF 0 0.000
TDI 0 0.000
TAF 0 0.000
TTI 0 0.000
UDF 0 0.000
UDI 0 0.000
UAF 0 0.000
UAI 0 0.000
13:49:27 2.896786 108.21 end elapsed 2.896804
$***out 20080307 13:49:02
$***out 20080307 13:48:48
$***out 20080121 15:19:51
15:19:51 0 0.41 elapsed 0
first AC01A1P.A002P.0 DSN
elapsed time guillotine 300.327667 BE01A1P.A005A02.67 DSN
108863 copies in 1641 partitions
DDF 525 3.257E+7
DDI 3253 2.119E+6
DAF 0 0.000
DAI 0 0.000
ADF 1780 9.825E+7
ADI 1171 1.132E+7
AAF 22357 2.377E+9
AAI 79776 7.435E+7
NDF 0 0.000
NDI 0 0.000
NAF 0 0.000
NAI 0 0.000
TDF 0 0.000
TDI 0 0.000
TAF 0 0.000
TTI 0 0.000
UDF 0 0.000
UDI 0 0.000
UAF 0 0.000
UAI 0 0.000
15:24:51 300.335001 157.22 end elapsed 300.335036
$***out 20080121 14:44:13
14:44:13 0 813.34 elapsed 0
first MF01A1P.A101A.0 DSN
3007 copies in 569 partitions
DDF 44 1.020E+7
DDI 6 1.620E+3
DAF 0 0.000
DAI 0 0.000
ADF 569 2.922E+8
ADI 101 1.544E+5
AAF 1438 7.588E+8
AAI 849 3.174E+6
NDF 0 0.000
NDI 0 0.000
NAF 0 0.000
NAI 0 0.000
TDF 0 0.000
TDI 0 0.000
TAF 0 0.000
TTI 0 0.000
UDF 0 0.000
UDI 0 0.000
UAF 0 0.000
UAI 0 0.000
14:44:22 8.877636 817.37 end elapsed 8.877658