SQL Outline に使用される pureQuery StaticBinder ユーティリティー

StaticBinder ユーティリティーを使用して、pureQueryXML ファイルに SQL ステートメントを含む DB2 パッケージを作成してバインドすることができます。さらに、後で z/OS データ・セットに転送して DB2 パッケージの作成に使用できる、DBRM ファイルを作成することも選択できます。
デフォルトでは、pureQuery StaticBinder ユーティリティーで 4 つのパッケージまたは DBRM ファイルが作成されます。つまり、DB2 の 4 つの分離レベルごとに 1 つずつ作成されます。 pureQuery StaticBinder ユーティリティーでは、パッケージまたは DBRM ファイルのルート名に次の数値を付加することで分離レベルが識別されます。
1
分離レベル非コミット読み取り (UR) の場合
2
分離レベルカーソル固定 (CS) の場合
3
分離レベル読み取り固定 (RS) の場合
4
分離レベル反復可能読み取り (RR) の場合
バインドの実行時に -isolationLevel オプションを使用した場合、またはバインド・オプション・ストリングで分離レベルを指定した場合、指定した分離レベル用のパッケージまたは DBRM ファイルのみが作成されます。名前は、4 つすべての分離レベルでパッケージまたは DBRM ファイルを作成するときに StaticBinder で使用される規則に従って付けられます。

オプション・ファイルの使用

オプション・ファイルでは、pureQuery StaticBinder ユーティリティーで処理する pureQueryXML ファイル (複数可) と、kpureQueryXML ファイルの処理方法を StaticBinder ユーティリティーに通知するオプションがリストされます。 オプション・ファイルにリストされているすべての pureQueryXML ファイルに適用されるデフォルト・オプションを設定できます。 さらに、デフォルト・オプションをオーバーライドして、個別の pureQueryXML ファイルに固有の他のオプションを設定できるように、pureQueryXML ファイルにオプションを設定することもできます。

StaticBinder ユーティリティーを実行するコマンドでは、-optionsFile オプションで使用するファイルを指定することができます。

例えば、pureQuery StaticBinder ユーティリティーの単純なオプション・ファイルは以下のようになります。
defaultOptions = -collection qual1 -traceFile C:\logs\staticbinder.txt -traceLevel ALL -url jdbc:db2://SRVR01:50000/DB01 -username user01 -password pass01
capture_sales.pdqxml = -collection qual2
capture_orders.pdqxml
capture_employee.pdqxml = -url jdbc:db2://SRVR01:50001/DB02 -username user02 -password pass02
この例では、defaultOptions で始まる行は、DB2 パッケージの修飾子およびデフォルトの接続 URL を指定します。 さらにその行では、メッセージをログに記録するファイルも指定します。 次の行は、デフォルト修飾子ストリングをオーバーライドする修飾子ストリングを使用して pureQueryXML ファイルを指定します。次の行は、すべてのデフォルト・オプションが適用される pureQueryXML ファイルを指定します。 最後の行は、異なるデータベースに対してバインドする pureQueryXML ファイルを指定します。
さらに、各コメント行の前に # 記号を置くことによって、オプション・ファイルにコメントを含めることもできます。オプションのいずれかの値でこの記号を表示する必要がある場合は、以下のように値を二重引用符で囲みます。
-pkgVersion "ver#1"
コマンド行から StaticBinder ユーティリティーを実行してオプション・ファイルを使用する場合、pureQuery は以下の優先順位でオプションを認識します。
  1. コマンド行のオプション
  2. 指定されたオプション・ファイルにある個別のインターフェースのオプション
  3. 指定されたオプション・ファイルにあるデフォルト・オプション

許可

ユーティリティーを起動するユーザーの特権セットには、以下のいずれかの権限が含まれていなければなりません。
  • SYSADM 権限
  • DBADM 権限
  • パッケージが存在しない場合には、BINDADD 特権に加え、以下のいずれかの特権。
    • CREATEIN 特権
    • DB2 for z/OS: 対象となるコレクションまたはすべてのコレクションに対する PACKADM 権限
    • DB2 Database for Linux, UNIX, and Windows: パッケージのスキーマ名が存在しない場合には、データベースに対する IMPLICIT_SCHEMA 権限
  • パッケージが存在する場合には、以下の特権。
    • DB2 for z/OS: パッケージに対する BIND 特権
    • DB2 Database for Linux, UNIX, and Windows: スキーマに対する ALTERIN 特権、およびパッケージに対する BIND 特権
アプリケーションでの静的 SQL ステートメントのコンパイルに必要な特権すべても、ユーザーに付与される必要があります。 グループに付与される特権は、静的ステートメントの許可検査では使用されません。

DB2 Database for Linux, UNIX, and Windows: ユーザーに SYSADM 権限があるものの、バインドを完了するための明示特権がない場合、DB2 データベース・マネージャーは明示的な DBADM 権限を自動的に付与します。ます。

アーカイブからバインドしない場合に StaticBinder ユーティリティーを実行するためのコマンドの構文

このコマンドを使用すると、アプリケーションが含まれているアーカイブに対して StaticBinder ユーティリティーを実行できます。 アーカイブには、StaticBinder ユーティリティーに渡す pureQueryXML ファイルをリストした、拡張子 .bindProps の付いたオプション・ファイルが含まれていなければなりません。

構文図を読む構文図をスキップする
>>-java--com.ibm.pdq.tools.StaticBinder------------------------->

    (1)                                                                                                            
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
                                             '-:--port-'                                                           

>-- -archive----filename--+-.ear-+------------------------------>
                          +-.jar-+   
                          +-.war-+   
                          '-.zip-'   

>--+- -bindOptions----"--string-of-bind-options--"--+---------------------------------------------------------+-+-->
   |                                                |                          .-,--------------------.       | |   
   |                                                |                          V                      |       | |   
   |                                                '- -grant--"--grantees--(----+-authorization-ID-+-+--)--"-' |   
   |                                                                             '-PUBLIC-----------'           |   
   '-|--DBRM options--|-----------------------------------------------------------------------------------------'   

>--+------------------+--+--------------------------+----------->
   '- -differenceOnly-'  '- -isolationLevel--+-CS-+-'   
                                             +-RR-+     
                                             +-RS-+     
                                             '-UR-'     

>--+---------------------+-- -showDetails--+-TRUE--+-----------><
   '-|--Trace options--|-'                 '-FALSE-'   

注:
  1. DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。

オプション・ファイルなしで StaticBinder ユーティリティーを実行するコマンドの構文

pureQueryXML ファイルが 1 つしかない場合は、pureQueryXML ファイルの名前と、DB2 パッケージまたは DBRM ファイルの作成用のオプションを指定するためだけに、このコマンドを使用することを選択できます。

構文図を読む構文図をスキップする
>>-java--com.ibm.pdq.tools.StaticBinder------------------------->

    (1)                                                                                                            
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
                                             '-:--port-'                                                           

>-- -pureQueryXml--pureQueryXML-file---------------------------->

>--+- -bindOptions----"--string-of-bind-options--"--+---------------------------------------------------------+-+-->
   |                                                |                          .-,--------------------.       | |   
   |                                                |                          V                      |       | |   
   |                                                '- -grant--"--grantees--(----+-authorization-ID-+-+--)--"-' |   
   |                                                                             '-PUBLIC-----------'           |   
   '-|--DBRM options--|-----------------------------------------------------------------------------------------'   

>--+------------------+--+--------------------------+----------->
   '- -differenceOnly-'  '- -isolationLevel--+-CS-+-'   
                                             +-RR-+     
                                             +-RS-+     
                                             '-UR-'     

>-- -showDetails--+-TRUE--+--+---------------------+-----------><
                  '-FALSE-'  '-|--Trace options--|-'   

注:
  1. DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。

オプション・ファイルを使用して StaticBinder ユーティリティーを実行するコマンドの構文

pureQueryXML ファイルが複数ある場合は、pureQueryXML ファイルの名前と、これらのファイルに基づく DB2 パッケージまたは DBRM ファイルの作成用のオプションを指定するために、コマンドとオプション・ファイルを使用します。 pureQueryXML ファイルが 1 つしかない場合でも、オプション・ファイルは使用できます。

構文図を読む構文図をスキップする
>>-java--com.ibm.pdq.tools.StaticBinder------------------------->

    (1)                                                                                                            
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
                                             '-:--port-'                                                           

>--+------------------+-- -optionsFile--file-name--------------->
   '- -differenceOnly-'                             

>--+---------------------+-------------------------------------><
   '-|--Trace options--|-'   

注:
  1. DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。

StaticBinder ユーティリティーのオプション・ファイルでデフォルト・オプションを指定する構文

この構文図は、オプション・ファイルにリストしたすべての pureQueryXML ファイルに対して設定できるデフォルト・オプションを示しています。

構文図を読む構文図をスキップする
>>-defaultOptions--=-------------------------------------------->

    (1)                                                                                                            
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
                                             '-:--port-'                                                           

>--+- -bindOptions----"--string-of-bind-options--"--+---------------------------------------------------------+-+-->
   |                                                |                          .-,--------------------.       | |   
   |                                                |                          V                      |       | |   
   |                                                '- -grant--"--grantees--(----+-authorization-ID-+-+--)--"-' |   
   |                                                                             '-PUBLIC-----------'           |   
   '-|--DBRM options--|-----------------------------------------------------------------------------------------'   

>--+--------------------------+-- -showDetails--+-TRUE--+------->
   '- -isolationLevel--+-CS-+-'                 '-FALSE-'   
                       +-RR-+                               
                       +-RS-+                               
                       '-UR-'                               

>--+---------------------+-------------------------------------><
   '-|--Trace options--|-'   

注:
  1. DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。

StaticBinder ユーティリティーのオプション・ファイル内の個々の pureQueryXML ファイルに対してオプションを指定する構文

この構文図は、オプション・ファイルにリストした各 pureQueryXML ファイルに対して設定できるオプションを示しています。

構文図を読む構文図をスキップする
>>-pureQueryXML-file--=----------------------------------------->

    (1)                                                                                                            
>-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-->
                                             '-:--port-'                                                           

>--+- -bindOptions----"--string-of-bind-options--"--+---------------------------------------------------------+-+-->
   |                                                |                          .-,--------------------.       | |   
   |                                                |                          V                      |       | |   
   |                                                '- -grant--"--grantees--(----+-authorization-ID-+-+--)--"-' |   
   |                                                                             '-PUBLIC-----------'           |   
   '-|--DBRM options--|-----------------------------------------------------------------------------------------'   

>--+--------------------------+-- -showDetails--+-TRUE--+------><
   '- -isolationLevel--+-CS-+-'                 '-FALSE-'   
                       +-RR-+                               
                       +-RS-+                               
                       '-UR-'                               

注:
  1. DBRM ファイルのみを作成する場合は、-url、-username-、-password オプションを使用する必要はありません。

オプションの説明

-archive
アーカイブ・ファイル内のアプリケーションを DB2 サーバーに展開し、そのサーバー上で StaticBinder を実行して SQL ステートメントをバインドするには、このオプションを使用します。 サポートされるアーカイブの種類は、EAR、JAR、WAR、ZIP です。
-bindOptions "string-of-bind-options"
これらのオプションには、同名の DB2 プリコンパイル・オプションおよびバインド・オプションと同じ機能があります。
これらのオプションのリストおよび説明については、BIND コマンドを参照してください。
DBRM オプション
DBRM ファイルを生成する場合は、パッケージを作成せずに、これらのオプションを使用します。 これらのオプションは、DB2 for z/OS を使用している場合にのみ適用されます。

StaticBinder ユーティリティーで DBRM ファイルが生成された後、それらをデータ・セットにコピーする必要があります。 デフォルトの DBRM データ・セット名は prefix.DBRMLIB.DATA です。ここで prefix は、ユーザーの TSO プロファイルで指定された高位修飾子です。通常、prefix は TSO におけるユーザー ID です。

DBRM データ・セットがまだ存在しない場合は、それを作成する必要があります。 DBRM データ・セットには、すべての SQL ステートメントを保持するスペースと、各ホスト変数名とヘッダー情報用の追加スペースが必要です。 ヘッダー情報の概算として、DBRM ごとに 2 つのレコード、SQL レコードごとに 20 バイト、ホスト変数ごとに 6 バイトが必要です。 DBRM の厳密なフォーマットについては、ライブラリー prefix.SDSNMACS の DBRM マッピング・マクロである DSNXDBRM を参照してください。

以下の構文図は、DBRM ファイルを生成するためのオプションを記述しています。

構文図を読む構文図をスキップする
>>- -generateDBRM--+-TRUE--+-- -outputDBRMPath--path-----------><
                   '-FALSE-'                           

-generateDBRM
パッケージを作成する代わりに DBRM ファイルを生成するかどうかを指定します。 generateDBRMTRUE である場合、デフォルトでは、StaticBinder ユーティリティーにより 4 つの DBRM ファイルが生成されます。つまり、CS、RR、RS、UR の分離レベルごとに 1 つずつ生成されます。 ただし、-isolationLevel オプションを指定した場合には、DBRM ファイルは 1 つしか生成できません。

生成される DBRM ファイルのルート名は、Configure ユーティリティーを実行するときに指定するルート・パッケージ名です。

-outputDBRMPath path
生成された DBRM ファイルを保存するディレクトリーを指定します。デフォルト値は、StaticBinder ユーティリティーの実行元となるディレクトリーです。
-differenceOnly
StaticBinder ユーティリティーを実行する pureQueryXML ファイル用にすでに存在する可能性がある DB2 パッケージを置換しないように指定します。
-grant "grantees(firstID,secondID,...)"
StaticBinder ユーティリティーが作成するパッケージに対する EXECUTE 特権を付与する対象者をカンマで区切ったリストを指定します (カッコ内)。このオプションを指定しなかった場合、StaticBinder ユーティリティーはこの特権を付与しません。
grantees
EXECUTE 特権を付与する許可 ID をカンマで区切ったリスト。リストする許可 ID は、使用している DB2 データベースに対して有効なものでなければなりません。

Linux、UNIX、および Windows 用の DB2 データベースの場合: キーワード USER、GROUP、ROLE を使用できます。これらのキーワードの詳細については、 GRANT (Package Privileges) statement を参照してください。

z/OS 用の DB2 の場合: キーワード ROLE を使用できます。このキーワードの詳細については、 GRANT (package privileges) を参照してください。

制約事項:

  • -generateDBRM オプションの値が TRUE である場合は、-grant オプションを使用できません。
  • StaticBinder ユーティリティーの 1 回の呼び出しの中で、コマンドラインとオプション・ファイルの両方に-grant オプションを使用することはできません。
  • オプション・ファイル内では、defaultOptions 行の中で、またはファイル内の 1 つ以上の個別の項目内で -grant オプションを使用できます。1 つのオプション・ファイル内の両方の場所で -grant を使用することはできません。
-isolationLevel CS | RR | RS | UR
4 つの分離レベルごとに 1 つずつ DB2 パッケージ・ファイルまたは DBRM ファイルを生成するのではなく、特定の分離レベル用の単一の DB2 パッケージまたは DBRM ファイルを生成することを指定します。
CS
分離レベルとしてカーソル固定を指定します。 StaticBinder は、作成されるパッケージまたは DBRM ファイルの名前に 1 を付加します。
RR
分離レベルとして反復可能読み取りを指定します。 StaticBinder は、作成されるパッケージまたは DBRM ファイルの名前に 2 を付加します。
RS
分離レベルとして読み取り固定を指定します。 読み取り固定では、アプリケーションによって読み取りおよび変更される行に関し、パッケージ内の SQL ステートメントの実行が、他のアプリケーション・プロセスから確実に分離されます。
StaticBinder は、作成されるパッケージまたは DBRM ファイルの名前に 3 を付加します。
UR
分離レベルとして非コミット読み取りを指定します。 StaticBinder は、作成されるパッケージまたは DBRM ファイルの名前に 4 を付加します。
-optionsFile file-name
バインドする SQL ステートメントが入っている pureQueryXML ファイルをリストするファイルの名前 (絶対パスまたは相対パスを含む)。
-password
データ・ソースに接続するために使用するパスワード。
pureQueryXML-file (オプション・ファイルの行の始め)
オプション・ファイルのこの行のオプションが適用される pureQueryXML ファイルの名前を指定します。このファイルの拡張子は、.pdqxml または .xml でなければなりません。ファイルは、アプリケーションのクラスパス内のリソースであるか、あるいはユーザーがファイルの絶対パスまたは相対パスを指定する必要があります。
この行で指定するオプションは、defaultOptions 行で指定するオプションよりも優先されます。
-pureQueryXml pureQueryXML-file
pureQueryXML ファイルの名前。このファイルの拡張子は、.pdqxml または .xml でなければなりません。ファイルがアプリケーションのクラスパス内のリソースであるか、あるいはユーザーがファイルの絶対パスまたは相対パスを指定する必要があります。
-showDetails true|false
StaticBinder ユーティリティーで生成する DB2 パッケージおよび処理する pureQueryXML ファイル内の SQL ステートメントに関するサマリー情報を表示するかどうかを指定します。
デフォルト値は false です。
トレース・オプション
メッセージをログに記録するファイルを指定したり、ログに記録する情報レベルを指定したりできます。
構文図を読む構文図をスキップする
>>-+------------------------+--+---------------------------+---><
   '- -traceFile--file-name-'  '- -traceLevel--+-OFF-----+-'   
                                               +-ALL-----+     
                                               +-SEVERE--+     
                                               +-WARNING-+     
                                               +-INFO----+     
                                               +-CONFIG--+     
                                               +-FINE----+     
                                               +-FINER---+     
                                               '-FINEST--'     

-traceFile file-name
操作に関する情報をログに記録するために使用するファイルの絶対パスまたは相対パスと名前を指定します。
ファイルがすでに存在する場合、pureQuery は新規のメッセージを既存のファイルの内容に追加します。
-traceLevel
ログに記録する情報のタイプを指定します。 デフォルトのレベルは OFF です。ログ項目を書き込むファイルを指定せず、このオプションを OFF 以外の値に設定した場合、項目はコンソールに書き込まれます。
-url connection-URL
データベースに接続するためのタイプ 4 JDBC URL。
-username
データ・ソースに接続するために使用するユーザー ID。

StaticBinder ユーティリティーの実行の例

JDBC アプリケーションが作成する各接続に 1 つずつ、合わせて 2 つの pureQueryXML ファイルがあるとしましょう。ファイル名は capture_sales.pdqxml および capture_employee.pdqxml です。

これらは、pureQuery Configure ユーティリティーのトピックにある例で使用されたものと同じ pureQueryXML ファイルです。

これらの pureQueryXML ファイル内の SQL ステートメントを使用して DB2 パッケージを作成し、以下の値を StaticBinder ユーティリティーに渡すとします。

表 1. StaticBinder ユーティリティーの値の例
オプション capture_sales.pdqxml capture_employee.pdqxml
-url jdbc:db2://sys01:500/DB2M jdbc:db2://sys01:501/DB2Q
-username user01 user02
-password nQ6wCJkz DpJR8fk2
-bindOptions QUALIFIER myQual QUALIFIER myQual
この状況では、StaticBinder ユーティリティーを実行し、DB2 パッケージを作成してバインドするために使用できる以下の 2 つの方式があります。
  • StaticBinder ユーティリティーを 2 度実行して、それぞれで異なる .pdqxml ファイルを提供する。
    java com.ibm.pdq.tools.StaticBinder -url jdbc:db2://sys01:500/DB2M -username user01 \
     -password nQ6wCJkz -bindOptions "QUALIFIER myQual" -pureQueryXml
    C:\capture_files\capture_sales.pdqxml
    java com.ibm.pdq.tools.StaticBinder -url jdbc:db2://sys01:501/DB2Q -username user02 \
     -password DpJR8fk2 -bindOptions "QUALIFIER myQual" -pureQueryXml
    C:\capture_files\capture_employee.pdqxml
  • StaticBinder ユーティリティーを一度だけ実行して、.pdqxml ファイルがリストされているオプション・ファイルを提供する。

    コマンドは、以下のようになります。

    java com.ibm.pdq.tools.StaticBinder -optionsFile myOptionsFile.txt

    オプション・ファイルは、ご使用のオペレーティング・システムがサポートする任意の名前と拡張子を付けることができ、以下のようになります。

    defaultOptions = -bindOptions "QUALIFIER myQual"
    
    C:\capture_files\capture_sales.pdqxml = -url jdbc:db2://sys01:500/DB2M -username user01 -password nQ6wCJkz
    
    C:\capture_files\capture_employee.pdqxml = -url jdbc:db2://sys01:501/DB2Q -username user02 -password DpJR8fk2

DBRM オプションを bindOptions オプションの代わりに使うことにより、DBRM ファイルを生成することができます。

Configure ユーティリティーの例では、そのユーティリティーは .pdqxml ファイルを以下の値で更新しました。

表 2. Configure ユーティリティーの値の例
Configure ユーティリティーのオプション capture_sales.pdqxml capture_employee.pdqxml
-collection first second
-markDDLForBind FALSE FALSE
-pkgVersion 1.0 1.0
-rootPkgName PK001S PK005E
-sqlLimit 200 200

その例では、capture_sales.pdqxml には 450 の SQL DML ステートメントが含まれ、capture_employee.pdqxml には 400 SQL DML のステートメントと 50 の SQL DDL ステートメントが含まれることが示されました。

StaticBinder ユーティリティーは、以下のパッケージを作成し、それらをそれぞれのサブシステム上でバインドします。
重要: この例では、Configure ユーティリティーを実行したときに markDDLForBind オプションを FALSE に設定したと仮定しています。
capture_sales.pdqxml のパッケージ
  • PK001SA1
  • PK001SA2
  • PK001SA3
  • PK001SA4
  • PK001SB1
  • PK001SB2
  • PK001SB3
  • PK001SB4
  • PK001SC1
  • PK001SC2
  • PK001SC3
  • PK001SC4
capture_employee.pdqxml のパッケージ
  • PK005EA1
  • PK005EA2
  • PK005EA3
  • PK005EA4
  • PK005EB1
  • PK005EB2
  • PK005EB3
  • PK005EB4

接尾部の文字 (A、B、C) は、sqlLimit の値により、StaticBinder が pureQueryXML ファイル用の別の DB2 パッケージを作成した箇所を示します。 接尾部の数値 (1、2、3、4) は、DB2 パッケージの分離レベルを示します。

StaticBinder が DECLARE GLOBAL TEMPORARY TABLE ステートメントを扱う方法

DDL ステートメント DECLARE GLOBAL TEMPORARY TABLE は、取り込まれた SQL DML ステートメントのように、バインドされて静的に実行されます。

宣言されたグローバル一時表はアプリケーション固有であり、システム・カタログに永続レコードを持たず、それらの宣言停止を含むアプリケーションの後は持続しません。 DB2 バインド操作中に、いずれかの宣言されたグローバル一時表への参照を含むすべての SQL ステートメントは完全にはバインドされておらず、実行時に追加的にバインドされます。したがって、DECLARE GLOBAL TEMPORARY TABLE ステートメントの存在によって、実行時に付加的なマイナスの影響が生じることはありません。

関連タスク
他の pureQuery ユーティリティーからの pureQuery ログ・ユーティリティーのプロパティーの設定

フィードバック