IMS データベース・ロッキング

IMS データベースにアクセスするエンタープライズ・サーバ・アプリケーションに使用されるデータベース・ロッキングのタイプは、排他的または共有のいずれかのアクセス・モードに基づきます。

排他的アクセス・モードのロッキング

排他的アクセス・モードは管理ツール、ユーティリティ、バッチ・アプリケーション・プログラムに使用します。排他的アクセスは IMS データベースをデータベース・レベルでロッキングします。データベースは非共有モードにあり、単一のプロセスでのみ利用可能です。このアクセスでは、データベースがエンタープライズ・サーバで停止ステータスにある必要があります。排他的アクセス・プロセスの例を次に示します。
IMS データベース・エディタ・ツール
このツールは Enterprise Developer IDE からのみ利用でき、IDE プロセスが排他的に所有します。
IMS データベース・ユーティリティ (IMSDBU)
JCL、コマンド・ライン、または Enterprise Developer IDE からアクセスできます。IMS データベースのデータは IMSDBU によって排他的に開かれ、IMSDBU が呼び出されたプロセスで所有されます。
バッチ・アプリケーション・プログラム
JES イニシエータで実行する DLI または DBB のバッチ・アプリケーション・プログラムは、IMS データベース制御プロセスを使用して、JCL イニシエータで実行するアプリケーション・プログラムの代わりにデータベースのデータを排他的に開きます。

共有アクセス・モードのロッキング

共有アクセス・モードは、IMS トランザクション、CICS トランザクション、IMS BMP などのオンライン・プログラムに使用されます。

要件

共有アクセスの要件は次のとおりです。

  • IMS データベースにアクセスするアプリケーションは、エンタープライズ・サーバ・インスタンスで実行している
  • データベースは停止ステータスにない
共有アクセスのいくつかの例を次に示します。
  • IMS トランザクション (MPP)
  • バッチ・メッセージ処理プログラム (BMP)
  • CRUN からの CICS トランザクションおよびバッチ・プログラム
  • AERTDLI または DDBA インターフェイスを使用する JES イニシエータからの ODBA アプリケーション

ロッキング

共有アクセス・モードでは、IMS データベース・ロッキングがデータベース・レコード・レベルで発生します。データベース・レコードには、ルート・セグメントとすべての従属セグメントが含まれています。2 次索引データベースは、1 次データベースでターゲット・セグメントのデータベース・レコードをロッキングします。論理関係は、論理子セグメントを定義するデータベース・レコードと、宛先である親セグメントのデータベース・レコードの両方をロッキングします。

DLI 呼び出しの処理中にロッキングされたレコードが検出されると、データベース制御がロッキング再試行のステータスになります。この再試行は、レコードのロッキングが解除されるかまたは待ち時間が経過するまで続きます。待ち時間は、環境変数によって制御します。

 ES_IMS_LOCK_TIMEOUT=n

ここで n は、0 ~ 65535 の範囲の秒数になります。デフォルト値は 30 秒です。値 0 は、無限の待ち時間を示します。

ロッキング再試行アルゴリズムはパフォーマンスの面でも調整できます。この遅延間隔は再試行の頻度を制御し、環境変数によって外部的に制御できます。

 ES_IMS_LOCK_RETRY_DELAY=n

ここで n は、0 ~ 65535 の範囲のミリ秒数になります。デフォルトの再試行遅延は 5 ミリ秒です。

ロッキング待ち時間が経過すると、BD ステータス・コードが DLI 呼び出しに対して返され、エラー・メッセージがサーバ・コンソールに書き込まれます。通常はロッキング待ち時間が経過することはないため、この状況では調査が必要です。待ち時間経過の原因には、ロッキングを保持しているアプリケーションが別のリソース・マネージャによるリソース上で待機しているか、または他の理由で中断している場合が考えられます。これらのステータスは、他のマシンの活動によってシステムが CPU 枯渇ステータスになり結果的にアプリケーションが一時停止するときにも生じる場合があります。これは ロッキング・タイムアウトの値を延長することで修正できます。

ロッキング・タイムアウトの問題を診断できるようにするために、タイムアウトが検出されると次の環境変数がシステム・ダンプをトリガします。

 ES_IMS_DUMP_ON_TIMEOUT=1

共有アクセス・データベースは、従来のロッキング・モードまたは IRLM ロッキング・モードのいずれかを使用できます。ロッキング・モードは、エンタープライズ・サーバ起動時に IMS データベース制御に定義されます。