例えば、列を追加して DB2 表を変更する必要がある場合には、DB2 アンロード・ユーティリティーを使用して既存データを保管することができます。表に変更を行った後で、ロード・ユーティリティーを使用して表を再ロードします。変更しないでアンロードとロードを使用すると、データが再編成されます。
また、データ・セットのデータの読み書きを直接にテープ上に行えば、リカバリーとバックアップが必要になったときにその操作が改善されます。
ロード・ユーティリティーは、データを表スペースの表にロードするために使用されます。このユーティリティーによって、レコードを表にロードし、それらに ついて定義される索引を構築したりまたは拡張したりできます。 表スペースにすでにデータが入っている場合は、新規のデータを追加することも、あるいは、新規データで既存のデータを置換することもできます。ロード・ユーティリティーは表スペース・レベルで働くため、これを実行するには、表スペースのすべての表に対する必要な権限を持っていなければなりません。ロード・ユーティリティーに使用されるデータ・セットは、ディスクからもテープ からも読むことができます。 アンロード・ユーティリティーは、表から順次データ・セットにデータを アンロードするために使用されます。 アンロード・ユーティリティーを使用するには、表スペースと表の定義がシステムで使用可能になっている必要があります。アンロード操作に使用するデータ・セットは、 ディスクにもテープにも保管できます。
表の内容をアンロードするには、以下のようにします。
データを再ロードするジョブを生成するには、「表 (Tables)」ウィンドウからオプション 11 「ロード (Load)」を選択します。 次に、上記に説明した、必要なデータを入力します。
次に示すのは、アンロード・ユーティリティーのための制御ステートメントの例です。 データは AVAILABILITY_D 表からテープにアンロードされます。 SYSPUNCH データ・セットのための DDNAME は、使用される磁気テープ装置についての UNIT と VOLSER 情報で完全になります。 ここでは、パネルから入力されたデータ・セットは SYSREC00 です。
//UNLOAD JOB (ACCOUNT),'NAME'
//*
//* THIS JCL HAS BEEN REWRITTEN IN ORDER
//* TO PROPERLY UNLOAD THE DATA FROM DB2 TABLES.
//* DSNTIAUL IS USED FOR UNLOAD INSTEAD OF DSNUPROC
//* UTILITY.
//* THEREFORE, PLEASE, NOTE THAT THIS IS ONLY
//* A SAMPLE THAT NEEDS TO BE PROPERLY CUSTOMIZED.
//* WARNINGS :
//* PLEASE CHECK PLAN NAME (NORMALLY DSNTIBVR),
//* V=DB2 VERSION, AND R=DB2 RELEASE;
//* TWO NEW DATASETS ARE DEFINED (SYSREC00 AND SYSPUNCH).
//* SYSPUNCH DATASET, IS CREATED AT UNLOAD STEP,
//* as USERID.SYSPUNCH (USERID.SYSPUNCH).
//* SYSREC00 DATASET IS SELECTED FROM the PREVIOUS PANEL.
//*
//* I M P O R T A N T :
//* CHECK THE DATA SET PARAMETER IF YOU HAVE CHOSEN
//* THE UNLOAD ON TAPE.
//*
//UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DSN6)
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIB71) -
PARMS('SQL') LIB('DSN710.RUNLIB.LOAD')
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSREC00 DD DSN=USERID.DAT.UNLOAD,
// UNIT=TAPE_UNIT,
// SPACE=(4096,(5040,504)),
// DISP=(,PASS),
// LABEL=(1,SL),
// DCB=(RECFM=FB,LRECL=410,BLKSIZE=27880),
// VOL=SER=TAPE_LABEL
//SYSPUNCH DD DSN=USERID.SYSPUNCH,
// UNIT=xxxx,
// VOL=SER=xxxxxx,
// SPACE=(4096,(5040,504)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920),
// DISP=(NEW,CATLG,CATLG)
//SYSIN DD *
SELECT * FROM USERDB.AVAILABILITY_D;
//LOAD JOB (ACCOUNT),'NAME'
//*
//* THIS JCL HAS BEEN REWRITTEN IN ORDER
//* TO PROPERLY LOAD THE DATA FROM DB2 TABLES.
//* DSNTIAUL IS PREVIOUSLY USED FOR UNLOAD
//* INSTEAD OF DSNUPROC UTILITY.
//* THEREFORE, PLEASE, NOTE THAT THIS IS ONLY
//* A SAMPLE THAT NEEDS TO BE PROPERLY CUSTOMIZED.
//* WARNINGS :
//* PLEASE CHECK PLAN NAME (NORMALLY DSNTIBVR),
//* V=DB2 VERSION, AND R=DB2 RELEASE;
//* TWO NEW DATASETS ARE DEFINED (SYSREC00 AND SYSPUNCH).
//* as USERID.SYSPUNCH (USERID.SYSPUNCH).
//* SYSREC00 DATASET IS SELECTED FROM the PREVIOUS PANEL
//*
//*
//* I M P O R T A N T :
//* SYSPUNCH DATASET NEEDS TO BE EDITED FROM USER
//* BEFORE EXECUTING LOAD,
//* INSERTING "RESUME YES LOG YES" OPTIONS,
//* IN ORDER TO CONTAIN COMMAND :
//* "LOAD DATA RESUME YES LOG YES INDDN
//* SYSREC00 INTO TABLE tablename"
//* CHECK THE DATA SET PARAMETER IF YOU HAVE CHOSEN
//* THE LOAD FROM TAPE.
//*
//LOAD EXEC DSNUPROC,PARM='DSN6,MYUID'
//DSNTRACE DD SYSOUT=*
//SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR
//SORTWK01 DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SORTWK02 DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SORTWK03 DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SORTWK04 DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SORTOUT DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSREC00 DD DSN=USERID.DAT.UNLOAD,
// UNIT=TAPE_UNIT,VOL=SER=TAPE_LABEL,
// LABEL=(1,SL),
// DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSIN DD DSN=USERID.SYSPUNCH,DISP=SHR