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