DB2 for z/OS V8 - Guide Share France
DB2 for z/OS V8 - Guide Share France
DB2 for z/OS V8 - Guide Share France
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Cristian Molaro<br />
MConsulting BELGIUM<br />
Réunion du <strong>Guide</strong> <strong>DB2</strong> pour z/<strong>OS</strong><br />
<strong>France</strong><br />
Jeudi 22 novembre 2007<br />
Immeuble CA, Paris-La Défense
Cristian Molaro is a <strong>DB2</strong> System engineer who<br />
works as a consultant in Belgium.<br />
His main activity is linked to the <strong>DB2</strong> <strong>for</strong> z/<strong>OS</strong><br />
administration and per<strong>for</strong>mance monitoring and<br />
tuning.<br />
He is an IBM Certified Professional, graduated in<br />
Chemical Engineering and has a Postgraduate in<br />
Management Sciences.<br />
Cristian is a <strong>for</strong>mer IDUG and GSE speaker.<br />
© 2007 MConsulting - cristian@molaro.be 2
© 2007 MConsulting - cristian@molaro.be 3
As much as you can<br />
http://www.ibm.com/software/data/db2/zos<br />
Installation <strong>Guide</strong><br />
Migration In<strong>for</strong>mational APAR II13695<br />
Unicode In<strong>for</strong>mational APAR II13048 & II13049<br />
<strong>DB2</strong> UDB <strong>for</strong> z/<strong>OS</strong> <strong>V8</strong> Migration: An Ironman® event<br />
SG24-6465: <strong>DB2</strong> <strong>for</strong> z/<strong>OS</strong> Per<strong>for</strong>mance Topics<br />
SG24-6079: <strong>DB2</strong> <strong>V8</strong>, Everything you ever wanted to know...<br />
IDUG <strong>DB2</strong>LIST<br />
...<br />
© 2007 MConsulting - cristian@molaro.be 4
Critical APAR:<br />
============================================================<br />
SECTION 1: Toleration, Coexistance and Compatibility PTFs.<br />
============================================================<br />
5740XYR00 R810<br />
<strong>DB2</strong> V7.1 MIGRATION/FALLBACK INFOAPAR TO/FROM <strong>DB2</strong> <strong>V8</strong>.1<br />
AND UPGRADE V710<br />
FOLLOWING PTFS ARE REQUIRED FOR <strong>DB2</strong> V7.1 & <strong>V8</strong>.1 BEFORE<br />
MIGRATION:<br />
<strong>DB2</strong> system administrator should take a back up from <strong>DB2</strong><br />
environment (SMP/E, Active logs, BSDSs, <strong>DB2</strong> Catalog/Directory)<br />
be<strong>for</strong>e applying maintenance.<br />
Remove any ZAPed (modified) <strong>DB2</strong> module/s (lmod) by OEM from<br />
load libraries of a single <strong>DB2</strong> subsystem or entire DataSharing<br />
group be<strong>for</strong>e starting <strong>DB2</strong> with following maintenance.<br />
Vanilla IBM <strong>DB2</strong> load modules are needed <strong>for</strong> processing.<br />
PQ48486/UQ81009(0310) Toleration of fallback from <strong>DB2</strong> Version 8<br />
......<br />
PQ84421/UQ85439(0403) adds a new job DSNTIJP8 to V7.<br />
© 2007 MConsulting - cristian@molaro.be 5
© 2007 MConsulting - cristian@molaro.be 6
© 2007 MConsulting - cristian@molaro.be 7
© 2007 MConsulting - cristian@molaro.be 8
DFSORT is mandatory <strong>for</strong> IBM utilities<br />
DSNU000I<br />
DSNU1044I<br />
DSNU1640I<br />
DSNUGUTC - OUTPUT START FOR UTILITY, UTILID = PRD.REORGUP<br />
DSNUGTIS - PROCESSING SYSIN AS EBCDIC<br />
DSNUGUTC - Z/<strong>OS</strong> DFSORT LOAD MODULE NOT LOADED.<br />
DSNU012I DSNUGBAC - UTILITY EXECUTION TERMINATED, HIGHEST RETURN CODE=8<br />
If missing, it will not work<br />
Special licence <strong>for</strong> <strong>DB2</strong> usage<br />
Shipped with z/<strong>OS</strong><br />
May need to add a STEPLIB to JCL IBM utilities<br />
Does not affect non IBM utilities<br />
© 2007 MConsulting - cristian@molaro.be 9
Use alias in PROCs, JCLs, etc<br />
Simplifies next migration and fallback<br />
Target library must be APF (when applicable)<br />
Security applied on target library<br />
DSLIST - Data Sets Matching DWA1LIB.* Row 1 of 10<br />
Command ===><br />
Scroll ===> PAGE<br />
Command - Enter "/" to select action Message Volume<br />
-------------------------------------------------------------------------------<br />
DWA1LIB.SDSNEXIT<br />
*ALIAS<br />
DWA1LIB.SDSNLOAD<br />
*ALIAS<br />
DWA1LIB.SDSNLOD2<br />
*ALIAS<br />
DWA1LIB.V7.SDSNEXIT<br />
IC23A3<br />
DWA1LIB.V7.SDSNLOAD<br />
IC23A3<br />
DWA1LIB.V7.SDSNLOD2<br />
IC23A3<br />
DWA1LIB.<strong>V8</strong>.SDSNEXIT<br />
IC23AA<br />
DWA1LIB.<strong>V8</strong>.SDSNLOAD<br />
IC23AA<br />
DWA1LIB.<strong>V8</strong>.SDSNLOD2<br />
IC23AA<br />
***************************** End of Data Set list ****************************<br />
© 2007 MConsulting - cristian@molaro.be 10
SPAS stored procedures not longer supported<br />
In CM use V7 version or get -4700<br />
JDBC & ODBC: DSNTIJMS<br />
Best per<strong>for</strong>mance: NUMTCB > 1<br />
Control Center: DSNTIJCC<br />
Tools: Only SP part of DSNTIJSG<br />
Care on distributing SP to WLM Environments<br />
XML SP<br />
MQ Series SP<br />
© 2007 MConsulting - cristian@molaro.be 11
WLM ENV<br />
NAME NUMTCB<br />
APF<br />
Authorized Pourpose Origin Description Notes<br />
WLMENV1 40 YES <strong>DB2</strong>DEBUG.SYS*<br />
SQLJ.INSTALL_JAR<br />
SQLJ.REPLACE_JAR<br />
SQLJ.REMOVE_JAR<br />
SYSIBM.SQL*<br />
SYSPROC.WLM_REFRESH<br />
SYSPROC.DSNTJSPP + STORED<br />
PROCEDURES + Control Center<br />
DSNTIJSD<br />
DSNTIJSG<br />
DSNTIJSG<br />
DSNTIJSG<br />
DSNTIJSG<br />
DSNTIJSG<br />
DSNTIJSG +<br />
DSNTIJMS +<br />
DSNTIJCC<br />
<strong>DB2</strong> Supplied stored procedures Must be autorized <strong>for</strong><br />
WLM_REFRESH<br />
WLMENV2 1 NO SYSPROC.DSNTPSMP<br />
SYSPROC.DSNTBIND<br />
SYSPROC.DSNACCTS<br />
DSNTIJSG<br />
DSNTIJSG<br />
REXX requires NUMTCB=1<br />
WLMENV3 40 NO User SQL stored procedures Created manually<br />
or by using <strong>DB2</strong><br />
Development Center or<br />
Stored Procedure<br />
Builder<br />
WLMENV4 8 NO User Java stored procedures Created manually<br />
or by using <strong>DB2</strong><br />
Development Center or<br />
Stored Procedure<br />
Builder<br />
Check <strong>for</strong> DSNX993I error<br />
message in case of problems<br />
SHOULD have at least ONE<br />
unauthorized data set<br />
SHOULD have at least ONE<br />
unauthorized data set.<br />
One JVM is loaded <strong>for</strong> each<br />
NUMTCB<br />
specified. The presence of<br />
the //JAVAENV in the JCL<br />
causes the JVM to be loaded<br />
WLMENV5 1 YES DSNUTILS Allows the execution of <strong>DB2</strong><br />
utilities<br />
NTMTCB=1 is mandatory<br />
© 2007 MConsulting - cristian@molaro.be 12
WLM address space fails at start:<br />
DMA1WLM IEF403I DMA1WLM - STARTED - TIME=15.14.45<br />
CNTEROC #IEF403I (J1WLM) DMA1WLM - STARTED - TIME=15.14.45<br />
DMA1WLM DSNX967I DSNX9WLM ATTEMPT TO PERFORM WLM FUNCTION IWMCONN FAILED<br />
DMA1WLM WITH WLM RC = 0000000C RSN = 11580C1A SSN =<br />
Missing WLM environment definition:<br />
EJES510 USER-ESAMIL--/VARY WLM,APPLENV=WLMENV1,REFRESH<br />
WLMENV1,REFRESH<br />
IWM030I VARY REFRESH FOR WLMENV1 REJECTED, APPLICATION ENVIRONMENT NOT<br />
DEFINED<br />
Missing RRS:<br />
CNTEROC #IEF403I (J1WLM) DMA1WLM - STARTED - TIME=16.01.32<br />
DMA1WLM DSNX982I DSNX9WLM ATTEMPT TO PERFORM RRS ATTACH FUNCTION SPAS_I<br />
DMA1WLM<br />
FAILED WITH RRS RC = 00000008 RSN = 00F30091 SSN = DMA1<br />
DMA1WLM PROC= DMA1WLM ASID = 013D WLM_ENV = DMA1WLM<br />
.....<br />
DSN3029I -DMA1 DSN3RRRS RRS ATTACH PROCESSING IS AVAILABLE<br />
© 2007 MConsulting - cristian@molaro.be 13
DSNUTILS:<br />
//DDA1WLM PROC RGN=0K,APPLENV=WLMDDA1ENV5,<strong>DB2</strong>SSN=DDA1,NUMTCB=1<br />
//IEFPROC EXEC PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT,<br />
// PARM='&<strong>DB2</strong>SSN,&NUMTCB,&APPLENV'<br />
//STEPLIB DD DISP=SHR,DSN=DDA1SOFT.RUNLIB.LOAD<br />
// DD DISP=SHR,DSN=DDA1LIB.SDSNLOAD<br />
//UTPRINT DD SYSOUT=*<br />
//RNPRIN01 DD SYSOUT=*<br />
//DSSPRINT DD SYSOUT=*<br />
//SYSIN DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)<br />
//SYSPRINT DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)<br />
REXX:<br />
//DDA1WLM PROC RGN=0K,APPLENV=WLMDDA1ENV2,<strong>DB2</strong>SSN=DDA1,NUMTCB=1<br />
//IEFPROC EXEC PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT,<br />
// PARM='&<strong>DB2</strong>SSN,&NUMTCB,&APPLENV'<br />
//SYSEXEC DD DISP=SHR,DSN=DDA1SOFT.<strong>V8</strong>.SDSNCLST<br />
//STEPLIB DD DISP=SHR,DSN=DDA1SOFT.RUNLIB.LOAD<br />
// DD DISP=SHR,DSN=DDA1LIB.SDSNLOAD<br />
//SYSTSPRT DD SYSOUT=*<br />
© 2007 MConsulting - cristian@molaro.be 14
© 2007 MConsulting - cristian@molaro.be 15
© 2007 MConsulting - cristian@molaro.be 16
CM<br />
EN<br />
FM<br />
NF<br />
M<br />
CM<br />
EN<br />
FM<br />
NF<br />
M<br />
NF<br />
M<br />
CM<br />
EN<br />
FM<br />
NF<br />
M<br />
NF<br />
M<br />
CM<br />
EN<br />
FM<br />
NF<br />
M<br />
NF<br />
M<br />
CM<br />
EN<br />
FM<br />
NF<br />
M<br />
© 2007 MConsulting - cristian@molaro.be 17
FUNCTION = ENABLE NEW FUNCTION<br />
MODE PROCESSING<br />
It is the longest job in ENFM<br />
REORG Catalog and Directory<br />
Critical: verify number of RECORDS in<br />
VSAM definitions<br />
Will fail if user defined indexes on Catalog<br />
but missing SHADOW dataset in JCL<br />
© 2007 MConsulting - cristian@molaro.be 18
DSN TRKS CYLS DB TS CI Size RECORDS<br />
CAT.DSNDBD.DSNDB06.SYSPKAGE.I0001.A001 2250 150 DSNDB06 SYSPKAGE 4096 27000<br />
CAT.DSNDBD.DSNDB01.SYSLGRNX.I0001.A001 1500 100 DSNDB01 SYSLGRNX 4096 18000<br />
CAT.DSNDBD.DSNDB06.DSNKSX01.I0001.A001 1125 75 DSNDB06 DSNKSX01 4096 13500<br />
CAT.DSNDBD.DSNDB01.DSNSPT02.I0001.A001 750 50 DSNDB01 DSNSPT02 4096 9000<br />
CAT.DSNDBD.DSNDB06.SYSDBASE.I0001.A001 750 50 DSNDB06 SYSDBASE 4096 9000<br />
CAT.DSNDBD.DSNDB06.SYSCOPY.I0001.A001 450 30 DSNDB06 SYSCOPY 4096 5400<br />
CAT.DSNDBD.DSNDB01.DBD01.I0001.A001 375 25 DSNDB01 DBD01 4096 4500<br />
CAT.DSNDBD.DSNDB01.DSNLLX01.I0001.A001 375 25 DSNDB01 DSNLLX01 4096 4500<br />
CAT.DSNDBD.DSNDB01.DSNSPT01.I0001.A001 375 25 DSNDB01 DSNSPT01 4096 4500<br />
CAT.DSNDBD.DSNDB01.SCT02.I0001.A001 375 25 DSNDB01 SCT02 4096 4500<br />
CAT.DSNDBD.DSNDB06.SYSPLAN.I0001.A001 375 25 DSNDB06 SYSPLAN 4096 4500<br />
RECORDS = (CI Size/4096)*12*Trks<br />
© 2007 MConsulting - cristian@molaro.be 19
Verify and eventually update RECORDS<br />
Special attention to SYSSPT01<br />
//ENFM0113 EXEC PGM=IDCAMS,COND=(2,LE,ENFM0110)<br />
//DATADEV DD UNIT=3390,DISP=OLD,VOL=SER=PR23A3<br />
//INDEXDEV DD UNIT=3390,DISP=OLD,VOL=SER=PR23A3<br />
//SYSPRINT DD SYSOUT=*<br />
//SYSUDUMP DD SYSOUT=*<br />
//SYSIN DD *<br />
DEFINE CLUSTER -<br />
( NAME(DPA1CAT.DSNDBC.DSNDB06.SYSPKAGE.J0001.A001) -<br />
FILE(DATADEV) -<br />
LINEAR -<br />
REUSE -<br />
VOLUMES(PR23A3) -<br />
RECORDS(27000 27000) -<br />
SHAREOPTIONS(3 3) ) -<br />
DATA -<br />
( NAME(DPA1CAT.DSNDBD.DSNDB06.SYSPKAGE.J0001.A001) -<br />
) CATALOG(DPA1CAT)<br />
© 2007 MConsulting - cristian@molaro.be 20
Total elapsed time = 5 min<br />
Copies were done on TAPE<br />
RC = 1 [CHECK THE NFM STATUS OF SYSSPT01]<br />
© 2007 MConsulting - cristian@molaro.be 21
Why?<br />
SPROC are invalidated in <strong>V8</strong> be<strong>for</strong>e rebind<br />
Get <strong>V8</strong> optimizer benefits<br />
Data types mismatches become stage 1<br />
Need to per<strong>for</strong>m a controlled REBIND process<br />
No need to REBIND in NFM<br />
Have a list of critical packages to verify<br />
Must see the difference of an access path change<br />
because an application change<br />
A single worse statement avoids package rebind<br />
© 2007 MConsulting - cristian@molaro.be 22
Compare EXPLAIN tables V7 vs. <strong>V8</strong>:<br />
If Cost increases:<br />
If Cost stays the same:<br />
If Cost decreases:<br />
investigate<br />
rebind<br />
rebind<br />
Create a baseline in V7 in dummy collection if not<br />
EXPLAIN = YES<br />
Use DSNTESC to create tables:<br />
PLAN_TABLE<br />
DSN_FUNCTION_TABLE<br />
DSN_STATEMNT_TABLE<br />
DSN_STATEMENT_CACHE_TABLE<br />
© 2007 MConsulting - cristian@molaro.be 23
Execution statistics<br />
--------------------<br />
Total number of impacted plan_table rows 362953<br />
Number of processed packages 2994<br />
Number of changed plan_table rows 6607<br />
Number of cost changes 23143<br />
----------------------<br />
Cost increases 3001<br />
Cost decreases/is the same 20142<br />
© 2007 MConsulting - cristian@molaro.be 24
© 2007 MConsulting - cristian@molaro.be 25
V7<br />
For logged user (TSO/SDSF): id passed through <strong>for</strong><br />
console commands = SYSOPR<br />
Zparm SYSOPRn=SYSOPR allows any user to enter<br />
commands from console<br />
<strong>V8</strong><br />
For logged on user: id passed through <strong>for</strong> console<br />
commands is now the user and not SYSOPR<br />
Console operator could be unable to operate <strong>DB2</strong><br />
RACF groups and secondary authids supported in<br />
<strong>V8</strong><br />
© 2007 MConsulting - cristian@molaro.be 26
64 bits addressing is NOT the solution to ALL the VS<br />
problems Still need to work on VSCR<br />
Some structures remain under the bar or the line<br />
Only IRLM and DBM1 address spaces exploit 64-bit<br />
addressing<br />
Several critical storage pools above 2GB bar, i.e. BPOOLS<br />
Thread related storage stays below the bar & Thread<br />
footprint increases 30% - 70%<br />
Look after REAL storage, not only VIRTUAL storage<br />
Observed increase about 3% depends on usage<br />
<br />
ftp://ftp.software.ibm.com/software/data/db2zos/<strong>DB2</strong>VSTORprez.pdf<br />
© 2007 MConsulting - cristian@molaro.be 27
V7: Start IFCID 225 destination SMF if not yet done<br />
-START TRACE(STAT) DEST(SMF) CLASS(6) IFCID(225)<br />
DSNW127I -DAC1 CURRENT TRACE ACTIVITY IS -<br />
TNO TYPE CLASS DEST QUAL<br />
01 STAT 01,03,04,05, SMF NO<br />
01 06<br />
02 ACCTG 01,02,03 SMF NO<br />
*********END OF DISPLAY TRACE SUMMARY DATA*********<br />
Tiny overhead<br />
PQ99658:<br />
System parameter STATIME default time is reduced from 30<br />
minutes to 5<br />
IFCID 225 is added to STATISTICS trace class 1<br />
© 2007 MConsulting - cristian@molaro.be 28
STATISTICS<br />
EXEC<br />
REPORT<br />
DDNAME(STATSDD)<br />
LAYOUT(LONG)<br />
LOCATION: DBGP <strong>DB2</strong> PERFORMANCE MONITOR (V4 ) PAGE: 2-10<br />
GROUP: N/P STATISTICS REPORT - LONG REQUESTED FROM: NOT SPECIFIED<br />
MEMBER: N/P<br />
TO: NOT SPECIFIED<br />
SUBSYSTEM: DBPX INTERVAL FROM: 11/16/07<br />
<strong>DB2</strong> VERSION: <strong>V8</strong> SCOPE: MEMBER TO: 11/18/07<br />
DBM1 AND MVS STORAGE BELOW 2 GB QUANTITY DBM1 AND MVS STORAGE BELOW 2 GB QUANTITY<br />
---------------------------------------- ---------- --------------------------------------- -----------<br />
TOTAL DBM1 STORAGE BELOW 2 GB (MB) 126.39 24 BIT LOW PRIVATE (MB) 0.21<br />
TOTAL GETMAINED STORAGE (MB) 118.22 24 BIT HIGH PRIVATE (MB) 0.34<br />
VIRTUAL BUFFER POOLS (MB) N/A 31 BIT EXTENDED LOW PRIVATE (MB) 31.41<br />
VIRTUAL POOL CONTROL BLOCKS (MB) N/A 31 BIT EXTENDED HIGH PRIVATE (MB) 142.20<br />
EDM POOL (MB) 117.19 EXTENDED REGION SIZE (MAX) (MB) 1643.00<br />
COMPRESSION DICTIONARY (MB) N/A EXTENDED CSA SIZE (MB) 244.28<br />
…<br />
DBM1 STORAGE ABOVE 2 GB QUANTITY REAL AND AUXILIARY STORAGE QUANTITY<br />
--------------------------------------- ----------- --------------------------------------- -----------<br />
FIXED STORAGE (MB) 0.01 REAL STORAGE IN USE (MB) 115.68<br />
GETMAINED STORAGE (MB) 164.21 AUXILIARY STORAGE IN USE (MB) 0.00<br />
COMPRESSION DICTIONARY (MB) 0.12<br />
CACHED DYNSQL STATEMENTS (MAX) (MB) 52.89<br />
DBD CACHE (MAX) (MB) 52.89<br />
PAGES HELD BY DBDS 216.20<br />
…<br />
© 2007 MConsulting - cristian@molaro.be 29
WARNING: check activity @ snapshot<br />
Should consider trends<br />
© 2007 MConsulting - cristian@molaro.be 30
Paul Fletcher’s REXX <strong>for</strong> READS and gather IFC225<br />
fletchpl@uk.ibm.com<br />
Can be used <strong>for</strong> long term monitoring<br />
© 2007 MConsulting - cristian@molaro.be 31
500MB = GREEN<br />
200-500MB = AMBER<br />
IBM published CPU expected changes considering<br />
no use of new <strong>V8</strong> features<br />
-20% -10%<br />
0%<br />
+10% +20%<br />
© 2007 MConsulting - cristian@molaro.be 33
IBM objective <strong>for</strong> regression is less than 10%<br />
Not only Acctg Class 2 increase expected<br />
Must consider CPU reduction in <strong>DB2</strong> system<br />
address spaces<br />
© 2007 MConsulting - cristian@molaro.be 34
Rebind all packages/plans<br />
Multi-row FETCH and INSERT<br />
MQTs<br />
Increase size of buffer pools<br />
Long term page fix buffer pools<br />
Fix the buffer pages once in memory and keep them fixed in real<br />
storage<br />
0% to 8% CPU savings<br />
Only if enough real storage to back bpools 100%<br />
Activated by -ALTER BPOOL(x) PGFIX(YES)<br />
Per<strong>for</strong>mance benefit is inversely proportional to the buffer hit ratio:<br />
○ The higher the hit ratio, the lower the benefit<br />
○ Apply to small buffer pools with lots of I/Os<br />
© 2007 MConsulting - cristian@molaro.be 35
© 2007 MConsulting - cristian@molaro.be 36
New in <strong>V8</strong>:<br />
BACKUP SYSTEM<br />
RESTORE SYSTEM<br />
Not supported in CM<br />
Scenarios:<br />
Backup entire <strong>DB2</strong> system.<br />
System-level PITR <strong>for</strong> logical DR: BACKUP SYSTEM DATA ONLY<br />
Physical DR: BACKUP SYSTEM FULL<br />
System cloning<br />
Backup outside of <strong>DB2</strong> using DFSMShsm commands<br />
New in V9 + z/<strong>OS</strong> 1.8: Restore <strong>DB2</strong> objects from volume<br />
dumps you can prepare now to get advantage<br />
© 2007 MConsulting - cristian@molaro.be 37
The migration process is a good opportunity <strong>for</strong> preparing<br />
to Backup and Restore System<br />
Consider to apply systematicly to new <strong>DB2</strong>s<br />
Has impact on Storage Management<br />
Requires:<br />
Definition of 2 SMS Copy Pools <strong>for</strong> data and logs<br />
○ DSN$locn-name$DB <strong>for</strong> data<br />
○ DSN$locn-name$LG <strong>for</strong> log<br />
Definition of SMS Copy Pool Backup storage group<br />
SMS managed datasets: including <strong>DB2</strong> catalog &<br />
directory + logs<br />
○ Log placement: use Guaranteed Space <strong>for</strong> volume allocation +<br />
EF <strong>for</strong> striping<br />
© 2007 MConsulting - cristian@molaro.be 38
Define separate ICF Catalogs<br />
User data, <strong>DB2</strong> catalog and directory<br />
Logs (optionally system load libraries)<br />
Define SMS Storage Groups<br />
For user data<br />
For the <strong>DB2</strong> Catalog & Directory and the ICFCTLG<br />
For the <strong>DB2</strong> logs, BSDS and the ICFCTLG<br />
© 2007 MConsulting - cristian@molaro.be 39
VLG001 VLG002 VLG00n<br />
<strong>DB2</strong> Logs and BSDS<br />
ICFCTLG<br />
UCAT.PC1.<strong>DB2</strong>LG<br />
VSY001 VSY002 VSY00n<br />
<strong>DB2</strong> Catalog and Directory<br />
DSNDB04<br />
DSNDB07<br />
ICFCTLG<br />
UCAT.PC1.<strong>DB2</strong>SY<br />
VDB001 VDB002 VDB00n<br />
Bussiness Data<br />
Defined on ICFCTLG<br />
UCAT.PC1.<strong>DB2</strong>SY<br />
Storage group<br />
SGP1LG<br />
Storage group<br />
SGP1SY<br />
Storage group<br />
SGP1UD<br />
Copy pool<br />
DSN$DPC1$LG<br />
Copy pool<br />
DSN$DPC1$DB<br />
CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn<br />
CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn CPVnnn<br />
Copy pool backup storage group<br />
© 2007 MConsulting - cristian@molaro.be 40
Creates full volume dasd copies of the <strong>DB2</strong><br />
subsystem<br />
Replaces the –set log suspend + –set<br />
log resume method<br />
BACKUP SYSTEM FULL or BACKUP SYSTEM DATA<br />
ONLY<br />
SYSCTRL or SYSADM authority required<br />
<strong>DB2</strong> does not take any quiesce points<br />
BSDS Backup History is updated<br />
<strong>DB2</strong> keeps track of 50 backups in the BSDS<br />
© 2007 MConsulting - cristian@molaro.be 41
DSNU000I DSNUGUTC -OUTPUT START FOR UTILITY, UTILID = PRD.BKUPSYS<br />
DSNU1044I DSNUGTIS -PROCESSING SYSIN AS EBCDIC<br />
DSNU050I DSNUGUTC -BACKUP SYSTEM FULL<br />
DSNU1600I DSNUVBBD -BACKUP SYSTEM UTILITY FOR DATA STARTING,<br />
COPYPOOL = DSN$PRD$DB<br />
TOKEN = X'E7F9F6C1BAAF725F60A7E106001C3D582090'.<br />
DSNU1614I DSNUVBBD -BACKUP SYSTEM UTILITY FOR DATA COMPLETED SUCCESSFULLY,<br />
COPYPOOL = DSN$PRD$DB<br />
TOKEN = X'E7F9F6C1BAAF725F60A7E106001C3D582090'<br />
ELAPSED TIME = 00:00:23.<br />
BACKUP SYSTEM UTILITY HISTORY<br />
SUBSYSTEM ID PRD<br />
20:03:12 JANUARY 30, 1999<br />
START STCK DATA COMPLETE DATA/LOG<br />
DATA LOG RBLP LRSN DATE<br />
-----------------------------------------------------------------<br />
BAAF725F60A7E106 BAAF7275EF9EF603 001C3D582090001C3D582090 2004/01/27<br />
TOKEN = E7F9F6C1BAAF725F60A7E106001C3D582090<br />
BAA928EADE2A7E26 BAA92904E3FE8D66 001C3A22B090 001C3A22B090 2004/01/22<br />
TOKEN = E7F9F6C1BAA928EADE2A7E26001C3A22B090<br />
COMPLETE<br />
LTIME LOCATION NAME<br />
----------------------<br />
08:40:47 PRD<br />
08:40:17 PRD<br />
© 2007 MConsulting - cristian@molaro.be 42
Restores <strong>DB2</strong> system to specified point-in-time<br />
RESTORE SYSTEM or RESTORE SYSTEM LOGONLY<br />
Use <strong>for</strong> logical or <strong>for</strong> physical DR<br />
Needs to conditionally restart <strong>DB2</strong> prior to<br />
running RESTORE SYSTEM<br />
–DSNJU003, CRESTART CREATE SYSPITR=logpoint<br />
INSTALL SYSADM authority required<br />
Handles CREATE, DROP and LOG NO events…<br />
…but some LOG NO operations not supported:<br />
LOAD LOG NO, REORG, CREATE INDEX<br />
© 2007 MConsulting - cristian@molaro.be 43
DSNJU003:<br />
CRESTART CREATE SYSPITR=log-point<br />
SYSOUT:<br />
DSNU000I DSNUGUTC -OUTPUT START FOR UTILITY, UTILID = PRD.SRESTORE<br />
DSNU1044I DSNUGTIS -PROCESSING SYSIN AS EBCDIC<br />
DSNU050I DSNUGUTC -RESTORE SYSTEM<br />
DSNU1606I DSNUVBRD -RESTORE SYSTEM UTILITY STARTING,<br />
COPYPOOL = DSN$PRD$DB<br />
TOKEN = X'E7F9F6C1BAAF725F60A7E106001C3D582090'.<br />
DSNU1627I DSNUVBRD -RESTORE SYSTEM PRE-LOG APPLY COMPLETED<br />
SUCCESSFULLY, COPYPOOL = DSN$PRD$DB<br />
TOKEN = X'E7F9F6C1BAAF725F60A7E106001C3D582090'<br />
ELAPSED TIME = 00:00:15.<br />
...<br />
DSNU1604I -X96A DSNUVARL -RESTORE SYSTEM PHASE LOG APPLY STARTED AT LOG POINT =<br />
X’001C3D582090’<br />
DSNU1629I -X96A DSNUVARL -<strong>DB2</strong> PUT ONE OR MORE OBJECTS INTO THE RECOVER-PENDING<br />
STATE, THE REBUILD-PENDING STATE OR THE LOGICAL PAGE LIST<br />
DURING THE LOG APPLY PHASE.<br />
DSNU1628I DSNUVBRD -RESTORE SYSTEM PHASE LOG APPLY COMPLETED, ELAPSED TIME =<br />
00:01:42.<br />
DSNU010I DSNUGBAC -UTILITY EXECUTION COMPLETE, HIGHEST RETURN CODE=4<br />
© 2007 MConsulting - cristian@molaro.be 44
Good news: sliding secondary allocation quantity<br />
size<br />
<strong>DB2</strong> calculates the secondary extents size by using<br />
a sliding scale algorithm<br />
Applies to <strong>DB2</strong> managed pagesets only<br />
Tries to avoid VSAM maximum extent limit errors<br />
Scenarios:<br />
No need <strong>for</strong> PRIQTY/SECQTY values<br />
Don’t know space requirements or are volatile<br />
Test environment: SET and FORGET<br />
© 2007 MConsulting - cristian@molaro.be 45
Some advantages:<br />
It minimizes the potential <strong>for</strong> wasted space by increasing the<br />
size of secondary extents slowly at first<br />
It prevents very large allocations <strong>for</strong> the remaining extents,<br />
which would likely cause fragmentation<br />
It does not require users to specify SECQTY values when<br />
creating and altering table spaces and index spaces<br />
It is theoretically possible to always reach maximum data set<br />
size without running out of secondary extents<br />
WARNING: <strong>DB2</strong> uses the value of the SECQTY option<br />
to allocate a secondary extent only if the value of the<br />
option is larger than the value that is derived from the<br />
sliding scale algorithm<br />
© 2007 MConsulting - cristian@molaro.be 46
Default PRIQTY<br />
1 cylinder <strong>for</strong> non-LOB tablespaces and indexes<br />
10 cylinders <strong>for</strong> LOB tablespaces<br />
First 127 extents are allocated in increasing size,<br />
and the remaining extents are allocated based on<br />
the initial size of the data set:<br />
For 32 GB and 64 GB data sets, each extent is allocated<br />
with a size of 559 cylinders<br />
For data sets that range in size from less than 1 GB to<br />
16 GB, each extent is allocated with a size of 127<br />
cylinders<br />
© 2007 MConsulting - cristian@molaro.be 47
16GB: 127 CYLs<br />
< 64GB: 559 CYLs<br />
© 2007 MConsulting - cristian@molaro.be 48
INSTALL <strong>DB2</strong> - SIZES PANEL 2<br />
===><br />
Check numbers and reenter to change:<br />
1 USER LOB VALUE STORAGE ===> 10240 Max storage per user <strong>for</strong> LOB<br />
values in kilobytes<br />
2 SYSTEM LOB VALUE STORAGE ===> 2048 Max storage per system <strong>for</strong> LOB<br />
values in megabytes<br />
3 MAXIMUM LE TOKENS ===> 20 Maximum tokens at any time. 0-50<br />
4 TABLE SPACE ALLOCATION ===> 0 Default space allocation in KB <strong>for</strong><br />
table spaces<br />
(0 <strong>for</strong> <strong>DB2</strong> default or 1-4194304)<br />
5 INDEX SPACE ALLOCATION ===> 0 Default space allocation in KB <strong>for</strong><br />
index spaces<br />
(0 <strong>for</strong> <strong>DB2</strong> default or 1-4194304)<br />
6 VARY DS CONTROL INTERVAL ===> YES Optimize VSAM CONTROL INTERVAL to<br />
page size <strong>for</strong> data set allocation<br />
7 OPTIMIZE EXTENT SIZING ===> YES Use sliding secondary quantity<br />
<strong>for</strong> <strong>DB2</strong>-managed data sets<br />
<br />
<br />
<br />
Can be activated online<br />
Zparm MGEXTSZ=YES (default = NO)<br />
Existing pagesets: ALTER PRIQTY/SECQTY to -1 + REORG<br />
© 2007 MConsulting - cristian@molaro.be 49
Is it working?<br />
-------------------------------------------------------------------------<br />
DPA1CAT.DSNDBC.DSN8D81A.DSN8SBIN.I0001.A001<br />
listcat ent(/) all NDBD.DSN8D81A.DSN8SBIN.I0001.A001 540 ? 8 33<br />
VOLUME<br />
***************************** End of Data Set list **********************<br />
VOLSER------------PR23A3 PHYREC-SIZE---------8192 HI-A-RBA--------26542080<br />
EXTENT-NUMBER----------8<br />
DEVTYPE------X'3010200F' PHYRECS/TRK------------6 HI-U-RBA--------25804800<br />
EXTENT-TYPE--------X'40'<br />
VOLFLAG------------PRIME TRACKS/CA-------------15<br />
EXTENTS:<br />
LOW-CCHH-----X'03C80000' LOW-RBA----------------0 TRACKS----------------15<br />
HIGH-CCHH----X'03C8000E' HIGH-RBA----------737279<br />
LOW-CCHH-----X'04680000' LOW-RBA-----------737280 TRACKS----------------30<br />
HIGH-CCHH----X'0469000E' HIGH-RBA---------2211839<br />
LOW-CCHH-----X'046A0000' LOW-RBA----------2211840 TRACKS----------------45<br />
HIGH-CCHH----X'046C000E' HIGH-RBA---------4423679<br />
LOW-CCHH-----X'046D0000' LOW-RBA----------4423680 TRACKS----------------60<br />
HIGH-CCHH----X'0470000E' HIGH-RBA---------7372799<br />
LOW-CCHH-----X'04740000' LOW-RBA----------7372800 TRACKS----------------75<br />
HIGH-CCHH----X'0478000E' HIGH-RBA--------11059199<br />
LOW-CCHH-----X'04790000' LOW-RBA---------11059200 TRACKS----------------90<br />
HIGH-CCHH----X'047E000E' HIGH-RBA--------15482879<br />
LOW-CCHH-----X'0A280000' LOW-RBA---------15482880 TRACKS---------------105<br />
HIGH-CCHH----X'0A2E000E' HIGH-RBA--------20643839<br />
LOW-CCHH-----X'0A3F0000' LOW-RBA---------20643840 TRACKS---------------120<br />
© 2007 MConsulting - cristian@molaro.be 50<br />
HIGH-CCHH----X'0A46000E' HIGH-RBA--------26542079
Materialized Query Tables = MQTs<br />
Table containing materialized data derived from one<br />
or more source tables specified by a fullselect<br />
Similar to automatic summary tables<br />
Query rewrite <strong>for</strong> dynamic SQL<br />
Can be accessed directly by static and dynamic SQL<br />
System-maintained MQTs (default) are populated with<br />
REFRESH TABLE<br />
User-maintained MQTs can be populated by REFRESH<br />
TABLE, load, insert, update and delete<br />
© 2007 MConsulting - cristian@molaro.be 51
Datawarehouse<br />
Need to improve per<strong>for</strong>mance of critical query<br />
Query:<br />
10 tables involved in a multiple join can be<br />
improved by the use of a MQT<br />
Validate the REFRESH needs <strong>for</strong> the MQT and<br />
schedule it<br />
The created MQT needs to be validated need to<br />
determine which part of the query is fix and which<br />
part is variable (local predicates)<br />
© 2007 MConsulting - cristian@molaro.be 52
Original query:<br />
SELECT DISTINCT(REP.REPID) representativeId, REP_LOC.LOCATIONID locationId,<br />
REP_PROD.PRODUCTID productId FROM EIS.REP_REPRESENTATIVE REP join<br />
EIS.REP_LOCATION REP_LOC on REP.REPID=REP_LOC.REPID AND REP_LOC.STATUSID=1 AND<br />
REP_LOC.PRODUCTDIFFERENTIATIONFLAG = 1 left join EIS.GEN_CITY CITY on CITY.cityId<br />
= REP_LOC.cityId join EIS.REPPRODUCTCONFIG REP_PROD on REP.REPID = REP_PROD.REPID<br />
AND REP_PROD.STATUSID=1 join EIS.LOCPRODUCTCONFIG REP_LOC_PROD on<br />
REP_PROD.PRODUCTCONFIGID = REP_LOC_PROD.PRODUCTCONFIGID AND REP_LOC.LOCATIONID =<br />
REP_LOC_PROD.LOCATIONID AND REP_LOC_PROD.STATUSID=1 AND<br />
REP_LOC_PROD.CURRENCYDIFFFLAG=2 join EIS.PRDCURRENCYCONFIG REP_LOC_CURR on<br />
REP_LOC_CURR.STATUSID=1 AND REP_LOC_PROD.PRODUCTCONFIGID =<br />
REP_LOC_CURR.PRODUCTCONFIGID AND REP_LOC_CURR.LOCATIONCONFIGID IS NULL AND<br />
REP_LOC_CURR.OPERATORCONFIGID IS NULL join EIS.MTCURRENCYCONFIG REP_MT_CURR on<br />
REP_LOC_CURR.PRODUCTCURRENCYID=REP_MT_CURR.PRODUCTCURRENCYID join EIS.GEN_PRODUCT<br />
GEN_SERVICE on GEN_SERVICE.PARENTPRODUCTID=REP_PROD.PRODUCTID join<br />
EIS.REPPRODUCTSERVICES REP_SERV on REP_PROD.PRODUCTCONFIGID =<br />
REP_SERV.PRODUCTCONFIGID AND REP_SERV.SERVICEID=GEN_SERVICE.PRODUCTID AND<br />
REP_SERV.STATUSID=1 join EIS.LOCPRODUCTSERVICES REP_LOC_SERV on<br />
REP_SERV.SERVICEID=REP_LOC_SERV.SERVICEID AND<br />
REP_LOC_PROD.LOCATIONCONFIGID=REP_LOC_SERV.LOCATIONCONFIGID AND<br />
REP_LOC_SERV.STATUSID=1 WHERE REP.STATUSID=1 AND REP_MT_CURR.DIRECTION IN (2,3)<br />
AND REP_LOC.COUNTRYID=32 AND REP_PROD.PRODUCTID=2 AND CITY.NAME LIKE 'CONCEI%O DO<br />
ARAGUAIA%' AND GEN_SERVICE.productid IN (102) GROUP BY REP.REPID,<br />
REP_LOC.LOCATIONID, REP_PROD.PRODUCTID HAVING count(*)=1 ORDER BY REP.REPID,<br />
REP_LOC.LOCATIONID, REP_PROD.PRODUCTID<br />
© 2007 MConsulting - cristian@molaro.be 53
Original access path:<br />
© 2007 MConsulting - cristian@molaro.be 54
MQT creation:<br />
CREATE TABLE MQT.TEST3 AS<br />
(SELECT DISTINCT(REP.REPID) REPRESENTATIVEID, REP_LOC.LOCATIONID LOCATIONID,<br />
REP_PROD.PRODUCTID PRODUCTID, CITY.NAME AS CITY, REP.STATUSID AS REP_STATUSID,<br />
REP_MT_CURR.DIRECTION AS REP_MT_CURR_DIRECTION, REP_LOC.COUNTRYID AS<br />
REP_LOC_COUNTRYID, REP_PROD.PRODUCTID AS REP_PROD_PRODUCTID,<br />
GEN_SERVICE.PRODUCTID AS GEN_SERVICE_PRODUCTID FROM EIS.REP_REPRESENTATIVE REP<br />
JOIN EIS.REP_LOCATION REP_LOC ON REP.REPID = REP_LOC.REPID AND REP_LOC.STATUSID =<br />
1 AND REP_LOC.PRODUCTDIFFERENTIATIONFLAG = 1 LEFT JOIN EIS.GEN_CITY CITY ON<br />
CITY.CITYID = REP_LOC.CITYID JOIN EIS.REPPRODUCTCONFIG REP_PROD ON REP.REPID =<br />
REP_PROD.REPID AND REP_PROD.STATUSID = 1 JOIN EIS.LOCPRODUCTCONFIG REP_LOC_PROD<br />
ON REP_PROD.PRODUCTCONFIGID = REP_LOC_PROD.PRODUCTCONFIGID AND REP_LOC.LOCATIONID<br />
= REP_LOC_PROD.LOCATIONID AND REP_LOC_PROD.STATUSID = 1 AND REP_LOC_PROD.<br />
CURRENCYDIFFFLAG = 2 JOIN EIS.PRDCURRENCYCONFIG REP_LOC_CURR ON<br />
REP_LOC_CURR.STATUSID = 1 AND REP_LOC_PROD. PRODUCTCONFIGID =<br />
REP_LOC_CURR.PRODUCTCONFIGID AND REP_LOC_CURR.LOCATIONCONFIGID IS NULL AND<br />
REP_LOC_CURR. OPERATORCONFIGID IS NULL JOIN EIS.MTCURRENCYCONFIG REP_MT_CURR ON<br />
REP_LOC_CURR.PRODUCTCURRENCYID = REP_MT_CURR. PRODUCTCURRENCYID JOIN<br />
EIS.GEN_PRODUCT GEN_SERVICE ON GEN_SERVICE.PARENTPRODUCTID = REP_PROD.PRODUCTID<br />
JOIN EIS.REPPRODUCTSERVICES REP_SERV ON REP_PROD.PRODUCTCONFIGID =<br />
REP_SERV.PRODUCTCONFIGID AND REP_SERV.SERVICEID = GEN_SERVICE.PRODUCTID AND<br />
REP_SERV. STATUSID = 1 JOIN EIS.LOCPRODUCTSERVICES REP_LOC_SERV ON<br />
REP_SERV.SERVICEID = REP_LOC_SERV.SERVICEID AND REP_LOC_PROD.LOCATIONCONFIGID =<br />
REP_LOC_SERV. LOCATIONCONFIGID AND REP_LOC_SERV.STATUSID = 1) ;<br />
© 2007 MConsulting - cristian@molaro.be 55
A daily REFRESH TABLE process was scheduled<br />
Query rewrite:<br />
SELECT representativeId,<br />
locationId,<br />
productId<br />
FROM mqt.test3<br />
WHERE<br />
REP_STATUSID=1 AND<br />
REP_MT_CURR_DIRECTION IN (2,3) AND<br />
REP_LOC_COUNTRYID=32 AND<br />
REP_PROD_PRODUCTID=2 AND<br />
CITY LIKE 'CONCEI%O DO ARAGUAIA%' AND<br />
GEN_SERVICE_productid IN (102)<br />
GROUP BY representativeId,<br />
LOCATIONID,<br />
PRODUCTID<br />
HAVING count(*)=1 ORDER BY 1,2,3<br />
© 2007 MConsulting - cristian@molaro.be 56
New access path:<br />
© 2007 MConsulting - cristian@molaro.be 57
© 2007 MConsulting - cristian@molaro.be 58
New in <strong>V8</strong>:<br />
Statistics Advisor<br />
List cached statements and explain from statement<br />
cache<br />
Detailed explain in<strong>for</strong>mation (incomplete list):<br />
○ Qualified rows estimates<br />
○ Detailed index costing in<strong>for</strong>mation<br />
○ Parallelism details<br />
○ Sort details<br />
© 2007 MConsulting - cristian@molaro.be 59
RedBook SG24-7421<br />
Not fully activated in <strong>V8</strong><br />
<strong>V8</strong> NFM only<br />
Full support in V9<br />
© 2007 MConsulting - cristian@molaro.be 60
© 2007 MConsulting - cristian@molaro.be 61
© 2007 MConsulting - cristian@molaro.be 62
zIIPs<br />
NOT PADDED Indexes<br />
Backwards Index Scanning<br />
Unlike Types are now Indexable<br />
Non-Uni<strong>for</strong>m Distribution Statistics on Non-Indexed Columns<br />
Partitioning and clustering separated<br />
Parallel Sorting<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
64-bit Exploitation<br />
Data Partitioned Secondary Indexes<br />
4096 Partitions<br />
2000 byte Keys<br />
Long Object Names<br />
2 MB SQL Statements<br />
225 Table Joins<br />
Multi-row FETCH and INSERT<br />
More log space<br />
Online schema change…<br />
© 2007 MConsulting - cristian@molaro.be 63
© 2007 MConsulting - cristian@molaro.be 64
Moving to <strong>V8</strong> is good<br />
Take documentation seriously<br />
Planning is key in the migration process<br />
A lot of improvements and new features<br />
Plan to get value of the new <strong>V8</strong> features<br />
Educate yourself and others<br />
© 2007 MConsulting - cristian@molaro.be 65
Questions?<br />
cristian@molaro.be<br />
© 2007 MConsulting - cristian@molaro.be 66