zOs/JCL/ACC01
//A540769W JOB (CP00,KE50),'DB2 REO', 00010000
// MSGCLASS=T,TIME=1440, 00020000
// NOTIFY=&SYSUID,REGION=0M,SCHENV=DB2 00030003
//*MAIN CLASS=LOG 00040003
//DEL EXEC PGM=IEFBR14
//SYSREC00 DD DISP=(MOD,DELETE),DSN=A540769.TMP.DSNTIAU0
//SYSREC01 DD DISP=(MOD,DELETE),DSN=A540769.TMP.DSNTIAU1
//S1 EXEC PGM=IKJEFT01,DYNAMNBR=200,TIME=99
//SYSTSIN DD *
DSN SYSTEM(DP4G)
RUN PROGRAM(DSNTIAUL) PARMS('SQL')
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTERM DD SYSOUT=*
//SYSPUNCH DD SYSOUT=*,RECFM=FB,LRECL=80
//SYSREC00 DD DISP=(NEW,CATLG),DSN=*.DEL.SYSREC00,
//* dcb=(lrecl=2048,recfm=fb), kein reclen angeben,
//* dann macht dsntiaul es richtig
// SPACE=(CYL,(2,1000)),MGMTCLAS=COM#A069
//SYSREC01 DD DISP=(NEW,CATLG),DSN=*.DEL.SYSREC01,
// SPACE=(CYL,(2,1000)),MGMTCLAS=COM#A069
//DDCARD DD SYSOUT=*,RECFM=FB,LRECL=80
//SYSIN DD * -- nur jedes 100te query
set current path = oa1p;
with x as
( select float(max(1, round(sqlCount/100, 0))) sn, p.*
from pbxx.TACCT_PROGRAM_20131015 p
where sqlCount > 0
/* fetch first 1000000 rows only */
)
, y as
( select smallint(floor(log10(max(1e-30,
real(BPGETPAGE)/sn)) * 3)) g, x.*
from x
)
select char(
right(' ' || strip(char(count(*))), 12) || ' '
|| substr(fosFmte7(min(real(BPGETPAGE)/sn)), 1, 7) || ' '
|| substr(fosFmte7(max(real(BPGETPAGE)/sn)), 1, 7) || ' '
|| substr(fosFmte7(avg(real(BPGETPAGE)/sn)), 1, 7) || ' '
|| substr(fosFmte7(avg(real(ELAPSEPKG)/sn)), 1, 7) || ' '
|| substr(fosFmte7(avg(real(CPUTCBPKG)/sn)), 1, 7) || ' sum '
|| substr(fosFmte7(sum(real(occurrences))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(sqlCount))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(sn))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(bpGetPage))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(elapsePkg))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(cpuTcbPkg))), 1, 7) || ' '
|| char(min(dateTime)) || ' '
|| char(max(dateTime)) || ' '
|| min(subsystem) || max(subsystem)
|| min(planName) || max(planName)
|| min(programName) || max(programName)
, 255)
from y
group by g
order by g desc
;
//SYSI1 DD * -- average
set current path = oa1p;
with x as
( select smallint(floor(log10(max(1e-30,
real(BPGETPAGE)/sqlCount)) * 3)) g, p.*
from pbxx.TACCT_PROGRAM_20131015 p
where sqlCount > 0
fetch first 100000 rows only
)
select char(
right(' ' || strip(char(count(*))), 12) || ' '
|| substr(fosFmte7(min(real(BPGETPAGE)/sqlCount)), 1, 7) || ' '
|| substr(fosFmte7(max(real(BPGETPAGE)/sqlCount)), 1, 7) || ' '
|| substr(fosFmte7(avg(real(BPGETPAGE)/sqlCount)), 1, 7) || ' '
|| substr(fosFmte7(avg(real(ELAPSEPKG)/sqlCount)), 1, 7) || ' '
|| substr(fosFmte7(avg(real(CPUTCBPKG)/sqlCount)), 1, 7) || ' sum '
|| substr(fosFmte7(sum(real(occurrences))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(sqlCount))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(bpGetPage))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(elapsePkg))), 1, 7) || ' '
|| substr(fosFmte7(sum(real(cpuTcbPkg))), 1, 7) || ' '
|| char(min(dateTime)) || ' '
|| char(max(dateTime)) || ' '
|| min(subsystem) || max(subsystem)
|| min(planName) || max(planName)
|| min(programName) || max(programName)
, 255)
from x
group by g
order by g desc
;