シナリオ: SQL を静的に実行するための pureQuery Runtime プロパティーの更新

トランザクション・データベース上に SQL ステートメントが含まれるパッケージを作成し、そのパッケージをバインドした後、リポジトリー内の pureQuery Runtime プロパティーと pureQueryXML データを更新して、アプリケーションで SQL ステートメントを静的に実行できるようにします。 アプリケーションが pureQuery プロパティーをリフレッシュすると、SQL ステートメントが静的に実行されます。

このタスクについて

実行時グループ内のデータを更新し、リポジトリー内のバージョンを作成するには、ManageRepository ユーティリティーを使用します。以下の操作を実行します。
  • pureQueryXML ファイル内のデータをアップロードします。
  • pureQuery Runtime プロパティーを更新します。
  • リポジトリー内の実行時グループ・バージョンをアクティブにします。

手順

SQL を静的に実行するように pureQuery Runtime プロパティーを更新するには、次のようにします。

  1. pqtest.properties ファイルのローカル・バージョンを更新し、executionMode プロパティーの値を STATIC に設定します。
    ファイルに以下のテキストを指定します。
    pdq.captureMode=ON
    pdq.allowDynamicSQL=TRUE
    pdq.executionMode=STATIC 

    pureQueryXML ファイルに SQL ステートメントが指定されている場合は、この pureQuery Runtime の設定によって、アプリケーションが SQL ステートメントを静的に実行します。アプリケーションが pureQueryXML ファイルに指定されていない SQL ステートメントを実行すると、ステートメントはキャプチャーされ、動的に実行されます。

  2. リポジトリー内の実行時グループのバージョンを作成します。

    実行時グループ testApp のバージョン V2 を作成します。pureQuery Runtime プロパティーと pureQueryXML データをリポジトリーにアップロードします。

    以下の ManageRepository コマンドを実行すると、実行時グループ・バージョンが作成されます。
    java com.ibm.pdq.tools.ManageRepository -create runtimeGroup 
      -repositoryDriverClass  com.ibm.db2.jcc.DB2Driver 
      -repositoryURL  "jdbc:db2://testserver.test.com:32706/sample" 
      -repositoryUsername  "myuser" -repositoryPassword  "mypwd" 
      -runtimeGroupId testApp 
      -runtimeGroupVersion V2 
    このコマンドに対する出力は、以下のサンプルのようになります。
    IBM Optim pureQuery runtime 2.2.0.3 build 2.18.118
    Licensed Materials - Property of IBM
    5724-U16
    (c) Copyright IBM Corp. 2006, 2010 All Rights Reserved.
    
    =========================================================
    
    Starting to process options:  -create "runtimeGroup" 
      -bind "packages" -runtimeGroupVersion "V2" 
      -repositoryURL "jdbc:db2://testserver.test.com:32706/sample" 
      -repositoryUsername "myuser" -repositoryPassword "******" 
      -repositoryDriverClass "com.ibm.db2.jcc.DB2Driver" 
      -runtimeGroupId "testApp"
    
    The ManageRepository utility successfully created the runtime group "testApp" version "V2".
  3. リポジトリー内の実行時グループ・バージョンを、pqtest.properties ファイルおよび pureQueryXML ファイル内のデータで更新します。
    以下のコマンドを実行します。
    java com.ibm.pdq.tools.ManageRepository 
    -update runtimeGroup 
    -repositoryDriverClass  com.ibm.db2.jcc.DB2Driver 
    -repositoryURL  "jdbc:db2://testserver.test.com:32706/sample" 
    -repositoryUsername  "myuser" -repositoryPassword  "mypwd" 
    -runtimeGroupId testApp 
    -pureQueryProperties ./pqtest.properties 
    -pureQueryXml ./testApp.pdqxml
    -runtimeGroupVersion V2
    このコマンドに対する出力は、以下のサンプルのようになります。
    IBM Optim pureQuery Runtime 2.2.0.3 build 2.18.118
    Licensed Materials - Property of IBM
    5724-U16
    (c) Copyright IBM Corp. 2006, 2010 All Rights Reserved.
    
    ===================================================
    
    Starting to process options:  -update "runtimeGroup" -runtimeGroupVersion "V2" 
    -repositoryURL "jdbc:db2://testserver.test.com:32706/sample" 
    -repositoryUsername "*****" –repositoryPasword "*****"
    -pureQueryProperties ".¥pqtest.properties" 
    -pureQueryXml "testApp.pdqxml" 
    -runtimeGroupId "testApp"
    
    The ManageRepository utility successfully updated the runtime group "testApp" version "V2".
  4. 実行時グループ testApp 内の V2 バージョンをアクティブ化します。
    以下のコマンドを実行します。
    java com.ibm.pdq.tools.ManageRepository -activate runtimeGroup 
    -repositoryDriverClass  com.ibm.db2.jcc.DB2Driver 
    -repositoryURL  "jdbc:db2://testserver.test.com:32706/sample" 
    -repositoryUsername  "myuser" 
    -repositoryPassword  "mypwd" 
    -runtimeGroupId testApp  
    -runtimeGroupVersion V2

    バージョン V2 をアクティブ化すると、バージョン V1 が自動的に非アクティブ化されます。pureQuery Runtime は、pureQuery 情報をリポジトリー内の実行時グループのアクティブ・バージョンから取得します。

    このコマンドに対する出力は、以下のサンプルのようになります。
    IBM Optim pureQuery Runtime 2.2.0.3 build 2.18.118
    Licensed Materials - Property of IBM
    5724-U16
    (c) Copyright IBM Corp. 2006, 2010 All Rights Reserved.
    
    ========================================
    
    Starting to process options:  -activate "runtimeGroup" -runtimeGroupVersion "V2" 
    -repositoryURL "jdbc:db2://testserver.test.com:32706/sample" 
    -repositoryUsername "*****" -repositoryPassword "*****"
    -runtimeGroupId "testApp" 
    
    The ManageRepository utility successfully activated the runtime group "testApp" version "V2".

タスクの結果

このアプリケーションに対して、pureQuery Runtime のリフレッシュ間隔プロパティー propertiesRefreshInterval が 2 分に設定されました。更新された pureQuery Runtime プロパティーは、2 分後に有効になります。executionMode プロパティーの値を STATIC に設定すると、アプリケーションは SQL ステートメントを静的に実行します。

実行時グループ testApp のバージョン V2 では、pureQuery Runtime プロパティー captureModeON に設定されています。 pureQuery Runtime は引き続きアプリケーションから SQL データをキャプチャーします。 アプリケーションからキャプチャーされていない SQL ステートメントがある場合は、キャプチャーされた SQL と pureQueryXML データを抽出し、SQL ステートメントをマージ、構成、およびバインドしてから、更新された pureQueryXML ファイルをリポジトリーにアップロードする、というプロセスを繰り返します。SQL データのキャプチャー中にパフォーマンスの問題が生じた場合は、captureMode プロパティーの 値を NEW_STMT または LITE に設定して、キャプチャーするデータの量を減らします。

実行時グループ testApp のバージョン V1 の pureQuery データは変更されません。 バージョン V1 をアクティブ化して、以前の pureQuery Runtime 設定に戻すことができます。

注: SQL ステートメントが静的に実行されるかどうかを確認する方法の 1 つとして、パッケージのドロップがあります。データベースからパッケージ TESTAPP をドロップすると、アプリケーションは、pureQueryXML ファイル内にリストされた SQL ステートメントを実行できなくなります。

pureQueryXML ファイルで StaticBinder ユーティリティーを実行してパッケージを再作成すると、アプリケーションは SQL ステートメントを静的に実行します。

Tivoli® OMEGAMON® XE for DB2® on z/OS® などのデータベース・モニタリング・ツールを使用して、SQL が静的に実行されていることを検証することもできます。

次のタスク

この一連のタスクでは、pureQuery クライアントの最適化を使用して WebSphere® アプリケーションを構成する方法を示し、データベース内のリポジトリーを使用して pureQuery Runtime プロパティーと pureQuery のキャプチャーされた SQL データを保管する方法を示しました。


フィードバック