マイグレーション

本章では、メインフレーム環境で運用していたIMS/DBのデータをOpenFrame環境のOpenFrame/HiDBで運用するためのデータ・マイグレーションの手順と、各手順の実際の作業方法および注意事項について説明します。

1. マイグレーションの手順

以下の図は、OpenFrame環境での一般的なHiDBマイグレーションの手順を示しています。以下では、マイグレーションの手順について、DBD、PSB関連のメタテーブルが事前に作成されていると仮定して説明します。

figure 6 1
OpenFrame/HiDBマイグレーションの手順

マイグレーションの各フェーズで使用されるツールは以下のとおりです。

ツール 説明

1

dbdgen

DBD作成ツール

2

hdgensch

HiDBのスキーマ・ファイル作成ツール

3

hdpcdf01

HiDBの事前変換ツール

4

dsmigin

データセット・インポート移行ツール

5

hdload

HiDBのデータ・ロード・ツール

HiDBマイグレーションの各フェーズの詳細については、各節を参照してください。

2. DBDの作成

HiDBマイグレーションの最初の段階では、マイグレーション対象データベースのDBD(Database Description Block)を作成します。DBDは、UNIXコマンドラインでdbdgenツール・プログラムを使用して作成できます。

この際、メインフレームで使用したDBD作成用のスクリプトまたはJCLが必要です。DBDを作成する前に、OpenFrame環境設定のimsサブジェクトで指定されたデフォルトのDBDLIBまたはユーザー定義のDBDLIBのPDSデータセットが事前に作成されている必要があります。

以下は、UNIXコマンドラインでdbdgenツール・プログラムを使用して実行する例です。

$ dbdgen TMAXDB01

上記のコマンドで「TMAXDB01」は、DBD作成用のスクリプト・ファイル名です。コマンドが正常に終了すると、TMAXDB01 DBDスクリプトで定義したDBD名、デフォルトDBDLIB名またはユーザー定義DBDLIB名を使用してDBD関連のメタテーブルにDBDが保存されます。

  1. dbdgenツール・プログラムの使用方法については、OpenFrame HiDB『ツールリファレンスガイド』を参照してください。

  2. imsとhidbサブジェクトの詳細については、OpenFrame HiDB『環境設定ガイド』を参照してください。

3. スキーマの作成およびコピーブックの処理

メインフレームのEBCDICコードで作成されたデータをOpenFrameのASCIIコード・データに変換する場合、一般的には、OpenFrameが提供するdsmigin ツール・プログラムを使用します。そのとき、データ・レコードの各フィールドの属性を定義したスキーマ・ファイルが必要です。また、各セグメントに対して表を作成するためにユーザーが使用するコピーブックを処理してメタデータを保存する必要があります。ただし、索引セグメントと可変長セグメントの場合は、dbdcpybkgenプログラムによって作成されたコピーブックを使用する必要があります。

HiDBスキーマの作成およびコピーブックの処理時には、コピーブックを分析してdsmiginツール・プログラムで入力として使用するHiDBデータのためのスキーマ・ファイルを作成し、フィールド・メタデータを保存します。そのとき、hdgensch ツール・プログラムを使用する必要があります。

hdgenschツール・プログラムは、schemaコマンドを使用して各セグメントのフィールド構造を定義した1つ以上のコピーブック・ファイルを読み込んで内部的にcobgenschまたはpligenschツール・プログラムを呼び出し、作成された各スキーマ・ファイルにセグメント名ごとの条件文を追加して1つのスキーマ・ファイルとして再構成します。また、metaコマンドを使用して処理したコピーブックのフィールド情報をHiDBのメタデータ表に保存します。そのとき、allコマンドを使用すると、スキーマとメタを同時に処理することができます。

以下は、hdgenschツール・プログラムの実行コマンドの例です。

$ hdgensch all TMAXDB01 ./cpybook

上記のコマンドで「TMAXDB01」はスキーマの対象となるデータベースの登録されたDBD名であり、「./cpybook」はセグメントのフィールド情報が含まれているCOBOLコピーブックが存在するディレクトリ名です。

注意点は、ディレクトリに格納されているCOBOLコピーブックのファイル名がDBDで指定したセグメント名と同じであり、ファイルの拡張子は「.cpy」である必要があります。PL/I Copybookの場合は、hdgenschtuツールの実行時に-pオプションを指定し、ファイルの拡張子は「.inc」である必要があります。

上記のコマンドが正常に終了すると、OpenFrame環境設定のdsサブジェクトのDATASET_DIRECTORYセクションのSCHEMA_DIRキーに指定されたデフォルトのスキーマ・ディレクトリにDBD名と「.conv」拡張子で構成されたスキーマ・ファイルが作成されます。

  1. ツール・プログラムの使用方法については、OpenFrame HiDB『ツールリファレンスガイド』を参照してください。

  2. dsサブジェクトの詳細については、OpenFrame HiDB『環境設定ガイド』を参照してください。

4. セグメント表の作成

次に、DBDで定義されたセグメントに対して実際にデータを保存するためのセグメント表を作成する必要があります。そのとき、hidbmgr ツール・プログラムを使用します。hidbmgrは、HiDBのメタデータおよびユーザー・データを管理するツール・プログラムです。segm createコマンドを使用してdbdgenで処理したDBDに対してhdgenschで処理したコピーブックのフィールド形式でセグメント表を作成します。

以下は、hidbmgrツール・プログラムの実行コマンドの例です。

$ hidbmgr segm create TMAXDB01

上記コマンドの「TMAXDB01」は、dbdgenで処理したDBD名です。

hidbmgrツール・プログラムの使用方法については、OpenFrame HiDB『ツールリファレンスガイド』を参照してください。

5. DLIライブラリの作成

hidbmgr ツール・プログラムのdligenコマンドを使用してデータ・ロードおよびユーザー・プログラムで使用されるDLIライブラリ・ファイルを作成します。データ・ロード時には、DBDに対してのみ必要ですが、ユーザー・プログラムのHiDBコマンドが動作するには、PSBに対しても実行される必要があります。ライブラリ・ファイルは、OpenFrame環境設定のhidbサブジェクトのHIDB_DEFAULTセクションのHIDB_OBJECT_DIRキーに指定されたフォルダーに作成されます。

以下は、hidbmgrツール・プログラムの実行コマンドの例です。

$ hidbmgr dbd dligen TMAXDB01

上記例の「TMAXDB01」は、dbdgenで処理されたDBD名です。

hidbmgrツール・プログラムの使用方法については、OpenFrame HiDB『ツールリファレンスガイド』を参照してください。

6. 標準データ・フォーマットの変換

HiDBデータベースにデータをロードするには、ロード対象ソース・データのフォーマットが事前にHiDBで指定した形式で構成されている必要があります。

HiDBで決めたデータ・フォーマットをHiDB標準データ・フォーマットといい、その形式は以下の図のとおりです。

figure 6 2
OpenFrame/HiDB標準データ・フォーマット

メインフレームのデータベースのデータが上記の形式で構成されていれば、別途の追加作業なしでHiDBのデータベースにロードできます。ただし、上記の形式で構成するためには、メインフレームで追加作業が必要な場合もあります。

IBMメインフレームのIMS/DBでは、データベースのデータをアンロードするとき、一般的にIMS/DBで提供するDFSURGU0ユーティリティを使用します。HiDBでは、DFSURGU0で作成したアンロード・データセットをHiDB標準データ・フォーマットに変換するhdpcdf01ツール・プログラムを提供します。したがって、DFSURGU0ユーティリティを使用してデータをアンロードした場合は、メインフレームでの追加作業は不要であり、OpenFrameでhdpcdf01ツール・プログラムを実行して標準データ・フォーマットに変換します。

以下は、hdpcdf01ツール・プログラムの実行コマンドの例です。

$ hdpcdf01 if=tmaxdb01.dat of=tmax01db.hdb dbd=TMAX01DB

上記のコマンドで「if」は入力ファイルを意味し、IBMメインフレームのIMS/DBでDFSURGU0ユーティリティを使って作成したアンロード・データセットのファイル名を指定します。「of」はHiDB標準フォーマットに変換する出力ファイル名であり、「dbd」はロード対象データベースを定義したDBD名で指定します。

  1. hdpcdf01ツール・プログラムの使用方法については、OpenFrame HiDB『ツールリファレンスガイド』を参照してください。

  2. DFSURGU0ユーティリティについては、OpenFrame HiDB『ユーティリティリファレンスガイド』を参照してください。

7. コード変換

メインフレーム環境でのデータセットはEBCDICコードを使用し、OpenFrame環境ではASCIIコードを使用しています。したがって、メインフレームのデータセットをUNIX環境のOpenFrameデータセットにマイグレーションするときにはコード変換作業が必要です。OpenFrameではコード変換のためのdsmiginツール・プログラムを提供します。

dsmiginを使用するには、マイグレーション対象のソース・ファイルと該当するデータセットのフィールド別の属性情報が含まれているスキーマ・ファイルが必要です。HiDBマイグレーションの際は、HiDB標準フォーマットのソース・ファイルとhdgenschツール・プログラムを使用して作成したスキーマ・ファイルを用意します。

以下は、HiDBマイグレーション作業時のdsmiginツール・プログラムの実行コマンドの例です。

$ dsmigin MYDATA MYHIDBDATA -s MYSCHEMA.conv -C -f V

上記のコマンドにおいて、「MYDATA」はHiDB標準フォーマットで構成されたコード変換前の入力ファイル名であり、「MYHIDBDATA」はコード変換後の出力ファイル名です。「MYSCHEMA.conv」はhdgenschツール・プログラムを使用して作成したHiDBのスキーマ・ファイル名です。「-C」オプションはカタログなどの作業なしでデータコードの変換だけを行うことを意味しており、「-f V」オプションは入力ファイルの形式が可変型であることを意味します。

dsmiginツール・プログラムの使用方法については、OpenFrame Base『ツールリファレンスガイド』を参照してください。

8. データのロード

この段階では、コード変換が完了したHiDB標準フォーマットのデータをHiDBにロードします。この際に使用するツール・プログラムはhdloadです。初めてロード作業を行う場合、該当するセグメント・テーブルが空の状態であるかを確認します。

以下は、hdloadツール・プログラムの実行コマンドの例です。

$ hdload TMAX01DB tmax01db.hdb

上記のコマンドで「TMAX01DB」はロード対象データベースのDBD名です。「tmax01db.hdb」はコード変換が完了したHiDB標準フォーマットのデータ・ファイル名です。

HiDBデータのロード作業中に<Ctrl>+Cキーを押して強制停止した場合、該当するデータセットに対するロックが解除されないことがあります。その状態でロード作業を再実行すると正常に動作しないため、必ず当該データセットに対するロックを解除する必要があります。

hdloadツール・プログラムの使用方法については、OpenFrame HiDB『ツールリファレンスガイド』を参照してください。