例: CLI アプリケーションからの SQL ステートメントの静的な実行

pureQuery クライアント最適化に対応したコール・レベル・インターフェース (CLI) アプリケーションを、DB2® データベース上で SQL ステートメントを静的に実行するように構成できます。 SQL ステートメントを静的に実行すると、実行時にある種の SQL ステートメントを準備する必要がなくなり、アプリケーションのセキュリティーおよびパフォーマンスを向上させることができます。

始める前に

CLI アプリケーションを pureQuery クライアント最適化に対応させます

pureQuery Runtime は、Java ベースの pureQuery Configure ユーティリティーおよび StaticBinder ユーティリティーを実行するコンピューターにインストールして、使用可能にする必要があります。次の製品がコンピューターにインストールされている必要があります。
  • Java Runtime Environment (JRE) バージョン 1.5 以降
  • IBM® Data Server Driver for JDBC and SQLJ バージョン 3.57.xx
pureQuery Runtime JAR ファイル、pdq.jar および pdqmgmt.jar、および Data Server Driver JAR ファイルは、ユーティリティーを実行するコンピューター上の CLASSPATH にリストされている必要があります。

このタスクについて

このタスクでは、CLI アプリケーションは DB2 データベースに接続しており、次の接続 URL を使用してデータベースに接続できると仮定しています。

jdbc:db2://svl01:500/DB2M -user user01 -password myPass

アプリケーションを構成するには、db2cli.ini 構成ファイルでキーワードを設定します。CLI アプリケーションを、それが発行する SQL ステートメントをキャプチャーするように構成し、次にステートメントを静的に実行するように構成します。

手順

CLI アプリケーションから SQL ステートメントを静的に実行するには、次のようにします。

  1. アプリケーションによって発行される SQL ステートメントをキャプチャーするために、CLI アプリケーション構成ファイルで pureQuery キーワードを設定します。

    アプリケーションによって発行される SQL ステートメントをキャプチャーするためにそのアプリケーションで使用される db2cli.ini 構成ファイルで、次のキーワードを更新します。

    captureMode=ON
    executionMode=DYNAMIC
    pureQueryXml=C:¥testapp¥Sample1Cptr.pdqxml
    代わりに db2dsdriver.cfg ファイルを使用する場合は、次のようにパラメーター・エレメントの属性としてキーワードを設定します。
    <parameter name="captureMode" value="ON"/>
    <parameter name="executionMode" value="DYNAMIC"/>
    <parameter name="pureQueryXml" value="C:¥testapp¥Sample1Cptr.pdqxml"/>

    これらのキーワード設定により、CLI アプリケーションは、SQL ステートメントを動的に実行し、正常に実行されたステートメントをファイル C:¥testapp¥Sample1Cptr.pdqxml にキャプチャーするように構成されます。

    executionMode キーワードの値 DYNAMIC はデフォルトであり、プロパティー・ファイルで必須ではありません。ファイルにこのプロパティーを含めると、デフォルト値を再認識できます。SQL ステートメントを静的に実行するために、値は変更されます。

    pureQueryXml キーワードの値は、pureQuery クライアント最適化がアプリケーションからキャプチャーされた SQL データを保管する pureQueryXML ファイルのロケーションと名前を指定します。この値は、pureQuery クライアント最適化が SQL ステートメントの実行を制御するために使用する pureQueryXML ファイルのロケーションと名前でもあります。 SQL ステートメントを DB2 データベース上で静的に実行するように pureQuery クライアント最適化を構成している場合、pureQuery Runtime はこのファイルの情報を使用して実行する SQL ステートメントを判別します。

  2. アプリケーションを実行して、SQL ステートメントを pureQueryXML ファイルにキャプチャーします。

    SQL ステートメントが pureQueryXML ファイルにキャプチャーされます。

  3. キャプチャーした SQL ステートメントを含む pureQueryXML ファイルを構成し、キャプチャーした SQL ステートメントをバインドします。
    1. 必要な場合、pureQuery Runtime がインストールされているコンピューターに pureQueryXML ファイルをコピーします。
    2. pureQuery Configure ユーティリティーを実行して、パッケージ名およびコレクション ID を含む pureQueryXML ファイルを構成します。

      コマンド・プロンプトで、Configure ユーティリティーを実行して、pureQuery StaticBinder ユーティリティーで使用されるパッケージ名およびコレクション ID などの情報を pureQueryXML ファイルに追加します。他のオプションを指定して、ファイル内の SQL ステートメントを管理することもできます。

      次のサンプル・コマンドは、Configure ユーティリティーを実行し、SMPL1 という名前の基本パッケージと COLL01 という名前のコレクションを指定します。コマンドは単一行で入力します。

      java com.ibm.pdq.tools.Configure -pureQueryXml Sample1Cptr.pdqxml 
         -rootPkgName SMPL1 -collection COLL01
    3. 構成済みの pureQueryXML ファイルを使用して pureQuery StaticBinder ユーティリティーを実行し、ターゲットの DB2 サーバー上にパッケージを作成し、バインドします。
      コマンド・プロンプトで、データベースおよびパッケージ情報を指定するオプションを使用して、StaticBinder ユーティリティーを実行します。次の StaticBinder サンプル・コマンドは、パッケージをターゲットの DB2 サーバー上に作成し、バインドします。コマンドは単一行で入力します。
      java com.ibm.pdq.tools.StaticBinder
        -url jdbc:db2://svl01:500/DB2M -user user01 -password myPass
         -pureQueryXml Sample1Cptr.pdqxml
    4. 必要な場合、アプリケーションが実行されるコンピューター上の pureQuerXML ファイルを構成済みの pureQueryXML ファイルに置換します。
  4. CLI アプリケーション構成ファイルを更新して、キャプチャーしたステートメントを静的に実行します。

    db2cli.ini 構成ファイルの pureQuery executionMode キーワードを更新して、アプリケーションによって発行される SQL ステートメントの静的実行を有効にします。キーワード値が DYNAMIC から STATIC に変更されます。

    captureMode=ON
    executionMode=STATIC
    pureQueryXml=C:¥testapp¥Sample1Cptr.pdqxml
    db2dsdriver.cfg ファイルを使用する場合は、次のようにパラメーター・エレメントの属性としてキーワードを設定します。
    <parameter name="captureMode" value="ON" />
    <parameter name="executionMode" value="STATIC" />
    <parameter name="pureQueryXml" value="C:¥testapp¥Sample1Cptr.pdqxml" />
  5. 構成ファイルおよび pureQueryXML ファイル内の更新された情報を使用するために、アプリケーションを実行または再開します。

タスクの結果

アプリケーションを実行すると、アプリケーションによって発行された 2 つの SQL ステートメントが静的に実行されます。アプリケーションを更新して SQL ステートメントを変更または追加すると、更新された SQL ステートメントまたは新しい SQL ステートメントが動的に実行されて、pureQueryXML ファイルにキャプチャーされます。

ヒント: pureQueryXML ファイルにキャプチャーされた SQL ステートメントのみを実行するようにアプリケーションを制限できます。SQL ステートメントの実行を制限する構成の 1 つは、次のように captureMode キーワードを OFF に設定し、キーワードと値 capturedOnly=TRUE を追加することです。
captureMode=OFF
capturedOnly=TRUE
executionMode=STATIC
pureQueryXml=C:¥testapp¥Sample1Cptr.pdqxml
db2dsdriver.cfg ファイルで、次のようにパラメーター・エレメントを設定します。
<parameter name="captureMode" value="OFF" />
<parameter name="capturedOnly" value="TRUE" />
<parameter name="executionMode" value="STATIC" />
<parameter name="pureQueryXml" value="C:¥testapp¥Sample1Cptr.pdqxml" />

この構成により、pureQueryXML ファイル内の SQL ステートメントのみが実行され、SQL ステートメントが静的に実行されます。更新された SQL ステートメントまたは新しい SQL ステートメントは、pureQueryXML ファイルにキャプチャーされません。


フィードバック