Reorganize 関数は、1 つのデータベースまたは論理的に関連するデータベースのセットを再編成するための簡単なメカニズムを提供します。この関数を使用すると、個別の Unload および Load 関数の作成と実行が自動化されます。PtrUpdate ステップは、論理子が含まれているすべてのデータベースに対して自動的に実行されます。
mfims imsdbu REOR {database-name|filename}
[[NO]CLS]
[ECHO(keyword,msglvl,stoplvl
[[NO]INI(filespec)]
[[NO]LIST(filespec)]
[LISTOPEN(disp)]
[[NO]LOG(filespec)]
[PROGRESS(no-of-segments)]
| 値 | カテゴリ | 原因例 |
|---|---|---|
| 4 | 一般的な警告メッセージ | DBDGEN が仮設を立てて続行することができる DBD ソース内のマイナーなコーディング・エラー |
| 6 | IMS 固有の警告メッセージ | キーワードまたは文がサポート対象外で無視されるという警告 - 処理は続行可能 |
| 8 | 一般的な重大エラー | 補正できない DBD ソース内の不正なコーディング ('no DBD statement' など) |
| 10 | IMS Option 固有の重大エラー | 補正できないサポート対象外の機能が定義されている ('Exceeded some maximum' など) |
| 12 | 重大エラー - 起こりうる一時的なステータス | 一時的な I/O エラー ('file locked' または 'database locked' ステータスなど) |
| 16 | 重大エラー - 永続的 - インストールの問題と考えられる | 永続的な I/O エラー (無効なデータ・セット名やメンバー名がユーティリティに入力された場合や、環境変数が正しく設定されていない場合など) |
| 20 | 重大エラー - 永続的 | 回復不能な I/O エラーまたは他の予期しないエラー |
Reorganize 関数に入力されるデータベース名は、DBDGEN を使用して定義された 1 次物理データベースでなければなりません。この DBD 名は、Load 関数によってサポートされるデータベースのタイプである必要があります。データベースの条件については、 Load Function の入力と出力のトピックを参照してください。
Reorganize は、Unload、Load、および PtrUpdate 関数を使用して、データベース・データ・ファイルの読み取りと更新を行います。
再編成の開始時に 2 次索引データベースが用意されている必要はありません。2 次索引データベースは、Load ステップ中に再作成されます。
Unload 関数は、論理子データベースのアンロード時には論理親データベースを必要としません。ただし、Reorganize は、Makelist を使用して、関連するデータベースごとに Unload ステップを作成します。Reorganize を開始する前に、論理的に関連するすべてのデータベースが使用可能である必要があります。
セグメント・データを含むデータベース・アンロード作業ファイルは、このプロセス中に作成されます。これらのファイルは、DBD 名に .org 拡張子を付けた名前でプロジェクト・リスティング・ディレクトリー内に作成されます。参考までに、これらのファイルは LAYOUT(D) および COMPRESSION(CBLDC001) 指令を使用して作成された Unload ファイルです。Reorganize が正常に完了すると、これらのファイルは削除されます。
Runlist コマンド・ファイルは、 DBUREORG.RUN という名前で作成されます。このファイルには、再編成を実行するためのステップが含まれています。このファイルは常に現在のディレクトリーに配置され、正常な完了時には削除されません。独自の再編成スクリプトを作成する場合は、このファイルをモデルとして使用できます。このファイルは次の Reorganize 関数によって再作成されるため、新しい名前のファイルに必ずコピーしてください。不完全な再編成から回復するには、このファイルが必要になる場合があります。
セグメントを削除すると、そのセグメントが占有していたスペースは、次に挿入された、そのセグメント以下の大きさのセグメントによって再利用されます。ただし、この削除されたスペースに適合する新しいセグメントが挿入されなかった場合、そのスペースはデータベースを再編成するまで再利用されません。また、データベースを更新すると、内部ポインターが断片化し、それによってパフォーマンスが低下する場合があります。再編成を行うと、そのパフォーマンスは新規にロードされたデータベースと同じレベルに回復します。
Reorganize 関数は、Load、Unload、PtrUpdate、および Delete 関数の機能を組み合わせて再編成を実行します。また、Reorganize 関数は、Makelist 関数の高度な機能を使用して、必要なステップを作成します。この Makelist 機能は、IMSDBU への呼び出し可能な API インターフェイスの使用時にのみ利用できます。Makelist のコマンド・ライン・インターフェイスは、データベースをロードするためのステップの作成だけをサポートしています。呼び出し可能なインターフェイスは、データベースを再編成するためのステップを作成する機能を追加します。
論理子がないデータベースの再編成では、単にデータベースが順次ファイルにアンロードされ、その順次ファイルを使用してデータベースがロードされます。
論理子が含まれているデータベースを再編成すると、そのデータベースだけでなく関連するデータベースもすべて再編成されます。これらのデータベースを再編成するためのステップは次のとおりです。
関連するデータベースの特定は、Makelist によって行われます。Reorganize の場合、このリストを作成するために Makelist が使用するプロセスは Load の場合と同じです。
順次アンロード・ファイルは、すべての Load および PtrUpdate 処理が完了するまで削除されません。これにより、Load 後に順次アンロード・ファイルを削除するよりも多くのディスク・スペースが必要になりますが、後続の Load または PtrUpdate ステップが失敗した場合の再スタートが考慮されます。ディスク・スペースを節約する必要がある場合は、Delete コマンドを再順序付けして、Runlist を使用してそのコマンドを実行するように DBUREORG.RUN ファイルを変更することができます。また、独自の Runlist コマンド・ファイルを作成したり、必要な関数をオペレーティング・システムのコマンド・ファイルで実行したりすることもできます。
詳細レポート・ファイル名の *.LST を使用すると、再編成に関係するデータベースごとに個別のリスト・ファイルが作成されます。結合されたリスティングの場合は、 LIST(file-spec) および LISTOPEN(MOD) 指令を指定してください。
失敗した Reorganize 関数から回復する最も簡単な方法は、元のデータベース・データ・ファイルをバックアップ・コピーから復元することです。バックアップ・コピーがない場合は、再編成によって生成されたファイルを使用して回復を実行できます。失敗の発生には、いくつかの理由が考えられます。その一例は、ディスク・スペースの不足です。
失敗が発生した場合は、エラー・メッセージが発行され、プロセスは終了されます。順次ファイルのアンロードは維持されます。これらのファイルは、再編成を完了するために必要になる場合があります。
まず最初に、失敗の原因を特定し、その原因を修正します。再編成から発行されたエラー・メッセージは、詳細レポート・リスティングに書き込まれます。このメッセージでは、失敗の原因を特定できるだけの十分な情報が提供されるはずです。場合によっては、 によって失敗に関する追加情報が提供されます。 IMSMTO.LOG によって失敗に関する追加情報が提供されます。
IMSDBU アクティビティー・ログでは、成功したステップと失敗したステップがすべて示されます。失敗したステップが Unload だった場合は、データベースの回復は必要ありません。失敗の原因を修正してから、単に Reorganize 関数を再起動してください。
ログにリストされている関数を再編成コマンド・ファイル DBUREORG.RUN と比較して、コマンド・ファイル内のどのステップが失敗したかを特定します。テキスト・エディターを使用してコマンド・ファイルを変更し、正常に完了したステップをすべて削除またはコメント・アウトします。ステップをコメント・アウトするには、カラム 1 にアスタリスク (*) を入力します。変更したコマンド・ファイルと共に Runlist を使用して、再編成を完了してください。