OpenFrame HiDBマイグレーション・ツール
本章では、OpenFrame HiDBシステムが提供するマイグレーション・ツールの使用方法について説明します。
1. 概要
以下は、メインフレームで使用されていた階層型データベースのデータを移行するためのツールです。
ツール | 説明 |
---|---|
メインフレームのIMS/DBの特定のDBDからSEGMENTとFIELD情報を抽出してレイアウト(COBOLコピーブック)を作成します。 |
|
アプリケーションのEXEC DLIインターフェースをプリコンパイルし、HiDBの内部インターフェースに変換します。 |
|
データ・マイグレーションのためのスキーマ・ファイルを作成します。 |
|
HiDB標準形式のデータの入力を受けて、HiDBデータベースにロードします。 |
|
メインフレームのアンロード・ユーティリティで作成したデータをHiDBの標準形式に変換します。 |
|
HiDBの二次索引表と論理子表のIDマッピング情報を管理します。 |
|
HiDBでアンロードしdsmigoutツールで処理したデータを、メインフレームのロード・ユーティリティの入力形式に変換します。 |
2. dbdcpybkgen
dbdcpybkgenは、メインフレームIMS/DBの特定のDBDからセグメントとフィールド情報を抽出して、レイアウト(COBOLコピーブック)を作成するツールです。
索引DBDまたはDBD内に可変長セグメントが存在する場合は、既存のレイアウトではなく、dbdcpybkgenを使用して作成したレイアウトを使用する必要があります。
使用方法
以下は、dbdcpybkgenツールの実行方法です。
Usage: dbdcpybkgen [options] <file> ...
-
[options]
オプション 説明 [-D]
dbdcpybkgenをデバッグ・モードで実行します。
[-h]
ツールのヘルプを表示します。
-
入力項目
項目 説明 file
レイアウトを作成するDBDスクリプトを指定します。
使用例
以下は、dbdcpybkgenを実行して一般的なDBDセグメントのレイアウトを作成する例です。
$ dbdcpybkgen EXHIDAM
上記のコマンドが正常に実行されると、以下のようなメッセージが表示されます。
dbdcpybkgen version 7.2.0(10) jjeong@:ofsrc/ims(#1) 2018-02-05 11:32:29 Database Description Block Copybook Generation Program DBDCPYBKGEN FCOUNT=1 --HiDB runs on debug mode --HiDB connection name is HIDB_NX_CONN --HiDB DLI functions show data buffer --HiDB resets application buffer if GET request fails --HiDB alters key sequences -HiDB use CONVERT('WE8EBCDIC1047', 'MSWIN949') key sequence --HiDB requests SELECT query with LEAD for GET NEXT without SSA --HiDB requests SELECT query with LEAD for GET NEXT IN PARENT without SSA --HiDB uses RDB indicator to check column status --HiDB use 0x20 to default value of fetched columns ------------------------------------------------------------ *** Processing DBD script "EXHIDAM" ------------------------------------------------------------ >>>>> Processing DBD "EXHIDAM" *** DBD information DBD NAME=EXHIDAM,ACCESS=(8,2),RMNAME=(,1,16,0) DATASET LABEL=,DD1=HIDAMD,DD2=,CISZ1=0,CISZ2=0 BLOCK=(0,0),DEVICE=3380,SCAN=0,FRSPC(0,0) SEGM NAME=SEG1,PARENT=(,(,)),SOURCE=((,),(,)) LCHILD NAME=(POINTER,EXHIIND),PAIR=,INDEX= LCHILD NAME=(POINTE1,EXHIIX1),PAIR=,INDEX= LCHILD NAME=(POINTE2,EXHIIX2),PAIR=,INDEX= LCHILD NAME=(POINTE3,EXHIIX3),PAIR=,INDEX= FIELD NAME=SEG1KEY,BYTES=6,START=1,ATTR=(SEQ,U) FIELD NAME=KOSI,BYTES=4,START=7,ATTR= XDFLD NAME=SEG1KE1,SEGMENT=SEG1 XDFLD NAME=SEG2KE2,SEGMENT=SEG2 XDFLD NAME=SEG3KE3,SEGMENT=SEG3 SEGM NAME=SEG2,PARENT=(SEG1,(,)),SOURCE=((,),(,)) LCHILD NAME=(POINTE4,EXHIIX4),PAIR=,INDEX= FIELD NAME=SEG2KEY,BYTES=6,START=1,ATTR=(SEQ,U) FIELD NAME=HAHA,BYTES=4,START=7,ATTR= FIELD NAME=/SX2,BYTES=4,START=0,ATTR= XDFLD NAME=SEG4KE4,SEGMENT=SEG4 SEGM NAME=SEG3,PARENT=(SEG2,(,)),SOURCE=((,),(,)) FIELD NAME=SEG3KEY,BYTES=6,START=1,ATTR=(SEQ,U) FIELD NAME=KAKA,BYTES=4,START=7,ATTR= FIELD NAME=CACA,BYTES=4,START=11,ATTR= SEGM NAME=SEG4,PARENT=(SEG2,(,)),SOURCE=((,),(,)) FIELD NAME=SEG4KEY,BYTES=6,START=1,ATTR=(SEQ,U) FIELD NAME=BABA,BYTES=4,START=7,ATTR= FIELD NAME=/CKXX,BYTES=18,START=1,ATTR= FIELD NAME=/SX1,BYTES=4,START=0,ATTR= SEGM NAME=SEG5,PARENT=(SEG1,(,)),SOURCE=((,),(,)) LCHILD NAME=(POINTE5,EXHIIX5),PAIR=,INDEX= FIELD NAME=SEG5KEY,BYTES=6,START=1,ATTR=(SEQ,U) FIELD NAME=DADA,BYTES=4,START=7,ATTR= XDFLD NAME=SEG5KE5,SEGMENT=SEG5 *** Generating copybooks for the physical DBD segment SEG1 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG1.cpy *** Generating copybooks for the physical DBD segment SEG2 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG2.cpy *** Generating copybooks for the physical DBD segment SEG3 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG3.cpy *** Generating copybooks for the physical DBD segment SEG4 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG4.cpy *** Generating copybooks for the physical DBD segment SEG5 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM/SEG5.cpy >>>>> Successfully generated copybooks for DBD "EXHIDAM" PROGRAM COMPLETED SUCCESSFULLY. Total : [1]
デフォルトのコピーブック・ディレクトリを確認すると、以下のようなレイアウト・ファイルが作成されていることが確認できます。
$ ls -al
-rw-rw-r-- 1 jjeong jjeong 136 9월 10 09:46 SEG1.cpy
-rw-rw-r-- 1 jjeong jjeong 109 9월 10 09:46 SEG2.cpy
-rw-rw-r-- 1 jjeong jjeong 162 9월 10 09:46 SEG3.cpy
-rw-rw-r-- 1 jjeong jjeong 109 9월 10 09:46 SEG4.cpy
-rw-rw-r-- 1 jjeong jjeong 136 9월 10 09:46 SEG5.cpy
レイアウト・ファイルの内容は以下のとおりです。
$ vim SEG1.cpy
*generated by DBDCPYBKGEN
01 SEG1.
03 SEG1KEY PIC X(6).
03 KOSI PIC X(4).
03 FILLER PIC X(38).
以下は、dbdcpybkgenを実行してDBD内部に可変長セグメントのレイアウトを作成する例です。
$ dbdcpybkgen EXHIDAM
上記のコマンドが正常に実行されると、以下のメッセージが表示されます。
dbdcpybkgen version 7.2.0(0) oframe@:ofsrc/ims(#1) 2018-02-05 11:32:29 Database Description Block Copybook Generation Program DBDCPYBKGEN FCOUNT=1 --HiDB runs on debug mode --HiDB connection name is HIDB_NX_CONN --HiDB DLI functions show data buffer --HiDB resets application buffer if GET request fails --HiDB alters key sequences -HiDB use CONVERT('WE8EBCDIC1047', 'MSWIN949') key sequence --HiDB requests SELECT query with LEAD for GET NEXT without SSA --HiDB requests SELECT query with LEAD for GET NEXT IN PARENT without SSA --HiDB uses RDB indicator to check column status --HiDB use 0x20 to default value of fetched columns ------------------------------------------------------------ *** Processing DBD script "EXHIDAM4" ------------------------------------------------------------ >>>>> Processing DBD "EXHIDAM4" *** DBD information DBD NAME=EXHIDAM4,ACCESS=(8,2),RMNAME=(,1,16,0) DATASET LABEL=,DD1=HIDAMD,DD2=,CISZ1=0,CISZ2=0 BLOCK=(0,0),DEVICE=3380,SCAN=0,FRSPC(0,0) SEGM NAME=SEG1,PARENT=(,(,)),SOURCE=((,),(,)) LCHILD NAME=(POINTER,EXHIIN4),PAIR=,INDEX= FIELD NAME=SEG1KEY,BYTES=4,START=3,ATTR=(SEQ,U) FIELD NAME=KOSI,BYTES=4,START=7,ATTR= *** Generating copybooks for the physical DBD segment SEG1 to /home/jjeong/prog_test/hidb_project/sears_20180423/copybook/EXHIDAM4/SEG1.cpy >>>>> Successfully generated copybooks for DBD "EXHIDAM4" PROGRAM COMPLETED SUCCESSFULLY. Total : [1]
レイアウト・ファイルの内容は以下のとおりです。
$ vim SEG1.cpy
*generated by DBDCPYBKGEN
01 SEG1.
03 DATALEN PIC 9(4) COMP.
03 SEG1KEY PIC X(4).
03 VARDATA2 PIC X(42).
環境設定
OpenFrame環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのCOPYBOOK_DIRキーのVALUE項目に作成されたレイアウトを保存するディレクトリ・パスを設定します。
$ ofconfig list -s hidb -sec HIDB_DEFAULT -k COPYBOOK_DIR
===================================================================================
SUBJECT | SECTION | KEY | VALUE
===================================================================================
hidb | HIDB_DEFAULT | COPYBOOK_DIR | /home/openframe/copybook
===================================================================================
OpenFrame環境設定の詳細については、OpenFrame HiDB『環境設定ガイド』を参照してください。 |
3. dliprep
dliprepは、アプリケーションのEXEC DLIインターフェースをプリコンパイルし、HiDBの内部インターフェースに変換するツールです。
使用方法
以下は、dliprepツールの実行方法です。
Usage: dliprep [options] <file>
-
[options]
オプション 説明 [-v]
dliprepのバージョン情報を表示します。
[-h]
ツールのヘルプを表示します。
-
入力項目
項目 説明 file
プリコンパイルするアプリケーション・ソース・ファイル名を指定します。
使用例
以下は、dliprepを実行して一般的なアプリケーション・ソースをプリコンパイルし、HiDBの内部インターフェースに置換されたアプリケーション・ソースを作成する例です。
$ dliprep EXAM.cob
上記のコマンドが正常に実行されると、以下のメッセージが表示されます。
dliprep: EXAM.cob: preprocessed successfully.
dliprepを実行したディレクトリから、以下の出力ファイルが作成されたことが確認できます。
$ ls -al
-rw-rw-r-- 1 oframe oframe 5568 5월 20 10:32 dliprep_EXAM.cob
以下は、入力ファイルの内容です。
$ vim EXAM.cob
IDENTIFICATION DIVISION.
PROGRAM-ID. EXAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 CONSTANT-AREA.
03 OUTREC-LEN PIC 9(4) COMP VALUE 300.
01 PSBNAME PIC X(8) VALUE 'EXAMPSB '.
01 SEGMENT-NAME PIC X(8).
01 SEGMENT-DATA PIC X(10).
01 WHERE-RHS1 PIC X(5).
01 WHERE-RHS2 PIC X(5).
LINKAGE SECTION.
01 DB-PCB.
03 DBD-NAME PIC X(8).
03 SEG-LEVEL PIC XX.
03 STATUS-CODE PIC XX.
03 PROCOPT PIC X(4).
03 RESERVED PIC X(4).
03 SEG-NAME PIC X(8).
03 KEYLEN PIC 9(8) COMP.
03 NSENSEG PIC 9(8) COMP.
03 CCATKEY PIC X(6).
PROCEDURE DIVISION.
ENTRY 'DLITCBL' USING DB-PCB.
EXEC DLI SCHEDULE PSB((PSBNAME))
END-EXEC.
EXIT.
以下は、出力ファイルの内容です。
$ vim dliprep-EXAM.cob
IDENTIFICATION DIVISION.
PROGRAM-ID. EXAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 CONSTANT-AREA.
03 OUTREC-LEN PIC 9(4) COMP VALUE 300.
01 PSBNAME PIC X(8) VALUE 'EXAMPSB '.
01 SEGMENT-NAME PIC X(8).
01 SEGMENT-DATA PIC X(10).
01 WHERE-RHS1 PIC X(5).
01 WHERE-RHS2 PIC X(5).
01 HIDB-DLI-REQ.
03 HIDB-FUNCTYPE PIC X(8).
03 HIDB-CHKPID PIC X(8).
03 HIDB-PSBNAME PIC X(8).
03 HIDB-CHKPAREA USAGE POINTER OCCURS 3 TIMES.
03 HIDB-CHKPLEN PIC 9(8) COMP-5 OCCURS 3 TIMES.
03 HIDB-PCBNO PIC 9(8) COMP-5.
03 HIDB-MAXLEN PIC 9(8) COMP-5.
03 HIDB-FEEDBACKLEN PIC 9(8) COMP-5.
03 HIDB-SCHDFLAGS PIC 9(8) COMP-5.
03 HIDB-SEGMCOUNT PIC 9(8) COMP-5.
03 HIDB-SEGM OCCURS 16 TIMES.
05 HIDB-SEGMNAME PIC X(8).
05 HIDB-SEGMLEN PIC 9(8) COMP-5.
05 HIDB-OFFSET PIC 9(8) COMP-5.
05 HIDB-SEGDATAAREA USAGE POINTER.
05 HIDB-KEYAREA USAGE POINTER.
05 HIDB-KEYLEN PIC 9(8) COMP-5.
05 HIDB-FIELDLEN PIC 9(8) COMP-5.
05 HIDB-SEGMFLAGS PIC 9(8) COMP-5.
05 HIDB-QUALSCNT PIC 9(8) COMP-5.
05 HIDB-QUALS OCCURS 16 TIMES.
07 HIDB-LOP PIC X(8).
07 HIDB-KEYFLD PIC X(8).
07 HIDB-ROP PIC X(2).
07 FILLER PIC X(6).
07 HIDB-VADDR USAGE POINTER.
07 HIDB-VADDRLEN PIC 9(8) COMP-5.
07 FILLER PIC X(4).
05 HIDB-OCCTYPE PIC X(1).
05 HIDB-SETZERO PIC X(1).
05 HIDB-LOCKCLASS PIC X(1).
05 HIDB-MOVENEXT PIC X(1).
05 HIDB-GETFIRST PIC X(1).
05 HIDB-SEGMSET PIC X(1).
05 HIDB-SETCOND PIC X(1).
05 FILLER PIC X(1).
03 HIDB-KEYFEEDBACK USAGE POINTER.
03 HIDB-DATAAREA USAGE POINTER.
03 DLZDIB.
05 DIBVER PIC X(2).
05 DIBSTAT PIC X(2).
05 DIBSEGM PIC X(8).
05 DIBFIL01 PIC X(1).
05 DIBFIL02 PIC X(1).
05 DIBSEGLV PIC X(2).
05 DIBKFBL PIC S9(4) COMP-5.
05 DIBDBDNM PIC X(8).
05 DIBDBORG PIC X(8).
05 DIBFIL03 PIC X(6).
LINKAGE SECTION.
01 DB-PCB.
03 DBD-NAME PIC X(8).
03 SEG-LEVEL PIC XX.
03 STATUS-CODE PIC XX.
03 PROCOPT PIC X(4).
03 RESERVED PIC X(4).
03 SEG-NAME PIC X(8).
03 KEYLEN PIC 9(8) COMP.
03 NSENSEG PIC 9(8) COMP.
03 CCATKEY PIC X(6).
01 DLIUIB.
02 UIBPCBAL USAGE IS POINTER.
02 UIBRCODE.
03 UIBFCTR PIC X.
88 FCNORESP VALUE X'00'.
88 FCNOTOPEN VALUE X'0C'.
88 FCINVREQ VALUE X'08'.
88 FCINVPCB VALUE X'10'.
03 UIBDLTR PIC X.
88 DLPSBNF VALUE X'01'.
88 DLTASKNA VALUE X'02'.
88 DLPSBSCH VALUE X'03'.
88 DLLANGCON VALUE X'04'.
88 DLPSBFAIL VALUE X'05'.
88 DLPSBNA VALUE X'06'.
88 DLTERMNS VALUE X'07'.
88 DLFUNCNS VALUE X'08'.
88 DLINA VALUE X'FF'.
PROCEDURE DIVISION.
ENTRY 'DLITCBL' USING DB-PCB.
* EXEC DLI SCHEDULE PSB (( PSBNAME )) END-EXEC.
INITIALIZE HIDB-DLI-REQ.
MOVE "SCHD " TO HIDB-FUNCTYPE OF HIDB-DLI-REQ.
MOVE PSBNAME TO HIDB-PSBNAME OF HIDB-DLI-REQ.
CALL 'ims_cdli_execute' USING BY REFERENCE HIDB-DLI-REQ.
EXIT.
4. hdgensch
hdgenschは、メインフレームのIMS/DBデータセットをOpenFrameのHiDBデータセットに移行する際に必要なデータセット・マイグレーション用のスキーマ・ファイルを作成するツールです。
通常スキーマ・ファイルは、cobgenschツールまたはpligenschツールを使用して作成し、データセット・マイグレーション・ツールであるdsmiginの入力として指定されますが、HiDBデータセットのスキーマ・ファイルは、cobgenschツールまたはpligenschツールの代わりにhdgenschツールを使用して作成します。一般的なデータセットは1つのコピーブックがマッピングされますが、HiDBデータセットは、セグメントごとに定義された1つ以上のコピーブックにマッピングされます。hdgenschは、各セグメントのコピーブックごとにcobgenschツールまたはpligenschツールを呼び出して、作成されたスキーマ・ファイルを1つのスキーマ・ファイルとして統合します。
また、各セグメントの表とDMLファイルを作成するためのCOBOLレイアウトをOFM_HIDB_DBD_COLUMNメタ表に保存します。
hdgenschが正常に終了すると、OpenFrame環境設定のdsサブジェクトに設定されたデフォルト・スキーマ・ディレクトリにDBD名と「.conv」拡張子で構成されたファイル名のスキーマが作成され、各セグメントのCOBOLレイアウト情報がメタ表に保存されます。作成されたスキーマは、cobgenschツールまたはpligenschツールで作成したスキーマと同じ文法を使用します。
スキーマの構文およびマルチ・レイアウトの使用については、OpenFrame 『マイグレーションガイド』の「データセット・マイグレーション」を参照してください。 |
使用方法
以下は、hdgenschツールの実行方法です。
Usage: hdgensch <schema|meta|all> dbd-name [copybook-dir-name] [options]
-
入力項目
項目 説明 <schema | meta | all>
-
schema : 指定されたDBDのスキーマ・ファイルを作成します。
-
meta : COBOLコピーブックを参照して、指定されたDBDのセグメント・レイアウト情報をメタ表に保存します。
-
all : 上記の2両方の機能を実行します。
dbd-name
作成するスキーマまたはCOBOLレイアウトのメタデータを保存する対象となるデータベースを定義したDBD名を指定します。
このDBDは、hdgenschを実行する前にデフォルトのDBDLIBに登録されている必要があり、最大8文字以内で指定します。DBDLIBの登録については、dbdgenツールを参照してください。
copybook-dir-name
HiDBデータセットのフィールド情報が含まれているコピーブックが存在するディレクトリ名を指定します。COBOLコピーブックのファイル名は、DBDで定義したセグメント名と「.cpy」拡張子で構成され、PL/Iコピーブックのファイル名は、DBDで定義したセグメント名と「.inc」拡張子で構成されます。
このパスを指定しない場合は、HiDB環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのCOPYBOOK_DIRキーに指定されたパスを参照します。
-
-
[options]
オプション 説明 [-v]
ツールのバージョン情報を表示します。
[-t] <n|b|t>
列情報を保存する際にOCCURS属性の列の処理方法を指定します。
-
n (normal) : OCCURS属性の列に番号を付与してメタデータとして保存します。
-
b (bulk) : OCCURS属性の列を1つにまとめてメタデータとして保存します。長さは、OCCURSの値を乗算したすべての列の長さの合計と同じです。
-
t (table) : OCCURS属性の列を別の表に分離します。現在はサポートしていません。
[-h]
ツールのヘルプを表示します。
[-f]
既存のDBDの列情報を削除して再作成します。
[-u]
列名を作成時に、レイアウト(コピーブック、インクルード・ファイル)に存在するダッシュ(-)文字をアンダースコア(_)文字に変換します。
[-p]
コピーブックがPL/I言語で作成された場合に指定します。指定しない場合のデフォルト値はCOBOLです。
[-he]
変換中にセグメント名をEBCDICタイプとして処理します。
-
使用例
以下は、hdgenschを実行してスキーマ・ファイルを作成する例です。
$ hdgensch all TMAX01PD -f
上記のコマンドが正常に実行されると、以下のメッセージが表示されます。
hdgensch Version 7.2.0(0) oframe@:ofsrc7/ims(#3) 2018-02-10 16:35:34 HiDB Schema File Generation Program. --HiDB runs on debug mode --HiDB connection name is HIDB_NX_CONN --HiDB will automatically fix data errors --HiDB DLI functions show data buffer column information for dbd TMAX01PD removed. column information for segment REAL generated. column information for segment TRFC generated. column information for segment PAYR generated. column information for segment REGS generated. copybook information generated. input filename = /home/arena/oframe_7_fix3/hidb_test/cpybook/TMAX01PD/REAL.cpy scheme filename = /home/arena/oframe_7_fix3/schema/REAL.conv -> Segment('REAL') schema was merged. input filename = /home/arena/oframe_7_fix3/hidb_test/cpybook/TMAX01PD/TRFC.cpy scheme filename = /home/arena/oframe_7_fix3/schema/TRFC.conv -> Segment('TRFC') schema was merged. input filename = /home/arena/oframe_7_fix3/hidb_test/cpybook/TMAX01PD/PAYR.cpy scheme filename = /home/arena/oframe_7_fix3/schema/PAYR.conv -> Segment('PAYR') schema was merged. input filename = /home/arena/oframe_7_fix3/hidb_test/cpybook/TMAX01PD/REGS.cpy scheme filename = /home/arena/oframe_7_fix3/schema/REGS.conv -> Segment('REGS') schema was merged. HiDB schema('TMAX01PD.conv') was generated successfully.
デフォルトのスキーマ・ディレクトリから、以下のスキーマ・ファイルが作成されていることが確認できます。
$ ls -al
-rw-r--r-- 1 adb adb 13862 Oct 6 10:41 TMAX01PD.conv
環境設定
-
OpenFrame環境設定のdsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVALUE項目に作成されたスキーマ・ファイルを保存するディレクトリ・パスを設定します。
$ ofconfig list -s ds -sec DATASET_DIRECTORY -k SCHEMA_DIR =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== ds | DATASET_DIRECTORY | SCHEMA_DIR | /home/openframe/schema ===================================================================================
-
OpenFrame環境設定のimsサブジェクトのIMS_DEFAULTセクションのDBDLIB_NAMEキーのVALUE項目に対象データベースのDBDが登録されているDBDLIBを設定します。
$ ofconfig list -s ims -sec IMS_DEFAULT -k DBDLIB_NAME ================================================================================== SUBJECT | SECTION | KEY | VALUE ================================================================================== ims | IMS_DEFAULT | DBDLIB_NAME | IMS.DBDLIB ===================================================================================
OpenFrame環境設定の詳細については、OpenFrame HiDB『環境設定ガイド』を参照してください。 |
5. hdload
hdloadは、ASCIIコードに変換されたOpenFrame標準形式のデータセットの入力を受けて、HiDBデータベースにロードするツールです。
入力データセットは、以下のようなフォーマットで構成されます。DFSURGU0ユーティリティが作成したアンロード・データセットと同じフォーマットです。

使用方法
以下は、hdloadツールの実行方法です。
Usage: hdload [options] dbd-name load-data-file [log=log-file]
-
[options]
オプション 説明 [-v]
ツールのバージョン情報を表示します。
[-h]
ツールのヘルプを表示します。
[-q]
二次索引表への挿入なしでロードを実行します。
[-rmpk]
hdpcdf01のaddpkで生成したデータを処理する場合にのみ使用します。
[-mk]
データをtbLoaderまたはsqlldrでロードするためのフォーマットのファイルを作成します。
OpenFrame環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのHIDB_IMPORT_DIRキーのVALUE項目にファイルが作成されるパスを指定します。
[-ld]
tbLoader(Oracleのsqlldr)を使用して従来型パス・ロードでロードします。
-mkオプションで作成されたデータをロードします。
[-ld2]
tbLoader(Oracleのsqlldr)を使用してダイレクト・パス・ロード(DPL)でロードします。
-mkオプションで作成されたデータをロードします。
[-p]
tbloader DPLをセグメントごとに並列に実行してロードします。
[-bs] <n>
tbloaderのブロック・サイズを指定します。
[-pc] <n>
tbloaderの並列数を指定します。
[-mg]
tbloaderを使用してマージします。
ロードするデータのキー・フィールドがすでにロードされているキー・フィールドのデータと同じである場合は、REPLACEを実行します。(OCC_IDはアップデートされません)
ロードするデータのキー・フィールドがすでにロードされているキー・フィールドのデータと異なる場合は、INSERTを実行します
-mkオプションで作成されたデータをtbloaderを使用してマージします。
dbd-nameとload-data-fileを指定する必要があります。
[-qimd]
-mkオプションと-im2オプションの両方を同時に実行します。
dbd-nameとload-data-fileを指定する必要があります。
[-qld]
-mkオプションと-ldオプションの両方を同時に実行します。
dbd-nameとload-data-fileを指定する必要があります。
[-qldd]
-mkオプションと-ld2オプションの両方を同時に実行します。
dbd-nameとload-data-fileを指定する必要があります。
[-qmg]
-mkオプションと-mgオプションの両方を同時に実行します。
dbd-nameとload-data-fileを指定する必要があります。
-
入力項目
項目 説明 dbd-name
入力ファイルのデータベースを定義したDBDの名前を指定します。
このDBDは、hdloadを実行する前にデフォルトのDBDLIBに登録されている必要があり、最大8文字以内で指定します。
DBDLIBの登録については、dbdgenツールを参照してください。
load-data-file
hdloadでロードする入力ファイルを指定します。ファイルのサイズが0の場合、HDAM、HIDAMデータベースについてはデータセットの初期化(pre-format)が実行されます。
[log=log-file]
指定したログ・ファイルにセグメントごとにロード処理に関するログを記録します。ロードが失敗した場合、原因となるセグメント・データを見つける際に有用です。
ログ・ファイルには、ロード・セグメントの順序、セグメント名、ステータス・コード、セグメント・キー値が記録されます。
使用例
以下は、hdloadを実行してスキーマ・ファイルを作成する例です。
$ hdload TMAX01PD tmax01pd.hdb
「TMAX01PD」はロード対象のデータベースを定義したDBDの名前であり、「tmax01pd.hdb」はHiDB標準形式に変換された入力ファイルです。「TMAX01PD.dd」はロード対象データベースのデータセットを動的に割り当てるための情報が入っているファイルで、「res_out」はプレフィックス解決のための出力ファイルです。
hdloadが正常に実行されると、以下のメッセージが表示されます。
hdload Version 7.2.0(0) oframe@tplinux32:ofsrc7/ims(#1) 2017-11-09 23:14:22 HiDB Data Load Program (*) HiDB DATA LOAD 100% COMPLETED. *** HIERARCHICAL DIRECT DB REORG RELOAD *** SEGMENT LEVEL STATISTICS TOTAL SEGMENTS BY SEGMENT TYPE =========================================== SEGMENT SEGMENT NAME LEVEL RELOADED DIFFERENCE ------------------------------------------- TMAX1VAA 1 9628 TMAX1VAD 2 9628 TMAX1VAE 2 0 TMAX1VAB 2 28243 TMAX1VAF 3 28243 TMAX1VAC 3 15586 TMAX1VAG 2 0 ------------------------------------------- TOTAL SEGMENTS IN DATABASE UNLOADED RELOADED DIFFERENCE 91328 91328 =========================================== EXECUTION TIME(USER/SYS/REAL): 11.62, 5.34, 148.01
-
SEGMENT LEVEL STATISTICSフィールドの項目
項目 説明 SEGMENT NAME
対象セグメントの名前です。
SEGMENT LEVEL
データベース内セグメントの階層レベル番号です。
RELOADED
データベースにリロードされたセグメント・インスタンスの合計です。
DIFFERENCE
リロード件数とアンロード件数が一致すると、空白で表示されます。
リロード件数が多い場合はプラス記号(+)、アンロード件数が多い場合はマイナス記号(-)と共に差異件数が表示されます。
-
TOTAL SEGMENTS IN DATABASEフィールドの項目
項目 説明 UNLOADED
HD再編成アンロード・ユーティリティであるDFSURGU0でアンロードするときに計数したすべてのセグメント・インスタンスの数です。
RELOADED
HD再編成リロード・ユーティリティであるDFSURGL0でリロードするときに計数したすべてのセグメント・インスタンスの数です。
DIFFERENCE
リロード件数とアンロード件数が一致すると、空白で表示されます。一致しない場合は差異件数が表示されます。
環境設定
OpenFrame環境設定のimsサブジェクトのIMS_DEFAULTセクションのDBDLIB_NAMEキーのVALUE項目にターゲット・データベースのDBDが登録されているDBDLIBを設定します。
$ ofconfig list -s ims -sec IMS_DEFAULT -k DBDLIB_NAME
===================================================================================
SUBJECT | SECTION | KEY | VALUE
===================================================================================
ims | IMS_DEFAULT | DBDLIB_NAME | IMS.DBDLIB
===================================================================================
OpenFrame環境設定の詳細については、OpenFrame HiDB『環境設定ガイド』を参照してください。 |
6. hdpcdf01
hdpcdf01は、メインフレームIMS/DBのアンロード・ユーティリティであるDFSURGU0で作成したデータセットの入力を受けて、HiDBのリロード・ツールであるhdloadで使用可能なHiDB標準形式のデータセットを作成するツールです。
DFSURGU0で作成したアンロード・データセットはHiDBデータベースにリロードが不可能なため、メインフレームで作成したアンロード・データセットの内部フォーマットを分析し、ヘッダーとトレーラーを削除して、OpenFrameでリロード可能な形態のデータセットに再作成します。
出力データセットは以下のフォーマットで構成されます。

使用方法
以下は、hdpcdf01ツールの実行方法です。
Usage: hdpcdf01 [options] [format] if=input-file of=output-file dbd=dbd-name
-
[options]
オプション 説明 [-v]
ツールのバージョン情報を表示します。
[-h]
ツールのヘルプを表示します。
[-d]
hdpcdf01を実行中に入力ファイルの現在の処理段階を表示します。
[-hp number]
入力ファイルの内部フォーマットを分析する際に、ヘッダーの長さを計算する場合にバイト値を追加します。
[-dp number]
入力ファイルの内部フォーマットを分析する際に、セグメント・データの長さを計算する場合にバイト値を追加します。
[-rdw]
入力ファイルがRDW(4バイト)が含まれた可変長のデータセットである場合に指定します。
[-addpk]
データセットのマイグレーション・プロセスで子セグメントを変換する際に親セグメントのキー領域を参照することがあります。このオプションを指定すると、子セグメント・レコードの先頭に親セグメントのキー領域を追加します。
-
[format]
オプション 説明 [-f1]
入力ファイルがSHISAMデータベースをアンロードしたデータセットの場合に指定します。
[-dedb]
入力ファイルがDEDBデータベースをアンロードしたデータセットの場合に指定します。
-
入力項目
項目 説明 if=input-file
hdpcdf01の入力ファイルを指定します。メインフレームIMS/DBのアンロード・ユーティリティであるDFSURGU0により作成されたデータセットのファイル名を指定します。
of=output-file
hdpcdf01の出力ファイルを指定します。出力ファイルはマイグレーション・ツールのdsmiginの入力として使用されます。
dbd=dbd-name
入力ファイルのデータベースを定義したDBDの名前を指定します。
このDBDは、hdpcdf01を実行する前にデフォルトのDBDLIBに登録されている必要があり、最大8文字以内で指定します。DBDLIBの登録については、dbdgenツールを参照してください。
使用例
以下は、hdpcdf01を実行してスキーマ・ファイルを作成する例です。
$ hdpcdf01 if=tmax01uld.dat of=tmax01uld.hdb dbd=TMAX01PD
上記のコマンドが正常に実行されると、以下のようなメッセージが表示されます。
hdpcdf01 version 7.2.0(1) obuild@tplinux32:ofsrc7/ims(#1) 2017-11-09 23:14:22 HiDB Pre-conversion Program * Bytes of Header Part : 243 * Bytes of Trailer Part : 245 * Bytes of Input file : 23147438 * Position of Trailer part: 23147193 * Current Position of Reading:23146727, Segment:TMAX1VAA * MESSAGE: input data reading success. *** HDPCDF01 DATA CONVERSION *** SEGMENT LEVEL STATISTICS TOTAL SEGMENTS BY SEGMENT TYPE =========================================== SEGMENT READ NAME COUNT ------------------------------------------- TMAX1VAA 9629 TMAX1VAD 9628 TMAX1VAE 0 TMAX1VAB 28243 TMAX1VAF 28243 TMAX1VAC 15586 ------------------------------------------- TOTAL SEGMENTS IN DATABASE = 91329 ===========================================
デフォルト・スキーマ・ディレクトリから、以下のスキーマ・ファイルが作成されていることが確認できます。
$ ls -al
-rw-r--r-- 1 adb adb 13862 Oct 6 10:41 TMAX01PD.conv
環境設定
-
OpenFrame環境設定のdsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーのVALUE項目に作成されたスキーマ・ファイルを保存するディレクトリ・パスを指定します。
$ ofconfig list -s ds -sec DATASET_DIRECTORY -k SCHEMA_DIR =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== ds | DATASET_DIRECTORY | SCHEMA_DIR | /home/openframe/schema ===================================================================================
-
OpenFrame環境設定のimsサブジェクトのIMS_DEFAULTセクションのDBDLIB_NAMEキーのVALUE項目にターゲット・データベースのDBDが登録されているDBDLIBを設定します。
$ ofconfig list -s ims -sec IMS_DEFAULT -k DBDLIB_NAME =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== ims | IMS_DEFAULT | DBDLIB_NAME | IMS.ACBLIB ===================================================================================
OpenFrame環境設定の詳細については、OpenFrame HiDB『環境設定ガイド』を参照してください。 |
7. hidbptrmgr
hidbptrmgrは、HiDBの二次索引セグメント表と論理関係で使用されるIDマッピング情報を管理するためのツールです。
二次索引では、ターゲットDBDに存在するセグメント関連の索引セグメント表にデータを挿入し、論理関係では、ターゲットDBDに論理子セグメントが存在する場合は、論理親を見つけてLPARENT_ID列を更新します。
hidbptrmgrは、OpenFrame環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのNO_INDEX_TABLEキーのVALUE項目の設定値がNOに設定されている環境で索引ソース・セグメントを持つDBDをhdload -qオプションで実行した場合や論理関係を使用する環境で論理子セグメントを持つDBDをhdloadコマンドで実行した場合、このツールを使用する必要があります。
OpenFrame環境設定の詳細については、OpenFrame HiDB『環境設定ガイド』を参照してください。 |
使用方法
以下は、hidbptrmgrツールの実行方法です。
Usage: hidbptrmgr <command> dbd-name
-
<command>
コマンド 説明 si
ターゲットDBDに存在する二次索引ソース・セグメントに関連する二次索引表にデータを入力します。
lr
ターゲットDBDに存在する論理子セグメント表のLPARENT_ID列(論理親ID列)を更新します。
all
siコマンドとlrコマンドの両方を処理します。
sil
tbloader(Oracleのsqlldr)を使用して従来の方法でsiオプションをロードします。
sil2
tbloader(Oracleのsqlldr)を使用してDPL方式でsiオプションをロードします。
lr2
lrオプションと同じですが、内部でクエリの発行を減らします。
lr3
lr2オプションと同じですが、merge文を使用します。
lr4
論理子セグメント表のLPARENT_ID列(論理親ID列)を表単位で更新します。
-
入力項目
項目 説明 dbd-name
処理するDBD名を指定します。
使用例
以下は、hidbptrmgrの実行例です。
$ hidbptrmgr si TESTDBD1
$ hidbptrmgr lr TESTDBD2
上記のコマンドが正常に実行されると、以下のメッセージが表示されます。
HIDBPTRMGR version 7.2.0(0) tmaxtp@:oframe/ims(#1) 2017-11-29 09:50:54 HiDB secondary index build tool - insert data to secondary index segment table HIDBPTRMGR: successfully finished the request for the DBD TESTDBD EXECUTION TIME(USER/SYS/REAL): 0.02, 0.00, 0.08
8. hidbreconv
hidbreconvは、HiDBのデータを再びソース・データベースにロードする場合に、OpenFrame/HiDBの出力データ形式をソース・データベースの入力データ形式に変換するツールです。hdpcdf01の操作を反対に行います。
HiDBのデータをDFSURGU0でアンロードしてdsmigoutを実行すると、ソース・データベースと同じ文字セットのデータに変換されます。ソース・データベースのロード・ユーティリティを使用するためには、hdpcdf01で削除したヘッダーを再作成する必要があります。このツールは、dsmigoutの実行で生成されたデータにソース・データベースのヘッダー情報を追加します。
使用方法
以下は、hidbreconvツールの実行方法です。
Usage: hidbreconv <dbd_name> <input_filepath> [output_filepath] [options]
-
入力項目
項目 説明 dbd_name
入力ファイルのデータベースを定義したDBDの名前を指定します。
input_filepath
DFSURGU0でアンロードし、dsmigoutで移行した入力ファイルを指定します。
output_filepath
出力ファイルを指定します。この値を指定しない場合、現在のディレクトリに「入力ファイル名.rfm」という名前で作成されます。
-
[options]
オプション 説明 [-v]
ツールのバージョン情報を表示します。
[-h]
ツールのヘルプを表示します。
[-ftpb]
FTP -B形式で出力ファイルを作成します。
使用例
以下は、hidbreconvを実行してソース・データベースにロードするデータを作成する例です。
$ hidbreconv TSTDBD hidbuld.dat hidbuld.rfm
上記のコマンドが正常に実行されると、以下のメッセージが表示されます。
hidbreconv version 7.2.0(0) oframe@:ofsrc7/ims(#2) 2017-11-29 09:50:54 Convert HiDB segment data hidbreconv: process request --DBD: TSTDBD --Input file: hidbuld.dat --Output file: hidbuld.rfm EXECUTION TIME(USER/SYS/REAL): 0.00, 0.00, 0.00 hidbreconv: request for the DBD TSTDBD is finished successfully --Input file: hidbuld.dat --Output file: hidbuld.rfm