MainframeSupports
tip uge 49/1999:

DB2 version 5 er stille og roligt ved at migrere til DB2 version 6 i form af en række PTF'er. En af dem (vi kender desværre ikke PTF'ens betegnelse) ændrer radikalt ved brugbarheden af REORG-utility'en som unload-funktion. Ud over at angive option UNLOAD ONLY kan man nu også angive UNLOAD EXTERNAL. Følgende eksempel viser hvordan den nye option kan anvendes:

//UNLOAD   EXEC PGM=DSNUTILB,REGION=6M,
//         PARM='DB2,UNLOAD.EXTERNAL'
//SYSIN    DD *
   REORG TABLESPACE MYDBNAME.MYTSNAME LOG NO SORTDATA
   UNLOAD EXTERNAL FROM TABLE MY.TABLE
/*
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD DSN=MY.LOAD.STATEMNT,DISP=SHR
//SYSREC   DD DSN=MY.LOAD.DATA,DISP=SHR
//UTPRINT  DD SYSOUT=*

Eksemplet unloader hele tabellen MY.TABLE, som forventes at befinde sig i tablespace MYDBNAME.MYTSNAME. I datasettet MY.LOAD.STATEMNT dannes et input-statement til LOAD-utility'en, som stort set er magen til det, som DSNTIAUL danner. Datasettet MY.LOAD.DATA indeholder en record pr. række i tabellen. Disse records er i forhold til DSNTIAUL prefixet med 6 bytes, som blandt andet indeholder OBID. I MY.LOAD.STATEMNT tages der selvfølgelig højde for denne forskydning på 6 bytes og samtidig sikres det, at kun data med det korrekte OBID vil blive medtaget under en LOAD.

Vores målinger viser, at i forhold til en DSNTIAUL, så kører REORG UNLOAD EXTERNAL 8-10 gange hurtigere. Til gengæld, så kan alle andre kun læse det tablespace, der unloades fra, mens UNLOAD EXTERNAL kører. Derfor skal man tænke sig godt om inden man konverterer fra DSNTIAUL. Man kan begrænse sin UNLOAD EXTERNAL til en enkelt partition i et partitioneret tablespace. Man kan også begrænse antallet af rækker, der udtrækkes fra den angivne tabel med en WHEN-clause. Vær dog opmærksom på, at UNLOAD EXTERNAL ikke kan begrænse sin søgning til udvalgte partitioner, selvom du benytter en WHEN-clause, der med normalt SQL vil begrænse søgningen til udvalgte partitioner. Dette skyldes, at UNLOAD EXTERNAL går uden om al den logik, som styrer eksekveringen af SQL (RDS) og i stedet går direkte til data. Du kan læse mere om alt dette ved at læse om REORG i den Utility Guide om DB2 V5 som findes på nettet.

Bemærk, at eksemplet ikke nødvendigvis kører på din installation, da du måske skal angive STEPLIB og sandsynligvis også skal angive et andet navn på DB2-systemet. Og helt sikkert skal du erstatte alle MY-navne med dine egne og lave dine egne allokeringer af SYSPUNCH og SYSREC.

Sidste uges tip        Tip oversigten