18.12.2013 Views

DB2 for z/OS V8 - Guide Share France

DB2 for z/OS V8 - Guide Share France

DB2 for z/OS V8 - Guide Share France

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!