リソース ロック

MFDBFH が導入される前は、クラスターとして構成されたエンタープライズ サーバー リージョンのグループからアクセス可能なリソースのロックおよび解放は、グローバル ロック マネージャー (GLM) が担っていました。GLM は、グローバル ロック要求を処理する役割を持つ専用のエンタープライズ サーバー リージョンです。

このプロセスは、同じ名前のジョブを異なるリージョンで実行できるようにするために、また、サブミットされたジョブ内の JCL で DISP=OLD|NEW|MOD として割り当てられているデータ セットへの同時アクセスを防止するために必要でした。

カタログおよびスプール キューがデータベースに格納されている場合は、リソース ロックの処理に別のプロセスが必要になります。GLM の役割は、リージョン データベースおよびリージョン間データベースの組み合わせに置き換えられます。リージョン データベースはステップ スコープおよびシステム スコープの ENQ を処理し、リージョン間データベースはシステム スコープの ENQ を処理します。

リソース ロックの設定方法は、使用しているエンタープライズ サーバーの構成によって異なります。

一般的なエンタープライズ サーバー クラスター (ES_LOCKDB メソッド)

以前は GLM が使用されていたクラスター内では、エンタープライズ サーバー リージョンによって開始されたステップ スコープおよびシステム スコープの ENQ は、独自の専用リージョン データベース サーバーで処理する必要があります。これは、ES_LOCKDB=<region-db> 環境変数を使用して実現されます。この変数で指定するリージョン データベースは、現在使用しているデータベース構成ファイルの一部として構成する必要があることに注意してください。

次のデータベース構成ファイルの抜粋は、1 つの物理データベースに 1 つのリージョン間データベース、3 つのリージョン データベース、1 つのデータストアが格納されている Db2 構成を示しています。

<?xml version="1.0" encoding="utf-8" ?>
<!-- MFDBFH server and database configuration -->
<datastores usevault="false">
    <server name="MYSERVER" type="db2" access="odbc">
        <dsn name="CrossRegion" type="crossregion.cas" dbname="REGNDEV" connect="db=REGNDEV;uid=myuser;pwd=mypassword" />
        <dsn name="Region1" type="region.cas" region="DEVL1" dbname="REGNDEV" feature="all" connect="db=REGNDEV;uid=myuser;pwd=mypassword" />
        <dsn name="Region2" type="region.cas" region="DEVL2" dbname="REGNDEV" feature="all" connect="db=REGNDEV;uid=myuser;pwd=mypassword" />
        <dsn name="Region3" type="region.cas" region="DEVL3" dbname="REGNDEV" feature="all" connect="db=REGNDEV;uid=myuser;pwd=mypassword" />
        <dsn name="VSAM" type="datastore" dsname="VSAM" connect="db=VSAM;uid=myuser;pwd=mypassword" />
    </server>
</datastores>

3 つのエンタープライズ サーバーのクラスターでこの構成ファイルを使用している場合、ロック リソースを処理するために、サーバーごとに異なるリージョン データベースを指定する必要があります。たとえば、最初のサーバーで ES_LOCKDB=DEVL1 を指定し、2 番目のサーバーで ES_LOCKDB=DEVL2 を指定して、3 番目のサーバーで ES_LOCKDB=DEVL3 を指定します。

重要: 各サーバーで独自のリージョン データベースを使用する必要がある理由は、リージョン データベースは、そのデータベースを指定するサーバーの起動時にコールド スタートされるからです。コールド スタート時、リージョン データベースは、関連するデータベース オブジェクトを破棄してから再インストールします。複数のサーバーで 1 つのリージョン データベースを使用していると、他のサーバーのロックが失われる可能性があります。複数のサーバーに対して同じリージョン データベースが構成されていないことを確認するために、サーバーの起動時にチェックが行われます。固有のリージョン データベースを使用していない場合、起動は失敗し、コンソール ログにエラーが書き込まれます。

各サーバーでリージョン データベースを指定するだけでなく、リージョン データベースが属する MFDBFH サーバー (つまり、構成ファイル内のサーバー名エントリ) も指定する必要があります。上記の例で説明すると、クラスター内のサーバーごとに ES_SERVER=MYSERVER 変数を設定する必要もあります。

パフォーマンス/可用性クラスター (PAC)

PAC を構成している場合、セットアップは一般的なクラスターのセットアップとは少し異なります。同じタイプのサーバーは同じロック プロセスを実行しますが (リージョン データベースはステップ スコープおよびシステム スコープの ENQ を処理し、リージョン間データベースはシステム スコープの ENQ を処理します)、PAC 内のすべてのエンタープライズ サーバー リージョンで、ステップ スコープおよびシステム スコープの ENQ に必要なリージョン データベースは 1 つだけです。