Forum
Hallo Alexander,
REORG mit SYSDISC?  😕  Wird denn tatsächlich mit DISCARD FROM TABLE gearbeitet? Oder steht nur "versehentlich" das SYSDISC DD-Statement im Job?!
Selbst mit Discard-Datasets kommt DB2 primar klar! In nachfolgendem Beispiel werden aus einer Tabelle Sätze entfernt, die mit ihrem Datum vor dem 1.1.2004 liegen. Die Discard-Records landen in TPDISC (i.e. SYSDSIC), dazu passend wird eine RE-LOAD Steuerkarte in SYSPUNCH (hier TPPUN) erzeugt. UND: DB2 hat den notwendigen Speicherplatz selbst ermittelt. Dazu sollten die Statistics aber relativ frisch sein. Noch obendrauf kommt noch ein automatischer Rebalance des Inhalts auf die Partitionen des Tablespaces. Zu beachten: Keinerlei Work-Dataset DD-Statements!!!!
//DSNUTIL Â EXEC PGM=DSNUTILB,PARM=’DB2A‘ Â Â Â Â Â Â
//SYSPRINT DD SYSOUT=* Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//UTPRINT Â DD SYSOUT=* Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//SYSUDUMP DD DUMMY Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
//SYSIN Â Â DD * Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
–OPTIONS PREVIEW Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
TEMPLATE TPCOPY UNIT TAPE Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
    DSN ‚HLVSICH.&SSID..&DB..&TS..P&PART(3,3).(+1)‘  Â
    DATACLAS DB2BKP RETPD(10)           Â
TEMPLATE TPDISC UNIT SYSDA Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
    DSN ‚MYUSER.DB2A.MY.MOVEMENTS.DISC‘       Â
    DISP (NEW,CATLG,DELETE)              Â
    PCTPRIME 100 NBRSECND 10 MAXPRIME 3000      Â
TEMPLATE TPPUN UNIT SYSDA Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
    DSN ‚MYUSER.DB2A.MY.MOVEMENTS.PUN‘        Â
    DISP (NEW,CATLG,DELETE)              Â
    PCTPRIME 100 NBRSECND 10 MAXPRIME 3000      Â
                             Â
REORG TABLESPACE MYDB.TSMVMNTS Â Â Â Â Â Â Â Â Â Â Â Â Â
   REBALANCE                      Â
   LOG NO  SORTDEVT SYSDA SORTNUM 5 NOSYSREC      Â
   SHRLEVEL NONE                    Â
— Â Â OFFPOSLIMIT 5 INDREFLIMIT 5 Â Â Â Â Â Â Â Â Â Â Â Â Â
   COPYDDN(TPCOPY)                   Â
   STATISTICS TABLE(ALL) INDEX(ALL) UPDATE ALL     Â
   PUNCHDDN(TPPUN)                   Â
   DISCARDDN(TPDISC)                  Â
   DISCARD FROM TABLE MY.MOVEMENTS           Â
       WHEN (  BUCHUNGS_DATUM < ‚1.1.2004‘ )    Â
DSNU1038I Â DSNUGDYN – DATASET ALLOCATED. Â TEMPLATE=TPDISC Â Â Â Â Â Â Â Â
           DDNAME=SYS00001                  Â
           DSN=MYUSER.DB2A.MY.MOVEMENTS.DISC        Â
DSNU1038I Â DSNUGDYN – DATASET ALLOCATED. Â TEMPLATE=TPPUN Â Â Â Â Â Â Â Â
           DDNAME=SYS00002                  Â
           DSN=MYUSER.DB2A.MY.MOVEMENTS.PUN         Â
DSNU1038I Â DSNUGDYN – DATASET ALLOCATED. Â TEMPLATE=TPCOPY Â Â Â Â Â Â Â Â
           DDNAME=SYS00004, FILE SEQUENCE=0001        Â
           DSN=HLVSICH.DB2A.MYDB.TSMVMNTS.P000.G0001V00   [tt]
DSLIST – Data Sets Matching MYUSER.DB2A.MY.MOVEMENTS Â Â Â Â Â Â Â Row 1 of 2
Command ===> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Scroll ===> PAGE
                                       Â
Command – Enter "/" to select action          Tracks %Used XT  Device Â
——————————————————————————-
    MYUSER.DB2A.MY.MOVEMENTS.DISC          15  13  1  3390  Â
    MYUSER.DB2A.MY.MOVEMENTS.PUN           15   6  1  3390  Â
***************************** End of Data Set list **************************** [/tt]
Die ist übrigens auch ein prima Beispiel, wie man obsolete Records aus einer Tabelle löscht, ohne ein UNLOAD+LOAD+COPY+RUNSTATS ausführen zu müssen.  😎
Ist doch echt ’ne feine Sache! Wollen wir IBM auch mal loben!!! Â 😀
Nun noch die Frage an Alex: Wie sieht das SYSDISC-Statement in Deinem Job aus?
Gruß
Gernot