アプリケーションおよびユーティリティーのバインド (Db2 Connect Server)

組み込み SQL を使用して開発されたアプリケーション・プログラムは、 それが作動するときに使用する各データベースとバインドされていなければなりません。 IBM® データ・サーバー・パッケージのバインディング要件については、 Db2® CLI バインド・ファイルおよびパッケージ名に関するトピックを参照してください。

バインドは、各データベースにつき、アプリケーションごとに一度実行されなければなりません。 バインド・プロセスの間に、データベース・アクセス・プランは、実行される各 SQL ステートメントごとに保管されます。 これらのアクセス・プランは、アプリケーション開発者によって提供され、 (プリコンパイルの間に作成された) バインド・ファイル に入っています。 バインディングは、 IBM メインフレーム・データベース・サーバーによってこれらのバインド・ファイルを処理するプロセスです。

Db2 Connect で提供されているいくつかのユーティリティーは組み込み SQL を使用して開発されているため、 IBM メインフレーム・データベース・サーバーにバインドしてからでないと、そのシステムで使用できません。 Db2 Connect ユーティリティーおよびインターフェースを使用しない場合は、それらを各 IBM メインフレーム・データベース・サーバーにバインドする必要はありません。 これらのユーティリティーに必要なバインド・ファイルのリストは、次のファイルに含まれています。
  • ddcsmvs.lst ( System z ® の場合)
  • ddcsvse.lst (VSE の場合)
  • ddcsvm.lst (VM の場合)
  • ddcs400.lst for IBM Power Systems

これらのファイルのリストの 1 つをデータベースにバインドすることは、個々のユーティリティーをそのデータベースへバインドすることになります。

Db2 Connect Server 製品がインストールされている場合、 Db2 Connect ユーティリティーは、各 IBM メインフレーム・データベース・サーバーにバインドしてからでないと、そのシステムで使用できません。 クライアント側のフィックスパックが同じレベルであることを前提とすると、 関係するクライアント・プラットフォームの数に関係なく、ユーティリティーをバインドする必要があるのは一度だけです。

例えば、Windows クライアントが 10 個あり、Windows サーバー上で Db2 Connect Enterprise Edition を介して Db2 for z/OS® に接続する AIX® クライアントが 10 個ある場合は、以下のいずれかのステップを実行します。
  • Windows クライアントの 1 つから ddcsmvs.lst をバインドします。
  • AIX クライアントの 1 つから ddcsmvs.lst をバインドします。
  • Db2 Connect サーバーから ddcsmvs.lst をバインドします。
この例では以下の条件が前提になります。
  • すべてのクライアントが同じサービス・レベルにある。 そうでない場合、特定のサービス・レベルの各クライアントからバインドする必要があります。
  • サーバーはクライアントと同じサービス・レベルにある。 そうでない場合、サーバーからも同様にバインドする必要があります。

Db2 Connect ユーティリティーに加えて、組み込み SQL を使用する他のアプリケーションも、処理する各データベースにバインドする必要があります。 バインドされていないアプリケーションは、実行する時、 通常は SQL0805N エラー・メッセージを出します。 バインドを必要とするすべてのアプリケーションについて追加的なバインド・リスト・ファイルを作成したいときがあるかもしれません。

バインド先の IBM メインフレーム・データベース・サーバーごとに、以下のステップを実行します。
  1. IBM メインフレーム・データベース・サーバー管理システムに対する十分な権限があることを確認します。
    System z
    必要な許可は以下のとおりです。
    • SYSADM または
    • SYSCTRL または
    • BINDADD および  CREATE IN COLLECTION NULLID
    注: BINDADD および CREATE IN COLLECTION NULLID 特権は、パッケージがまだ存在しない場合に のみ 十分な権限を提供します。 例えば、はじめてパッケージを作成する場合などです。

    パッケージがすでに存在しており、それらを再度バインドしている場合は、タスクを完成させるために必要な権限は、誰がオリジナル・バインドを行ったかにかかってきます。

    A) もし同一の人がオリジナル・バインドを行い、再度のバインドも行っている場合は、上に挙げた権限のどれを持っている場合でも、バインドを完了させることができます。

    B) 最初のバインドを行ったのとは違う人が、 2 番目のバインドを行う場合は、バインドを完了するのに SYSADM または SYSCTRL 権限が必要です。 BINDADD および CREATE IN COLLECTION NULLID 権限を有するだけでは、バインドを完了させることができません。 ただし、SYSADM または SYSCTRL 権限がなくても、パッケージの作成は可能です。 この状況では、置き換えようとする既存のパッケージのおのおのについて、BIND 特権が必要になります。

    VSE または VM
    DBA 権限が必要です。 バインド・コマンドで GRANT オプションを使用する場合 (各 Db2 Connect パッケージへのアクセス権限を個別に付与しないようにするため)、NULLID ユーザー ID には、以下の表に対する権限を他のユーザーに付与する権限が必要です。
    • system.syscatalog
    • system.syscolumns
    • system.sysindexes
    • system.systabauth
    • system.syskeycols
    • system.syssynonyms
    • system.syskeys
    • system.syscolauth
    • system.sysuserauth
    VSE または VM システムでは、次の命令を発行することができます。
       grant select on table to nullid with grant option
    IBM® Power Systems
    NULLID コレクションにある *CHANGE 権限またはそれ以上の権限。
  2. 以下のコマンドと同様のコマンドを実行します。
       db2 connect to DBALIAS user USERID using PASSWORD
       db2 bind path@ddcsmvs.lst blocking all
             sqlerror continue messages ddcsmvs.msg grant public
       db2 connect reset

    ここで、 DBALIASUSERID、および PASSWORD は、 IBM メインフレーム・データベース・サーバーに適用されます。 ddcsmvs.lst は z/OSのバインド・リスト・ファイルで、 path はバインド・リスト・ファイルの場所を表します。

    例えば、 drive:\sqllib\bnd\ はすべての Windows オペレーティング・システムに適用され、 INSTHOME/sqllib/bnd/ はすべての Linux® および UNIX オペレーティング・システムに適用されます。ここで、 drive は、 Db2 Connect が実行された論理ドライブを表します。 INSTHOME は、 Db2 Connect インスタンスのホーム・ディレクトリーを表します。

    bind コマンドの grant オプションを使用することにより、 PUBLIC に対し、または特定のユーザー名またはグループ ID に対し、EXECUTE 特権を付与することができます。 bind コマンドの grant オプションを使用しない場合は、 GRANT EXECUTE (RUN) を個別に与えなければなりません。

    バインド・ファイルについてのパッケージ名を見つけるには、次のコマンドを入力します。
      ddcspkgn @bindfile.lst
    以下に例を示します。
       ddcspkgn @ddcsmvs.lst
    出力は次のようになります。
                                                                          
     Bind File                      Package Name                          
     ------------------------------ ------------------------------        
     f:\sqllib\bnd\db2ajgrt.bnd     SQLAB6D3
                                                                          
    Db2 Connect のこれらの値を判別するには、 ddcspkgn ユーティリティーを実行します。以下に例を示します。
       ddcspkgn @ddcsmvs.lst
    任意に、このユーティリティーを使用して、個々のバインド・ファイルのパッケージ名を判別することができます。 例えば、次のようにします。
       ddcspkgn bindfile.bnd
    注:
    1. バインド・オプション sqlerror continue を使用する必要があります。ただし、このオプションは、 Db2 ツールまたはコマンド行プロセッサー (CLP) を使用してアプリケーションをバインドするときに自動的に指定されます。 このオプションを指定すると、バインド・エラーが警告に変わります。 それで、エラーのあるファイルをバインドしても、パッケージを作成することができます。 言い換えると、特定のサーバー処理系が別のサーバー処理系の SQL 構文に無効であるとフラグを付ける場合であっても、 複数のサーバーに対して 1 つのバインド・ファイルを使用することができます。 このため、リスト・ファイル ddcsxxx.lst のいずれかを特定の IBM メインフレーム・データベース・サーバーにバインドすると、いくつかの警告が出されることが予想されます。
    2. Db2 Connectを介して Db2 データベースに接続する場合は、バインド・リスト db2ubind.lst を使用し、 sqlerror continueを指定しないでください。 これは、 IBM メインフレーム・データベース・サーバーに接続する場合にのみ有効です。 また、 Db2 データベースに接続するには、 Db2 Connectではなく、提供されている Db2 クライアントを使用することをお勧めします。
  3. 各アプリケーションまたはアプリケーションのリストをバインドするには、類似のステートメントを使用します。
  4. 以前のリリースの Db2のリモート・クライアントがある場合は、それらのクライアント上のユーティリティーを Db2 Connectにバインドする必要がある場合があります。