チュートリアル:DB2 データベースのバッチ移行

このチュートリアルでは、SQL Server 用 HCO バッチ移行ツールを使用して、メインフレーム上にあるメインフレーム・ベースの DB2 テーブルを、ローカルの SQL Server に移行する処理の手順について説明します。この処理は、DB2 データベース内のすべてのテーブルを対象に実行できます。
注意:このトピックは、初期採用者向けリリース・ステータスにある機能に適用されます。最終的に完成した機能は、将来のリリースで提供する予定です。詳細については、Micro Focus SupportLine までお問い合わせください。

要件

Micro FocusRumba 製品をインストールし、メインフレームに接続するように設定しておく必要があります。

このチュートリアルを実施する前に、次のチュートリアルを完了して、HCO_Test という名前の SQL Server データベースを構築し、そのデータベースへの接続を確立しておく必要があります。
  • 『チュートリアル:SQL Server データベースの作成』
  • 『チュートリアル:SQL Server データベース接続の作成』

第 1 段階:SQL Server スキーマの作成

DB2 テーブルの移行先となる SQL Server に、スキーマを作成する必要があります。
  • SQL Server Management Studio を使用して、DSN8910 という名前の SQL Server スキーマを作成します。

第 2 段階:DB2 が稼働するメインフレーム上でのアンロード・データおよび LOAD 制御文の作成

ここでは、Micro Focus Rumba を使用してサンプル・テーブルの DSN8910.EMP をアンロードし、適切な JCL を作成およびサブミットします。
  1. Rumba を起動するには、[Start > All Programs > Micro Focus Rumba > Micro Focus Rumba Desktop] をクリックします。
  2. [Create New Session] グループで、[Mainframe Display] をクリックします。
  3. [Connection > Connect] をクリックして、メインフレーム・セッションを開始します。
  4. [Application] フィールドに TSO と入力して、Return を押します。
  5. メインフレームのユーザ ID を入力して、Return を押します。
  6. [Password] フィールドにメインフレームのパスワードを入力して、Return を押します。
  7. [Option] フィールドに 2 と入力して、Return を押します。
  8. [Edit Entry] パネルの [Member] フィールドに EMPDEMO と入力して JCL を作成し、Return を押します。
  9. DSNUTILB を使用して、DSN8910.EMP テーブルからデータをアンロードするため、および LOAD 制御文をダウンロードするために必要な JCL をコーディングします。例:
    //MFIXCH02 JOB (DB2JOB),'DB2 JOB',REGION=4M,    
    //     CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) 
    //UNLOAD1  EXEC PGM=DSNUTILB,REGION=0M,PARM='DB9R,MFIXCH' 
    //STEPLIB  DD DSN=DSN910.SDSNLOAD,DISP=SHR
    //SYSREC   DD DSN=MFIXCH.UTILBTS.SYSREC1,                           
    //       DISP=(MOD,CATLG),                            
    //       UNIT=SYSDA,SPACE=(CYL,(1,1))     
    //SYSPUNCH DD DSN=MFIXCH.UTILBTS.PUNCH1,    
    //       UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(MOD,CATLG) 
    //SYSPRINT DD SYSOUT=* 
    //UTPRINT  DD  DUMMY 
    //SORTOUT  DD  UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND) 
    //SYSDISC  DD  DUMMY
    //SYSERR   DD  UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)                  
    //SYSMAP   DD  UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)                  
    //SYSUT1   DD  UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)                  
    //SYSIN    DD *                                                         
    NLOAD DATA FROM TABLE DSN8910.EMP                                      
    /*                                                                      
    //
  10. JCL を保存してサブミットするには、[Command] フィールドに SAVE と入力し、その後 [Command] フィールドに SUB と入力します。

第 3 段階:エンタープライズ・サーバ・インスタンスの作成と構成

次に、エンタープライズ・サーバを使用して、Mainframe Subsystem Support (MSS) でエンタープライズ・サーバ・インスタンスを作成します。MSSエンタープライズ・サーバは、Enterprise Developer の JCL アプリケーションをサポートしています。
MSS エンタープライズ・サーバ・インスタンスを作成します。
  • このマニュアルの JCL チュートリアルにあるConfigure an Enterprise Server for JCL Supportの節に記載されている手順をすべて実行します。ただし、JCLDEMO が指定されている箇所はすべて DSNUTILS に読み替えてください。
XA リソースをセットアップします。
エンタープライズ・サーバを作成し起動したら、XA リソースをセットアップする必要があります。
  1. Enterprise Server Administration の [Home] ページに戻っていることを確認します。
  2. 起動している DSNUTILS エンタープライズ・サーバに対応する [Details] ボタンをクリックします。
  3. [Server > Properties > XA Resources] をクリックしてから、[Add] をクリックします。
  4. 次のように、[XA Resources] タブの各フィールドを入力します。
    [ID] HCOD
    [Name] HCODEMO
    [Module] esodbcxa.dll
    [Open string] DSN=HCODEMO
  5. [Add] をクリックして、XA リソースのセットアップを完了します。
HCOSS バッチ・ユーティリティ用のエイリアスを作成します。
  1. [Server > Control] をクリックしてから、[ES Monitor and Control] をクリックします。
  2. 左側のペインの [Resources] メニューで、[JES] をクリックしてから [Alias] をクリックします。
  3. 次のエイリアスを作成します。
    プログラム エイリアス
    HCOTEP2 SQLTEP2
    HCOUTILB SQLUTILB
  4. [Update] をクリックしてエイリアスを保存します。
第 4 段階:LOAD 制御文のコピー
この段階では、Micro Focus Mainframe Access Drag and Drop を使用して、LOAD 制御文をメインフレームから Windows マシンにコピーします。
  1. Windows Explorer を起動して、%ProgramFiles(x86)%\Micro Focus\Enterprise Developer\bin ディレクトリをブラウズします。
  2. mfdasmx.exe をクリックして、Micro Focus Mainframe Access Drag and Drop を起動します。
  3. [User Identification] フィールドに、メインフレームのユーザ ID を入力します。
  4. [Current] フィールドに、メインフレームのパスワードを入力します。
  5. [Catalog search criteria] フィールドに、LOAD 制御文が含まれている PDS の PDS プレフィックスを入力し、[OK] をクリックします。
  6. [Configure > Options] をクリックします。
  7. [EBCDIC/ASCII translation] グループで [Sequential] をオンにしてから、[OK] をクリックします。
  8. 右側のペインから mainframeID.UTILBTS.PUNCH1 ファイルをドラッグし、左側のペインの宛先フォルダにドロップします。
  9. 各ポップアップ通知で [OK] をクリックします。
  10. Mainframe Access Drag and Drop を閉じます。
第 5 段階:アンロードした DB2 データのコピーおよびカタログ化
Micro Focus Mainframe Access コマンド・ライン・ツールを使用して、アンロードした DB2 データを Windows マシンにコピーし、そこでデータをカタログ化します。
  1. [Start > All Programs > Micro Focus Enterprise Developer > Tools] をクリックします。[Enterprise Developer Command Prompt (32 bit)] を右クリックして、[Run as Administrator] を選択します。
  2. コマンド・プロンプトで次のように入力し、mainframeID.UTILBTS.SYSREC1 にあるアンロード・データを DSN8910_EMP.DAT データ・ファイルにコピーして、DSNUTILS エンタープライズ・サーバ・インスタンスmainframeID.UTILBTS.SYSREC1 をカタログ化します。
    MFDAS IMPORT datFilePath\DSN8910_EMP.DAT FROM AUTO 
    mainframeID.UTILBTS.SYSREC1 /CATLOC=ESWorkArea\DSNUTILS\catalog.dat
    詳細は次のとおりです。
    mainframeID データセットの修飾子
    datFilePath 抽出したデータ・ファイルを格納するディレクトリへのローカル・パス
    DSN8910_EMP.DAT 抽出したデータが含まれるデータ・ファイルの名前
    ESWorkArea エンタープライズ・サーバの WORKAREA フォルダ。デフォルトでは、%USERPROFILE%\Documents\Micro Focus\Enterprise Developer\WORKAREA です。
    DSNUTILS エンタープライズ・サーバ・インスタンスの名前
    catalog.dat エンタープライズ・サーバのカタログ・データ・ファイル
    コマンドが実行されると、mainframeIDUTILBTS.SYSREC1 データ・セットはDSN8910_EMP.DAT ファイルにコピーされ、エンタープライズ・サーバで mainframeIDUTILBTS.SYSREC1 としてカタログ化されます。
第 6 段階:SQL Server データベースのロード
SQL Server データベースへのデータのロード (LOAD DATA) のパフォーマンスを向上するため、スキーマ・オブジェクトを 2 つのステップに分けて作成します。1 つのステップでは、テーブルと主キーのみを作成します。これは、主キーを作成する際、SQL Server が自動的に各主キーに対してクラスタ化索引を作成するためです。クラスタ化索引は、LOAD DATA のパフォーマンスを向上し、ディスク領域の使用量を最小限に抑えます。もう 1 つのステップでは、制約と索引を作成します。
Eclipse プロジェクトを作成します。
  1. Enterprise Developer を起動します。
  2. [File > New >Mainframe COBOLProject] をクリックします。
  3. [Project name] フィールドで JCL1 と入力し、[Finish] をクリックして新しい JCL アプリケーション・プロジェクトを作成します。
DSNUTILS エンタープライズ・サーバを JCL1 プロジェクトに関連付けます。
  1. Server Explorer を起動するには、[Window > Show View > Other > Micro Focus COBOL > Server Explorer] をクリックしてから、[OK] をクリックします。
  2. Server Explorer で、[Localhost] を展開して、使用できるエンタープライズ・サーバの一覧を表示します。
  3. [DSNUTILS] エンタープライズ・サーバを右クリックして、[Associate with project > JCL1] をクリックします。
  4. まだ起動していない場合は、[DSNUTILS]エンタープライズ・サーバを右クリックして、[Start] をクリックします。
  5. サインオン・ダイアログ・ボックスで、[OK] をクリックしてから [No] をクリックして、パスワード回復を無効にします。
DSNTEP2 を使用して、SQL Server データベースに DB2 テーブルを作成します。
DSNTEP2 ユーティリティは、新しい SQL Server データベースに適切な DB2 データベースを作成します。ここでは、JCLTEP2 エイリアスを使用して、JCL の DSNTEP2 を実行します。この段階では、JCL1 プロジェクトに JCL を作成して、JCL1 プロジェクトからその JCL を実行します。
  1. [COBOL Explorer] で [JCL1] プロジェクトを右クリックし、[New > JCL File] を選択します。
  2. [New file name] フィールドに JCLTEP2.jcl と入力して、[Finish] をクリックします。
  3. JCLTEP2.jcl ファイルを開き、テーブル DSN8910.EMP を作成するのに必要なジョブの仕様および DDL を追加します。完成した JCL は次のようになります。
    //JCLTEP2  JOB 
    //RESETDB  EXEC PGM=IKJEFT01
    //SYSTSPRT DD  SYSOUT=*
    //SYSPRINT DD  SYSOUT=*
    //SYSPUNCH DD  SYSOUT=*                                
    //SYSREC00 DD  SYSOUT=*
    //SYSUDUMP DD  SYSOUT=*
    //SYSOUT   DD  SYSOUT=*
    //SYSTSIN  DD  *
     DSN SYSTEM(HCOD)
     RUN  PROGRAM(HCOTEP2)
     END
    /*
    //SYSIN DD *
    CREATE TABLE DSN8910.EMP (
        EMPNO       CHAR(6) NOT NULL,
        FIRSTNME    VARCHAR(12) NOT NULL,
        MIDINIT     CHAR(1) NOT NULL,
        LASTNAME    VARCHAR(15) NOT NULL,
        WORKDEPT    CHAR(3),
        PHONENO     CHAR(4),
        HIREDATE    DATE,
        JOB         CHAR(8),
        EDLEVEL     SMALLINT,
        SEX         CHAR(1),
        BIRTHDATE   DATE,
        SALARY      DECIMAL(9,2),
        BONUS       DECIMAL(9,2),
        COMM        DECIMAL(9,2),
        PRIMARY KEY (EMPNO)
    )
    IN DATABASE DBNATS;
    
    /*
    //  
  4. JCL ファイルを保存して閉じます。
  5. [COBOL Explorer] で [JCLTEP2.jcl] を右クリックし、コンテキスト・メニューから [Submit to Enterprise Server] を選択します。
  6. ジョブが完了したら、SQL Server Management Studio を開いて、DSN8910.EMP テーブルとクラスタ化索引の定義が正しいことを確認します。
DB2 データを SQL Server にロードします。
次に、HCOSS DSNUTILB ユーティリティとメインフレーム上に生成された LOAD カードを使用して、新しい SQL Server データベースに DB2 データをロードします。
  1. [COBOL Explorer] で [JCL1] プロジェクトを右クリックし、[New > JCL File] を選択します。
  2. [New file name] フィールドに JCLUTILB.jcl と入力して、[Finish] をクリックします。
  3. mainframeID.UTILBTS.PUNCH1 を DSN8910.EMP テーブルにロードするには、LOAD 制御文を追加し、JCL ファイルのジョブ仕様を次のように変更または追加します。
    • プログラム・エイリアス HCOUTILB と DSN 名 HCOD を指定します。
    • LOAD DATA オプションに REPLACE を追加します。
    • SYSREC をカタログ化されたデータ・セット (mainframeID.UTILBTS.PUNCH1) にマップします。
    完成した JCL は次のようになります。ただし、MFIXCH にはメインフレーム ID を指定します。
    //JCLUTILB JOB 
    //DSNUPROC EXEC PGM=HCOUTILB,PARM='HCOD,SH      '
    //*
    //SYSPRINT DD   SYSOUT=*
    //UTPRINT  DD   SYSOUT=*
    //SYSUDUMP DD   SYSOUT=*
    //STPRIN01 DD   SYSOUT=*
    //IDIOFF   DD   DUMMY
    //*
    //SYSUT1   DD   DISP=MOD,DSN=SH.DSNUTILB.SYSUT1
    //SORTOUT  DD   DISP=MOD,DSN=SH.DSNUTILB.SYSOUT
    //SYSMAP   DD   DISP=MOD,DSN=SH.DSNUTILB.SYSMAP
    //SYSERR   DD   DISP=MOD,DSN=SH.DSNUTILB.SYSERR
    //SYSREC   DD   DISP=SHR,DSN=MFIXCH.UTILBTS.SYSREC1
    //SYSIN    DD   *
    LOAD DATA INDDN SYSREC LOG NO RESUME NO REPLACE 
    EBCDIC  CCSID(00037,00000,00000)
     INTO TABLE
     "DSN8910".
     "EMP"
     WHEN(00001:00002) = X'0012'
     NUMRECS                   42
     ( "EMPNO"
      POSITION(  00003:00008) CHAR(00006)
     , "FIRSTNME"
      POSITION(  00009:00022) VARCHAR
     , "MIDINIT"
      POSITION(  00023:00023) CHAR(00001)
     , "LASTNAME"
      POSITION(  00024:00040) VARCHAR
     , "WORKDEPT"
      POSITION(  00042:00044) CHAR(00003)
                              NULLIF(00041)=X'FF'
     , "PHONENO"
      POSITION(  00046:00049) CHAR(00004)
                              NULLIF(00045)=X'FF'
     , "HIREDATE"
      POSITION(  00051:00060) DATE EXTERNAL
                              NULLIF(00050)=X'FF'
     , "JOB"
      POSITION(  00062:00069) CHAR(00008)
                              NULLIF(00061)=X'FF'
     , "EDLEVEL"
      POSITION(  00071:00072) SMALLINT
                              NULLIF(00070)=X'FF'
     , "SEX"
      POSITION(  00074:00074) CHAR(00001)
                              NULLIF(00073)=X'FF'
     , "BIRTHDATE"
      POSITION(  00076:00085) DATE EXTERNAL
                              NULLIF(00075)=X'FF'
     , "SALARY"
      POSITION(  00087:00091) DECIMAL
                              NULLIF(00086)=X'FF'
     , "BONUS"
      POSITION(  00093:00097) DECIMAL
                              NULLIF(00092)=X'FF'
     , "COMM"
      POSITION(  00099:00103) DECIMAL
                              NULLIF(00098)=X'FF'
     )
     
    /*
    //
  4. JCL ファイルを保存して閉じます。
  5. [COBOL Explorer] で [JCLUTILB.jcl] を右クリックし、コンテキスト・メニューから [Submit to Enterprise Server] を選択します。
  6. ジョブが完了したら、SQL Server Management Studio を開いて、DSN8910.EMP テーブルのデータが正しいことを確認します。
DDL を実行して DB2 の制約と索引を作成します。
再度 HCOSS DSNTEP2 ユーティリティを実行して、SQL Server データベースに DB2 制約と索引を作成します。
  1. [COBOL Explorer] で [JCL1] プロジェクトを右クリックし、[New > JCL File] を選択します。
  2. [New file name] フィールドに JCLINDX.jcl と入力して、[Finish] をクリックします。
  3. JCL ファイルに、CHECK 制約と索引を作成するのに必要なジョブの仕様および DDL を追加します。完成した JCL は次のようになります。
    //JCLINDX JOB 
    //RESETDB  EXEC PGM=IKJEFT01
    //SYSTSPRT DD  SYSOUT=*
    //SYSPRINT DD  SYSOUT=*
    //SYSPUNCH DD  SYSOUT=*                                
    //SYSREC00 DD  SYSOUT=*
    //SYSUDUMP DD  SYSOUT=*
    //SYSOUT   DD  SYSOUT=*
    //SYSTSIN  DD  *
     DSN SYSTEM(HCOD)
     RUN  PROGRAM(HCOTEP2)
     END
    /*
    //SYSIN DD *
    ALTER TABLE DSN8910.EMP
       ADD CONSTRAINT MIN_SALARY CHECK (SALARY > 15000.00);  
    CREATE INDEX DSN8910.XEMP2 ON DSN8910.EMP(WORKDEPT);
    
    /*
    // 
  4. JCL ファイルを保存して閉じます。
  5. [COBOL Explorer] で [JCLINDX.jcl] を右クリックし、コンテキスト・メニューから [Submit to Enterprise Server] を選択します。
  6. ジョブが完了したら、SQL Server Management Studio を開いて、DSN8910.EMP 下の制約と索引を確認します。特に、XEMP2 索引の DSN8910 修飾子が SQL Server から削除されたことを確認してください。