REORG und DISCARD
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 11 Jahre, 3 Monaten von
Anonym.
-
AuthorPosts
-
8. Juni 2012 um 10:20 Uhr #4157
AnonymGastHallo zusammen
Bei uns wird als ‚massendelete‘ ein REORG mit DISCARD gemacht. Für die Revisionsstelle müssen die glöschten Daten aufbewahrt werden, was ja mal kein Problem ist. Nur ist das File bzw. die Daten darin im DB2 internen Format… Gemäss Utility Guide aber:
UNLOAD CONTINUE
Specifies that, after the data has been unloaded, the utility is to continue processing. An edit routine can be called to decode a previously encoded data row if an index key requires extraction from that row.
If you specify DISCARD, rows are decompressed and edit routines are decoded. If you also specify DISCARD to a file, rows are decoded by field procedure, and the following columns are converted to DB2 external format:
v SMALLINT
v INTEGER
v FLOAT
v DECIMAL
v TIME
v TIMESTAMPOb ich nun den Default DD Namen SYSDISC verwende oder einen expliziten, die Daten bleiben im internen Format auf dem File mit den DISCARDeten rows. Die Formulierung ‚…If you also specify DISCARD to a file…‘ finde ich in dem Zusammenhang allerdings zumindest seltsam, kann aber auch an meinem Englisch liegen…
Ist es definitiv nicht möglich, die Daten im externen Format zu erhalten, welche discarded wurden ? Klar, man kann die Daten in eine temporäre Tabelle laden, und diese mittels UNLOAD …EXTERNAL… ins externe Format entladen, aber wäre optimaler, wenn’s schein beim REORG ginge…
10. Juni 2012 um 14:58 Uhr #4296
AnonymInaktivHallo Guido,
REORG DISCARD ist ’ne feine Sache, nutze es selbst gelegentlich zur Archivierung obsoleter Daten.
Deine Annahme ist nicht ganz richtig: Die Daten wurden "externalisiert", im DB2-internen Format würde ein Date, Time, Timestamp etc. nochmal ganz anders aussehen. Dir geht es vermutlich um die numerischen Datentypen, die Du als NUMBER lesen können willst?!
Dann bleibt nur folgende Alternative:
1) DSNTIAUL oder DSNTEP2, für die Ausgabe der Daten im – wie auch immer – gewünschten Format.
2) LOAD einer NULLFILE (unter SYSREC), um den Tablespace platt zu machen.Viele Grüße
GernotMal ein älteres REORG DISCARD Beispiel zur Archivierung – "alles inklusive":
//*********************************************************************
//* REORG PARTITIONED TABLESPACE MIT DISCARD OPTIONÂ Â Â Â Â Â Â Â Â Â Â Â *
//*********************************************************************
//DSNUTILÂ EXEC PGM=DSNUTILB,PARM='DB2X'
//*YSUT1Â Â DD SPACE=(CYL,(500,150)),UNIT=SYSDA
//*ORTOUTÂ DD SPACE=(CYL,(500,150)),UNIT=SYSDA
//*YSRECÂ Â DD SPACE=(CYL,(750,150)),UNIT=SYSDA
//*YSERRÂ Â DD SPACE=(CYL,(5,5)),UNIT=SYSDA
//SYSPRINT DD SYSOUT=*
//UTPRINTÂ DD SYSOUT=*
//SYSUDUMP DD DUMMY
//SYSINÂ Â DD *
--OPTIONS PREVIEW
TEMPLATE TPCOPY UNIT TAPE
      DSN 'MYUSER.&SSID..&DB..&TS..P&PART(3,3).(+1)'
      DATACLAS YOURCLS RETPD(10)
TEMPLATE TPDISC UNIT SYSDA
      DSN 'MYUSER.DB2X.QUALIF.TABLE.DISC'
      DISP (NEW,CATLG,DELETE)
      PCTPRIME 100 NBRSECND 10 MAXPRIME 3000
TEMPLATE TPPUN UNIT SYSDA
      DSN 'MYUSER.DB2X.QUALIF.TABLE.PUN'
      DISP (NEW,CATLG,DELETE)
      PCTPRIME 100 NBRSECND 10 MAXPRIME 3000
REORG TABLESPACE DBMYUSR.TSMYUSR
    REBALANCE
    LOG NO  SORTDEVT SYSDA NOSYSREC
    SHRLEVEL NONE
--Â Â OFFPOSLIMIT 5 INDREFLIMIT 5
    COPYDDN(TPCOPY)
    STATISTICS TABLE(ALL) INDEX(ALL) UPDATE ALL
    PUNCHDDN(TPPUN)
    DISCARDDN(TPDISC)
    DISCARD FROM TABLE QUALIF.TABLE
          WHEN ( BUCHUNGS_DATUM < '1.1.2004' )
//*
11. Juni 2012 um 11:26 Uhr #4395
AnonymGastHallo Gernot
Tja, das magische Wort ‚external‘ im Utility Guide bezüglich DISCARD war einfach zu verlockend um es so zu verstehen, dass das File gleich aufbereitet wird wie beim UNLOAD mit Option EXTERNAL… :-[
Merci und Gruss
Guido
13. Juni 2012 um 19:30 Uhr #4461
AnonymInaktivHi Guide,
Achtung! Du meinst wahrscheinlich UNLOAD DELIMITED. Oder man muß eben alle Spalten mit EXTERNAL Attribut auflisten.
Gruß
Gernot
-
AuthorPosts
You must be logged in to reply to this topic.