表のアンロードおよびロード

このタスクについて

例えば、列を追加して DB2 表を変更する必要がある場合には、DB2 アンロード・ユーティリティーを使用して既存データを保管することができます。表に変更を行った後で、ロード・ユーティリティーを使用して表を再ロードします。変更しないでアンロードとロードを使用すると、データが再編成されます。

また、データ・セットのデータの読み書きを直接にテープ上に行えば、リカバリーとバックアップが必要になったときにその操作が改善されます。

ロード・ユーティリティーは、データを表スペースの表にロードするために使用されます。このユーティリティーによって、レコードを表にロードし、それらに ついて定義される索引を構築したりまたは拡張したりできます。 表スペースにすでにデータが入っている場合は、新規のデータを追加することも、あるいは、新規データで既存のデータを置換することもできます。ロード・ユーティリティーは表スペース・レベルで働くため、これを実行するには、表スペースのすべての表に対する必要な権限を持っていなければなりません。ロード・ユーティリティーに使用されるデータ・セットは、ディスクからもテープ からも読むことができます。 アンロード・ユーティリティーは、表から順次データ・セットにデータを アンロードするために使用されます。 アンロード・ユーティリティーを使用するには、表スペースと表の定義がシステムで使用可能になっている必要があります。アンロード操作に使用するデータ・セットは、 ディスクにもテープにも保管できます。

注: ロードおよびアンロードの作業は、表に 対してだけ行われます。ビューに対して使用することはできません。

表の内容をアンロードするには、以下のようにします。

手順

  1. 図 1 に示すように、「Tables」ウィンドウ (図 1) で、アンロードする表を選択します。
    図 1. アンロードする表の選択
  2. 「ユーティリティー (Utilities)」プルダウン・メニューからオプション「アンロード (Unload)」を選択します。

    次の図のような「アンロード・ユーティリティー (Unload Utility)」ウィンドウがオープンします。

    図 2. 「アンロード・ユーティリティー (Unload Utility)」ウィンドウ
  3. 「アンロード・ユーティリティー (Unload Utility)」ウィンドウから、ディスク・アンロードには 1、テープ・アンロードには 2 を挿入してアンロード・タイプを指定します。 デフォルトはディスク・アンロードです。
  4. アンロードしたい表とデータ・セットの名前を指定します。
  5. 「Disk Unload」を選択した場合は、以下のようにします。
    オプション 説明
    データ・セットが既に存在する場合 フィールド「UNIT」および「VOLSER」をブランクのままにします。 新規データ・セットを作成する必要がある場合は、必要な情報を両方のフィールドに入力してください。
    「Tape Unload」を選択した場合 磁気テープ装置を UNIT フィールドに指定し、テープ・ラベルを VOLSER フィールドに指定します。
  6. 入力が終わったら、Enter を押します。

    JCL が作成され、後の使用に備えて、使用しているライブラリーに保管されます。 この JCL が起動すると、2 つのデータ・セットが自動的に作成されます。 1 つはデータを再ロードするために使用されるものです (SYSPUNCH)。もう 1 つにはユーティリティーがアンロードしたデータが入ります。

    注: 複数の表スペースで Load を使用する場合は、慎重に行う必要があります。 Load は一度に 1 つの表スペース全体で動作するためです (Load によるデータの置換については、「DB2 for OS/390 V5 ユーティリティー・ガイドおよび解説書」 を参照してください)。 このことは、 表がドロップされ、再作成される場合に特に当てはまります。

    このため、ドロップして再作成する必要がある表に関連する PTF を適用する際には、以下の手順に従う必要があります。

    1. 直前に収集したデータを保持する場合には、表をアンロードします。
    2. SMP/E を使用して PTF を適用します。
    3. 次のいずれかを使用して、上記の表の SQL DROP TABLE ステートメントを実行します。
      • DB2 SPUFI
      • Tivoli Decision Support for OS/390 管理ダイアログの任意の 1 次ウィンドウ上の「Other」プルダウンからオプション 5 (Process Tivoli Decision Support for OS/390 statements)
    4. 次のいずれかの方法で、同じ表の SQL CREATE TABLE ステートメントを実行します。
      • コンポーネントを再インストールする。
      • Tivoli Decision Support for OS/390 管理ダイアログの任意の 1 次ウィンドウ上の「Other」プルダウンからオプション 5 (Process Tivoli Decision Support for OS/390 statements) を選択する。定義がユーザー修正されているかどうかに応じて、ローカル定義ライブラリーまたは標準の定義ライブラリーの定義 メンバーを実行します。既存のオブジェクトに発行されたエラー・メッセージは無視し、変更された表が正常に作成されたことを確認してください。
    5. 直前にアンロードされたデータをロードします。

次のタスク

データを再ロードするジョブを生成するには、「表 (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;
次に示すのは、ロード・ユーティリティーのための制御ステートメントの例です。 データは、テープから AVAILABILITY_D 表にロードされます。 SYSPUNCH データ・セットのための DDNAME は、使用される磁気テープ装置についての UNIT と VOLSER 情報で完全になります。 ここでは、パネルから入力されたデータ・セットは SYSREC00 です。
//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