Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


6.6.4 クライアント環境定義の設定内容

〈この項の構成〉

(1) PDHOST=HiRDBサーバのホスト名[,予備系HiRDBサーバのホスト名]

   〜<識別子>((最大511バイト))

接続するHiRDBサーバのホスト名を指定します。

HiRDB/シングルサーバの場合はシングルサーバのサーバマシンのホスト名を,HiRDB/パラレルサーバの場合はシステムマネジャのサーバマシンのホスト名を指定します。また,PDFESHOSTを指定している場合は,PDFESHOSTのホスト名を指定できます。PDFESHOSTのホスト名を指定した場合,システムマネジャユニットに障害が発生しても,HiRDBサーバに接続できます。

ホスト名以外にも,FQDN,及びIPアドレスでも指定できます。指定方法を次に示します。

ホスト名:

システム共通定義のpdunit -xオペランドで指定したホスト名を指定します。

(指定例)

PDHOST=host1

FQDN:

HiRDBサーバのホスト名とドメイン名とを,ピリオドで結んで指定します。

(指定例)

PDHOST=host1.soft.hitachi.co.jp

IPアドレス:

IPアドレスは,バイトごとにピリオドで区切られた10進数で指定します。

(指定例)

PDHOST=172.18.131.34

《IPアドレスを引き継ぐ系切り替えをする場合》
  • UNIX版の場合

    現用系のホスト名を指定してください。

  • Windows版の場合

    MSFCのネットワーク名に登録した仮想ネットワーク名を指定してください。仮想ネットワークについては,マニュアル「HiRDB システム運用ガイド」を参照してください。

《IPアドレスを引き継がない系切り替えをする場合》

現用系及び予備系の二つのホスト名を指定してください。現用系のホスト名だけを指定すると,系が切り替わった後に,この環境変数の指定を新しく実行系になったホスト名に変更する必要があります。

《OLTP下でX/Openに従ったアプリケーションプログラムをクライアントとし,システム環境定義でHiRDB_PDHOSTを指定している場合》

HiRDB_PDHOSTの指定を優先します。PDHOSTの設定値はHiRDB_PDHOSTで指定した値に置き換わります。

《FQDNを指定する場合の規則》

バージョン05-03より前のHiRDBサーバと接続する場合は,FQDNを指定しないでください。指定した場合,クライアントの最大待ち時間(PDCWAITTIME)経過後,HiRDBサーバへのキャンセル処理ができないでサーバプロセスが残ることがあります。

《システム共通定義のpdunit -xオペランドにループバックアドレスを指定している場合》

システム共通定義のpdunit -xオペランドにループバックアドレスを指定している場合は,この環境変数にも同じループバックアドレスを,IPアドレス形式で指定してください。

(2) PDNAMEPORT=HiRDBサーバのポート番号

   〜<符号なし整数>((5001〜65535))《20000》

接続するHiRDBサーバのポート番号を指定します。PDHOSTに指定したホストのサーバマシンの,アクセスするHiRDBサーバのポート番号を指定してください。

マルチHiRDBの場合,それぞれのHiRDBサーバでポート番号が異なります。したがって,接続するHiRDBサーバのポート番号を指定してください。

《OLTP下でX/Openに従ったアプリケーションプログラムをクライアントとし,システム環境定義でHiRDB_PDNAMEPORTを指定している場合》

HiRDB_PDNAMEPORTの指定を優先します。PDNAMEPORTの設定値はHiRDB_PDNAMEPORTで指定した値に置き換わります。

(3) PDFESHOST=フロントエンドサーバのホスト名[:フロントエンドサーバがあるユニットのポート番号][,予備系フロントエンドサーバのホスト名[:予備系フロントエンドサーバがあるユニットのポート番号]]

   〜<識別子>((最大523バイト))

この環境変数は,HiRDB/パラレルサーバに関するものです。

マルチフロントエンドサーバの場合に,接続するHiRDBサーバのフロントエンドサーバのホスト名を指定します。また,システム定義のpdunitで-p ポート番号を指定しているホストへ接続する場合(系切り替え機能を使用している場合)は,そのポート番号を指定する必要があります。

省略した場合,接続するフロントエンドサーバはシステムマネジャが決定します。システムマネジャが決定するフロントエンドサーバには,回復不要FESも含まれます。

ホスト名以外にも,FQDN,及びIPアドレスでも指定できます。指定方法を次に示します。

ホスト名:

システム共通定義のpdunit -xオペランドで指定したホスト名を指定します。

(指定例)

PDFESHOST=host1

FQDN:

HiRDBサーバのホスト名とドメイン名とを,ピリオドで結んで指定します。

(指定例)

PDFESHOST=host1.soft.hitachi.co.jp

IPアドレス:

IPアドレスは,バイトごとにピリオドで区切られた10進数で指定します。

(指定例)

PDFESHOST=172.18.131.34

《IPアドレスを引き継ぐ系切り替えをする場合》
  • UNIX版の場合

    現用系のホスト名を指定してください。

  • Windows版の場合

    MSFCのネットワーク名に登録した仮想ネットワーク名を指定してください。仮想ネットワークについては,マニュアル「HiRDB システム運用ガイド」を参照してください。

《IPアドレスを引き継がない系切り替えをする場合》

現用系,及び予備系の二つのホスト名を指定してください。現用系のホスト名だけを指定すると,系が切り替わった後に,この環境変数の指定を新しく実行系になったホスト名に変更する必要があります。

《FQDNを指定する場合の規則》

バージョン05-03より前のHiRDBサーバと接続する場合は,FQDNを指定しないでください。指定した場合,クライアントの最大待ち時間(PDCWAITTIME)経過後,HiRDBサーバへのキャンセル処理ができないでサーバプロセスが残ることがあります。

《ポート番号を省略する場合の規則》

ポート番号を省略すると,PDNAMEPORTで指定したポート番号が仮定されます。予備系フロントエンドサーバがあるホストのポート番号を省略した場合も,PDNAMEPORTで指定したポート番号が仮定されます。

《ほかの環境変数との関係》
  1. マルチフロントエンドサーバの場合にコネクトするフロントエンドサーバをクライアントユーザで決定するとき,又はPDSERVICEPORTを指定するときは,この環境変数を必ず指定します。

  2. この環境変数を指定するときは,PDSERVICEGRPも指定してください。

《留意事項》
  1. X/Open XAインタフェースを使用するプログラムから回復不要FESに接続した場合,そのプログラムからはデータベースの参照,更新ができません。この場合,PDFESHOST及びPDSERVICEGRPを指定して,必ず回復不要FESでないフロントエンドサーバに接続してください。

  2. マルチフロントエンドサーバの場合,接続先のフロントエンドサーバに負荷が集中しないようにするために,PDFESHOSTに指定するホスト名は均等になるようにしてください。

  3. PDFESHOSTに指定したホスト名を,PDHOSTにも指定できます。この場合,システムマネジャユニットに障害が発生しても,HiRDBサーバに接続できます。

  4. 反映側Datareplicatorの同期点処理方式に二相コミット方式を利用(反映システム定義のcommitment_methodオペランドにfxa_sqleを指定)した反映処理を実行する場合,反映側HiRDBの回復不要FESに接続すると,反映処理が失敗します。この場合,反映側Datareplicatorの環境変数にPDFESHOST及びPDSERVICEGRPを指定して,必ず回復不要FESでないフロントエンドサーバに接続してください。

(4) PDSERVICEGRP=サーバ名

   〜<文字列>((最大30バイト))

接続するHiRDBサーバの,シングルサーバ名又はフロントエンドサーバ名を指定します。

HiRDB/パラレルサーバでマルチフロントエンドサーバの場合,接続するフロントエンドサーバのサーバ名を指定してください。

《ほかの環境変数との関係》
  1. 同時にPDSERVICEPORTを指定することで,HiRDBサーバへの接続時間を短縮できます(高速接続機能)。

  2. HiRDB/パラレルサーバの場合,PDFESHOSTも指定してください。

《留意事項》
  1. X/Open XAインタフェースを使用するプログラムから回復不要FESに接続した場合,そのプログラムからはデータベースの参照,更新ができません。この場合,PDSERVICEGRP及びPDFESHOSTを指定して,必ず回復不要FESでないフロントエンドサーバに接続してください。

  2. 反映側Datareplicatorの同期点処理方式に二相コミット方式を利用(反映システム定義のcommitment_methodオペランドにfxa_sqleを指定)した反映処理を実行する場合,反映側HiRDBの回復不要FESに接続すると,反映処理が失敗します。この場合,反映側Datareplicatorの環境変数にPDSERVICEGRP及びPDFESHOSTを指定して,必ず回復不要FESでないフロントエンドサーバに接続してください。

(5) PDSRVTYPE={WS|PC}

接続するHiRDBサーバのサーバ種別を指定します。

WS:

HiRDBサーバがHP-UX版,又はAIX版の場合に指定します。

PC:

HiRDBサーバがLinux版,又はWindows版の場合に指定します。

(6) PDSERVICEPORT=高速接続用のポート番号[,予備系の高速接続用ポート番号]

   〜<符号なし整数>((5001〜65535))

高速接続機能を使用する場合の高速接続用のポート番号を指定します。高速接続用のポート番号とは,システム定義に指定するスケジューラプロセスのポート番号のことです。スケジューラプロセスのポート番号を指定するシステム定義のオペランドを次に示します。

各オペランドについては,マニュアル「HiRDB システム定義」を参照してください。

HiRDBサーバ側にファイアウォールやNATが設置されている場合は,このオペランドを指定してください。ファイアウォールやNATが設置されている場合の設定については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

また,マルチフロントエンドサーバの場合,接続するフロントエンドサーバの高速接続用のポート番号を指定してください。

なお,接続するフロントエンドサーバが固定されるため,サーバ負荷が分散されるように接続先を決定してください。

《利点》

この環境変数を指定することで,HiRDBサーバへの接続時間を短縮できます。

《ほかの環境変数との関係》

この環境変数を指定する場合,次に示す環境変数も必ず指定してください。また,HiRDBサーバがWindows,又はLinuxの場合,環境変数PDSRVTYPEにPCを指定してください。

<HiRDB/シングルサーバの場合>

  • PDHOST

  • PDNAMEPORT

  • PDSERVICEGRP

<HiRDB/パラレルサーバの場合>

  • PDHOST

  • PDNAMEPORT

  • PDFESHOST

  • PDSERVICEGRP

《留意事項》
  1. 相互系切り替えの系切り替え機能を使用していて,システム定義のpd_service_portオペランドでそれぞれ異なるポート番号を指定している場合,予備系の高速接続用ポート番号も併せて指定してください。

  2. 広域LANを経由してHiRDBサーバに接続する環境で通信障害が発生した場合,システムマネジャプロセスが影響を受けて,HiRDBへの接続要求を多数同時に受け付けられないおそれがあります。そのため,広域LANを経由して接続するシステムの場合は,この環境変数を指定することをお勧めします。

(7) PDFESGRP=FESグループ[,切替FESグループ[,切替FESグループ]…]

   〜<文字列>((最大1024バイト))

この環境変数は,HiRDB/パラレルサーバで,高速接続をする場合に指定します。また,システム定義に次のオペランドを指定している必要があります。

高速接続をする場合,接続するFESグループを指定します。また,マルチフロントエンドサーバ構成の場合,接続先のFESグループと,そのFESグループの障害時に接続を切り替える切替FESグループを指定します。

FESグループと切替FESグループに指定する内容を次に示します。

FESグループ:

高速接続の接続先(PDFESHOST,PDSERVICEGRP,及びPDSERVICEPORT)をまとめて記述する指定方法のことをいいます。それぞれの接続先はコロン(:)で区切って指定します。指定例を次に示します。

host1:fes1:20001

なお,PDFESHOSTには二つ(現用系と予備系)のホスト名を指定できますが,一つのFESグループには一つのホスト名しか指定できません。同様に,PDSERVICEPORTには二つのポート番号を指定できますが,一つのFESグループには一つのポート番号しか指定できません。

切替FESグループ:

マルチフロントエンドサーバ構成の場合,接続先のFESグループのフロントエンドサーバに障害が発生したとき,接続を切り替えるFESグループのことをいいます。切替FESグループを指定した場合に障害が発生すると,切替FESグループに接続を切り替えます。切替FESグループを複数指定した場合は,指定した順番で接続を切り替えます。

切替FESグループの指定方法は,FESグループと同じです。

《留意事項》
  1. この環境変数を指定した場合,PDFESHOST,PDSERVICEGRP,及びPDSERVICEPORTの指定は無効になります。

  2. 切替FESグループを指定する場合,サーバ障害,及び接続ユーザ数オーバーで接続先を切り替えるため,一時的に切替FESグループ側の接続数が増えることがあります。そのため,切替FESグループ側のpd_max_usersオペランドの値を見直す必要があります。

  3. 切替FESグループを指定する場合,指定したすべての切替FESグループで障害が発生しているとき,又は接続ユーザ数オーバーが発生しているときは,UAPにエラーを返却するのに時間が掛かることがあります。

  4. 切替FESグループを指定した場合で,複数のFESへの接続がすべてエラーとなったときは,最後に接続を試みたFESのエラー情報がUAPに返却されます。

《使用例》
FESグループを一つだけ指定する場合:

[図データ]

[説明]

FESグループを一つだけ指定した場合,ホストhost1のフロントエンドサーバfes1にだけ接続します。

FESグループを一つ,切替FESグループを一つ指定する場合:

[図データ]

[説明]

1の接続でエラーとなった場合,2で接続をします。2もエラーとなった場合は,UAPにエラーを返却します。

FESグループを一つ,切替FESグループを複数指定する場合:

[図データ]

[説明]

1の接続でエラーとなった場合,2で接続をします。以降2,3,4と接続をして,すべての接続がエラーとなった場合は,UAPにエラーを返却します。

(8) PDCLTRCVPORT=クライアントの受信ポート番号

   〜<符号なし整数>((0,5001〜65535,5001〜65535−5001〜65535))《0》

HiRDBクライアントがHiRDBサーバと通信する場合の,受信ポート番号又は受信ポート番号の範囲を指定します。

この環境変数を省略した場合,自動的にOSによって空いているポート番号が割り当てられます。したがって,通常時はこの環境変数を指定する必要はありません。

《指定方法》

受信ポート番号の指定例を次に示します。

  • ポート番号を一つ指定する場合

     10000−10000,又は10000

  • ポート番号の範囲を指定する場合

     10000−10500

なお,0を指定した場合は,この環境変数を指定しないことになります。

《利点》

HiRDBサーバとHiRDBクライアントの間にファイアウォールが設定されていて,ファイアウォールを通過できる受信ポート番号が限られている場合,この環境変数を指定することでファイアウォールを通過するようにできます。

《留意事項》
  1. この環境変数に受信ポート番号の範囲を指定した場合,HiRDBクライアントが指定した範囲で空いているポート番号を自動的に割り当てます。指定した範囲で空いているポート番号がない場合はエラーとなります。

  2. HiRDBクライアントは,HiRDBサーバへの一回の接続で一つのポート番号を使用します。したがって,次のような場合には,一つのUAPで複数のポート番号を使用することになります。

    ・ODBCで複数の接続を使用する場合

    ・複数接続機能を使用している場合

  3. 同時に複数のUAPを実行する場合,一つのポート番号は一つのUAPでしか使用できません。したがって,同時に実行する複数のUAPに対して,同じポート番号を含む範囲を指定すると,ポート番号の割り当てが競合する可能性があります。この場合,ポート番号が不足しないように,使用するポート番号の個数の最大値より大きな個数のポート番号を含む範囲を指定してください。

  4. 指定する受信ポート番号は,OSが自動的に割り当てるポート番号の範囲と重複しないようにしてください。OSが自動的に割り当てるポート番号の範囲は,OSごとに異なります。

  5. ODBCでMicrosoft Accessなどを経由している場合は,暗黙的にHiRDBサーバと複数接続します。

  6. 多数(10個程度以上)のポート番号を含む範囲を指定する場合は,その範囲で実際に使用されるポート番号の数に対して20%程度の余裕を持たせてください。余裕がないと,空いているポート番号を探す処理で効率が低下します。

  7. HiRDBクライアント以外のプログラムが使用しているポート番号は,HiRDBクライアントでは使用できません。

  8. HiRDBクライアントが使用しているポート番号は,HiRDBクライアント以外のプログラムでは使用できません。この環境変数に指定した範囲内のポート番号を固定的に使用するサービスがある場合,そのサービスを起動できなくなる可能性があります。

  9. HiRDBクライアント用にファイアウォールを通過できるように設定されたポート番号が,HiRDBクライアント以外のプログラムから不正に使用されないように,ファイアウォールの内側のプログラムを管理してください。

(9) PDCLTRCVADDR={クライアントのIPアドレス|クライアントのホスト名}

   〜<符号なし整数>又は<識別子>((最大255バイト))

HiRDBクライアントのホストに複数の通信経路が設定されている場合,HiRDBサーバと通信をするための通信経路を特定したいときに,その通信経路に対応するIPアドレス,FQDN,又はホスト名を指定します。指定方法を次に示します。

IPアドレス:

バイトごとにピリオドで区切られた10進数で指定します。

(指定例)

PDCLTRCVADDR=172.18.131.34

FQDN:

HiRDBクライアントのホスト名とドメイン名とを,ピリオドで結んで指定します。

(指定例)

PDCLTRCVADDR=host1.soft.hitachi.co.jp

《留意事項》
  1. この環境変数を省略した場合は,クライアントマシンの標準ホスト名に対応するIPアドレスが仮定されます。クライアントマシンの標準ホスト名は,hostsファイル又はDNSなどに255バイト以内で登録してください。標準ホスト名がhostsファイル又はDNSなどに登録されていない場合はエラーになります。ただし,HiRDB/シングルサーバで,HiRDBクライアントとHiRDBサーバを同一マシンで構成している場合に,標準ホスト名がhostsファイル又はDNSなどに登録されていないときは,HiRDBサーバのホスト名のIPアドレスが仮定されます。

  2. この環境変数に不正なIPアドレス又はホスト名を指定した場合,HiRDBサーバへのCONNECT時にHiRDBサーバからの応答が受け付けられないため,5分間のタイマ監視後にエラー(SQLCODE -732)となります。

  3. 次の場合は,PDCLTRCVADDRの指定は無効になります。

    ・システム定義のpd_change_clt_ipaddrオペランドに1を指定している場合

    ・環境変数PDIPCにMEMORYを指定している場合

  4. PDCLTRCVADDRとPDHOSTの指定値の組み合わせと,使用されるクライアントのIPアドレスを次に示します。

    PDCLTRCVADDRの指定値

    PDHOST

    ループバックアドレス

    ローカルIPアドレス

    別マシンのIPアドレス

    ループバックアドレス

    PDCLTRCVADDRの指定値

    ローカルIPアドレス

    指定なし

    hostsファイルへの標準ホストの登録あり

    hostsファイルの標準ホスト

    hostsファイルへの標準ホストの登録なし

    Type4 JDBCドライバ

    PDHOSTの指定値

    KFPZ02444-Eエラー

    KFPZ02444-Eエラー

    上記以外

    PDHOSTの指定値

    PDHOSTの指定値

    KFPZ02444-Eエラー

(10) PDTMID=OLTP識別子

   〜<識別子>((4文字))

複数のOLTPからX/Openに従ったAPIを使用して一つのHiRDBサーバをアクセスする場合,それぞれのOLTPにユニークな識別子を指定します。

なお,この環境変数の指定で次に示す条件のどれかに該当する場合,どのOLTPからのトランザクションであるかが識別されないため,OLTP内でシステムダウンやトランザクション異常が発生すると,トランザクション決着の同期が合わなくなります。

《OLTP下でX/Openに従ったアプリケーションプログラムをクライアントとし,システム環境定義でHiRDB_PDTMIDを指定している場合》

HiRDB_PDTMIDの指定を優先します。PDTMIDの設定値はHiRDB_PDTMIDで指定した値に置き換わります。

(11) PDXAMODE={0|1}

この環境変数は,OLTP下のX/Openに従ったAPIを使用したUAPと連携する場合に,トランザクションの移行機能を使用するかしないかを指定します。

0:トランザクションの移行機能を使用しません。

1:トランザクションの移行機能を使用します。

なお,この環境変数の指定値については,HiRDB管理者の指示に従ってください。トランザクションの移行機能については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

《OLTP下でX/Openに従ったアプリケーションプログラムをクライアントとし,システム環境定義でHiRDB_PDXAMODEを指定している場合》

HiRDB_PDXAMODEの指定を優先します。PDXAMODEの設定値はHiRDB_PDXAMODEで指定した値に置き換わります。

《OpenTP1と連携している場合》

OpenTP1のtrnstringオペランドとPDXAMODEの指定を合わせる必要があります。

《TPBroker for C++と連携している場合》

TPBroker for C++のトランザクションの決着は,UAPとは異なるトランザクション決着プロセスを使用します。このため,PDXAMODEには1を指定する必要があります。0を指定した場合,UAPのトランザクションは決着できません。

《TUXEDOと連携している場合》

TUXEDOのグローバルトランザクションの決着は,UAPとは異なるトランザクションマネジャサーバ(TMS)を使用します。このため,PDXAMODEには1を指定してください。0を指定した場合,UAPのトランザクションは決着できません。

《TP1/EEと連携している場合(UNIX版限定)》

PDXAMODEには0を指定してください。省略した場合,及び1を指定した場合,トランザクションを決着できなくなることがあります。

(12) PDTXACANUM=1プロセス当たりのトランザクション最大同時実行数

   〜<符号なし整数>((1〜2147483647))《20》

マルチスレッド対応のX/Openに従ったAPIを使用したUAP,又はX/Openに従ったAPIの複数接続機能を使用したUAPからHiRDBをアクセスする場合,1プロセス当たりに同時実行できる最大トランザクション数を指定します。

《見積もり方法》

指定値は,次の計算式から見積もってください。

指定値=(該当するプロセスで発生する可能性があるトランザクション数)
    ×(該当するプロセスでアクセスする可能性があるHiRDB数)
TP1/EEと連携している場合:

TP1/EEの回復スレッド及び監視スレッドのスレッド数も見積もりに加えてください。

指定値=(該当するプロセスで発生する可能性があるトランザクション数
    +回復スレッド及び監視スレッドのスレッド数)
    ×(該当するプロセスでアクセスする可能性があるHiRDB数)

(13) PDXARCVWTIME=トランザクションが回復できない場合の待ち合わせ時間

   〜<符号なし整数>((0〜270))《2》(単位:秒)

X/Openに従ったAPIでHiRDBにアクセスするOpenTP1で,OpenTP1のトランザクション回復プロセス,リソースマネジャ監視プロセスでHiRDBに接続できない場合,又はHiRDBがトランザクションを回復できない場合,次にHiRDBへの接続要求をするまでの時間を指定します。

0を指定した場合は,HiRDBのトランザクション回復指示ごとに接続要求をします。

《見積もり方法》

指定値は,次の計算式から見積もってください。

指定値=a×b÷(c−d×e)
 
a:270
b:該当するHiRDBに接続するOpenTP1のトランザクション回復プロセスの総数
c:HiRDBのシングルサーバ又はシステムマネジャがあるサーバマシンの自動割り当てポート番号の総数
d:HiRDBのシングルサーバ又はシステムマネジャがあるサーバマシンの,ピーク時のポート番号使用数
e:系切り替え機能を使用している場合は2,使用していない場合は1
《留意事項》
  1. OpenTP1で多数のトランザクションが停止した場合,この環境変数に指定した時間が小さいと,HiRDBのシングルサーバ又はシステムマネジャがあるサーバマシンでポート番号不足になることがあります。このため,見積もり方法で算出した時間が省略時仮定値より大きい場合には,見積もり方法で算出した時間を指定することをお勧めします。

  2. OpenTP1のトランザクション回復プロセスが,この環境変数で指定した時間の待ち合わせに入った直後に,HiRDBのシングルサーバ又はシステムマネジャのユニットの開始が完了した場合,HiRDBに接続しているトランザクションの回復完了までの時間が長くなることがあります。

(14) PDXATRCFILEMODE={LUMP|SEPARATE

X/Openに従ったAPIを使用した接続形態での,各種トレースファイル名の形式を指定します。X/Openに従ったAPIを使用した接続形態以外の場合,PDXATRCFILEMODEの指定は無効になります。

LUMP:

各種トレースファイル名に実行プロセスIDを付けないで出力します。

UAPが非常駐で何回も実行されて,プロセスIDがその都度変わる場合には,LUMPを指定することをお勧めします。LUMPを指定した場合,非常駐のUAPを実行するたびに各種トレースファイルが増えて,OSや他プログラムの動作が不安定になることを防げます。

なお,LUMPを指定した場合,トレース情報の出力先が限定されるため,トレース出力サイズを大きくする必要があります。また,トレース出力時に別プロセスの出力と競合するため,処理時間が長くなることがあります。

SEPARATE:

各種トレースファイル名に実行プロセスIDを付けて出力します。

UAPが常駐している場合は,SEPARATEを指定することをお勧めします。

(15) PDXAAUTORECONNECT={YES|NO

TP1/EEとの連携で,トランザクション開始時にHiRDBサーバとの接続状態チェックを行い,接続が切断されていた場合,自動的に再接続するかどうかを指定します。TP1/EEとHiRDBとの接続が切断された要因が,マシン障害,又はネットワーク障害ではない場合は,この環境変数を指定していなくても自動再接続を行います。

なお,次に示す場合,この環境変数の指定は無効になります。

YES:

トランザクション開始時に自動再接続を行います。ただし,各トランザクションの開始時にHiRDBサーバと通信を行うため,トランザクション性能に影響を与えます。

NO:

トランザクション開始時に自動再接続を行いません。マシン障害,又はネットワーク障害が要因で接続が切断された場合は,再接続されないため,SQLエラーが返却されることがあります。

《留意事項》
  • HiRDBサーバとの接続状態チェックに掛かる時間は,最大でクライアント環境変数PDCWAITTIMEに指定した時間となります。

  • 自動再接続に失敗した場合は,失敗の要因となったエラーをUAPに返却します。

(16) HiRDB_PDHOST=HiRDBサーバのホスト名[,予備系HiRDBサーバのホスト名]

   〜<識別子>

接続するHiRDBサーバのホスト名を指定します。この環境変数に指定した値が,PDHOSTの設定値に置き換わります。

HiRDB/シングルサーバの場合はシングルサーバのサーバマシンのホスト名を,HiRDB/パラレルサーバの場合はシステムマネジャのサーバマシンのホスト名を指定します。

ホスト名以外に,FQDN,及びIPアドレスでも指定できます。指定方法を次に示します。

ホスト名:

システム共通定義のpdunit -xオペランドで指定したホスト名を指定します。

(指定例)

PDHOST=host1

FQDN:

HiRDBサーバのホスト名とドメイン名とを,ピリオドで結んで指定します。

(指定例)

PDHOST=host1.soft.hitachi.co.jp

IPアドレス:

IPアドレスは,バイトごとにピリオドで区切られた10進数で指定します。

(指定例)

PDHOST=172.18.131.34

《IPアドレスを引き継ぐ系切り替えをする場合》
  • UNIX版の場合

    IPアドレスを引き継ぐ場合は,現用系のホスト名を指定します。

  • Windows版の場合

    IPアドレスを引き継ぐ場合は,MSFCのネットワーク名に登録した仮想ネットワーク名を指定します。仮想ネットワークについては,マニュアル「HiRDB システム運用ガイド」を参照してください。

《IPアドレスを引き継がない系切り替えをする場合》

IPアドレスを引き継がない系切り替えをする場合,現用系及び予備系の二つのホスト名を指定してください。現用系のホスト名だけを指定すると,系が切り替わった後に,この環境変数の指定を新しく実行系になったホスト名に変更する必要があります。

(17) HiRDB_PDNAMEPORT=HiRDBサーバのポート番号

   〜<符号なし整数>((5001〜65535))

HiRDBサーバのポート番号を指定します。接続するHiRDBサーバのシステム定義のpd_name_portで指定した値を指定してください。この環境変数に指定した値が,PDNAMEPORTの設定値に置き換わります。

マルチHiRDBの場合,それぞれのHiRDBサーバでポート番号が異なります。したがって,接続するHiRDBサーバのポート番号を指定してください。

pd_name_portについては,マニュアル「HiRDB システム定義」を参照してください。

(18) HiRDB_PDTMID=OLTP識別子

   〜<識別子>((4文字))

複数のOLTPからX/Openに従ったAPIを使用して一つのHiRDBサーバをアクセスする場合,それぞれのOLTPにユニークな識別子を指定してください。この環境変数に指定した値が,PDTMIDの設定値に置き換わります。

なお,この環境変数の指定で次に示す条件のどれかに該当する場合,どのOLTPからのトランザクションであるかが識別されないため,OLTP内でシステムダウンやトランザクション異常が発生すると,トランザクション決着の同期が合わなくなります。

(19) HiRDB_PDXAMODE={0|1}

OLTP下のX/Openに従ったAPIを使用するUAPをクライアントとする場合に,トランザクションの移行機能を使用するかしないかを指定します。この環境変数に指定した値が,PDXAMODEの設定値に置き換わります。

0:トランザクションの移行機能を使用しません。

1:トランザクションの移行機能を使用します。

なお,この環境変数の指定値については,HiRDB管理者の指示に従ってください。トランザクションの移行機能については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

(20) PDUSER=認可識別子[/パスワード]

   〜《パスワードなしのカレントユーザ名》

この環境変数は,Windows環境の場合は省略できません。UNIX環境の場合は省略できます。

認可識別子,及びパスワードを指定します。「認可識別子/パスワード」の形式で指定します。パスワードの指定が必要ない(パスワードのないユーザに対して設定する)場合は,パスワードを省略できます。

認可識別子,パスワードはそれぞれ大文字,小文字の指定に関係なく大文字として扱われます。ただし,小文字を引用符で囲んだ場合は,小文字として扱われます。

《注意事項》
  • OpenTP1を使用する場合は,システム環境変数にPDUSERを登録しないでください。システム環境変数にPDUSERを登録すると,OpenTP1起動時にアボートコードpsti0rfを出力してHiRDBが終了します。

《留意事項》
  1. OpenTP1下のUAPをクライアントとする運用形態の場合,「'認可識別子/パスワード'」の形式で指定します。また,認可識別子,パスワードに英小文字を使用する場合は,「'"認可識別子"/"パスワード"'」の形式で指定してください。

  2. パスワードを省略する場合,「認可識別子」だけの形式で指定すると,ユティリティによってはパスワードの入力を要求するものがあります。このような場合は,「認可識別子/パスワード」の形式で,パスワードに任意の文字列を指定してください。また,UAPからコマンドを実行する(COMMAND EXECUTEを実行する)場合,パスワードは省略できません。

  3. OSログインユーザの簡易認証機能を使用してHiRDBに接続する場合は,ユーザ名及びパスワードの両方に半角ハイフン( - )を指定してください。その際,半角ハイフンを引用符( " )で囲むこともできます。

(21) PDCLTAPNAME=実行するUAPの識別名称

   〜<文字列>((30文字))《Unknown》

HiRDBサーバに対してアクセスするUAPの識別情報(UAP識別子)を指定します。これは,どのUAPを実行しているのかを認識するための名称です。

ここで指定した名称は,次の各情報のUAP名称として表示されます。

《留意事項》
  1. UAPの識別名称に英数字以外の文字を使用した場合は,pdcancelコマンドを実行できないことがありますので,英数字だけで構成される名称にすることをお勧めします。

  2. 次の文字列は,UAPの識別名称に使用しないでください。

    ・「pd」で始まる文字列

    ・「hds」で始まる文字列

    ・「0」で始まる文字列

  3. Type4 JDBCドライバ使用時の省略値については「接続情報の優先順位」を参照してください。

注※

pdで始まる文字列をUAPの識別名称に使用した場合,そのUAPはシンクポイントダンプ有効化のスキップ回数監視機能の監視対象から除外されることがあります。

(22) PDCLTLANG={SJIS|CHINESE|UJIS|C|UTF-8|CHINESE-GB18030}

埋込み型UAPのソースファイルの記述に使われている文字コード種別を指定します。

この環境変数は,SQLプリプロセサが使用するので,SQLプリプロセサの実行時に設定します。この環境変数をUAPの実行時に設定する必要はありません。

SJIS:

シフトJIS漢字コードを使う場合に指定します。Linux版の場合にシフトJIS漢字コードを使うときは,この環境変数で設定してください。

CHINESE:

EUC中国語漢字コードを使う場合に指定します。

UJIS:

EUC日本語漢字コードを使う場合に指定します。ただし,Windows版の場合はUJISを指定できません。

C:

単一バイト文字コードを使う場合に指定します。

UTF-8:

Unicode(UTF-8又はIVS対応UTF-8)を使う場合に指定します。

CHINESE-GB18030:

中国語漢字コード(GB18030)を使う場合に指定します。

《留意事項》
  1. PDCLTLANGに上記以外の値を設定するとエラーになります。

  2. Windows版の場合に,UJISを設定するとエラーになります。

  3. Windows版の場合に,この環境変数を省略すると,SJISが仮定されます。

  4. UNIX版の場合に,この環境変数を省略すると,環境変数LANGで指定した文字コード種別が仮定されます。SQLプリプロセサの実行時に設定する環境変数LANGについては,「UNIX環境でのプリプロセス」 を参照してください。

(23) PDLANG={UTF-8|UTF-8_IVS|SJIS|CHINESE|CHINESE-GB18030|ANY}

《UNIX版のHiRDBクライアントの場合》

HiRDBサーバに接続する際に,HiRDBサーバの文字コード種別(サーバがUNIX版の場合はpdsetupコマンド,Windows版の場合はpdntenvコマンドで指定した文字コード種別)と,クライアント側で指定した文字コード種別が一致するかチェックする場合,HiRDBサーバの文字コード種別を指定します。文字コード種別が一致しない場合はエラーとなります。

HiRDBサーバの文字コード種別をチェックしない場合はANYを指定します。

通常はANYを指定してください。ANYを指定すると,HiRDBサーバの文字コード種別に関係なくサーバに接続できます。

HiRDBサーバの文字コード種別をチェックする場合の詳細は,「文字コード種別についての注意事項」を参照してください。

《Windows版のHiRDBクライアントの場合》

この環境変数は無効です。指定しても無視されます。HiRDBサーバに接続する際に,HiRDBサーバの文字コード種別をチェックしません。

(24) PDDBLOG={ALL|NO}

UAPを実行するときに,データベースの更新ログを取得するかしないかを指定します。

ALL:

ログ取得モードでUAPを実行します。

ALLを指定すると,障害対策のための運用が簡単になりますが,大量のデータを更新する場合,処理に時間が掛かります。

NO:

ログレスモードでUAPを実行します。

UAPの実行途中で異常終了した場合,このトランザクションで更新したデータベースは回復されません。NOを指定する場合,データベースの更新ログを取得しない分,処理時間を短縮できますが,UAPの実行前後にバックアップを取得する必要があるので,必ずHiRDB管理者の許可を受けてください。

ログレスモードでUAPを実行するときの方法については,マニュアル「HiRDB システム運用ガイド」を参照してください。

次に示すログは,この環境変数の指定に関係なく取得されます。

(25) PDEXWARN={YES|NO

サーバから警告付きのリターンコードを受け取るかどうかを指定します。

YES:警告付きのリターンコードを受け取ります。

NO:警告付きのリターンコードを受け取りません。

この環境変数にYESを指定した場合,SQLCODEが0,又は+100以外をすべてエラーとして処理しているUAP(ストアドプロシジャを含む)は,エラーの判定方法を変更する必要があります。エラーの判定方法については,「SQLのエラーの判定と処置」を参照してください。

(26) PDSUBSTRLEN={3|4|5|6|7|8|9|10}

1文字を表現する最大バイト数を指定します。

セットアップした文字コード種別によって,推奨値と指定できる値の範囲が異なります。セットアップした文字コード種別と,対応する推奨値,指定できる値を次に示します。

HiRDBサーバをセットアップした文字コード種別

推奨値

HiRDBサーバで有効な値

utf-8

4

3〜6

utf-8_ivs

8

3〜10

上記以外(この環境変数は無効)

(凡例)

−:この環境変数は無効となるため,推奨値,有効な値はありません。

この環境変数は,文字コード種別をutf-8,又はutf-8_ivsでセットアップした場合にだけ有効になり,スカラ関数SUBSTRの結果の長さに影響します。SUBSTRの詳細については,マニュアル「HiRDB SQLリファレンス」を参照してください。

《システム定義との関係》

この環境変数を省略すると,システム共通定義のpd_substr_lengthオペランドの指定値が仮定されます。

《注意事項》

この環境変数を指定する場合の注意事項は,マニュアル「HiRDB システム定義」のpd_substr_lengthオペランドを参照してください。

(27) PDCLTCNVMODE={AUTO|NOUSE|UJIS|UJIS2|UTF8|UTF8MS|UTF8_TXT|UTF8_EX|UTF8_EX2|UTF8MS_TXT|UCS2_UJIS|UCS2_UJIS2|UCS2_UTF8|UOC}

HiRDBサーバとHiRDBクライアントの文字コード種別が異なる場合,文字コードを変換するかどうかを指定します。HiRDBクライアントがシフトJIS漢字コード及びUCS-2,HiRDBサーバがEUC日本語漢字コード及びUnicodeのときだけ文字コード変換ができます。

指定値とその内容を次に示します。

指定値

内容

AUTO

HiRDBクライアントが自動的にHiRDBサーバの文字コード種別を調査して,文字コード変換をします。HiRDBクライアントがシフトJIS漢字コードで,HiRDBサーバがEUC日本語漢字コード又はUnicodeの場合に,文字コード変換ができます。AUTOを指定した場合,指定値としてはNOUSE,UJIS,又はUTF8が設定されます。

NOUSE

文字コード変換をしません。文字コード変換をしないで,データはそのまま受け渡しします。

UJIS

HiRDBサーバの文字コードを調査しないで,HiRDBクライアントはシフトJIS漢字コードで,HiRDBサーバはEUC日本語漢字コードとして,文字コード変換をします。また,可変長文字列型(VARCHAR,MVARCHAR,及びNVARCHAR)のデータを受け取る場合,SQL記述領域が指すSQLDATA領域はSQLLEN分の空白でクリアします。

UJIS2

UJISと同じですが,可変長文字列型(VARCHAR,MVARCHAR,及びNVARCHAR)のデータを受け取る場合,SQL記述領域が指すSQLDATA領域の空白でクリアしません。

UTF8

HiRDBクライアントはシフトJIS漢字コードで,HiRDBサーバはUnicode(UTF-8)として,文字コード変換をします。ただし,可変長文字列型(VARCHAR及びMVARCHAR)のデータを受け取る場合,SQL記述領域が指すSQLDATA領域はSQLLEN分の空白でクリアします。

UTF8MS

UTF8と同じですが,HiRDBサーバのコード系がMS-Unicode,HiRDBクライアントのコード系がWindows符号化文字集合として変換をします。

UTF8_TXT

UTF8と同じですが,固定長文字列型(CHAR及びMCHAR),可変長文字列型(VARCHAR及びMVARCHAR)のデータは文字コード変換しません。

UTF8_EX

UTF8と同じですが,HiRDBサーバからバックスラッシュ(0x5C)を受け取った場合,HiRDBクライアントは文字コードを変換しないで,SJISの\記号(0x5C)として扱います。Unicode(UTF-8)での\記号(0xC2A5)を受け取った場合は,UTF8指定時と同様にSJISの\記号(0x5C)に変換します。

HiRDBクライアントでSJISの\記号(0x5C)を入力した場合は,文字コードを変換しないで0x5CをHiRDBサーバへ受け渡します。

UTF8_EX2

UTF8_EXと同じですが,HiRDBクライアントでSJISの\記号(0x5C)を入力した場合は,UTF8指定時と同様にUnicode(UTF-8)での\記号(0xC2A5)に文字コードを変換してHiRDBサーバへ受け渡します。

UTF8MS_TXT

UTF8MSと同じですが,固定長文字列型(CHAR及びMCHAR),可変長文字列型(VARCHAR及びMVARCHAR)のデータは文字コード変換しません。

UCS2_UJIS

HiRDBクライアントはUCS-2で,HiRDBサーバはEUC日本語漢字コードとして,文字コードを変換します。HiRDBサーバの文字コードがEUC日本語漢字コード以外の場合,HiRDBサーバ接続時にエラーとなります。UCS2_UJISは,Unicode対応のODBC3.0ドライバ,ODBC3.5ドライバ,HiRDBデータプロバイダ for .NET Framework,又はバージョン02-06以降のHiRDB SQL Executerからアクセスする場合にだけ指定できます。

UCS2_UJIS2

UCS2_UJISと同じですが,図「UCS2_UJISとUCS2_UJIS2の変換差異」に示す差異があります。

UCS2_UTF8

HiRDBクライアントはUCS-2で,HiRDBサーバはUnicode(UTF-8)として,文字コードを変換します。HiRDBサーバの文字コードがUnicode(UTF-8)以外の場合,HiRDBサーバ接続時にエラーとなります。UCS2_UTF8は,Unicode対応のODBC3.0ドライバ,ODBC3.5ドライバ,HiRDBデータプロバイダ for .NET Framework,又はバージョン02-06以降のHiRDB SQL Executerからアクセスする場合にだけ指定できます。

UOC

HiRDBクライアントは文字コード変換を行わないで,すべての文字についてUOCをコールして文字コードを変換します。

このオプションを指定する場合はPDCLTCNVUOCLIB,PDCLTCNVUOCFUNC及びPDCLTCNVBYTERATIOを必ず指定してください。指定値がない場合,サーバ接続時にクライアント環境定義指定不正(KFPA11724-E)でSQLエラーになります。

また,このオプションを指定して各国文字データ型でデータを設定又は取得する場合,クライアントの文字コードにUTF-8は使用できません。クライアントの文字コードがUTF-8の場合は,SQL実行時にパラメタのデータ型不正(KFPA11311-E)でSQLエラーになります。

HiRDB ODBC3.5ドライバ及び,HiRDBデータプロバイダ for .NET Frameworkからアクセスする場合,このオプションは表「HiRDB ODBC3.5ドライバ及びHiRDBデータプロバイダ for .NET Framework使用時の指定可否」で指定可能としているときだけ指定できます。

HiRDBが提供するクライアントライブラリには,共用ライブラリとアーカイブライブラリがあります。このオプションは共用ライブラリを使用しているときだけ指定できます。アーカイブライブラリを使用したときは,指定値を無視します。

注※

変換する文字コードの範囲は,UCS-4の範囲となります。

表6‒30 HiRDB ODBC3.5ドライバ及びHiRDBデータプロバイダ for .NET Framework使用時の指定可否

名称

プラットフォーム

指定可否

HiRDB ODBC3.5ドライバ

Windows

UNIX

UNICODE対応ODBC関数使用時

非UNICODE対応ODBC関数使用時

HiRDBデータプロバイダ for .NET Framework

Windows

(凡例)

○:指定できます

△:クライアントの文字コードがSJISの場合だけ指定できます

AUTOは,HiRDBサーバの文字コード種別が特定できない場合に指定します。UJISは,HiRDBサーバの文字コード種別がEUC日本語漢字コードと特定できる場合に指定します。

変換対象となる文字列を次に示します。

HiRDBクライアントとHiRDBサーバ間の文字コードの組み合わせによる,PDCLTCNVMODEの指定値を次に示します。

UOCを指定した場合は,クライアント側の文字コードを限定しないため,すべての組み合わせで文字コード変換ができます。

HiRDBクライアントのアプリケーションで使用する文字コード

HiRDBサーバ側の文字コード

SJIS

Unicode(UTF-8),Unicode(IVS対応UTF-8)

UJIS

C

GB18030

SJIS

UTF8,UTF8MS,UTF8_TXT,UTF8_EX,UTF8_EX2,UTF8MS_TXT

UJIS,UJIS2

NOUSE

×

Unicode(UTF-8)

×

×

NOUSE

×

UJIS

×

×

NOUSE

×

UCS-2

×

UCS2_UTF8

UCS2_UJIS,UCS2_UJIS2

×

×

C

NOUSE

NOUSE

NOUSE

NOUSE

×

GB18030

×

×

×

×

(凡例)

×:変換できないため,指定できません。

−:コード変換が不要のため,指定する必要がありません。

注※

PDCLTCNVMODEにUOCを指定している場合,各国文字データ型のデータ設定及び取得はできません。各国文字データ型のデータ設定及び取得を行おうとした場合,SQL実行時にパラメタのデータ型不正(KFPA11311-E)でSQLエラーになります。

UTF8,UTF8_EX,及びUTF8_EX2指定時の文字コード変換の差異(HiRDBサーバから受け取った文字の場合)を次の表に示します。

表6‒31 UTF8,UTF8_EX,及びUTF8_EX2指定時の文字コード変換の差異(HiRDBサーバから受け取った文字の場合)

HiRDBサーバから受け取った文字(Unicode(UTF-8))

PDCLTCNVMODEの指定値

HiRDBクライアント変換後の文字コード(SJIS)

0x5C(バックスラッシュ)

UTF8

0x815F(全角バックスラッシュ)

UTF8_EX

0x5C(\記号)

UTF8_EX2

0xC2A5(\記号)

UTF8

0x5C(\記号)

UTF8_EX

UTF8_EX2

注※

文字コードを変換しません。

UTF8,UTF8_EX,及びUTF8_EX2指定時の文字コード変換の差異(HiRDBクライアントから入力した文字の場合)を次の表に示します。

表6‒32 UTF8,UTF8_EX,及びUTF8_EX2指定時の文字コード変換の差異(HiRDBクライアントから入力した文字の場合)

HiRDBクライアントから入力した文字(SJIS)

PDCLTCNVMODEの指定値

HiRDBクライアント変換後の文字コード(Unicode(UTF-8))

0x5C(\記号)

UTF8

0xC2A5(\記号)

UTF8_EX

0x5C(バックスラッシュ)

UTF8_EX2

0xC2A5(\記号)

注※

文字コードを変換しません。

《留意事項》
  • 文字列中に2バイト外字が含まれている場合には,"#"の全角文字と置き換えます。ただし,クライアント環境定義PDCLTGAIJIDLL及びPDCLTGAIJIFUNCを指定している場合を除きます。また,EUCの3バイト外字は使用できません。

  • 半角片仮名文字はシフトJIS漢字コードでは1バイト,EUC日本語漢字コードでは2バイトのコードであるため,半角片仮名文字を含む文字列は変換の前後で長さが変わります。サーバから受け取った文字列に半角片仮名が含まれていると,変換後の文字列は短くなります。サーバへ送る文字列に半角片仮名が含まれていると,変換後の文字列は長くなります。

    また,Unicodeの場合は,ASCII(0x0〜0x7f)以外の文字は2バイトから4バイトの文字として表現されるため,変換の前後で長さが変わります。サーバから受け取った文字列にASCII以外の文字列が含まれていると,変換後の文字列は短くなります。サーバへ送る文字列にASCII以外の文字列が含まれていると,変換後の文字列は長くなります。

    長さが変わる場合,次のようになります。

  1. SQL記述領域に設定されるデータコードがCHAR,MCHARの文字列の場合

    文字列長が短くなった場合(HiRDBサーバから受け取るUJISの文字列に半角片仮名文字が含まれるとき,又はUnicodeの文字列にASCII以外の文字が含まれるとき)は,元の長さまで半角空白(0x20)を埋めます。

    文字列長が長くなった場合(HiRDBサーバへ渡すUJIS変換文字列に半角片仮名文字が含まれるとき,又はUnicode変換文字列にASCII以外の文字列が含まれるとき)は,文字列を切り捨てないで変換後の文字列をそのままHiRDBサーバへ渡します。

    したがって,文字列を格納する列の長さを,十分に確保する必要があります。また,すべての文字が半角片仮名文字と特定できる場合は,文字数の2倍のバイト数の領域(Unicodeの場合は文字数の3倍のバイト数の領域)が必要です。

  2. SQL記述領域に設定されるデータコードがVARCHAR,MVARCHARの文字列,SQL文中の文字列,列名記述領域に格納される列名,SQL連絡領域に格納されるエラーメッセージ,及び型名記述領域に格納されるデータ型名の場合

    文字列が短くなった場合,文字列長を変換後の文字列長に変更します。

    文字列が長くなった場合,文字列長を変換後の文字列長に変更します。

    すべての文字が半角片仮名文字と特定できる場合は,文字数の2倍のバイト数の領域(Unicodeの場合は文字数の3倍のバイト数の領域)が必要です。

  3. SQL記述領域からポイントされるNCHAR,NVARCHARの文字列(データコードがNCHAR,NVARCHAR)の場合

    半角片仮名文字を使用できないため,変換しても長さは変わりません。

  • バイナリデータを格納するためにCHAR,VARCHARの列を使用している場合,アクセスのときに文字コード変換によって予期しない変換をすることがあります。この場合,文字コード変換をしないようにしてください(PDCLTCNVMODEにNOUSEを指定してください)。

  • BLOB型のデータは文字コード変換ができません。例えば,テキストデータを格納するためにBLOB型の列を使用している場合など,文字コード変換はUAPで実行してください。

  • シフトJIS漢字コードとUnicodeでの文字のマッピングには,次の2種類があります。

    JIS方式:

    JIS X 0221で規定されたマッピングに従います。PDCLTCNVMODEにUTF8MS及びUTF8MS_TXT以外を指定した場合,JIS方式となります。

    変換対象:シフトJIS〜JIS X0221

    漢字範囲:JIS第1水準,JIS第2水準

    MS方式:

    Microsoft社が規定したマッピングに従います。PDCLTCNVMODEにUTF8MS又はUTF8MS_TXTを指定した場合,MS方式となります。

    変換対象:Windows符号化文字集合〜MS-UNICODE

    漢字範囲:JIS第1水準,JIS第2水準,IBM拡張漢字,NEC選定IBM拡張漢字,NEC特殊文字

  • シフトJIS漢字コードとWindows符号化文字集合とでは,外字コードの範囲が異なるので注意してください。

  • 取り扱える漢字が多いMS方式は,PDCLTCNVMODEでUTF8MS又はUTF8MS_TXTを指定するとマッピングできます。MS方式を使用する場合は,マッピングの差異によって発生する可能性がある問題点を,十分に把握してから使用してください。

  • UJIS用のユーザ定義外字変換DLLを,Unicodeの外字変換にはそのまま使用できません。Unicodeの外字変換をする場合は,Unicodeの外字変換機能を追加したユーザ定義外字変換DLLを使用する必要があります。

《クライアントの文字コードがUCS-2の場合の留意事項》
  • 文字コード変換によって,SQL連絡領域に設定されるエラーメッセージ(SQLERRMC)が254バイトを超える場合があります。その場合,列名及び型名は254バイトまで設定され,それ以降は切り捨てられます。

  • CHAR,MCHAR,VARCHAR,又はMVARCHARのデータを受け取る場合,SQL記述領域のデータの長さ(SQLLEN)は,最大定義長の2倍必要となります。

  • 文字コード変換後のデータは,次に示す値を超えて受け取ることはできません。

    ・CHAR,NCHAR,及びMCHARの場合は30,000バイト

    ・VARCHAR,NVARCHAR,及びMVARCHARの場合は32,000バイト

    したがって,サーバに格納されているデータは,固定文字列型の場合は15,000バイト,可変長文字列型の場合は16,000バイトを超えると,検索できないことがあります。

  • 入力パラメタで指定するデータ長は,次に示す値を超えてはいけません。

    ・CHAR,NCHAR,及びMCHARの場合は30,000バイト

    ・VARCHAR,NVARCHAR,MVARCHARの場合は32,000バイト

  • SQL記述領域に設定されるデータコードがCHAR,MCHAR,VARCHAR,又はMVARCHARで,その文字列をサーバに送る場合,文字列長は変換後の長さに変更されます(固定長の場合は,SQLLENが変換後の文字列長に変更されます)。

  • UCS-2の文字列の先頭にBOMは付けないでください。BOMが付いた文字列の場合,正しく変換されません。UCS-2のバイトオーダは,プログラムを実行するホストのバイトオーダとして処理されます。

  • UCS2_UJISとUCS2_UJIS2の変換差異を次の図に示します。

    図6‒2 UCS2_UJISとUCS2_UJIS2の変換差異

    [図データ]

    [図データ]

    [図データ]

(28) PDCLTGAIJIDLL=ユーザ定義外字変換DLLファイル名

   〜<文字列>

この環境変数はWindows版の場合にだけ有効になります。

ユーザ定義外字変換DLLファイルの名称を指定します。文字コード変換時,この環境変数はPDCLTCNVMODEに次の値を指定している場合,無効になります。

また,この環境変数を省略した場合,2バイト外字を全角文字"#"に変換します。

(29) PDCLTGAIJIFUNC=ユーザ定義外字変換関数名

   〜<文字列>

この環境変数はWindows版の場合にだけ有効になります。

ユーザ定義外字変換関数の名称を指定します。文字コード変換時,この環境変数はPDCLTGAIJIDLLを指定しているときだけ有効になります。

《ユーザ定義外字関数の記述形式》

ユーザ定義外字変換関数の記述形式を次に示します。

  void __stdcall ユーザ定義外字変換関数名 (
     long        direct,
     unsigned char far *instr,
     unsigned char far *outstr) ;

DLLはMicrosoft Visual C++で作成してください。

DLLの作成及び関数のエクスポートは,[方法1]または[方法2]のどちらかで行ってください。

[方法1]

関数宣言の前に「_declspec(dllexport)」を追加し,MAPファイル又はMicrosoft Visual C++のdumpbinコマンドを使用してエクスポート関数名を調べる。

(例)DLL名をMyDll,ユーザ定義外字変換関数名をSample1とした場合

1.関数の記述形式
_declspec(dllexport) void __stdcall Sample1(
        long                direct,
        unsigned char far * instr,
        unsigned char far * outstr );
2.エクスポート関数名の調査方法

次のどちらかの方法で調査してください。

  • DLL作成時に,プロジェクトの設定でMAPファイルを出力するように指定し,MAPファイルからエクスポート関数名を確認してください。

  • Microsoft Visual C++のdumpbinコマンド(dumpbin /exports DLL名)を使用してエクスポート関数名を確認してください。

次にdumpbinコマンドの出力例を示します。

File Type: DLL
 
  Section contains the following exports for MyDll.dll
 
    00000000 characteristics
    50BF0381 time date stamp Wed Dec 05 17:19:13 2012
        0.00 version
           1 ordinal base
           3 number of functions
           3 number of names
 
    ordinal hint RVA      name
          1    0 00001160 Sample1@32 = Sample1@32 …… 下線部がエクスポート関数名になります
3.PDCLTGAIJIFUNCの指定値
Sample1@32
[方法2]

DLL作成時にモジュール定義(.def)ファイルを同時に作成し,モジュール定義ファイルにエクスポート関数名を指定する。

(例) DLL名をMyDll,ユーザ定義外字変換関数名をSample1とした場合

1.関数の記述形式
void __stdcall Sample1(
long                direct,
        unsigned char far * instr,
        unsigned char far * outstr );
2.エクスポート関数名の指定方法

モジュール定義ファイルに次の内容を記載してください。

LIBRARY    MyDll
EXPORTS
           Sample1
3.PDCLTGAIJIFUNCの指定値
Sample1

[入力]

direct

変換方向を表します。1〜6のどれかが設定されます。

1:HiRDBクライアントからHiRDBサーバへのデータ変換

2:HiRDBサーバからHiRDBクライアントへのデータ変換

3:HiRDBクライアントからHiRDBサーバへのデータ変換(Unicodeの場合)

4:HiRDBサーバからHiRDBクライアントへのデータ変換(Unicodeの場合)

5:HiRDBクライアントUCS-2からHiRDBサーバUJISへのデータ変換

6:HiRDBサーバUJISからHiRDBクライアントUCS-2へのデータ変換

7:HIRDBクライアントUTF-16(サロゲートペア)からHiRDBサーバUJISへのデータ変換

注※

外字変換DLLがUnicodeを受け渡す場合,UCS-2形式(UTF-16形式)の2バイト又は4バイトとなります。UTF-8形式への変換はライブラリが行います。

instr

変換対象の外字格納領域へのポインタを表します。領域サイズは,directに7以外が設定された場合は2バイト,7が設定された場合は4バイトになります。

instr[0]=変換対象の外字の1バイト目

instr[1]=変換対象の外字の2バイト目

instr[2]=変換対象の外字の3バイト目

instr[3]=変換対象の外字の4バイト目

UCS-2(Unicode)の外字コードの場合,バイト列はビッグエンディアンのバイト列です。例えば,「東」の場合は,1バイト目に0x67,2バイト目に0x71が設定されます。

outstr

変換後の外字格納領域へのポインタを表します。領域サイズは,directに6以外が設定された場合は2バイト,6が設定された場合は4バイトになります。

outstr[0]=変換後の文字コード(外字)の1バイト目

outstr[1]=変換後の文字コード(外字)の2バイト目

outstr[2]=変換後の文字コード(外字)の3バイト目

outstr[3]=変換後の文字コード(外字)の4バイト目

コード変換できなかった場合でも,変換値として妥当な値を設定してください(渡された値を無条件で使用します)。

UCS-2(Unicode)の外字コードの場合,バイト列はビッグエンディアンのバイト列で返す必要があります。例えば,「東」の場合は,1バイト目に0x67,2バイト目に0x71を設定してください。

[出力]

*outstr

変換後の文字列を格納します。

注意事項

*instrと*outstrへ設定する文字コードの組み合わせを次の表に示します。

表6‒33 *instrと*outstrへ設定する文字コードの組み合わせ

direct

instr

outstr

PDCLTCNVMODE

1

シフトJIS漢字コードの外字コード

EUC日本語漢字コードの外字コード

UJIS又はUJIS2

2

EUC日本語漢字コードの外字コード

シフトJIS漢字コードの外字コード

UJIS又はUJIS2

3

シフトJIS漢字コードの外字コード

Unicodeの外字コード

UTF8又はUTF8_TXT

Windows符号化文字集合の外字コード

MS-Unicodeの外字コード

UTF8MS又はUTF8MS_TXT

4

UnicodeのBMP(基本多言語面)の外字コード

シフトJIS漢字コードの外字コード

UTF8又はUTF8_TXT

MS-Unicodeの外字コード

Windows符号化文字集合の外字コード

UTF8MS又はUTF8MS_TXT

5

UnicodeのBMP(基本多言語面)の外字コード,及びUnicodeのBMP(基本多言語面)に配置されたJISの第3水準,第4水準の漢字コード

EUC日本語漢字コードの外字コード

UCS2_UJIS又はUCS2_UJIS2

6

EUC日本語漢字コードの外字コード

任意のUTF-16形式のコード

UCS2_UJIS又はUCS2_UJIS2

7

Unicodeのサロゲートペア

EUC日本語漢字コードの外字コード

UCS2_UJIS又はUCS2_UJIS2

各文字コードの外字コードの範囲を次の表に示します。

表6‒34 各文字コードの外字コードの範囲

文字コード

1バイト目

2バイト目

シフトJIS漢字コード

0xf0〜0xfc

0x40〜0x7e

0x80〜0xfc

Windows符号化文字集合

0xf0〜0xfa

0x40〜0x7e

0x80〜0xfc

EUC日本語漢字コード

0xf5〜0xfe

0xa1〜0xfe

Unicode及びMS-Unicode

0xe0〜0xf8

0x00〜0xff

注※ 0xe000〜0xe757,0xf8f0〜0xf8ffには,Microsoft社が独自に文字を割り当てているため,これらの外字コードではユーザ定義外字変換DLLを呼び出しません。

サロゲートペアの範囲を次の表に示します。

表6‒35 サロゲートペアの範囲

エンコード

上位サロゲート

下位サロゲート

1バイト目

2バイト目

1バイト目

2バイト目

UTF-16

0xd8〜0xdb

0x00〜0xff

0xdc〜0xdf

0x00〜0xff

(30) PDCLTCNVUOCLIB=UOCのライブラリファイル名

   〜<文字列>((最大256バイト))

UOCによる文字コード変換をする場合に,UOCを格納したライブラリファイルの名称を絶対パスで指定します。

この環境変数はPDCLTCNVMODEにUOCを指定しているときだけ有効になります。UOC以外の値を指定している場合は,指定値を無視します。

このクライアント環境定義に指定する絶対パスに,空白や括弧が含まれるときは指定値の前後を二重引用符(")で囲んでください。

(31) PDCLTCNVUOCFUNC=UOCの文字コード変換関数名

   〜<文字列>((最大30バイト))

UOCによる文字コード変換をする場合に,文字コード変換関数の名称を指定します。

この環境変数は,PDCLTCNVUOCLIBを指定しているときだけ有効になります。

PDCLTCNVUOCLIBに指定したライブラリの読み込みと,PDCLTCNVUOCFUNCに指定した関数アドレスの解決は,UAPからのCONNECT要求時のサーバ接続確立前に行います。ライブラリの読み込み失敗又は関数アドレス解決失敗時は,文字コード変換処理失敗(KFPA19803-E)でSQLエラーを返却します。

《UOCの文字コード変換関数の記述形式》

文字コード変換関数の記述形式を次に示します。

UNIX版の場合
void_文字コード変換関数名 (
long                         direct ,
unsigned int        inlen ,
unsigned char     * insetr ,
unsigned int        outlen ,
unsigned char     * outstr ,
unsigned int      * cnvlen ,
int                         * errinf ,
unsigned char     * errmsg ) ;
Windows版の場合
void __stdcall 文字コード変換関数名 (
long                          direct ,
unsigned int    inlen ,
unsigned char * insetr ,
unsigned int    outlen ,
unsigned char * outstr ,
unsigned int  * cnvlen ,
int                          * errinf ,
unsigned char    * errmsg ) ;

DLLの作成方法及び関数のエクスポート方法は,「PDCLTGAIJIFUNC」の「ユーザ定義外字変換関数の記述形式」を参照してください。

[入力]

direct:

変換方向を表します。次のどちらかが設定されます。

1:HiRDBクライアントからHiRDBサーバへのデータ変換

2:HiRDBサーバからHiRDBクライアントへのデータ変換

inlen:

変換対象の文字列の長さ(バイト数)を表します。

*instr:

変換対象の文字列格納領域へのポインタを表します。

outlen:

変換後の文字列格納領域の長さ(バイト数)を表します。

[出力]

*outstr:

変換後の文字列格納領域へのポインタを表します。

文字コード変換後の文字列を設定してください。終端のNULLターミネイトは不要です。

文字コード変換後の文字列長がoutlenの値より大きくなる場合は,文字コード変換後の文字列をoutlen分まで設定してください。

*cnvlen:

変換後の文字列の長さ(バイト数)を格納する領域のポインタを表します。

文字コード変換後の文字列長(バイト数)を設定してください。

*errinf:

文字コード変換時に発生したエラー情報を格納する領域のポインタを表します。

この引数に設定する値及び設定値によるHiRDBクライアントの処理を次の表に示します。

表6‒36 errinfの設定値とHiRDBクライアントの処理

設定値

内容

HiRDBクライアントの処理

0

正常終了(エラーなし)

文字コード変換成功とし,その後の処理を続行します。

-1

領域不足

文字コード変換後の文字列の長さ(バイト数)がoutlenより大きくなる場合に,この値を設定してください。

領域不足が発生しているため,変換対象のデータによって,表 「領域不足(errinf=-1)時のHiRDBクライアントの処理」に示す動作をします。

-2

文字コード変換エラー

文字コード変換処理でエラーが発生した場合に,この値を設定してください。

文字コード変換失敗のため,変換対象のデータによって,次の処理をします。

  • エラーメッセージの場合

    文字コード変換前に発生していたエラー情報をUAPに返却します。また,クライアントエラーログに,文字コード変換前に発生していたエラー情報及び,KFPZ03000-Iを設定します。

  • 上記以外の場合

    UAPにKFPA19803-Eを返却します。

表6‒37 領域不足(errinf=-1)時のHiRDBクライアントの処理

変換対象のデータ

HiRDBクライアントの処理

クライアントからサーバへの変換(direct=1)の場合

サーバからクライアントへの変換(direct=2)の場合

SQL文中の文字列

文字コード変換失敗として,UAPにKFPA19803-Eを返却します。

SQL記述領域中に設定されるデータコードがCHAR,VARCHAR,NCHAR,NVARCHAR,MCHAR,MVARCHARの文字列

SQL連絡領域のSQLWARN1を設定します。

標識変数の指定がある場合,標識変数には切り捨て後の長さを設定します。

文字コード変換成功として,その後の処理を続行します。

次のSQL文で取得する,列名及びユーザ定義型名

・DESCRIBE文

・DESCRIBE TYPE文

・PREPARE文

文字コード変換成功として,その後の処理を続行します。

(凡例)

−:存在しない組み合わせ

注※

HiRDBクライアントでは列名,ユーザ定義型名を取得するために確保する領域の長さが決まっています。そのため,文字コード変換によってデータ長が大きくなる場合は,次に示す最大長を超えないよう注意してください。

・列名:30バイト

・ユーザ定義型名の認可識別子:8バイト

・ユーザ定義型名のデータ型識別子:30バイト

errmsg:

文字コード変換でエラーが発生した場合(errinf=-2),エラーの詳細を示すメッセージテキストを格納する領域のポインタを表します。メッセージテキストの最大長は128バイト(終端NULL含む)です。テキスト終端はNULLで終了してください。

この引数に設定したメッセージテキストは,KFPA19803-Eの詳細情報として,SQLCA及びクライアントエラーログに出力されます。

UOCは処理結果に応じて,次の表で示す情報を出力用引数に設定してください。

表6‒38 UOC処理結果による設定値

処理結果

UOCでの設定値

outstr

cnvlen

errinf

errmsg

正常終了

文字コード変換後の文字列

outstrに設定した文字列長(バイト数)

0

設定不要

領域不足

文字コード変換後の文字列をoutlenの長さで設定する

outstrに設定した文字列長(バイト数)

-1

設定不要

変換エラー

設定不要

設定不要

-2

変換エラーの詳細情報文字列

(32) PDCLTCNVBYTERATIO=文字コード変換時の1文字当たりのバイト数の比率

   〜<符号なし整数>((1〜10))

UOCによる文字コード変換機能使用時に,クライアントの文字コードでの1文字のバイト数に対して,サーバの文字コードでの1文字のバイト数が最大で何倍になるかを指定します。増加率が1未満の場合や小数になる場合は,小数点以下を切り上げて指定してください。文字コード変換時,この環境変数はPDCLTCNVMODEにUOCを指定しているときだけ有効になります。UOC以外の値を指定している場合は,指定値を無視します。

(例)クライアントの文字コードがSJIS,サーバの文字コード:UTF-8(IVS対応)の場合:

SJISの全角文字2バイトに対して,UTF-8はIVS使用時に最大8バイトとなり,1文字を表現するバイト数が最大で4倍となるため,このクライアント環境定義には4を指定します。PDCLTCNVBYTERATIOに4を指定した場合のデータ取得と,DCLTCNVBYTERATIOがない場合のデータ取得を次の図に示します。

図6‒3 PDCLTCNVBYTERATIOに4を指定した場合のデータ取得

[図データ]

図6‒4 DCLTCNVBYTERATIOがない場合のデータ取得

[図データ]

(33) PDCLTGRP=クライアントグループ名

   〜<英字>((1文字))

クライアントグループの接続枠保証機能を使用する場合,クライアントグループ名を指定します。システム定義のpdcltgrpオペランドで指定したクライアントグループ名を,英大文字1文字で指定します。英小文字を指定した場合は,英大文字を指定したとみなします。

システム定義のpdcltgrpオペランドが指定されていない場合,又はpdcltgrpオペランドで指定されていないクライアントグループ名を指定した場合,この環境変数の指定は無効になります。

クライアントグループの接続枠保証機能については,マニュアル「HiRDB システム運用ガイド」を参照してください。

(34) PDAUTORECONNECT={YES|NO

自動再接続機能を使用するかどうかを指定します。

自動再接続機能については,「自動再接続機能」を参照してください。

YES:

自動再接続機能を使用します。

自動再接続機能を使用すると,サーバプロセスダウン,系切り替え,ネットワーク障害などの要因でHiRDBサーバとの接続が切断された場合に,自動的に再接続します。

NO:

自動再接続機能を使用しません。

《適用基準》

HiRDBサーバで,システム構成変更コマンド(pdchgconf)を実行している場合,及び修正版HiRDBの入れ替え(pdprgcopy,pdprgrenew)をしている場合に適用してください。この場合に自動再接続機能を使用すると,HiRDBサーバとの接続が切断してもUAPにエラーを返却しないで処理を続行できます。

《留意事項》
  1. 再接続するときの動作は,次のクライアント環境定義で設定できます。

    ・CONNECTのリトライ回数:PDRCCOUNT

    ・CONNECTのリトライ間隔:PDRCINTERVAL

    ・再接続する契機:PDRCTIMING

  2. CONNECT文以外のSQLで自動再接続機能が動作している間は,PDCWAITTIMEの時間で監視されます。PDCWAITTIMEの時間を超えた場合は,自動再接続の処理は打ち切られます。

  3. 自動再接続が失敗した場合は,要因となったエラーをUAPに返却します。

  4. X/Openに従ったAPIを使用してアクセスしているアプリケーションの場合は,この環境変数を指定しても無効になり,常にNOが仮定されます。

  5. 次のどれかに該当する場合は,CONNECT文を実行したときだけ自動再接続機能が有効になります。

    ・HiRDBサーバのバージョンが07-00より前である。

    ・XDM/RD E2接続機能を使用している。

    ・XDM/RD E2のバージョンが10-02以前である。

(35) PDRCCOUNT=自動再接続機能でのCONNECTのリトライ回数

   〜<符号なし整数>((1〜200))《5》

自動再接続機能で再接続するときの,CONNECTのリトライ回数を指定します。この環境変数は,PDAUTORECONNECT=YESを指定した場合に有効になります。

(36) PDRCINTERVAL=自動再接続機能でのCONNECTのリトライ間隔

   〜<符号なし整数>((1〜600))《5》(単位:秒)

自動再接続機能で再接続するときのCONNECTのリトライ間隔を指定します。この環境変数は,PDAUTORECONNECT=YESを指定した場合に有効になります。

(37) PDRCTIMING={ALL|再接続契機[,再接続契機[,再接続契機]]}

自動再接続機能で再接続する場合の再接続契機を指定します。

SQL実行シーケンスでの自動再接続契機とPDRCTIMING指定値の対応については,「自動再接続機能」を参照してください。

この環境定義はPDAUTORECONNECT=YESを指定した場合に有効になります。

ALL:

すべての契機で自動再接続を適用します。

再接続契機:

次のどれか一つ,又は複数を組み合わせて指定してください。

CNCT:

CONNECT文を実行した場合で接続障害を検知したときに,自動再接続を適用します。

NOTRN:

トランザクション未発生で実行したSQLが接続障害を検知した場合に,自動再接続を適用します。

TRN:

トランザクション発生中に実行したSQLが接続障害でエラーとなった後,CONNECT文を実行しないでSQLを実行した場合に,自動再接続を適用します。

《規則》
  1. 再接続契機は順不同で指定できます。

  2. 再接続契機を複数指定する場合は,再接続契機ごとにコンマ(,)で区切って指定してください。Type4 JDBCドライバ以外を使用している場合,コンマの前後には空白を含めないでください。空白を含んだ場合はエラーとなります。

  3. 同じ再接続契機を複数回指定した場合はエラーとなります。

《指定例》
(例1)すべての契機で自動再接続を適用したい場合

PDRCTIMING = ALL(または,PDRCTIMING = CNCT,NOTRN,TRN)

(例2)CONNECT文を実行したとき,およびトランザクション未発生でSQL文を実行したときに,自動再接続を適用したい場合

PDRCTIMING = CNCT,NOTRN

(38) PDAUTHTYPE={PA|CHA[/SHA-256][/SHA-512]}

HiRDBクライアントがサーバへ接続するときの認証方式を指定します。

PA:

PA方式で接続します。

CHA:

CHA方式で接続します。

次のオプションを指定することで,CHA方式で使用するハッシュ関数を選択できます。

  • /SHA-256:CHA方式のハッシュ関数としてSHA-256を使用します。

  • /SHA-512:CHA方式のハッシュ関数としてSHA-512を使用します。

/SHA-256と/SHA-512の両方指定した場合,及び両方を省略した場合は,サーバと接続でき,かつセキュリティがより高い方式が自動的に選択されます。

《注意事項》

システム共通定義pd_connect_auth_typeオペランドと一致しない認証方式を指定すると,HiRDBサーバ接続時に認証エラーとなります。詳細はマニュアル「HiRDB システム運用ガイド」の「HiRDB接続時のパスワード秘匿化機能の設定方法」を参照してください。

(39) PDUAPENVFILE=UAP環境定義のファイル名

   〜<識別子>((最大8文字))

UAPを個別の環境で実行する場合,その環境を定義したUAP環境定義のファイル名を指定します。この環境変数を指定すると,UAPごとに実行環境を切り替える運用ができます。

UAP環境定義については,マニュアル「HiRDB システム定義」を参照してください。

UAP環境定義の定義内容に誤りがある場合は,CONNECT時に定義エラーとなります。また,UAP環境定義のファイルに定義がない場合は,PDUAPENVFILEの指定は無効になります。

Windows版のHiRDBの場合,UAP環境定義のファイル名は,大文字,小文字が区別されません。したがって,大文字,小文字が異なるだけで名前が同じファイルは,同一ファイルとして扱われるため注意してください。

(40) PDDBBUFLRU={YES|NO}

OLTP環境のUAPの場合,UAPごとにグローバルバッファのLRU方式を変更するかどうかを指定します。

YES:

LRU方式を適用します。

NO:

LRU方式を適用しません。この場合,バッファヒットしなかったページは,グローバルバッファ不足発生時に,アクセス頻度に関係なくグローバルバッファからの追い出し対象となります。そのため,新たにグローバルバッファ上にキャッシュするページ数を最小限にできます。

《適用基準》

通常はこの環境変数を省略してください(LRU方式を適用してください)。OLTP環境で,グローバルバッファを使用した大量検索,又は大量更新のUAPを実行する場合,グローバルバッファにキャッシュされた最新の内容がグローバルバッファから追い出されるため,性能が一時的に低下することがあります。これを回避する場合,OLTP環境で大量検索,又は大量更新をするUAPに対して,PDDBBUFLRU=NOを指定します。

《留意事項》
  1. LRU方式を適用しないUAPがアクセスしたページは,グローバルバッファ不足発生時に,アクセス頻度に関係なくグローバルバッファからの追い出し対象となります。そのため,LRU方式を適用しないUAPは,バッファヒット率の低下に伴う入出力回数の増加によって,レスポンス性能が低下することがあります。

  2. UAPのSQL処理では,1〜4面のグローバルバッファが同時に確保されます。したがって,LRU方式を適用しない場合でも,UAPごとにグローバルバッファにキャッシュされているページのうち,1〜4面はグローバルバッファから追い出される可能性があります。

  3. 更新するUAPに対してLRU方式を適用しない場合,DBへの書き込み頻度が高くなります。そのため,ログ出力契機が頻繁に発生し,LRU方式適用時に比べると,出力されるログ量が多くなります。この場合,システムログファイルの容量不足が発生する可能性があるため,次のどちらかの対処をしてください。

    ・システムログファイルの容量を再度見積もる。

    ・クライアント環境定義のPDDBLOGオペランドにNOを指定する。

    LRU方式を適用しない場合のログ量の見積もり計算式を次に示します。なお,システム定義のpd_log_rec_lengオペランドの指定値を1,024にすると,LRU方式を適用しない場合の出力ログ量を最小に抑えられます。

    更新GET数×pd_log_rec_lengオペランドの指定値

    注※

    更新GET数は,UAP統計レポートのDIDUCの値,又はUAPに関する統計情報のDIDUCの値で確認できます。

(41) PDHATRNQUEUING=NO

システム定義のpd_ha_transactionオペランドにqueuingを指定している場合,トランザクションキューイング機能の適用を,各クライアントで変更したいときに指定します。トランザクションキューイング機能を適用しないクライアントの場合に,NOを指定してください。

NO:

クライアントからの接続時にトランザクションキューイング機能を適用しません。

トランザクションキューイング機能については,マニュアル「HiRDB システム運用ガイド」を参照してください。

(42) PDCLTBINDLOOPBACKADDR={YES|NO

HiRDBサーバとの通信で使用する受信ポートの生成時,ループバックアドレスでbind()するかどうかを指定します。

YES:

ループバックアドレスでbind()します。

NO:

ループバックアドレスでbind()しません。

システム共通定義のpdunit -xオペランドにループバックアドレスを指定している場合は,この環境変数にYESを指定してください。

この環境変数は,HiRDBサーバがWindows版の場合に指定できます。この環境変数を指定する場合は,マニュアル「HiRDB システム導入・設計ガイド」の,Windowsファイアウォールの例外リストへの登録についての説明を参照してください。

(43) PDEXTDECCHECK={YES|NO

外部10進項目のDISPLAY SIGN LEADING SEPARATE形式,及びDISPLAY SIGN TRAILING形式の入力データが,正又は負の符号と数字で構成されているかをチェックします。

YES:

入力データが正又は負の符号と数字で構成されているかをクライアント側でチェックします。

各形式の入力データの内容が,次のすべての条件を満たしているときは,クライアント側でエラーになりません。

  • DISPLAY SIGN LEADING SEPARATE形式の場合

    ・先頭1バイトが符号('+'(0x2B)又は'-'(0x2D))

    ・2バイトから最終バイトまで数字(0x30〜0x39)

  • DISPLAY SIGN TRAILING形式の場合

    ・先頭バイトから最終バイトの一つ前まで数字(0x30〜0x39)

    ・最終バイトが0x30〜0x39又は0x70〜0x79

上記以外の場合は,エラーとなりKFPA11326-Eメッセージが出力されます。

NO:

入力データが正又は負の符号と数字で構成されているかをチェックしません。この場合,入力データは無条件にDECIMAL形式に変換してサーバに送信します。

《適用基準》

HiRDBでは,外部10進項目の入力データを数字として扱います。外部10進項目のDISPLAY SIGN LEADING SEPARATE形式,及びDISPLAY SIGN TRAILING形式の入力データに,数字以外のデータが含まれているかどうかをチェックしたい場合に,PDEXTDECCHECK=YESを指定してください。

(44) PDDEFAULTOPTION={RECOM|V0904}

クライアント環境定義及びプリプロセスのオプションについて,省略時の動作を指定します。通常は,この環境変数を指定する必要はありません。互換モードを適用したい場合に,指定してください。

バージョンによって省略値が異なるクライアント環境定義及びプリプロセスのオプションについては,「バージョン,リビジョンによるクライアント環境定義及びプリプロセスオプションの変更点」を参照してください。

RECOM:

推奨モードを適用します。

V0904:

0904互換モードを適用します。

(45) PDIPCFILEDIR=通信情報ファイルディレクトリ

   〜<パス名>((最大80バイト))《/dev/HiRDB/pth》

HiRDBクライアントとHiRDBサーバが同一マシンにある場合の通信情報ファイルディレクトリを指定します。このクライアント環境定義の有効範囲を次に示します。

プラットフォーム

クライアント環境定義PDIPCの値

有効/無効

HP-UX,AIX

MEMORY

DEFAULT

Linux

MEMORY

DEFAULT

×

Windows

MEMORY

×

DEFAULT

×

(凡例)

○:有効

×:無効

このクライアント環境定義には,同一マシンのHiRDBサーバのシステム共通定義pd_ipc_file_dirと同じ値を設定する必要があります。値が不一致であった場合の動作を次に示します。

プラットフォーム

クライアント環境定義PDIPCの値

HiRDBサーバへの接続可否

動作

HP-UX,AIX

MEMORY

×

HiRDBクライアント側で,KFPA11723-E(HiRDB NOT UP又はNETWORK)となります。

DEFAULT

Linux

MEMORY

プロセス間メモリ通信機能を使用しないで,デフォルトの通信方式(TCP/IP)を使用して,HiRDBサーバに接続します。

(凡例)

○:接続できる

×:接続できない

プロセス間メモリ通信機能が有効になっているかどうかは,SQLトレースの「システムが使用する情報」で確認できます。詳細は「SQLトレース機能」を参照してください。

このクライアント環境定義が有効で,かつ/dev/HiRDB/pth以外の値を指定した場合,HiRDB 10-04より前のHiRDBサーバへの接続がエラーとなります。また,HiRDBグループが異なるユーザでのHiRDBサーバへの接続がエラーとなります。HiRDBサーバへの接続可否を次に示します。

プラットフォーム

クライアント環境定義PDIPCの値

クライアント環境定義PDIPCFILEDIRの値

10-04より前のHiRDBサーバへの接続

HiRDBグループが異なるユーザでのHiRDBサーバへの接続

HP-UX,AIX

MEMORY

指定あり

×

指定なし

DEFAULT

指定あり

×

指定なし

Linux

MEMORY

指定あり

×

指定なし

(凡例)

○:接続できる

×:接続できない(/dev/HiRDB/pth以外の通信情報ファイルディレクトリを指定した場合)

(46) PDASTHOST=HiRDB Control Manager - Agentのホスト名[,予備系HiRDB Control Manager - Agentのホスト名]

   〜<識別子>《PDHOSTの指定値》

UAPからコマンドを実行する場合,接続するHiRDB Control Manager - Agentのホスト名を指定します。なお,UAPからコマンドを実行するには,SQLのCOMMAND EXECUTEを使用します。

UAPからコマンドを実行すると,実際にはHiRDB Control Manager - Agentがそのコマンドを実行します。

HiRDB/パラレルサーバの場合は,システムマネジャがあるサーバマシンのホスト名を指定してください。

ホスト名以外にも,FQDN,及びIPアドレスでも指定できます。指定方法を次に示します。

ホスト名:

システム共通定義のpdunit -xオペランドで指定したホスト名を指定します。

(指定例)

PDASTHOST=host1

FQDN:

HiRDBサーバのホスト名とドメイン名とを,ピリオドで結んで指定します。

(指定例)

PDASTHOST=host1.soft.hitachi.co.jp

IPアドレス:

IPアドレスは,バイトごとにピリオドで区切られた10進数で指定します。

(指定例)

PDASTHOST=172.18.131.34

《IPアドレスを引き継がない系切り替えをする場合》

IPアドレスを引き継がない系切り替えをする場合,現用系及び予備系の二つのホスト名を指定してください。現用系のホスト名だけを指定すると,系が切り替わった後に,この環境変数の指定を新しく実行系になったホスト名に変更する必要があります。

(47) PDASTPORT=HiRDB Control Manager - Agentのポート番号

   〜<符号なし整数>((5001〜49999))

UAPからコマンドを実行する場合,接続するHiRDB Control Manager - Agentのポート番号を指定します。

ポート番号は,servicesファイル(UNIX版の場合は/etc/services,Windows版の場合は%windir%\system32\drivers\etc\services)に登録したものを指定してください。

(48) PDSYSTEMID=HiRDB Control Manager - Agentが管理するHiRDBサーバのHiRDB識別子

   〜<識別子>((4文字))

UAPからコマンドを実行する場合,接続するHiRDB Control Manager - Agentが管理しているHiRDBサーバのHiRDB識別子を指定します。HiRDB識別子は,システム定義のpd_system_idオペランドでの指定値を指定してください。

(49) PDASTUSER=OSのユーザ名/パスワード

   〜《PDUSERの指定値》

UAPからコマンドを実行する場合,そのコマンドを実行するOSのユーザ名,及びパスワードを指定します。そのコマンドの実行権限を持つOSのユーザ名,及びパスワードでなければなりません。「ユーザ名/パスワード」の形式で指定してください。

パスワードの指定が必要ない(パスワードのないユーザに対して設定する)場合は,パスワードを省略できます。

OSのユーザ名,パスワードはそれぞれ大文字,小文字の指定に関係なく大文字として扱われます。ただし,小文字を引用符で囲んだ場合は,小文字として扱われます。

なお,簡易認証ユーザでHiRDBに接続している場合は,この環境変数を省略しないで,コマンドを実行するユーザ名,及びパスワードを指定してください。省略した場合は,エラーメッセージ(KFPA11724-E)が表示され,サーバへの接続に失敗します。

(50) PDCMDWAITTIME=コマンド実行時のクライアントの最大待ち時間

   〜<符号なし整数>((0,6〜43200))《0》(単位:分)

UAPからコマンドを実行する場合,クライアントがHiRDB Control Manager - Agentへ要求をしてから応答が返るまでの,クライアントの最大待ち時間を指定します。

0を指定した場合,クライアントはHiRDB Control Manager - Agentから応答が返るまで待ち続けます。

指定した最大待ち時間を過ぎてもHiRDB Control Manager - Agentから応答が返らない場合,クライアント(UAP)にエラーリターンします。このとき,UAP中のコマンドがまだ処理中の場合は,HiRDB Control Manager - Agent,又は実行中のコマンドをキャンセルする必要があります。

(51) PDCMDTRACE=コマンドトレースファイルのサイズ

   〜<符号なし整数>((0,4096〜2000000000))(単位:バイト)

UAPからコマンドを実行する場合,コマンドトレースを出力するファイルのサイズを指定します。

0を指定した場合はファイルの最大サイズとなり,最大サイズを超えるとコマンドトレースは出力されません。4,096〜2,000,000,000を指定した場合は指定値のファイルサイズとなり,指定値のファイルサイズを超えると出力先が切り替わります。この環境変数を省略した場合,コマンドトレースは取得されません。

コマンドトレースについては,「コマンドトレース機能」を参照してください。

《ほかの環境変数との関係》

コマンドトレースを出力するファイルは,PDCLTPATHに指定したディレクトリに作成されます。PDCLTPATHを省略している場合,UAPを実行したときのカレントディレクトリ(OpenTP1から実行するUAPの場合はOpenTP1のインストールディレクトリ\tmp\home\サーバ名XX)下に作成されます。

(52) PDIPC={MEMORY|DEFAULT

サーバとクライアントが同一ホストにある場合,プロセス間の通信方法を指定します。

MEMORY:

プロセス間の通信にメモリを使用します。これを,プロセス間メモリ通信機能といいます。

DEFAULT:

プロセス間の通信に,各プラットフォームでのデフォルトの通信方式(TCP/IP又はPIPE)を使用します。

《留意事項》
  1. クライアントとサーバが同一ホストでない場合,PDIPCの指定は無効になります(DEFAULTが仮定されます)。このとき,接続処理が遅くなることがあります。

  2. マルチスレッド用XAインタフェースライブラリ(Windows版クライアントの場合はpdcltxm.dll,UNIX版クライアントの場合はlibzcltxk.sl(so),又はlibzcltyk.sl(so))を使用してXAインタフェースでHiRDBにアクセスし,かつTPBroker for C++下のUAPをクライアントとする場合,この環境変数の指定は無効になり,DEFAULTが仮定されます。

  3. UNIX版クライアントでPDIPC=MEMORYを指定した場合,クライアントの接続ごとにPDSENDMEMSIZE及びPDRECVMEMSIZEの指定値分の共用メモリが確保されます。したがって,複数のクライアントを同時に実行した場合,共用メモリが不足することがあるため,使用できる共用メモリのサイズを考慮して,PDSENDMEMSIZE及びPDRECVMEMSIZEを指定する必要があります。

  4. PDIPC=MEMORYを指定した場合,PDCLTRCVADDRの指定は無効になります。

  5. PDIPC=MEMORYを指定して,同時にPDUAPREPLVLにp,r,若しくはaを指定している場合,又はPDWRTLNFILSZを指定している場合,PDIPCの指定は無効になります。

(53) PDSENDMEMSIZE=クライアント側のデータ送信用メモリサイズ

   〜<符号なし整数>((4〜2097152))《16》(単位:キロバイト)

プロセス間メモリ通信機能を使用する場合,クライアントからサーバへデータを送るときの,データ格納領域サイズを4の倍数で指定します。この環境変数は,PDIPC=MEMORYの場合に有効になります。

指定値が4の倍数でない場合,4の倍数の値に切り上げられます。

ここで指定したサイズ以上のデータを送ると,プロセス間メモリ通信機能は使用できなくなります(PDIPC=DEFAULTの通信方法となります)。

《見積もり方法》

指定値は,次の計算式から見積もってください。

指定値(単位:バイト)=
 ↑(400+16×検索列数+16×?パラメタ数+SQL文長)÷4096↑×4

なお,この計算式は,実際の通信で送信するデータ量とは異なります。

(54) PDRECVMEMSIZE=クライアント側のデータ受信用メモリサイズ

   〜<符号なし整数>((4〜2097152))《32》(単位:キロバイト)

プロセス間メモリ通信機能を使用する場合,クライアントがサーバからデータを受け取るときの,データ格納領域サイズを4の倍数で指定します。この環境変数は,PDIPC=MEMORYの場合に有効になります。

指定値が4の倍数でない場合,4の倍数の値に切り上げられます。

ここで指定したサイズ以上のデータを受け取ると,プロセス間メモリ通信機能は使用できなくなります(PDIPC=DEFAULTの通信方法となります)。

《見積もり方法》

指定値は,次の計算式から見積もってください。

指定値(単位:バイト)=
 ↑(600+25×検索列数+Σ 列のデータ長)÷4096↑×4

列のデータ長は,VARCHARの場合は構造体長にしてください。また,配列FETCH,又は繰返し列を受け取る場合は,「列のデータ長×配列数」,又は「列のデータ長×繰り返し数の要素」にしてください。

PDBLKFを指定している場合は,次の計算式から値を求めてください。

指定値(単位:バイト)=
 ↑(600+19×検索列数+(7×検索列数+Σ 列のデータ長)
   ×PDBLKFの値)÷4096↑×4

なお,この計算式は,実際の通信で送信するデータ量とは異なります。

(55) PDCWAITTIME=クライアントの最大待ち時間

   〜<符号なし整数>((0〜65535))《0》(単位:秒)

HiRDBクライアントからHiRDBサーバへ要求をしてから,応答が戻ってくるまでのHiRDBクライアントの最大待ち時間を指定します。長時間SQLの時間監視をする場合など指定してください。

《見積もり方法》

指定値は次の条件を満たすようにしてください。SQL処理に時間が掛かったときの原因を特定しやすくなります。

OpenTP1システム定義のwatch_time又はtrn_expiration_time>PDCWAITTIME>pd_lck_wait_timeout

なお,OpenTP1を使用していない場合,OpenTP1システム定義は無視してください。

《留意事項》
  1. 0を指定した場合,HiRDBクライアントはHiRDBサーバからの応答があるまで待ち続けます。

  2. 最大待ち時間を経過してもHiRDBサーバから応答がない場合には,UAPにエラーリターンします。このとき,トランザクション処理中の場合は,HiRDBサーバ側のプロセスをキャンセルします。

  3. 0を指定した場合に,次のような障害が発生すると,HiRDBクライアントが無応答状態になることがあります。

    ・通信障害(HiRDBクライアントとHiRDBサーバ,及びHiRDBサーバとHiRDBサーバの通信障害(一時的な障害も含む))

    ・ディスク障害などでのプロセスの沈み込み

    したがって,設定値には,0以外で,かつ各SQL実行時間の最大値より大きな値を指定することをお勧めします。設定値は次に示す点を考慮してください。

    ・排他待ち限界経過時間を迎えても待ち状態が解除されない場合に,排他待ちのタイムアウト情報を出力したい場合は,次の条件を満たす値となるよう設定してください。

     PDCWAITTIME>pd_lck_wait_timeout(PDLCKWAITTIME指定時はPDLCKWAITTIME)

    タイムアウト情報については,マニュアル「HiRDB システム運用ガイド」の「タイムアウト情報の出力内容」,pd_lck_wait_timeoutオペランドについては,マニュアル「HiRDB システム定義」の「システム共通定義」を参照してください。

    ・トランザクションキューイング機能によってトランザクションをリトライ,又はキューイングしている間に,PDCWAITTIMEに指定した時間を超過してトランザクションをエラーとしたくない場合は,次の条件を満たす値となるよう設定してください。

     PDCWAITTIME>pd_ha_trn_queuing_wait_time+pd_ha_trn_restart_retry_time

    トランザクションキューイング機能については,マニュアル「HiRDB システム運用ガイド」の「トランザクションキューイング機能」,pd_ha_trn_queuing_wait_time及びpd_ha_trn_restart_retry_timeオペランドについては,マニュアル「HiRDB システム定義」の「システム共通定義」を参照してください。

(56) PDSWAITTIME=トランザクション処理中のサーバの最大待ち時間

   〜<符号なし整数>((0〜65535))《600》(単位:秒)

HiRDBサーバがHiRDBクライアントからの要求に対する応答を返してから,次にHiRDBクライアントから要求が来るまでのHiRDBサーバの最大待ち時間を指定します。この時間監視は,トランザクション処理中(SQL実行開始からコミット,ロールバックまでの区間)の時間を対象とします。監視時間は,次の時点でリセットされます。

  1. HiRDBクライアントからの要求がHiRDBサーバへ到着した時点

  2. HiRDBクライアントが定期的に送信するパケットをHiRDBサーバが受信した時点

ただし,上記2の時点でリセットするのは,次のどれかの条件に該当する場合です。

指定した時間内にHiRDBクライアントから次の要求が来なかった場合,HiRDBクライアントに異常が発生したものとみなし,実行中のトランザクションをロールバックします。また,HiRDBクライアントとの接続をHiRDBクライアントへ通知しないで切断します。

0を指定した場合,HiRDBサーバはHiRDBクライアントからの要求があるまで待ち続けます。また,クライアントマシンやネットワークがダウンしたとき,ダウンを検知できないことがあります。

大き過ぎる値を指定した場合,クライアントマシンやネットワークがダウンしたとき,ダウンの検知までに時間が掛かります。

この環境変数は,プロセスの残存を回避する場合など指定してください。

《留意事項》
  1. ブロック転送機能(PDBLKF)を使用していると,HiRDBサーバからブロック転送されてきた行がなくなるまでHiRDBクライアント内でFETCH文処理をします。このため,FETCH文処理が終了するまでHiRDBクライアントからHiRDBサーバへ要求をしません。したがって,ブロック転送機能を使用する場合,この環境変数には,ブロック転送数分のFETCH文処理の時間を含めた値を設定してください。

  2. OLTP下のUAPをクライアントとする運用形態の場合,必ずこの環境変数を指定してください。指定しない場合は,600秒が仮定され,不当に接続が切れる場合があります。

(57) PDSWATCHTIME=トランザクション処理以外のサーバの最大待ち時間

   〜<符号なし整数>((0〜65535))(単位:秒)

HiRDBサーバがHiRDBクライアントからの要求に対する応答を返してから,次にHiRDBクライアントから要求が来るまでのHiRDBサーバの最大待ち時間を指定します。この監視時間は,トランザクション処理以外(SQL実行開始からコミット,又はロールバックするまでの区間外)の時間を対象とします。監視時間は,次の時点でリセットされます。

  1. HiRDBクライアントからの要求がHiRDBサーバへ到着した時点

  2. HiRDBクライアントが定期的に送信するパケットをHiRDBサーバが受信した時点

ただし,上記2の時点でリセットするのは,次のどれかの条件に該当する場合です。

指定した時間内にHiRDBクライアントからの要求がなかった場合,HiRDBクライアントに異常が発生したものとみなし,HiRDBサーバがHiRDBクライアントとの接続を切断します。この場合,HiRDBクライアントへは切断の通知をしません。

0を指定した場合,HiRDBサーバはHiRDBクライアントからの要求があるまで待ち続けます。

なお,0を指定した場合,クライアントマシンやネットワークがダウンしたとき,ダウンを検知できないことがあります。

大き過ぎる値を指定した場合,クライアントマシンやネットワークがダウンしたとき,ダウンの検知までに時間が掛かります。

この環境変数は,プロセスの残存を回避する場合など指定してください。

《システム定義との関係》

この環境変数を省略すると,次の値を使用してトランザクション開始までの時間を監視します。

  • UNIX版の場合:0

  • Windows版の場合:システム定義のpd_watch_pc_client_timeオペランドで指定した値

pd_watch_pc_client_timeオペランドについては,マニュアル「HiRDB システム定義」を参照してください。

《留意事項》
  1. OLTP下のUAPをクライアントとする運用形態の場合,及びJava EEアプリケーションサーバのコネクションプーリングを使用する場合など,HiRDBシステムと常に接続しているUAPでは,次に示すどれかの設定をしてください。

    1.PDSWATCHTIMEに0を指定する。

    2.PDSWATCHTIMEに0以外を指定し,PDKALVLには2(デフォルト)を指定する。PDKATIMEには,PDSWATCHTIMEより短い値を指定する。

    3.(Windows環境の場合だけ)PDSWATCHTIMEを未指定とし,PDKALVLには2(デフォルト)を指定する。PDKATIMEには,システム定義のpd_watch_pc_client_timeオペランドで指定した値より短い値を指定する。

    上記1の場合,通信障害が発生したときにサーバ側プロセスが残存するおそれがあるため,2,3を推奨します。ただし,シングルスレッド版のクライアントライブラリを使用しているUAPの場合には,PDKALVLが無効になるため,1を設定してください。

  2. HiRDBサーバがHiRDBクライアントとの接続を切断しても,HiRDBサーバはHiRDBクライアントに切断したことを通知しないので,注意が必要です。

《ほかの環境変数との関係》

PDCWAITTIME,PDSWAITTIME,及びPDSWATCHTIMEの関係を次の図に示します。

図6‒5 PDCWAITTIME,PDSWAITTIME,及びPDSWATCHTIMEの関係

[図データ]

(58) PDCWAITTIMEWRNPNT=SQL実行時間警告出力の契機

SQL実行時間警告出力機能使用時に,SQL実行時間警告情報ファイルを出力する契機を指定します。

SQL実行時間警告出力機能とは,SQLの実行時間がある一定時間を超えた場合,SQL実行時間警告情報ファイルと警告メッセージ(KFPA20009-W)を出力する機能のことをいいます。SQL実行時間警告出力機能については,マニュアル「HiRDB システム運用ガイド」を参照してください。

SQL実行時間警告情報ファイルを出力する契機は,次のどれかの方法で指定します。

PDCWAITTIMEの指定値に対する比率(小数点を指定しない場合):

   〜<符号なし整数>((0〜99))(単位:%)

PDCWAITTIMEの指定値に対する比率を指定します。例えば,PDCWAITTIMEオペランドに100(秒)を指定し,PDCWAITTIMEWRNPNTに90(%)を指定すると,SQLの実行後にHiRDBがSQLの実行時間を調べます。その結果,SQLの実行時間が90秒以上100秒未満の場合に警告情報が出力されます。

PDCWAITTIMEの指定値に対する比率(小数点を指定する場合):

   〜<符号なし10進数>((0〜99.999999))(単位:%)

PDCWAITTIMEの指定値に対する比率(小数点を含む比率)を指定します。

SQL実行時間警告出力の契機となる時間(auto指定なし):

   〜<符号なし10進数>sec((0〜PDCWAITTIME))(単位:秒)

SQL実行時間警告出力の契機となる時間を指定します(例えば,60秒の場合はPDCWAITTIMEWRNPNT=60secと指定します)。このとき,時間には小数点を指定できます。なお,上限値は,PDCWAITTIMEの指定値未満となります。

SQL実行時間警告出力の契機となる時間(auto指定あり):

   〜<符号なし整数>sec,auto((0〜PDCWAITTIME))(単位:秒)

SQL実行時間警告出力の契機となる時間を指定します(例えば,60秒の場合はPDCWAITTIMEWRNPNT=60sec,autoと指定します)。上限値は,PDCWAITTIMEの指定値未満となります。

autoを使用した場合,PDCWAITTIMEの指定有無に関係なく,SQLの実行時間がPDCWAITTIMEWRNPNTに指定した時間以上であったとき,そのSQLに対して警告情報を出力します。

《システム定義との関係》

この環境変数を省略すると,システム定義のpd_cwaittime_wrn_pntオぺランドの省略値又は指定値が仮定されます。pd_cwaittime_wrn_pntオペランドについては,マニュアル「HiRDB システム定義」を参照してください。

(59) PDKALVL={0|1|2

・0904互換モードの場合:《0》

HiRDBクライアントからHiRDBサーバに対して,定期的にパケットを送信する機能を使用するかどうかを指定します。

この環境変数の有効範囲を次の表に示します。

表6‒39 PDKALVLの有効範囲

クライアント種別

有効/無効

埋込み型UAP

シングルスレッド

X/Open準拠のAPI使用

×

X/Open準拠のAPI未使用

×

マルチスレッド

X/Open準拠のAPI使用

X/Open準拠のAPI未使用

JDBCドライバ

Type2

JTA使用

×

JTA未使用

Type4

JDBC2.0

JTA使用

JTA未使用

JDBC4.0

JTA使用

JTA未使用

ODBCドライバ

OLE DBプロバイダ

HiRDBデータプロバイダ for .NET Framework

SQLJ

(凡例)

○:有効

×:無効

0以外を指定した場合,HiRDBとの接続ごとにパケット送信スレッドを一つ生成します。アプリケーションサーバを使用するなどしてHiRDBとの接続を多数生成する場合は,システムやプロセスでの作成スレッド数を制御するOSのパラメタを見直してください。パケットの送信間隔は,PDKATIMEで指定できます。

0:

定期的にパケットを送信する機能を使用しません。

1:

定期的にパケットを送信する機能を使用します。パケット送信スレッドは,一定時間間隔でHiRDBサーバとの接続経路にパケットを送信します。

HiRDBサーバで時間監視しているPDSWAITTIME,及びPDSWATCHTIMEの監視時間をリセットしません。

HiRDBクライアントとHiRDBサーバが同一マシンの場合,1を指定しないでください。

2:

定期的にパケットを送信する機能を使用します。パケット送信スレッドは,一定時間間隔でHiRDBサーバとの接続経路にパケットを送信し,HiRDBサーバからの返信パケットを受信します。

HiRDBサーバで時間監視しているPDSWAITTIME,及びPDSWATCHTIMEの監視時間をリセットします。

このパケット通信でエラーが発生した場合,SQL実行スレッドが次のSQLを実行するときに,対応するエラーをアプリケーションに返却します。

パケット送信スレッドがHiRDBサーバからの応答の返却を待っている間に,SQL実行スレッドにアプリケーションからSQL要求があった場合,パケット送信スレッドがHiRDBサーバからの応答を受信するまでSQL実行スレッドは待ち状態になります。このため,SQL実行時間が遅くなることがあります。また,設定値に1を指定した場合よりもCPU使用率が高くなります。HiRDBサーバで時間監視しているPDSWAITTIME,及びPDSWATCHTIMEの監視時間をリセットする必要のない場合は,設定値に1を指定することをお勧めします。

《適用基準》

ルータやファイアウォールなどのネットワーク管理アプリケーションでは,一定時間パケットが流れないと接続を切断する,無通信時間監視機能を備えていることがあります。この環境変数に0以外を指定することで,HiRDBの接続を保持したまま,サービスの要求を待機するWebアプリケーションなどが,ネットワーク管理アプリケーションによってHiRDBの接続を不当に切断されることを防げます。

また,HiRDBサーバでの時間監視(PDSWAITTIME,及びPDSWATCHTIME)を無限にしておくと,HiRDBクライアント側のマシンダウンやネットワーク障害の場合,HiRDBサーバプロセスが残ることがあります。この環境変数に2を指定することで,HiRDBサーバの時間監視を無限に設定しないで,HiRDBサーバの時間監視での接続の切断も防げます。この時,PDKATIMEはHiRDBサーバでの時間監視の指定値より小さい値を指定してください。HiRDBサーバでの時間監視の指定値より大きい値を指定すると,HiRDBサーバの時間監視で接続が切断されます。

《適用例》

  1. 次の条件の場合には,PDKALVLに1を設定し,PDKATIMEにFirewallの監視時間(例:1,200秒)より少し短い時間(1,000秒)を指定します。

    • WebアプリケーションでのDBサーバへのSQL実行要求が不定期で,長時間SQLが実行されないことがある。

    • WebサーバとDBサーバとの間にFirewallがあり,一定時間パケットが流れないで接続が切られてしまうことがある。

  2. 次の条件の場合には,PDKALVLに2を設定し,PDKATIMEにPDSWATCHTIMEの監視時間(例:3,600秒)より少し短い時間(3,000秒)を指定します。

    • コネクションをプーリングするアプリケーションから,HiRDBにアクセスする。

    • SQL実行要求ごとに接続を再利用するが,長時間使用されない接続があり,PDSWATCHTIMEの監視時間で接続が切られることがある。

  3. DBサーバへのSQL実行要求の間隔が長くなることがあり,PDSWAITTIMEの監視時間で接続が切られることを避けたい場合には,PDKALVLに2を指定し,PDKATIMEにPDSWAITTIMEの監視時間(例:600秒)より少し短い時間(500秒)を指定します。

  4. PDSWATCHTIMEでHiRDBクライアント側のマシンダウンやネットワーク障害を監視し,PDSWAITTIMEでクライアントアプリケーション内の処理遅延を監視したい場合には,PDKALVLに2を指定し,PDKATIMEは次の条件を満たす値となるよう設定してください。

    PDSWAITTIME < PDKATIME < PDSWATCHTIME

    例として,PDKATIMEにPDSWAITTIMEの監視時間(例:600秒)とPDSWATCHTIMEの監視時間(例:800秒)の間の時間(700秒)を指定します。

(60) PDKATIME=パケットの送信間隔

   〜<符号なし整数>((60〜65535))《600》(単位:秒)

・0904互換モードの場合:《3000》

HiRDBクライアントからHiRDBサーバに対して,定期的にパケットを送信する間隔を指定します。リセットしたい監視時間よりも,短い時間を設定してください。

この環境変数は,PDKALVLに0以外を指定した場合にだけ有効になります。

パケット送信時に,SQL実行スレッドがSQL実行中の場合は,パケット送信スレッドはパケット送信をしないで,次回の送信まで待ち状態になります。

(61) PDTIMEDOUTRETRY=ETIMEDOUT発生時のリトライ回数

   〜<符号なし整数>((0〜32767))《2》

HiRDBクライアントがHiRDBサーバと接続する場合に実行する,connect()システムコールでwinsockのWSAETIMEDOUTエラー(UNIX版の場合はETIMEDOUTエラー)が発生したときに,connect()システムコールをリトライする回数を指定します。

《利点》

HiRDBサーバへのconnect()が集中し,listenキューが一杯になった場合,connect()からWSAETIMEDOUTエラー又はETIMEDOUTエラーが返されます。このとき,connect()システムコールをリトライすることで,接続エラーを回避できます。

《留意事項》

ネットワーク障害,及びサーバマシン電源ダウンが原因で発生するWSAETIMEDOUTエラー又はETIMEDOUTエラーの場合,connect()システムコールからのリターンに時間が掛かることがあります。したがって,リトライ回数を多く設定した場合,UAPに接続エラーが返却されるまで時間が掛かることになります。特に,系切り替え時にクライアント接続用のIPアドレスを引き継がない場合,ネットワーク障害などが発生したときには,待機系に切り替わるまで時間が掛かります。このような環境では,リトライ回数を少なく設定することで待機系への切り替え時間を短くできます。

また,クライアント環境変数PDNBLOCKWAITTIMEに0以上を指定している場合,PDTIMEDOUTRETRYの指定は無効になります。

(62) PDCONREFRCOUNT=ECONNREFUSED発生時のリトライ回数

   〜<符号なし整数>((0〜32767))《9》

HiRDBクライアントがHiRDBサーバと接続する場合に実行する,connect()システムコールでwinsockのWSAECONNREFUSEDエラー(UNIX版の場合はECONNREFUSEDエラー)が発生したときに,connect()システムコールをリトライする回数を指定します。

《利点》

このクライアント環境定義に1以上の値を指定すると,HiRDBクライアントはクライアント環境定義PDCONREFRINTERVALに指定した間隔でconnect()システムコールをリトライします。これによって,一時的なネットワーク障害やHiRDBサーバが起動中の場合に発生する接続エラーを回避できます。

《留意事項》

connect()システムコールのリトライにかかる最大時間は,このクライアント環境定義とクライアント環境定義PDCONREFRINTERVALの指定値を乗算した値になります。このため,停止中のHiRDBサーバに接続しようとしてWSAECONNREFUSEDエラー又はECONNREFUSEDエラーが発生した場合,UAPに接続エラーが返却されるまでの時間が遅くなります。したがって,接続エラーを即時検知したい場合はこのクライアント環境定義に0を指定してください。

(63) PDCONREFRINTERVAL=ECONNREFUSED発生時のリトライ間隔

   〜<符号なし整数>((0〜32767))(単位:ミリ秒)

・UNIX版の場合:《700》

・Windows版の場合:《0》

HiRDBクライアントがHiRDBサーバと接続する場合に実行する,connect()システムコールでwinsockのWSAECONNREFUSEDエラー(UNIX版の場合はECONNREFUSEDエラー)が発生したときに,connect()システムコールをリトライする間隔を指定します。

このクライアント環境定義は,クライアント環境定義PDCONREFRCOUNTに0を指定した場合は無効になります。

(64) PDNBLOCKWAITTIME=ノンブロックモードでのコネクション確立監視時間

   〜<符号なし整数>((0〜120))《0》(単位:秒)

HiRDBサーバ,HiRDBクライアント間でコネクション接続完了を監視する場合,ノンブロックモード時のコネクション確立監視時間を指定します。

この環境変数に1以上を指定すると,HiRDBサーバ,HiRDBクライアント間の通信をノンブロック通信にして,connect()システムコールの終了を監視します。これをノンブロックモードといいます。0を指定した場合は,OSのタイムアウト時間までコネクション接続完了を待ちます。これをブロックモードといいます。

《適用基準》

LAN障害時の,connect()システムコールが数十秒(OSに依存)待たされることを回避したいときに指定します(ノンブロックモードにします)。これを指定することで,LAN障害を早く検知できます。なお,この環境変数に0以上を指定した場合,PDTIMEDOUTRETRYの指定の有無に関係なく,PDTIMEDOUTRETRYの指定は無効になります。

この環境変数の指定を省略した場合,又は0を指定した場合,HiRDBサーバからHiRDBクライアントへの通信時のコネクション確立方式は,システム共通定義pd_ipc_clt_conn_nblockオペランドに指定した値によって決まります。

この環境変数とpd_ipc_clt_conn_nblockオペランドとの組み合わせで,コネクション確立をどちらのモードで行うかを次の表に示します。

クライアント環境変数PDNBLOCKWAITTIMEの指定値

pd_ipc_clt_conn_nblockオペランドの指定値

Y

N

0

  • クライアントがサーバにコネクション確立する場合

    ブロックモード。

  • サーバがクライアントにコネクション確立する場合

    ノンブロックモード。

    このとき,pd_ipc_clt_conn_nblock_timeオペランドに指定した監視時間で監視します。

ブロックモード。

1以上

ノンブロックモード。

このとき,クライアント環境変数のPDNBLOCKWAITTIMEに指定した監視時間で監視します。

《見積もり方法》

指定値が小さ過ぎる場合,ネットワークの状態によっては不当にエラーとなることがあります。指定値には,次の計算式以上の値を設定してください。

MAX(A+1,8)

A:

pingなどのOSコマンドで,HiRDBサーバ,HiRDBクライアント間の到達時間を計測した値です。なお,ネットワークの負荷によっては,pingなどの到達時間は変動します。最も負荷の高い状態を想定して測定してください。

《注意事項》

この環境変数には,コネクション確立をブロックモードで行ったときのOS待ち時間よりも大きい値を指定しないでください。指定した場合は,OSの待ち時間で接続タイムアウトになります。

HiRDBサーバとの接続処理は,大きく分けて次の2つから成ります。

  1. TCP/IPのコネクション確立処理(connect()システムコール)

  2. HiRDBサーバとのユーザ認証などのネゴシエーション

この環境変数は1.を監視対象としており,2.は監視対象に含みません。2.を監視する場合,クライアント環境定義PDCONNECTWAITTIMEを指定する必要があります。

(65) PDCONNECTWAITTIME=サーバ接続時のHiRDBクライアントの最大待ち時間

   〜<符号なし整数>((1〜300))《300》(単位:秒)

HiRDBサーバとの接続時,HiRDBサーバから応答が戻ってくるまでのHiRDBクライアントの最大待ち時間を指定します。

HiRDBサーバがHiRDBクライアントから接続要求を受け取った状態で,系切り替えやシステムダウンが発生した場合,HiRDBクライアントは指定した時間だけ応答を待ちます。

《適用基準》

系切り替え機能を使用している場合,早期にアプリケーションに障害を検知させるときに指定します。この環境変数と同時にPDNBLOCKWAITTIMEを指定すると,更に検知が早くなります。

《見積もり方法》

指定値が小さ過ぎる場合,ネットワークの状態や接続時のスケジュール待ちで時間が掛かって,正常な接続処理がエラーとなることがあります。指定値には,次の計算式以上の値を設定してください。

MIN(システム定義pd_max_usersオペランドの値×0.2,300)

《ほかの環境変数との関係》

PDTIMEDOUTRETRY,PDNBLOCKWAITTIME,及びPDCONNECTWAITTIMEの関係を次の図に示します。

図6‒6 PDTIMEDOUTRETRY,PDNBLOCKWAITTIME,及びPDCONNECTWAITTIMEの関係

[図データ]

(66) PDCLTPATH=トレースファイル格納ディレクトリ

   〜<パス名>((最大256バイト))《カレントディレクトリのパス名》

HiRDBクライアントが作成するSQLトレースファイル及びクライアントエラーログファイルの格納先ディレクトリを指定します。

(67) PDSQLTRACE=SQLトレースファイルのサイズ

   〜<符号なし整数>((0,4096〜2000000000))(単位:バイト)

UAPのSQLトレースを出力する,SQLトレースファイルのサイズを指定します。

0を指定した場合は,ファイルを切り替えないで,一つのファイルへ出力し続けます。サイズの制限はありません。4,096〜2,000,000,000を指定した場合は指定値のサイズとなり,指定値のサイズを超えると出力先が切り替わります。省略した場合は,SQLトレースを出力しません。

SQLトレースについては,「SQLトレース機能」を参照してください。

《ほかの環境変数との関係》

SQLトレースは,PDCLTPATHで指定したディレクトリに出力されます。PDCLTPATHの指定がない場合,UAPを起動したときのカレントディレクトリ(OpenTP1から起動されるUAPの場合,%DCDIR%\tmp\home\サーバ名xxのディレクトリ)の下に出力されます。

《見積もり方法》

SQLトレースファイルのサイズは,取得したいSQL文の数から求めてください。取得したいSQL文の,それぞれの「1行(80バイト)+SQL文のサイズ」を求めて,すべてを合計した値を指定値の目安としてください。

(68) PDUAPERLOG=クライアントエラーログファイルのサイズ

   〜<符号なし整数>((0,4096〜2000000000))《65536》(単位:バイト)

UAPのエラーログを出力する,クライアントエラーログファイルのサイズを指定します。

0を指定した場合はファイルの最大サイズとなり,最大サイズを超えるとクライアントエラーログは出力されません。4,096〜2,000,000,000を指定した場合は指定値のサイズとなり,指定値のサイズを超えると出力先が切り替わります。

クライアントエラーログについては,「クライアントエラーログ機能」を参照してください。

《ほかの環境変数との関係》

クライアントエラーログは,PDCLTPATHで指定したディレクトリに出力されます。PDCLTPATHの指定がない場合,UAPを起動したときのカレントディレクトリ(OpenTP1から起動されるUAPの場合,%DCDIR%\tmp\home\サーバ名××のディレクトリ)の下に出力されます。

(69) PDERRSKIPCODE=SQLCODE[,SQLCODE]…

クライアントエラーログへのメッセージ出力を抑止するSQLCODEを指定します。SQLCODEは最大10個指定できます。

例えば,SQLCODE−901と−917を抑止する場合は,次のように指定します。

 PDERRSKIPCODE=-901,-917
《利点》

UAPの構造によっては,SQLの処理で必然的にエラーが発生することがあります。通常の業務でこのようなエラーが頻繁に発生すると,ファイルシステムを圧迫してしまうおそれがあります。特に,X/Openに従ったAPIを使用するUAPの場合,プロセスごとにクライアントエラーログファイルを二つ作成してしまいます。この環境変数を指定すると,特定のエラーについてはメッセージの出力を抑止できるので,ファイルシステムへの負荷を軽減できます。

《適用基準》

次の条件をすべて満たす場合に適用してください。

  • UAPの構造上エラーが頻繁に発生する。

  • あらかじめ障害の原因が特定できて,その要因を調査する必要がない。

この環境変数を指定すると,不慮の障害が発生したときにその原因を調査できなくなります。適用する場合には注意してください。

(70) PDPRMTRC={YES|NO|IN|OUT|INOUT}

SQLトレースにパラメタ情報及び検索データを出力するかどうかを指定します。出力内容については,「SQLトレース機能」を参照してください。

YES:

SQLトレースに入力用パラメタ情報を出力します。YESを指定した場合,検索データ情報と入力パラメタを出力します。

NO:

SQLトレースにパラメタ情報を出力しません。

IN:

SQLトレースに入力用パラメタ情報を出力します。CALL文のINパラメタとINOUTパラメタも該当します。

OUT:

SQLトレースに出力用パラメタ情報,及び検索データ情報を出力します。CALL文のOUTパラメタとINOUTパラメタも該当します。

INOUT:

SQLトレースに入力用パラメタ情報,出力用パラメタ情報,及び検索データ情報を出力します。CALL文のINOUTパラメタは2回出力します。

注※

CALL文のINOUTパラメタの情報は,出力データだけとなります。

(71) PDPRMTRCSIZE=SQLトレースに出力するパラメタ情報の最大データ長

   〜<符号なし整数>((4〜32008))《256》(単位:バイト)

SQLトレースに出力するパラメタ情報及び検索データの最大データ長を指定します。可変長文字列型,BLOB型,及びBINARY型の場合,文字列長の領域もデータ長に含まれます。

この環境変数は,PDPRMTRC=NO以外の場合に有効になります。

この環境変数の指定値を大きくすると,出力する情報量が増えます。そのため,SQLトレースファイルのサイズ(PDSQLTRACEの指定値)も大きくする必要があります。

(72) PDTRCMODE={ERR|NONE}

SQLトレース以外のトラブルシュート情報(pderr*.trcの情報)を出力するかどうかを指定します。

ERR:pderr*.trcの情報を出力します。

NONE:pderr*.trcの情報を出力しません。

(73) PDUAPREPLVL={[s] [u[o][t]] [p] [r] |[a [o][t]]}

UAP統計レポートの出力情報を指定します。UAP統計レポートを出力するファイルをUAP統計レポートファイルといいます。この環境変数は,PDSQLTRACEを指定しているときに有効になります。

省略した場合,SQLトレース情報だけ出力されます。

なお,UAP統計レポートについては,「UAP統計レポート機能」を参照してください。

s:SQL単位の情報が出力されます。また,SQLトレース情報も出力されます。

u:UAP単位の情報が出力されます。

p:アクセスパス情報が出力されます。

r:SQL実行時の中間結果情報が出力されます。

o:UAP単位の情報にスレッド間ロック待ち時間が出力されます。u又はaが指定されていない場合,このオプションを指定しても無視されます。このオプションを指定すると,システム全体の性能に影響を与えるおそれがあります。通常の運用では指定しないでください。

t:UAP単位の情報をトランザクション単位に集計して出力します。u又はaが指定されていない場合,このオプションを指定しても無視されます。

a:suprを指定した場合と同じ情報が出力されます。

s,u,p,及びrを組み合わせて指定できます(su,sr,uprなど)。u又はaを指定した場合,o,tも指定できます。

a,o,及びtを組み合わせた指定方法と,同じ情報が出力されるs,u,o,t,p,及びrを組み合わせた指定方法を次に示します。

a,o,及びtを組み合わせた指定方法

s,u,o,t,p,及びrを組み合わせた指定方法

a

supr

ao

suopr

aot

suotpr

at

sutpr

例えば,aを指定した場合とsuprを指定した場合では同じ情報が出力されます。なお,s又はaを指定しない場合,SQLトレース情報は出力されません。

《留意事項》
  1. アクセスパス情報,又はSQL実行時の中間結果情報を取得する場合,SQLオブジェクトがバッファ中にあってもSQLオブジェクトを再作成するため,サーバの負荷が増えることがあります。

  2. 次の場合でUAP単位の情報を出力したい場合は,tを指定してトランザクション単位に集計して出力してください。tを指定しない場合は,情報は出力しません。

    ・OLTP下のX/Openに従ったAPIを使用するプログラムの場合

    ・DISCONNECTをしないでUAPが終了した場合

    ・接続プーリング機能を使用している場合

  3. アクセスパス情報,及びSQL実行時の中間結果情報は,1ギガバイトを超えると出力されません。

  4. 時間の表示(SQLの実行時間,排他待ち時間,CPU時間など)は,OSのシステムコールで取得できない小さい値があると,0が表示されます。

  5. HiRDB/パラレルサーバの場合,CONNECTしたディクショナリサーバでの権限チェック処理は,UAP単位の情報には含まれません。

  6. アクセスパス情報,又はSQL実行時の中間結果情報の出力を指定して,プロセス間メモリ通信機能を指定した場合(クライアント環境定義PDIPC=MEMORYを指定した場合),PDIPCの指定は無効になりPDIPC=DEFAULTとなります。

  7. tを指定している場合でも,手続き中で決着したトランザクションについては出力されません。手続き中で決着したトランザクションの情報については,後続のトランザクションの情報に含めて集計します。

(74) PDREPPATH=UAP統計レポートファイルの格納ディレクトリ

   〜<パス名>((最大256バイト))

UAP統計レポートファイルを,PDCLTPATHで指定したディレクトリとは別のディレクトリに作成する場合に指定します。この環境変数は,PDUAPREPLVLを指定しているときだけ有効になります。

PDREPPATHを指定したUAP統計レポートファイルの出力ファイル名については,「SQLトレース機能」を参照してください。

(75) PDTRCPATH=動的SQLトレースファイルの格納ディレクトリ

   〜<パス名>((最大256バイト))

HiRDBクライアントが作成する動的SQLトレースファイルの格納先ディレクトリを指定します。トレース取得コマンド(pdtrcmgr)で動的SQLトレースファイルを取得する場合には,この環境変数を必ず指定してください。

ここで指定したディレクトリをpdtrcmgrで指定すると,次回のCONNECTから,指定したディレクトリにSQLトレースファイルが作成されます。pdtrcmgrについては,「SQLトレース動的取得機能」を参照してください。SQLトレースについては,「SQLトレース機能」を参照してください。

(76) PDSQLTRCOPENMODE={CNCT|SQL

SQLトレースファイルのオープンモードを指定します。

CNCT:

CONNECT,DISCONNECT単位にSQLトレースファイルをオープン,クローズして,トレース情報を出力します。CNCTを指定した場合,PDSQLTRCOPENMODEにSQLを指定するよりオーバヘッドが削減されるため,SQLトレースを出力するための時間が短縮できます。

SQL:

オペレーション単位(SQL単位)にSQLトレースファイルをオープン,クローズして,トレース情報を出力します。

《留意事項》
  1. CNCTを指定した場合,SQLトレースファイルをオープンしたままで情報を書き込むため,正常にDISCONNECTできなかったときには,SQLトレース情報が欠落することがあります。

  2. ほかのクライアント環境変数の指定値によってはCNCTを指定しても無効となります。この場合はSQLとして動作します。ほかのクライアント環境変数の指定値によるCNCTが有効となる組み合わせを次の表に示します。ほかのクライアント環境変数については,各クライアント環境変数の説明を参照してください。

    表6‒40 ほかのクライアント環境定義指定値によるCNCTが有効となる組み合わせ

    クライアント環境変数PDSQLTRCFMT

    クライアント環境変数PDREPPATH

    指定なし

    指定あり

    X/Openに従ったAPIを使用した接続形態以外(非XA接続)

    X/Openに従ったAPIを使用した接続形態(XA接続)

    クライアント環境変数PDXATRCFILEMODE

    SEPARATE

    LUMP

    1

    ×

    ×

    ×

    2

    ×

    (凡例)

    ○:CNCTは有効になります。

    ×:CNCTは有効になりません(SQLとして動作します)。

(77) PDSQLTEXTSIZE=SQL文のサイズ

   〜<符号なし整数>((4096〜2000000))《4096》

   Type4 JDBCドライバ使用時(単位:Unicodeコード単位の数)

   上記以外(単位:バイト)

SQLトレースに出力するSQL文のサイズを指定します。

アクセスパス取得時に省略した場合,4096ではなく,2000000が仮定されます。

Type4 JDBCドライバではSQL文のサイズをUnicodeコード単位で扱うため,サロゲートペアの場合は1文字を表現するUnicodeコード単位の数が2以上となります。

(例)

[図データ]」は「0xD840 0xDC0B」のサロゲートペアです。文字数は1でUnicodeコード単位の数は2となります。

このため,SQL文中にサロゲートペアを含んでいる場合,SQL文の文字数が指定値の範囲内であってもSQLトレースに出力するSQL文が欠落することがあります。

注※

Unicodeコード単位とは,UTF-16エンコーディングのコード単位である16ビットchar値を示します。

(78) PDSQLEXECTIME={YES|NO}

・0904互換モードの場合:《NO》

SQLトレースにSQL実行時間を出力するかどうかを指定します。

推奨モードを適用している場合は,指定する必要はありません。0904互換モードを適用している場合は,YESを指定することを検討してください。

YES:

SQL実行時間を出力します。

出力されるSQL実行時間の単位はマイクロ秒となります。SQLトレースに出力される値は,実行時間が24時間以上のものは正常に出力されません。

NO:

SQL実行時間を出力しません。

(79) PDRCTRACE=再接続トレースファイルのサイズ

   〜<符号なし整数>((0,4096〜2000000000))(単位:バイト)

UAPの再接続トレースを出力するファイルのサイズを指定します。

0を指定した場合はファイルの最大サイズとなり,最大サイズを超えるとUAPの再接続トレースは出力されません。また,省略した場合もUAPの再接続トレースは出力されません。

4,096〜2,000,000,000を指定した場合は指定値のサイズとなり,指定値のサイズを超えると出力先が切り替わります。

再接続トレースは,PDCLTPATHで指定したディレクトリに出力されます。PDCLTPATHを指定していない場合は,UAPを実行したときのカレントディレクトリ(Cosminexusから実行されるUAPの場合はJ2EEサーバの実行時のカレントディレクトリ)下に出力されます。再接続トレースについては,「再接続トレース機能」を参照してください。

(80) PDWRTLNPATH=WRITE LINE文の値式の値を出力するファイルの格納先ディレクトリ

   〜<パス名>((最大256バイト))

WRITE LINE文の値式の値を出力する,ファイルの格納先ディレクトリを指定します。WRITE LINE文については,マニュアル「HiRDB SQLリファレンス」を参照してください。

この環境変数を省略した場合,PDCLTPATHで指定したディレクトリが仮定されます。

ファイルは,指定したディレクトリ(省略した場合はPDCLTPATHで指定したディレクトリ)に二つ作成されます。作成されるファイルは,X/Openに従がったAPI(TX_関数)の使用有無で異なります。作成されるファイル名を次に示します。

TX_関数を使用していない場合:

pdwrtln1.trc,及びpdwrtln2.trc

TX_関数を使用している場合:

pdwrtlnxxxxx-1.trc,及びpdwrtlnxxxxx-2.trc

xxxxx:UAP実行時のプロセスID

(81) PDWRTLNFILSZ=WRITE LINE文の値式の値を出力するファイルの最大サイズ

   〜<符号なし整数>((0,4096〜2000000000))(単位:バイト)

WRITE LINE文の値式の値を出力する,ファイルの最大サイズを指定します。

0を指定した場合のファイルの最大サイズはOSで管理できる最大サイズとなり,最大サイズを超えるとWRITE LINE文の値式の値は出力されません。また,省略した場合も,WRITE LINE文の値式の値は出力されません。

4,096〜2,000,000,000を指定した場合は指定値のサイズとなり,指定値のサイズを超えると出力先が切り替わります。

《留意事項》
  1. この環境変数を指定して,かつPDIPC=MEMORYを指定した場合,PDIPCの指定が無効になります。

  2. ファイルは,PDWRTLNPATHで指定したディレクトリに出力されます。

  3. 値を出力しているときにファイルの容量が一杯になると,もう一方のファイルに値を出力します。このとき,切り替え先のファイルに格納されている情報は消去され,新しい情報が書き込まれます。このため,必要な情報がある場合は,切り替えが発生する前に退避するなどしておいてください。なお,現在使用しているファイルを知りたい場合,次の方法で確認できます。このとき,最終更新日付の新しい方が現在使用しているファイルとなります。

    ・UNIX版の場合は,OSのls -lコマンドを実行します。

    ・Windows版の場合は,コマンドプロンプトからDIRコマンドを実行,又はエクスプローラで参照します。

(82) PDWRTLNCOMSZ=WRITE LINE文の値式の値の合計サイズ

   〜<符号なし整数>((1024〜131072))《1024》(単位:バイト)

WRITE LINE文の値式の値の合計サイズを指定します。

WRITE LINE文の値式の値の合計サイズが,この環境変数の指定値を超えた場合,超えた分の情報は無効になります。また,この場合,次の行に「**PDWRTLNCOMSZover**」が出力されます。

(83) PDUAPEXERLOGUSE={YES|NO}

拡張SQLエラー情報出力機能を使用するかどうかを指定します。

拡張SQLエラー情報出力機能については,「拡張SQLエラー情報出力機能」を参照してください。

YES:

拡張SQLエラー情報出力機能を使用します。

NO:

拡張SQLエラー情報出力機能を使用しません。

《システム定義との関係》

この環境変数を省略すると,システム定義のpd_uap_exerror_log_useオペランドの省略値又は指定値が仮定されます。

(84) PDUAPEXERLOGPRMSZ=パラメタ情報の最大データ長

   〜<符号なし整数>((0〜32008))(単位:バイト)

拡張SQLエラー情報出力機能使用時に,クライアントエラーログファイル及びSQLエラーレポートファイルに出力するパラメタ情報の最大データ長を指定します。1以上を指定した場合はパラメタ情報を出力しますが,0を指定した場合はパラメタ情報を出力しません。

《システム定義との関係》

この環境変数を省略すると,システム定義のpd_uap_exerror_log_param_sizeオペランドの指定値が仮定されます。

《留意事項》
  1. 可変長文字列型,BLOB型,及びBINARY型のデータの場合,データ長の領域も環境変数の指定値に含まれます。

  2. 出力するパラメタ情報のデータ長が,この環境変数の指定値を超えた場合,超えた分の情報は切り捨てられます。

(85) PDDNDPTRACE=メソッドトレースのファイルサイズ

   〜<符号なし整数>((0,65536〜2147483647))(単位:バイト)

ADO.NET 2.0に対応したHiRDBデータプロバイダ for .NET Frameworkで出力するメソッドトレースのファイルサイズを指定します。

指定値がある場合は,PDCLTPATHで指定されたディレクトリにメソッドトレースを出力します。

0を指定した場合はマシンのディスクに空き領域がある限り出力します。65536〜2147483647を指定した場合は指定値が最大サイズとなり,最大サイズを超えるとトレース出力先が切り替わります。省略した場合は,メソッドトレースを出力しません。メソッドトレースについては,「HiRDBデータプロバイダ for .NET Frameworkのトラブルシュート機能」を参照してください。

(86) PDSQLTRCFMT={1|2}

・0904互換モードの場合:《1》

SQLトレースの出力形式を指定します。出力形式により出力ファイル名称が異なります。出力ファイル名称及び指定値ごとの出力形式については,「SQLトレース機能」を参照してください。この環境変数は,PDSQLTRACEを指定しているときに有効になります。

出力形式2は,出力形式1よりも詳細情報を出力します。このため,通常は指定を省略するか2を指定してください。

1:

出力形式1で出力します。

2:

出力形式2で出力します。

《留意事項》

HiRDB SQL Tuning Advisor 08-03以前を使用してSQLトレースの解析を行う場合,出力形式2には対応していないため1を指定してください。

(87) PDVWOPTMODE={0|1|2}

アクセスパス表示ユティリティ用のアクセスパス情報を取得するかどうかを指定します。

アクセスパス情報ファイルは,UAPが接続したシングルサーバ又はフロントエンドサーバがあるユニットのSQL情報ディレクトリ(%PDDIR%\spool\pdsqldump)下に作成されます。

アクセスパス表示ユティリティについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。

0:

アクセスパス情報を取得しません。

1:

アクセスパス情報を取得し,アクセスパス情報ファイルに出力します。このとき,SQLオブジェクトがバッファ中にあるSQLについては,情報を出力しません。

2:

アクセスパス情報を取得し,アクセスパス情報ファイルに出力します。このとき,SQLオブジェクトがバッファ中にあるSQLについてもSQLオブジェクトを再作成し,情報を出力します。

《留意事項》
  1. HiRDB SQL Tuning Advisor用にアクセスパス情報を取得する場合は,PDTAAPINFPATHを指定してください。HiRDB SQL Tuning Advisor用アクセスパス情報ファイルについては,「HiRDB SQL Tuning Advisor用アクセスパス情報ファイル」を参照してください。

  2. 1を指定した場合,SQLオブジェクトがバッファ中にあるSQLについては,情報が出力されないので注意してください。SQLオブジェクトがバッファ中にあるSQLについても情報を出力したい場合は,2を指定してください。

  3. 2を指定した場合,SQLオブジェクトがバッファ中にあるSQLについてもSQLオブジェクトを再作成するため,1よりもサーバの負荷が増えることがあります。

  4. Windows版HiRDBで,%PDDIR%のパス長+認可識別子の長さ+UAP名の長さの合計が220文字より大きい場合は,アクセスパス情報ファイルの作成に失敗することがあります。この場合,UAP統計レポート機能を使用して,アクセスパス情報を取得します。UAP統計レポート機能については,「UAP統計レポート機能」を参照してください。

  5. SQL種別とPDVWOPTMODEの指定値の関係を次に示します。

    SQL種別

    条件

    PDVWOPTMODEの指定値

    0

    1

    2

    静的SQL

    SQLオブジェクトがバッファ中にない

    ×

    SQLオブジェクトがバッファ中にある

    ×

    ×

    動的SQL

    SQLオブジェクトがバッファ中にない

    ×

    SQLオブジェクトがバッファ中にある

    ×

    ×

    ルーチン定義

    なし

    ×

    CALL文

    インデクスの追加又は削除で,手続きのSQLオブジェクトのインデクス情報が無効になった場合

    ×

    上記以外の場合

    ×

    ×

    ×

(凡例)

○:アクセスパス情報を出力します。

×:アクセスパス情報を出力しません。

(88) PDTAAPINFPATH=アクセスパス情報ファイル出力ディレクトリ名

   〜<パス名>((最大256バイト))

HiRDB SQL Tuning Advisor用のアクセスパス情報ファイルを出力する場合に,出力先ディレクトリを指定します。この環境変数を指定しても,出力先ディレクトリがなかったり,書き込み権限がなかったりして,出力処理でエラーが発生した場合,アクセスパス情報を出力しません。なお,出力処理でエラーが発生しても,実行中のSQLはエラーにはなりません。ただし,JDBC4.0のType4 JDBCドライバでは例外を投入します。HiRDB SQL Tuning Advisor用アクセスパス情報ファイルについては,「HiRDB SQL Tuning Advisor用アクセスパス情報ファイル」を参照してください。

《留意事項》
  • HiRDB SQL Tuning Advisorのダイナミックブラウジング機能を使用する場合は,この環境変数の指定は無効になります。

  • この環境変数を指定している場合,プロセス間メモリ通信機能は使用できません。クライアント環境定義のPDIPCオペランドにMEMORYを指定していても,DEFAULTを指定した場合の動作となります。

(89) PDTAAPINFMODE={0|1}

HiRDB SQL Tuning Advisor用のアクセスパス情報ファイルを出力する場合に,アクセスパス情報ファイルのファイル名の形式を指定します。

0:

ファイル名はpdtaapinf1及びpdtaapinf2となります。

1:

接続ごとに,pdtaapinfHHMMSSmmm_XXX_1及びpdtaapinfHHMMSSmmm_XXX_2のファイル名で出力します。

HHMMSSmmm:

接続した時刻(SQLトレースに出力される,該当するCONNECTの接続開始時間と同じ)

XXXXXXXXXX:

接続通番(最大10けた)

(90) PDTAAPINFSIZE=アクセスパス情報ファイルサイズ

   〜<符号なし整数>((100000〜2000000000))《409600》(単位:バイト)

HiRDB SQL Tuning Advisor用のアクセスパス情報ファイルを出力する場合に,アクセスパス情報ファイルのファイルサイズを指定します。ここで指定したファイルサイズを超えると,出力先をもう一方のファイルに切り替えます。以降,これを繰り返しながら二つのファイルを交互に使用します。

(91) PDSTJTRNOUT={YES|NO}

・0904互換モードの場合:OLTP環境下ではトランザクションごとに統計ログファイルに出力します。それ以外の環境下では,コネクションごとに統計ログファイルに出力します。

UAPに関する統計情報を,トランザクションごとに統計ログファイルに出力するかどうかを指定します。

YES:

UAPに関する統計情報を,トランザクションごとに統計ログファイルに出力します。

NO:

UAPに関する統計情報を,コネクションごとに統計ログファイルに出力します。

UAPに関する統計情報の出力の開始は,システム定義のpdstbeginオペランド,又はpdstbeginコマンドで指定します。pdstbeginオペランドについてはマニュアル「HiRDB システム定義」を,pdstbeginコマンドについてはマニュアル「HiRDB コマンドリファレンス」を参照してください。

(92) PDLOCKLIMIT=ユーザ当たりの最大排他資源要求数

   〜<符号なし整数>((0〜200000000))《0》(単位:件)

一つのサーバに対して,UAPから発行する排他要求の上限値(排他資源数の上限値)を指定します。

0を指定するか省略した場合は,排他要求上限数のチェックをしません。この場合,できる限りの排他要求が発行されます。

排他資源数が不足した場合は,SQLエラーとなります。

《見積もり方法》

見積もり方法には,次の2種類があります。

  • 一つのUAPで使用する排他資源数から,上限値を算出します。

    排他資源数はSQLによって異なります。排他制御による排他資源数を概算し,その値からこの指定値を算出してください。排他資源数の見積もりについては,マニュアル「HiRDB システム定義」を参照してください。また,排他制御については,「排他制御」を参照してください。

  • UAPを接続するHiRDBサーバ側が持つ排他資源数の総数のうち,一つのUAPで使用できる排他資源数から,上限値を算出します。

    排他資源数の見積もりについては,マニュアル「HiRDB システム定義」を参照してください。

(93) PDDLKPRIO={96|64|32}

UAPのデッドロックプライオリティ値を指定します。

この環境変数は,システム定義のpd_deadlock_priority_useオペランドにYを指定した場合に有効になります。

この環境変数で指定した値の小さい方が,デッドロックが発生した場合にプログラムが優先的に処理されます。また,値が一番大きいと,デッドロックが発生した場合にプログラムはエラーとなり,ロールバックします。

なお,デッドロックプライオリティ値が同一の場合,トランザクションの開始が早い方を優先的に処理します。デッドロックプライオリティ値は次のようになります。

PDDLKPRIOの指定値

デッドロック

プライオリティ値

96

96

64

64

32

32

省略

X/Open XAインタフェース使用の場合

96

X/Open XAインタフェース未使用の場合

64

ユティリティ

64

運用コマンド

pddbchg,pdhold(-b及び-s),pdorbegin,及びpdorend

システム定義のpd_command_deadlock_priorityオペランドの指定値

上記以外

64

(凡例)−:該当しません。

(94) PDLOCKSKIP={YES|NO}

無排他条件判定をするかどうかを指定します。

YES:無排他条件判定をします。

NO:無排他条件判定をしません。

この環境変数にYESを指定した場合,検索処理(DELETE,UPDATE時の検索処理を含みます)の条件判定処理を無排他で実行します。無排他条件判定については,「無排他条件判定」を参照してください。

(95) PDFORUPDATEEXLOCK={YES|NO}

・0904互換モードの場合:《NO》

UAP中のFOR UPDATE句を指定した(又は仮定された)SQLの排他オプションに,WITH EXCLUSIVE LOCKを適用するかどうかを指定します。適用する場合,クライアント環境定義PDISLLVLの指定値は無効になります。

YES:

FOR UPDATE句を指定したSQLの排他オプションに,WITH EXCLUSIVE LOCKを適用します。

NO:

FOR UPDATE句を指定したSQLの排他オプションに,PDISLLVLの指定値を適用します。

ルーチン中のSQLに対して,PDFORUPDATEEXLOCKの指定は無効になります。ルーチン中のFOR UPDATE句を指定したSQLに,WITH EXCLUSIVE LOCKを適用する場合,ルーチン定義時のSQLコンパイルオプションで指定します。

(96) PDISLLVL=データ保証レベル

   〜<符号なし整数>((0〜2))

SQL文のデータ保証レベルを指定します。データ保証レベルとは,トランザクションのどの時点までデータの内容を保証するかのレベルのことをいいます。この環境変数は,SQL文に指定する排他オプションに相当します。

この環境変数を指定すると,UAP中のSQL文の排他オプションを一括して決定できます。ただし,SQL文中で排他オプションを指定している場合は,SQL文中の排他オプションの指定が優先されます。

なお,このオペランドの指定,SQL文中の排他オプションの指定,及びシステム定義のpd_isolation_levelオペランド指定の優先順位は次のとおりです。

  1. SQL文中の排他オプションの指定(SQL文単位で制御する場合に指定)

  2. このオペランドの指定(UAP単位で制御する場合に指定)

  3. システム定義のpd_isolation_levelオペランド指定(システム単位で制御する場合に指定)

上記三つをすべて省略した場合,排他オプションのWITH SHARE LOCKが仮定されます。排他オプションについては,マニュアル「HiRDB SQLリファレンス」を参照してください。

データ保証レベルについては,「データ保証レベル」を参照してください。

0:

ほかのユーザが更新中のデータでも更新完了を待たないで参照できます。そのため,より同時実行性を向上できますが,同一トランザクション中で同じ行を2度検索した場合,同じデータを受け取れないときがあります。例えば,SELECT * FROM ZAIKOで在庫表を検索する場合,ほかのユーザが在庫表を更新中でも,排他待ちをしないで検索できます。これは,SELECT文のWITHOUT LOCK NOWAIT指定に相当します。

なお,更新を伴うカーソル宣言に対しては0を指定しても無効になり,1が仮定されます。

1:

検索処理が終了するまで(HiRDBがページ又は行を見終わるまで),検索しているデータの内容をほかのユーザに更新させない場合に指定します。検索が終了すれば,そのトランザクションが終了していなくてもほかのユーザからの参照,及び更新を許可します。そのため,より同時実行性を向上できますが,同一トランザクション中で同じ行を2度検索した場合,同じデータを受け取れないときがあります。例えば,SELECT * FROM ZAIKOで在庫表を検索する場合,検索終了後にトランザクションの終了を待たないで,ほかのユーザからの在庫表の更新,又は参照を許可します。これは,SELECT文のWITHOUT LOCK WAIT指定に相当します。

2:

検索処理のトランザクションが終了するまで,検索しているデータの内容をほかのユーザに更新させない場合に指定します。例えば,SELECT * FROM ZAIKOで在庫表を検索する場合,トランザクションが終了するまで在庫表の内容を保証します。これは,SELECT文のWITH SHARE LOCK指定に相当します。

なお,更新を伴うカーソル宣言に対しては,WITH EXCLUSIVE LOCKが仮定されます。

《留意事項》
  1. 手続き(ストアドプロシジャ)中のSQL文のデータ保証レベルは,CREATE PROCEDURE,CREATE TYPE,ALTER PROCEDURE,又はALTER ROUTINEの指定で決まり,手続き実行時にはこの環境変数によって影響を受けることはありません。

  2. この環境変数を省略し,かつSQL文中の排他オプションも省略している場合は,そのSQL文に対して排他オプションのWITH SHARE LOCKが仮定されます。排他オプションについては,マニュアル「HiRDB SQLリファレンス」を参照してください。

(97) PDSQLOPTLVL=SQL最適化オプション[,SQL最適化オプション]…

   〜<識別子,又は符号なし整数>

データベースの状態を考慮して,最も効率的なアクセスパスを決定するための最適化の方法を指定します。

SQL最適化オプションには,識別子(文字列)で指定する方法と,数値で指定する方法がありますが,通常時は識別子で指定する方法をお勧めします。

識別子で指定する場合:
PDSQLOPTLVL="識別子"[,"識別子"]…
<指定例>
  • ネストループジョイン優先とグループ分け高速化処理を適用する場合

    PDSQLOPTLVL="PRIOR_NEST_JOIN","RAPID_GROUPING"

  • すべての最適化を適用しない場合

    PDSQLOPTLVL="NONE"

<規則>
  1. 識別子は一つ以上指定してください。

  2. 識別子を二つ以上指定する場合は,コンマで区切ってください。

  3. 識別子に指定できる内容(最適化方法)については,《SQL最適化オプションの指定値》を参照してください。

  4. すべての最適化を適用しない場合は,識別子に"NONE"を指定してください。ただし,同時に"NONE"以外の識別子を指定すると,"NONE"は無効になります。

  5. 識別子は大文字及び小文字で指定できます。

  6. 同じ識別子を二つ以上指定しても,一つ指定したものとみなされますが,なるべく同じ識別子は指定しないようにしてください。

  7. "識別子"[,"識別子"]…に指定できる文字列は,最大575バイトです。

数値で指定する場合:
PDSQLOPTLVL=符号なし整数[,符号なし整数]…
<指定例>
  • 複数のSQLオブジェクト作成,ANDの複数インデクス利用の抑止,及び複数インデクス利用の強制を適用する場合

    符号なし整数をコンマで区切って指定する場合:

    PDSQLOPTLVL=4,10,16

    符号なし整数の和を指定する場合:

    PDSQLOPTLVL=30

  • 既に14(4+10)を指定していて,新たに16を追加する場合

    PDSQLOPTLVL=14,16

  • すべての最適化を適用しない場合

    PDSQLOPTLVL=0

<規則>
  1. バージョン06-00より前のHiRDBから,バージョン06-00以降のHiRDBにバージョンアップする場合,バージョン06-00より前の合計値指定も有効になります。最適化オプションを変更する必要がない場合は,バージョン06-00以降のHiRDBにバージョンアップしたときにこのオペランドの指定値を変更する必要はありません。

  2. 符号なし整数は一つ以上指定してください。

  3. 符号なし整数を二つ以上指定する場合は,コンマで区切ってください。

  4. 符号なし整数に指定できる内容(最適化方法)については,《SQL最適化オプションの指定値》を参照してください。

  5. すべての最適化を適用しない場合は,符号なし整数に0を指定してください。ただし,同時に0以外の識別子を指定すると,0は無効になります。

  6. 同じ符号なし整数を二つ以上指定しても,一つ指定したものとみなされますが,なるべく同じ符号なし整数は指定しないようにしてください。

  7. 複数の最適化方法を指定する場合,その符号なし整数の和を指定することもできます。ただし,同じ最適化方法の値は二つ以上足さないでください(足した結果が別の最適化方法とみなされることもあるため)。

  8. 複数の最適化方法の値を足して指定する場合,どの最適方法を指定しているのか分かりにくくなるため,コンマで区切って指定する方法をお勧めします。また,既に複数の最適化方法の値を足して指定している場合で,新たに別の最適化方法が必要になったときは,追加する値をコンマで区切って後ろに指定できます。

  9. 符号なし整数[,符号なし整数]…に指定できる文字列は,最大575バイトです。

《システム定義との関係》
  1. この環境変数を省略するとシステム定義のpd_optimize_levelオぺランドの指定値が仮定されます。pd_optimize_levelオペランドについては,マニュアル「HiRDB システム定義」を参照してください。

  2. システム定義のpd_floatable_besオペランド,又はpd_non_floatable_besオペランドを指定している場合,「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」及び「フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)」の指定は無効になります。

  3. システム定義のpd_indexlock_modeオペランドにKEYを指定している場合(インデクスキー値排他の場合),「更新SQLの作業表作成抑止」の指定は無効になります。

《SQLとの関係》

ストアドルーチン中のSQL文のSQL最適化オプションは,CREATE PROCEDURE,CREATE TYPE,ALTER PROCEDURE,又はALTER ROUTINEの指定で決まり,PDSQLOPTLVLの指定によって影響を受けることはありません。

SQL文中にSQL最適化指定を指定している場合は,SQL最適化オプションよりもSQL最適化指定が優先されます。SQL最適化指定については,マニュアル「HiRDB SQLリファレンス」を参照してください。

《SQL最適化オプションの指定値》

SQL最適化オプションの指定値を次の表に示します。

表6‒41 SQL最適化オプションの指定値

項番

最適化方法

指定値

識別子

符号なし整数

1

ネストループジョイン強制

"FORCE_NEST_JOIN"

4

2

複数のSQLオブジェクト作成

"SELECT_APSL"

10

3

フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)※1※2

"FLTS_INC_DATA_BES"

16

4

ネストループジョイン優先

"PRIOR_NEST_JOIN"

32

5

フロータブルサーバ候補数の拡大※2

"FLTS_MAX_NUMBER"

64

6

ORの複数インデクス利用の優先

"PRIOR_OR_INDEXES"

128

7

自バックエンドサーバでのグループ化,ORDER BY,DISTINCT集合関数処理※2

"SORT_DATA_BES"

256

8

ANDの複数インデクス利用の抑止

"DETER_AND_INDEXES"

512

9

グループ分け高速化処理

"RAPID_GROUPING"

1024

10

フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)※1※2

"FLTS_ONLY_DATA_BES"

2048

11

データ収集用サーバの分離機能※1※2

"FLTS_SEPARATE_COLLECT_SVR"

2064

12

インデクス利用の抑止(テーブルスキャン強制)

"FORCE_TABLE_SCAN"

4096

13

複数インデクス利用の強制

"FORCE_PLURAL_INDEXES"

32768

14

更新SQLの作業表作成抑止

"DETER_WORK_TABLE_FOR_UPDATE"

131072

15

探索高速化条件の導出

"DERIVATIVE_COND"

262144

16

スカラ演算を含むキー条件の適用

"APPLY_ENHANCED_KEY_COND"

524288

17

プラグイン提供関数からの一括取得機能

"PICKUP_MULTIPLE_ROWS_PLUGIN"

1048576

18

導出表の条件繰り込み機能

"MOVE_UP_DERIVED_COND"

2097152

注※1

フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ),及びフロータブルサーバ対象限定(データ取り出しバックエンドサーバ)を共に指定した場合,それぞれの最適化方法は有効にはなりません。代わりに,データ収集用サーバの分離機能として動作します。

注※2

HiRDB/シングルサーバの場合,指定しても無効になります。

《指定値の目安》

指定値の目安を「更新SQLの作業表作成抑止」の適用条件を満たす場合と満たさない場合に分けて説明します。

なお,指定値の目安で項番XXと表記していますが,これは表「SQL最適化オプションの指定値」の項番のことを示しています。

●HiRDB/シングルサーバ

≪「更新SQLの作業表作成抑止」の適用条件を満たさない場合≫

項番4,6,8,9,16,及び18を指定してください。識別子で指定した場合の例を次に示します。

  PDSQLOPTLVL="PRIOR_NEST_JOIN",
               "PRIOR_OR_INDEXES",
               "DETER_AND_INDEXES",
               "RAPID_GROUPING",
               "APPLY_ENHANCED_KEY_COND",
               "MOVE_UP_DERIVED_COND"

≪「更新SQLの作業表作成抑止」の適用条件を満たす場合≫

項番4,6,8,9,14,16,及び18を指定してください。識別子で指定した場合の例を次に示します。

  PDSQLOPTLVL="PRIOR_NEST_JOIN",
               "PRIOR_OR_INDEXES",
               "DETER_AND_INDEXES",
               "RAPID_GROUPING",
               "DETER_WORK_TABLE_FOR_UPDATE",
               "APPLY_ENHANCED_KEY_COND",
               "MOVE_UP_DERIVED_COND"
●HiRDB/パラレルサーバ

≪「更新SQLの作業表作成抑止」の適用条件を満たさない場合≫

表6‒42 HiRDB/パラレルサーバのSQL最適化オプションの指定値の目安(1/2)

条件

指定値

SQL処理になるべく多くのバックエンドサーバを使用し,個々のSQL処理を速くしたい場合

大量検索のSQLを速くしたい場合

項番3〜9,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="FLTS_INC_DATA_BES",

"PRIOR_NEST_JOIN",

"FLTS_MAX_NUMBER",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

結果が数十件程度の検索を速くしたい場合

項番3,4,6〜9,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="FLTS_INC_DATA_BES",

"PRIOR_NEST_JOIN",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

業務ごとにバックエンドサーバを切り分けて使用したい場合

大量検索のSQLを速くしたい場合

項番4〜10,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="PRIOR_NEST_JOIN",

"FLTS_MAX_NUMBER",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"FLTS_ONLY_DATA_BES",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

数十件程度に絞り込む検索を速くしたい場合

項番4,6〜10,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="PRIOR_NEST_JOIN",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"FLTS_ONLY_DATA_BES",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

上記の条件に該当しない場合

項番4,6〜9,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="PRIOR_NEST_JOIN",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

≪「更新SQLの作業表作成抑止」の適用条件を満たす場合≫

表6‒43 HiRDB/パラレルサーバのSQL最適化オプションの指定値の目安(2/2)

条件

指定値

SQL処理になるべく多くのバックエンドサーバを使用し,個々のSQL処理を速くしたい場合

大量検索のSQLを速くしたい場合

項番3〜9,14,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="FLTS_INC_DATA_BES",

"PRIOR_NEST_JOIN",

"FLTS_MAX_NUMBER",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"DETER_WORK_TABLE_FOR_UPDATE",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

結果が数十件程度の検索を速くしたい場合

項番3,4,6〜9,14,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="FLTS_INC_DATA_BES",

"PRIOR_NEST_JOIN",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"DETER_WORK_TABLE_FOR_UPDATE",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

業務ごとにバックエンドサーバを切り分けて使用したい場合

大量検索のSQLを速くしたい場合

項番4〜10,14,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="PRIOR_NEST_JOIN",

"FLTS_MAX_NUMBER",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"FLTS_ONLY_DATA_BES",

"DETER_WORK_TABLE_FOR_UPDATE",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

数十件程度に絞り込む検索を速くしたい場合

項番4,6〜10,14,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="PRIOR_NEST_JOIN",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"FLTS_ONLY_DATA_BES",

"DETER_WORK_TABLE_FOR_UPDATE",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

上記の条件に該当しない場合

項番4,6〜9,14,16,及び18を指定してください。

(識別子で指定した例)

PDSQLOPTLVL="PRIOR_NEST_JOIN",

"PRIOR_OR_INDEXES",

"SORT_DATA_BES",

"DETER_AND_INDEXES",

"RAPID_GROUPING",

"DETER_WORK_TABLE_FOR_UPDATE",

"APPLY_ENHANCED_KEY_COND",

"MOVE_UP_DERIVED_COND"

《各最適化方法の内容》

1.ネストループジョイン強制

結合条件の列にインデクスを定義してある場合,結合処理にネストループジョインだけを使用します。ネストループジョインの結合処理方式については,「結合方式」を参照してください。

ただし,次のどれかの条件に当てはまる場合,ネストループジョイン以外の結合処理をすることがあります。

  • 結合条件にスカラ演算など,列指定以外を指定している。

  • 結合条件が=述語以外である。

  • 結合条件の列が,インデクスの先頭構成列でない。かつ,結合条件の列がインデクスの第n構成列の場合は,第1構成列から第n−1構成列まで,=述語,又はIS NULL述語の制限条件を指定していない。

  • 外結合で,結合条件をON探索条件に指定していない。

  • 探索条件中に,結合する両方の表に対して,それぞれインデクスを使用した検索をするプラグイン提供関数,又は構造化繰返し述語を指定している。

  • HiRDB/パラレルサーバで,分割表を内表とする外結合に対して,内表の分割列を結合条件に指定していない。

  • HiRDB/パラレルサーバで,フレキシブルハッシュ分割表を内表とする外結合である。

<ネストループジョイン強制の留意事項>
  1. 結合表をネストループジョインで処理する場合は,SQLの外表に指定した表を外表とします。

  2. 結合条件の一方の列にだけインデクスが定義してある結合をネストループジョインで処理する場合,インデクスを定義してある表の列を内表とします。

  3. 結合表以外で,結合条件の両辺の列にインデクスが定義してある結合をネストループジョインで処理する場合,ネストループジョインの外表,内表はHiRDBが判断して決定します。ただし,FROM句にビュー表又はWITH句問合せ名の指定がなく,探索条件に結合条件だけを指定している場合は,次の規則に従って外表,内表を決定します。

    (i) HiRDB/パラレルサーバの分割表の結合の場合,一方の表のすべての分割列を結合条件に指定していて,その結合相手の表の分割列のうち,結合条件に指定していない列があるときは,すべての分割列を結合条件に指定してある表が内表になります。

    (ii) (i)に当てはまらない場合は,FROM句の先に指定した表が外表になります。

  4. HiRDB/パラレルサーバで「ネストループジョイン強制」を適用する場合,大量データのジョインをするときには,できる限り結合列で表を分割するようにしてください。

2.複数のSQLオブジェクト作成

あらかじめ複数のSQLオブジェクトを作成し,実行時に埋込み変数,又は?パラメタの値によって,最適なSQLオブジェクトを選択します。

3.フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)

通常はデータ取り出しに使用しないバックエンドサーバをフロータブルサーバとして使用しています。この最適化方法を適用すると,データ取り出しに使用するバックエンドサーバについてもフロータブルサーバとして使用します。

ただし,フロータブルサーバとして使用するバックエンドサーバ数はHiRDBが計算して求めるのですべてのバックエンドサーバを使用するとは限りません。すべてのバックエンドサーバを使用したい場合は,「フロータブルサーバ候補数の拡大」とともに指定してください。

フロータブルサーバの割り当て方法については,「フロータブルサーバの割り当て方法(HiRDB/パラレルサーバ限定)」を参照してください。

この指定は,HiRDB/パラレルサーバのときだけ有効になります。

4.ネストループジョイン優先

結合条件の列にインデクスを定義してある場合,結合処理にネストループジョインを優先して使用します。ネストループジョインの結合処理方式については,「結合方式」を参照してください。

「ネストループジョイン強制」との違いは,ネストループジョイン強制は結合条件にインデクスが定義してあれば,絞り込み条件がなくても(制限に該当する場合を除く)必ずネストループジョインします。これに対して,ネストループジョイン優先は,絞り込み条件を指定している場合は必ずネストループジョインしますが,絞り込み条件がないときは結合方式をHiRDBが判断します。ただし,次のどれかの条件に当てはまる場合,絞り込み条件を指定していても,ネストループジョイン以外の結合処理をすることがあります。

  • 結合条件にスカラ演算など,列指定以外を指定している。

  • 結合条件が=述語以外である。

  • 結合条件の列が,インデクスの先頭構成列でない。かつ,結合条件の列がインデクスの第n構成列の場合は,第1構成列から第n−1構成列まで=述語,又はIS NULL述語の制限条件を指定していない。

  • 外結合で結合条件をON探索条件に指定していない。

  • 探索条件中に結合する両方の表に対して,それぞれインデクスを使用した検索をするプラグイン提供関数,又は構造化繰返し述語を指定している。

  • HiRDB/パラレルサーバで,分割表を内表とする外結合に対して,内表の分割列を結合条件に指定していない。

  • HiRDB/パラレルサーバで,フレキシブルハッシュ分割表を内表とする外結合である。

  • 最適化情報収集ユティリティ(pdgetcst)を実行している。

  • 絞り込み条件が,定義長256バイト以上のCHAR,VARCHAR,MCHAR,MVARCHARの列,若しくは定義長128文字以上のNCHAR,NVARCHARの列,又はBLOB型の列を含む探索条件だけである。

  • 絞り込み条件が,否定,又はOR演算子を含む探索条件だけである。

<ネストループジョイン優先の留意事項>
  1. 結合表をネストループジョインで処理する場合は,SQLの外表に指定した表を外表とします。

  2. 結合条件の一方の列にだけインデクスが定義してある結合をネストループジョインで処理する場合,インデクスを定義してある表の列を内表とします。

  3. 結合表以外で,結合条件の両辺の列にインデクスが定義してある結合をネストループジョインで処理する場合,ネストループジョインの外表,内表はHiRDBが判断して決定します。ただし,FROM句にビュー表及びWITH句の問合せ名の指定がなく,探索条件に結合条件だけを指定している場合は,次の規則に従って外表,内表を決定します。

    ・HiRDB/パラレルサーバの分割表の結合時には,一方の表のすべての分割列を結合条件に指定して,その結合相手の表の分割列のうち,結合条件に指定していない列がある場合は,すべての分割列を結合条件に指定している表が内表になります。

    ・上記に該当しない場合は,FROM句の最初に指定した表が外表になります。

  4. 「ネストループジョイン強制」とともに指定した場合,「ネストループジョイン優先」は無効になります。

5.フロータブルサーバ候補数の拡大

通常使用するフロータブルサーバ数は,利用できるフロータブルサーバから必要数をHiRDBが計算して割り当てます。この最適化方法を適用すると,利用できるフロータブルサーバをすべて利用します。ただし,データ取り出しに使用するバックエンドサーバはフロータブルサーバとして使用できません。

データ取り出しに使用するバックエンドサーバもフロータブルサーバとして使用したいときは,「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」とともに指定してください。

フロータブルサーバの割り当て方法については,「フロータブルサーバの割り当て方法(HiRDB/パラレルサーバ限定)」を参照してください。

この指定は,HiRDB/パラレルサーバのときだけ有効になります。

6.ORの複数インデクス利用の優先

ORの複数インデクスを利用して検索する方法を,優先して適用したい場合に指定します。

ORの複数インデクス利用とは,探索条件中のORで結ばれた複数の条件に対して,それぞれの条件をインデクスを使用して検索し,検索結果の和集合をとることで探索条件を評価する方式をいいます。

WHERE句又はON 探索条件にA OR B OR C … OR Zを指定して検索している場合で,ORで結ばれたすべての条件に対して=を使用して絞り込んでいるときに,「ORの複数インデクス利用の優先」を適用すると,高速に検索できます。

「ORの複数インデクス利用の優先」を指定しない場合でも,ORの数が少ないときは,HiRDBはORの複数インデクス利用を適用して検索しますが,ORの数が多くなるとHiRDBが内部的に計算している検索コストが大きくなるため,ORの複数インデクス利用が適用されなくなることもあります。そこで,「ORの複数インデクス利用の優先」を指定して,ORの数が多くなっても常にORの複数インデクス利用が適用されるようにします。

<ORの複数インデクス利用の優先の留意事項>
  1. ORと並列にANDで条件を指定していて,その条件がインデクスを使用して絞り込める場合は,このインデクスを使用することがあります。

  2. ORで指定したすべての条件が,比較述語の=で絞り込んでいる場合に適用されます。また,=で絞り込まれたすべての列に対して,単一列インデクス,又は複数列インデクスの第1構成列となるインデクスを定義していることが前提となります。

  3. 2表以上の結合検索時には,結合列のインデクスを使用して検索した方が高速に検索できるとHiRDBが判断した場合,適用されないことがあります。

  4. SQL文によっては,ORの複数インデクス利用ではなく,和集合を伴ったANDの複数インデクス利用が適用される場合があります。この場合もORの複数インデクス利用と同様に,高速に検索できます。ただし,ANDを伴った条件を指定していると,積集合と和集合を組み合わせてANDの複数インデクス利用を適用する場合があります。

    積集合を伴ったANDの複数インデクス利用を適用していて性能が良くない場合には,次のどちらかの方法で改善できることがあります。

    (a) 「ORの複数インデクス利用の優先」と同時に,「ANDの複数インデクス利用の抑止」を指定してください。積集合だけ抑止されるようになります。

    (b) ANDで連結した複数の列の条件が絞り込める場合,これらの条件列を含む複数列インデクスを定義してください。

  5. SQL拡張最適化オプションでコストベース最適化モード2の適用を使用しない場合は,結合検索時に複数インデクスを利用しません。ただし,複数インデクス利用を適用しないと評価できない条件がある場合には,このオプションの指定に関係なく複数インデクスを利用します。

7.自バックエンドサーバでのグループ化,ORDER BY,DISTINCT集合関数処理

通常,グループ化,ORDER BY,及びDISTINCT集合関数処理はフロータブルサーバを使用して処理しますが,1表検索の場合にはこの最適化を適用することで,表が定義されているバックエンドサーバ(自バックエンドサーバ)でグループ化,ORDER BY,及びDISTINCT集合関数処理をします。

グループ分け処理方式については,「グループ分け処理方式(HiRDB/パラレルサーバ限定)」を参照してください。

グループ分け高速化処理を適用する場合や,インデクスを使用して検索した結果,グループ化,ORDER BY,及びDISTINCT集合関数のためのソートをする必要がないとHiRDBが判断した場合には,より高速な処理方式が選択されます。

8.ANDの複数インデクス利用の抑止

ANDの複数インデクス利用をするアクセスパスを常に使わないようにします。

ANDの複数インデクス利用とは,探索条件にANDで結ばれた条件が複数あり,それぞれの列に異なるインデクスが定義してある場合(例えば,SELECT ROW FROM T1 WHERE C1 = 100 AND C2 = 200),それぞれのインデクスを使って条件を満たす行の作業表を作成し,これらの積集合を求める方式です。

ANDの複数インデクス利用中にORが含まれる場合,ANDの部分については複数インデクス利用を抑止しますが,ORの部分については抑止しません。

積集合は,データの特性によって有効な場合と,性能的に悪くなる場合とがあります。複数のインデクスを利用する場合に,それぞれのインデクスを使用することで,ある程度の件数に絞り込めて,更に積集合をとることで重なっている部分が少なくなる場合には有効になります。

ANDの複数インデクスの利用が有効でないと考えられる場合は,この最適化を適用してください。

ただし,一つの問合せ指定中に,同一表の列を含む条件を次の箇所に複数指定したときは,ANDの複数インデクス利用の抑止はできません。

  • 構造化繰返し述語の探索条件中

  • インデクスを使用した検索をするプラグイン提供関数の第1引数

9.グループ分け高速化処理

SQLのGROUP BY句で指定したグループ分けを,ハッシングを使って高速に処理します。

グループ分け高速化機能については,「グループ分け高速化機能」を参照してください。

10.フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)

通常はデータ取り出しに使用しないバックエンドサーバをフロータブルサーバとして使用しています。この最適化方法を適用すると,データ取り出しに使用するバックエンドサーバだけをフロータブルサーバとして使用します。この適用は,HiRDB/パラレルサーバのときだけ有効になります。

フロータブルサーバの割り当て方法については,「フロータブルサーバの割り当て方法(HiRDB/パラレルサーバ限定)」を参照してください。

11.データ収集用サーバの分離機能

「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」,又は「フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)」を指定した場合は,データ収集用サーバの分離機能となります。

データ収集用サーバの分離機能を適用した場合,複数のバックエンドサーバから1か所のバックエンドサーバにデータを集める必要があるSQLに対しては,データ転送元以外のバックエンドサーバをデータ収集用に割り当てます。これ以外の用途のフロータブルサーバとしては,データ収集用以外のバックエンドサーバ(データ取り出しバックエンドサーバも含みます)を割り当てます。

フロータブルサーバの割り当て方法については,「フロータブルサーバの割り当て方法(HiRDB/パラレルサーバ限定)」を参照してください。

12.インデクス利用の抑止(テーブルスキャン強制)

通常はインデクスの利用判定をHiRDBが決定します。この最適化方法を適用すると,インデクスを使用しない方式を強制的に使用するようにします。

ただし,ジョインを使用してネストループ結合になる場合,構造化繰返し述語を探索条件に指定した場合,又はインデクス型プラグイン専用関数の条件の場合は,インデクス利用を抑止できません。

13.複数インデクス利用の強制

ANDの複数インデクス利用を強制的に選択して,表を検索する場合に指定します。

ANDで結ばれた条件を複数指定している場合,この最適化を指定しないとANDの複数インデクス利用が選択されたときでも,通常は最大二つ程度のインデクスしか使用しません。使用するインデクスの数は,表定義,インデクス定義,及び探索条件によって変わります。

この最適化を指定すると,インデクスを使用することでサーチ範囲が絞り込める条件をすべて使用するようになります。

ANDの複数インデクス利用は,それぞれのインデクスを使用することで,ある程度の件数に絞り込めて,更に積集合をとることで重なっている部分が少なくなる場合に有効になります。

2表以上の結合検索時には,結合列のインデクスを使用して検索した方が高速に検索できるとHiRDBが判断した場合,適用されないことがあります。

SQL拡張最適化オプションでコストベース最適化モード2を使用しない場合は,結合検索時に複数インデクスを利用しません。ただし,複数インデクス利用を適用しないと評価できない条件がある場合には,このオプションの指定に関係なく複数インデクスを利用します。

14.更新SQLの作業表作成抑止

この機能は,カーソルを使って検索している表に対して行の更新,削除,及び挿入を行う場合に,検索で使用しているインデクスの構成列を更新すると,同一行を複数回検索,更新するおそれがあります。そのため,次に示す適用条件を満たす場合にだけ適用してください。

なお,この機能は,SQL最適化オプションの指定を省略した場合にもデフォルトで適用されます。既にこの機能を使用していて,上記のケースに当てはまる場合は,《注意事項》の10.を参照して対策してください。

<適用条件>

次に示す条件を満たす場合には,この機能の適用をお勧めします。

  • 検索で使用するインデクスの構成列を更新する可能性がない

    注※ UPDATE,DELETE,又はINSERT文の実行です。

検索で使用するインデクスの構成列を更新する可能性がある場合は,この機能を適用しないでください。

インデクスキー値無排他を適用している場合にこの最適化を指定すると,FOR UPDATE句を指定した検索,UPDATE文,又はDELETE文に対してインデクスを使用したときでも,HiRDBは内部処理のための作業表を作成しません。したがって,高速にSQL文を処理できます。

なお,インデクスキー値無排他を適用していない場合,作業表は作成されます。

インデクスを使用しているかどうかについては,アクセスパス表示ユティリティで確認できます。

更新SQLの作業表作成抑止を指定して,更にインデクスキー値無排他機能を使用している場合,カーソル使用時の表操作の制限が緩和されます。

作業表を作成するSQL文と,更新SQLの作業表作成抑止との関係を次の表に示します。

表6‒44 作業表を作成するSQL文と,更新SQLの作業表作成抑止との関係

SQL文

インデクスを使用する場合

インデクスを使用しない場合

この最適化を適用する

この最適化を適用しない

SELECT文

FOR UPDATE※1

×

×

FOR UPDATE OF

×

※2

×

FOR READ ONLY

ORDER BY

※4※5

※4

上記の指定なし

×※5

×

×

UPDATE文

SET句の更新値に値指定だけを指定している

×

※3

×

SET句の更新値に値指定以外の指定がある

※3

※3

×

DELETE文

×

×

(凡例)

○:作業表を作成します。

×:作業表を作成しません。

注※1

このSELECT文のカーソルを使用して更新した場合に,仮定されるFOR UPDATEを含みます。

注※2

FOR UPDATE OF 列名に,使用するインデクスの構成列を指定していない場合,作業表は作成されません。

注※3

SET句の左辺の更新する列名に,使用するインデクスの構成列を指定していない場合,作業表は作成されません。

注※4

インデクスの利用によって,ORDER BYのための作業表が作成されない場合があります。

注※5

カーソルを使用して検索中の表に対して,別のSQLでの表の更新ができます。ただし,カーソルの検索で使用しているインデクスを更新した場合,カーソルでの検索結果は保証されません。

15.探索高速化条件の導出

この最適化を指定すると,探索高速化条件の導出をします。

探索高速化条件とは,WHERE句の探索条件,FROM句のON 探索条件から,CNF変換,又は条件推移で新たに導出される条件のことをいいます。探索高速化条件を導出すると,検索する行が早い段階で絞り込まれるため,検索性能が向上します。ただし,探索高速化条件の生成及び実行に時間が掛かったり,アクセスパスが意図したとおりにならなかったりする場合があるため,できるだけこの最適化は指定しないで,探索高速化条件を直接SQL文中に指定するようにしてください。探索高速化条件の導出については,「探索高速化条件の導出」を参照してください。

16.スカラ演算を含むキー条件の適用

この最適化を指定すると,スカラ演算を指定した制限条件のうち,スカラ演算中に含まれる列がすべてインデクス構成列である場合に,インデクスのキー値ごとに条件を判定して絞り込みをします。この条件はキー条件として評価されます。

<スカラ演算を含むキー条件の適用を指定した場合のHiRDBの動作>

HiRDBは,インデクスを使用した検索の場合,次の順序で評価をします。

  1. インデクスのサーチ範囲を絞り込みます(サーチ条件)。

  2. 1.で絞り込んだ結果に対して,インデクスのキー値ごとに条件を判定して更に絞り込みます(キー条件)。

  3. 2.で真となったキー値に対して,行識別子(ROWID)を使用してデータページを参照し,条件を評価します。

スカラ演算を含む条件は,この最適化を指定しない場合は3.で評価されます。この最適化を指定した場合は,2.で評価されるため,データページを参照する行数が少なくなり,入出力を削減できます。サーチ条件,及びキー条件については,マニュアル「HiRDB コマンドリファレンス」を参照してください。

<スカラ演算を含むキー条件の適用についての留意事項>
  1. この最適化を指定すると,HiRDBはインデクスでの絞り込みが有効に行われていると判断します。その結果,インデクスがより使用されやすくなるため,スカラ演算を含む条件のインデクスでの絞り込みがあまり期待できない場合には,この最適化は指定しないでください。

  2. 次のどれかの条件に該当する場合,その条件はキー条件として評価されません。

    ・インデクス構成列以外の列を含む場合

    ・システム定義スカラ関数を含む場合

    ・システム組込みスカラ関数IS_USER_CONTAINED_IN_HDS_GROUPを含む場合

    ・関数呼出しを含む場合

    ・添字が整数の繰返し列を含む場合

  3. スカラ演算を含む構造化繰返し述語は,インデクスを使用しないと評価できないため,エラーとなります。そのため,この最適化を指定しなくても,キー条件が適用されます。

17.プラグイン提供関数からの一括取得機能

探索条件にプラグイン提供関数を指定し,HiRDBがプラグインインデクスを使用して検索する場合,通常,HiRDBはプラグイン提供関数からの返却結果(行位置情報と,必要に応じて受渡し値)を1行ごとに取得します。

この最適化を適用すると,プラグイン提供関数の返却結果を複数行まとめて取得できるため,プラグイン提供関数の呼び出し回数を削減できます。このため,検索性能も向上します。なお,プラグイン提供関数からの一括取得機能を適用する場合,HiRDBが内部的に作業表を作成します。

この最適化を指定していなくても,HiRDBが常にプラグイン提供関数からの一括取得機能を適用した方が高速に検索できると判断した場合には,無条件にプラグイン提供関数からの一括取得機能を適用することがあります。プラグイン提供関数からの一括取得機能の適用有無を次に示します。

指定したSQL文の種類

プラグイン提供関数からの一括取得機能の指定

なし

あり

実表の検索結果に対して作業表が必要なSQL文

一括取得に対応していない関数

×

×

一括取得に対応している関数

実表の検索結果に対して作業表が不要なSQL文

一括取得に対応していない関数

×

×

一括取得に対応している関数

×

(凡例)

○:無条件にプラグイン提供関数からの一括取得機能を適用します。

△:新たに作業表を作成して,プラグイン提供関数からの一括取得機能を適用します。

×:プラグイン提供関数からの一括取得機能を適用しません。

注※

作業表用ファイルを必要とするSQLについては,マニュアル「HiRDB システム導入・設計ガイド」の「作業表用ファイルの概要」を参照してください。

<プラグイン提供関数からの一括取得機能の留意事項>
  1. プラグイン提供関数の返却結果を取得する場合,HiRDBが内部的に作業表を作成する必要があります。通常は,行ごとに返却結果を受け取る時間よりも,作業表を作成する時間の方が短いため,検索性能が向上します。ただし,この最適化を指定することで検索性能が低下する場合もあるため,性能低下による影響が大きいときにはこの最適化を指定しないでください。

  2. 作業表を作成しない検索の場合に,この最適化を指定すると,1件目のFETCHまでの時間が遅くなります。これは,1行取り出すごとにクライアントへ結果を返却していた処理が,プラグイン提供関数を指定した探索条件を満たすすべての行を取り出して作業表を作成した後に,クライアントへ結果を返却するように変わるためです。1件目のFETCHの性能低下が問題になる場合は,この最適化を指定しないでください。

  3. この最適化を適用すると,プラグイン提供関数の返却結果を複数行まとめて取得するため,メモリ所要量が増加します。メモリ所要量については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

18.導出表の条件繰り込み機能

通常,導出表のための作業表には,導出表の列に対する探索条件に一致しない行も格納します。この最適化方法を適用すると,導出表の列に対する探索条件に一致しない行を除いた後に,導出表のための作業表を作成します。これによって,作業表の容量,及び作業表への入出力回数を削減できます。また,このようなアクセスパスを使用することによって,検索する行をより有効に絞り込めるインデクスを利用できる場合があります。

バージョン08-02以降のHiRDBを初めて導入する場合は,この機能の使用をお勧めします。

<導出表の条件繰り込み機能の留意事項>

バージョン08-02より前のHiRDBからバージョンアップする場合,この機能を使用することでアクセスパスが変わることがあります。アクセスパスが変わることによって,検索する行を有効に絞り込めないインデクスを選択し,性能が劣化するおそれがあります。その場合は,この機能を使用する前後でアクセスパスを確認し,最適なインデクスを使用しているかどうかを確認してください。最適なインデクスを使用できていない場合は,使用インデクスのSQL最適化指定で使用するインデクスを指定するか,この機能の使用をやめてください。

《注意事項》

注意事項を次に示します。

  1. インデクスを定義していない表については,次の最適化を指定しても影響はありません。

    「ネストループジョイン強制」

    「複数のSQLオブジェクト作成」

    「ネストループジョイン優先」

    「ORの複数インデクス利用の優先」

    「ANDの複数インデクス利用の抑止」

    「インデクス利用の抑止(テーブルスキャン強制)」

    「複数インデクス利用の強制」

    「更新SQLの作業表作成抑止」

    「スカラ演算を含むキー条件の適用」

  2. ASSIGN LIST文(副問合せ中を除く)については,必ずインデクスを使用して検索するため,次の最適化を指定しても影響はありません。

    「ANDの複数インデクス利用の抑止」

    「インデクス利用の抑止(テーブルスキャン強制)」

  3. 最適化情報収集ユティリティ(pdgetcst)で最適化情報を取得しない場合は,「複数のSQLオブジェクト作成」を指定しても無効になります。

  4. グループ分け高速化処理を利用する場合,グループ分けされるグループ数が多いときは効果がないことがあります。この場合は,PDAGGRを見積もって必要な大きさの値を指定します。見積もり値以上の値を指定しても効果はありません。なお,指定値に応じてプロセス固有メモリの使用量が多くなるので注意が必要です。

  5. 「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」を指定しなくてもすべてのバックエンドサーバをデータ取り出しに使用するSQLに対しては,データ取り出しに使用するバックエンドサーバをフロータブルサーバとして使用します。

  6. 「ORの複数インデクス利用の優先」と「インデクス利用の抑止(テーブルスキャン強制)」を同時に指定した場合,「ORの複数インデクス利用の優先」は無効になります。

  7. 「ANDの複数インデクス利用の抑止」と「複数インデクス利用の強制」を同時に指定した場合,ANDの部分については複数インデクス利用を抑止し,ORの部分については複数インデクスを強制的に利用します。

  8. 「複数インデクス利用の強制」と「インデクス利用の抑止(テーブルスキャン強制)」を同時に指定した場合,「複数インデクス利用の強制」は無効になります。

  9. ディクショナリ表SQL_ROUTINESに格納されるSQL最適化オプションの値は,10進数の形式(各最適化方法の符号なし整数の和)となります。

  10. 「更新SQLの作業表作成抑止」を適用した場合,次のすべての条件を満たすときは,同一行を複数回更新してデータベース不正になる,又は同一行を延々と更新し続けてトランザクションが終了しないことがあります。

    (発生条件)

    • (a) インデクスキー値無排他を使用している

    • (b) カーソルを使って検索している表に対して,UPDATE,INSERT,又はDELETE文を実行する

    • (c) (b)の検索のWHERE句にインデクス構成列に対する条件を指定している

    • (d) (c)の条件をHiRDBがインデクスを用いて評価する

    • (e) (b)がUPDATEの場合,(c)のインデクス構成列の値を変更する

      注※

      アクセスパス表示ユティリティ(pdvwopt)を使用することでHiRDBが検索で使用するインデクスを確認できます。

    (例)

    <インデクス定義>
      CREATE INDEX X1 ON T1(C1) ;
     
    <カーソル宣言>
      DECLARE CR1 CURSOR FOR SELECT C1 FROM T1 WHERE C1>0 FOR UPDATE ;
     
    上記のカーソルを使用して,次のFETCH文,UPDATE文を繰り返すと,C1=C1+10に更新した行が再度検索され,再度C1=C1+10に更新されます。
     
      WHILE(SQLCODE == 0){
        FETCH CR1 INTO :XX ;
        UPDATE T1 SET C1=C1+10 WHERE CURRENT OF CR1 ;
      }

    (対策方法)

    • 二重更新が発生しないようにUAPを修正してください。修正例を次に示します。

      更新後の値が,更新対象のすべての行の更新前の値と異なる場合

      UPDATE文の更新後の値が検索の探索条件を満たさないように探索条件を変更してください。

      (例)C1の更新前の値が0以上10未満の場合,WHERE C1>0 AND C1<10を追加する。

      UPDATE文の更新値が,更新列の値を単純に増加させる操作の場合

      SELECT文にORDER BY 更新列 DESCを指定し,大きい順に更新してください。

      (例)C1=C1+10の場合,SELECT C1 FROM T1 WHERE C1>0 ORDER BY C1 DESC FOR UPDATEとする。

      UPDATE文の更新値が,更新列の値を単純に減少させる操作の場合

      SELECT文にORDER BY 更新列 ASCを指定し,小さい順に更新してください。

      (例)C1=C1-10の場合,SELECT C1 FROM T1 WHERE C1>0 ORDER BY C1 ASC FOR UPDATEとする。

    • 同一行が複数回検索されると困るUAPについては,「更新SQLの作業表作成抑止」を適用しないようにしてください。ストアドルーチンの場合は,ルーチン定義時のSQL最適化オプションで「更新SQLの作業表作成抑止」を指定しないで,ルーチンを定義し直してください。

    • 検索に使用するインデクスの構成列から,該当する列を削除してください。ただし,インデクス構成列の一部を削除した場合,その列が探索条件で十分に絞り込める列のときは,性能が劣化するため注意してください。また,インデクスの一部を削除した場合,インデクスキーの重複数が多くなり,排他待ち及びデッドロックが多発する可能性があります。したがって,この対策方法はあまりお勧めできる対処でないため,採用する場合には十分に検証してください。

    また,UPDATE文のSET句の列名に,このUPDATE文で使用するインデクスの構成列を指定し,その更新値にWHERE句の探索条件を満たす値を指定した場合も,同一行を複数回更新することがあります。

(98) PDADDITIONALOPTLVL=SQL拡張最適化オプション[,SQL拡張最適化オプション]…

   〜<識別子,又は符号なし整数>

データベースの状態を考慮して,最も効率的なアクセスパスを決定するための最適化の方法を指定します。

SQL拡張最適化オプションは,識別子(文字列)で指定する方法と,数値で指定する方法があります。

識別子で指定する場合:
PDADDITIONALOPTLVL="識別子"[,"識別子"]…
<指定例>
  • 「コストベース最適化モード2の適用」及び「ハッシュジョイン,副問合せのハッシュ実行」を適用する場合

    PDADDITIONALOPTLVL="COST_BASE_2","APPLY_HASH_JOIN"

  • すべての最適化を使用しない場合

    PDADDITIONALOPTLVL="NONE"

<規則>
  1. 識別子は一つ以上指定してください。

  2. 識別子を二つ以上指定する場合は,コンマで区切ってください。

  3. 識別子に指定できる内容(最適化方法)については,《SQL拡張最適化オプションの指定値》を参照してください。

  4. すべての機能を使用しない場合は,識別子に"NONE"を指定してください。

  5. 識別子は大文字及び小文字で指定できます。

  6. 同じ識別子を二つ以上指定しても,一つ指定したものとみなされますが,なるべく同じ識別子は指定しないようにしてください。

  7. "識別子"[,"識別子"]…に指定できる文字列は,最大575バイトです。

数値で指定する場合:
PDADDITIONALOPTLVL=符号なし整数[,符号なし整数]…
<指定例>
  • 「コストベース最適化モード2の適用」及び「ハッシュジョイン,副問合せのハッシュ実行」を適用する場合

    PDADDITIONALOPTLVL=1,2

  • すべての最適化を使用しない場合

    PDADDITIONALOPTLVL=0

<規則>
  1. 符号なし整数は一つ以上指定してください。

  2. 符号なし整数を二つ以上指定する場合は,コンマで区切ってください。

  3. 符号なし整数に指定できる内容(最適化方法)については,《SQL拡張最適化オプションの指定値》を参照してください。

  4. すべての機能を使用しない場合は,符号なし整数に0を指定してください。

  5. 同じ符号なし整数を二つ以上指定しても,一つ指定したものとみなされますが,なるべく同じ符号なし整数は指定しないようにしてください。

  6. 符号なし整数[,符号なし整数]…に指定できる文字列は,最大575バイトです。

《システム定義との関係》

この環境変数を省略するとシステム定義のpd_additional_optimize_levelオぺランドの指定値が仮定されます。pd_additional_optimize_levelオペランドについては,マニュアル「HiRDB システム定義」を参照してください。

《SQLとの関係》

ストアドルーチン中のSQL文のSQL拡張最適化オプションは,CREATE PROCEDURE,CREATE TYPE,ALTER PROCEDURE,又はALTER ROUTINEの指定で決まり,PDADDITIONALOPTLVLの指定によって影響を受けることはありません。

SQL文中にSQL最適化指定を指定している場合は,SQL最適化拡張オプションよりもSQL最適化指定が優先されます。SQL最適化指定については,マニュアル「HiRDB SQLリファレンス」を参照してください。

《SQL拡張最適化オプションの指定値》

SQL拡張最適化オプションの指定値を次の表に示します。

表6‒45 SQL拡張最適化オプションの指定値

項番

最適化方法

指定値

識別子

符号なし整数

1

コストベース最適化モード2の適用

"COST_BASE_2"

1

2

ハッシュジョイン,副問合せのハッシュ実行

"APPLY_HASH_JOIN"

2

3

値式に対する結合条件適用機能

"APPLY_JOIN_COND_FOR_VALUE_EXP"

32

4

スカラ演算を含む条件に対するサーチ条件適用

"APPLY_SRCH_COND_FOR_VALUE_EXP"

64

5

パラメタを含むXMLEXISTS述語への部分構造インデクスの有効化

"ENABLE_INDEX_XMLEXISTS_PARAM"

256

6

プラグインインデクスでの他インデクス絞り込み結果の利用の抑止

"DETER_IS_TRUE_AND"

2048

7

FROM句の導出表のマージ適用

"MERGE_FROM_DERIVED_TABLE"

4096

8

外結合内結合変換機能

"CONVERT_OUTER_INNER_JOIN"

8192

項番2〜8は,「コストベース最適化モード2の適用」を指定した場合,有効になります。

《各最適化方法の内容》

1.コストベース最適化モード2の適用

コストベース最適化モード2を使用して最適化処理をします。コストベース最適化モード2については,「SQL最適化モード」を参照してください。

留意事項
  • HiRDBを初めて導入した場合

    この機能の使用をお勧めします。この機能を使用する場合,最適化の精度を更に向上させるために,必要に応じて最適化情報収集ユティリティを実行してください。最適化情報収集ユティリティの実行要否については,マニュアル「HiRDB コマンドリファレンス」を参照し,性能について十分に検証するようにしてください。

    最適化情報収集ユティリティを実行する場合,テスト環境と本番環境でDB規模が異なると(表の行数が異なると),テスト環境と本番環境でアクセスパスが変わることがあります。テスト環境では,本番での表の行数(NROWS)を最適化情報パラメタファイルに記述して,最適化情報収集ユティリティに-sオプションを指定して実行してください。

  • バージョン06-00より前のバージョンからHiRDBをバージョンアップした場合

    この機能を使用するかどうかを検討してください。バージョンアップ前と同じ動作環境にするならば,この機能を使用しないでください。ただし,バージョン06-00以降にサポートするSQL文によっては,常にこの機能を使用して最適化処理をすることがあります。

2.ハッシュジョイン,副問合せのハッシュ実行

結合検索の場合にハッシュジョインを適用して最適化をします。副問合せを伴った検索については,ハッシングによって副問合せを処理します。この最適化を適用するかどうかについては,結合方式,外への参照のない副問合せの実行方式,及び外への参照のある副問合せの実行方式を考慮して決めてください。なお,これらの詳細については,それぞれ「結合方式」,「外への参照のない副問合せの実行方式」,及び「外への参照のある副問合せの実行方式」を参照してください。

また,この最適化を適用する場合は,事前にシステム定義を指定しておく必要があります。ハッシュジョイン,副問合せのハッシュ実行を適用する場合の準備については,「ハッシュジョイン,副問合せのハッシュ実行を適用する場合の準備」を参照してください。

留意事項
  • ハッシュジョインを使用しない場合は,この機能を指定する必要はありません。

3.値式に対する結合条件適用機能

この機能を指定した場合,値式を含む条件に対して結合条件を作成します。

(例)

次の式の場合,結合条件を作成します。

substr(t1.c1,1,100)=t2.c1

値式を含む結合条件しかない場合,この機能によってアクセスパスが直積からネストループジョイン,ハッシュジョイン,又はマージジョインになり,SQL実行の高速化が期待できます。

留意事項
  • バージョン08-04以降のHiRDBを初めて導入した場合

    この機能の使用をお勧めします。

  • バージョン08-04より前のHiRDBをバージョンアップした場合

    この機能を使用することで結合条件が増えるため,結合順序と結合方式が変わることがあります。結合順序と結合方式が変わると,絞り込みが有効に行われない結合順序,又は性能が悪い結合方式を選択するおそれがあり,これによって,性能が低下することがあります。また,有効に行が絞り込めない結合順序を選択した場合,ジョインの途中結果を作業表に入れることができなくなり,結果がエラーになるおそれがあります。

    このため,この機能を適用する前後でアクセスパスを確認し,この機能の適用によって性能の低下やエラーが発生しないことを確認してください。性能の低下やエラーが発生した場合は,この機能の使用をやめるか,結合表のINNER又はLEFT OUTERで結合順序を指定し,結合方式のSQL最適化指定で適切な結合方式を指定してください。

4.スカラ演算を含む条件に対するサーチ条件適用

この機能を指定した場合,強制的にコストベース最適化モード2が適用されます。スカラ演算を含む探索条件のうち,次の条件をすべて満たす場合にスカラ演算をあらかじめ演算し,その結果を使ってインデクスのサーチ条件として評価し,絞り込みます。

  1. 次の述語を指定している。

    ・比較述語

    ・IN述語

    ・SIMILAR述語

    ・BETWEEN述語

    ・構造化繰返し述語中の上記のどれかの述語

  2. 1.の述語の左辺※1が,その問合せのFROM句に指定した表の列指定※2である。

  3. 2.で指定した列指定にインデクスを定義している。

  4. 1.の述語の右辺※1が,その問合せのFROM句に指定した表の列指定を含まないスカラ演算である。

注※1

比較述語の場合は左辺と右辺の指定が逆でも適用されます。

注※2

繰返し列を指定する場合は,添字としてANYを指定した場合に適用されます。

この機能を指定した場合のHiRDBの動作

HiRDBは,インデクスを使用した検索の場合,次の順序で評価をします。

  1. インデクスのサーチ範囲を絞り込みます(サーチ条件)。

  2. 1.で絞り込んだ結果に対して,インデクスのキー値ごとに条件を判定して更に絞り込みます(キー条件)。

  3. 2.で真となったキー値を持つ行のデータページを参照し,残りの探索条件を評価します。

スカラ演算を含む条件は,この最適化を指定しない場合は2.(「スカラ演算を含むキー条件の適用」指定時)又は3.で評価されますが,この最適化を指定した場合は,1.で評価されます。スカラ演算を含む探索条件の評価タイミングが2.から1.に変わる場合には,インデクスのサーチ範囲を絞り込めます。3.から1.に変わる場合には,データページを参照する行数が少なくなり入出力を削減できます。サーチ条件及びキー条件については,マニュアル「HiRDB コマンドリファレンス」を参照してください。

留意事項
  • バージョン09-50以降のHiRDBを初めて導入した場合

    この機能の使用をお勧めします。

  • バージョン09-50より前のHiRDBをバージョンアップした場合

    この機能はSQL拡張最適化オプション省略時にデフォルトで適用されます。

    この機能を使用することで,この機能を適用できるSQLで使用するインデクスやサーチ条件種別が変わり,アクセスパスが変更になることがあります。それによって,SQL文の検索性能が低下するおそれがあります。この機能を使用する前後でアクセスパスを確認し,アクセスパスの変更によって性能低下が見られる場合は,この機能の使用を取りやめてください。

    この機能を使用することで,強制的にコストベース最適化モード2が適用されます。そのため,バージョンアップ前にコストベース最適化モード1で運用していた場合に,すべてのSQLで使用するインデクスやサーチ条件種別などのアクセスパスが変更になることがあり,SQL文の検索性能が低下するおそれがあります。この機能を使用する前後でアクセスパスを確認し,アクセスパスの変更によって性能低下が見られる場合は,この機能の使用を取りやめてください。

5.パラメタを含むXMLEXISTS述語への部分構造インデクスの有効化

次の二つの条件を満たす検索をするときに部分構造インデクスを使用できるようにします。

  • XMLEXISTS述語のXML問い合わせ関数にCAST指定を指定して,かつCAST指定の値式に?パラメタ,SQLパラメタ,又はSQL変数を指定

  • 定義されているインデクスの部分構造指定と,XMLEXISTS述語のXQuery問い合わせ中で条件として指定した部分構造パスが一致

部分構造インデクスが使用できることで,検索処理の性能向上が期待できます。部分構造インデクスの使用条件については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

部分構造インデクスを使用して検索処理の性能を向上させる場合の例を次に示します。

SQL例
  • 表定義

    CREATE TABLE T1(C1 XML);

  • インデクス定義

    CREATE INDEX T1C1 ON T1(C1) KEY USING UNIQUE TAG FROM ‘/a/b/c’ AS VARCHAR(30);

  • データ挿入

    INSERT INTO T1(C1) VALUES(XMLPARSE(DOCUMENT '<?xml version="1.0" encoding="Shift_JIS"?><a><b><c>aaa</c></b></a>'));

  • 検索

    SELECT XMLSERIALIZE(C1 AS VARCHAR(256)) FROM T1 WHERE

    XMLEXISTS(‘/a/b[c=$AAA]’ PASSING BY VALUE C1,CAST(? AS VARCHAR(256)) AS AAA);

留意事項
  • バージョン09-03以降のHiRDBを初めて導入した場合

    この機能の使用をお勧めします。

  • バージョン09-03より前のHiRDBをバージョンアップした場合

    この機能を使用すると,HiRDBがXMLEXISTS述語を指定して検索する際に部分構造インデクスを使用する可能性があり,一部の検索処理で性能が低下するおそれがあります。

    このため,この機能の使用前後でアクセスパスを確認し,使用後にアクセスパスが変更されていないか確認してください。アクセスパスが変更され,性能低下が見られる場合は,この機能の使用を中止してください。

6.プラグインインデクスでの他インデクス絞り込み結果の利用の抑止

プラグインインデクスで他インデクス絞り込み結果を利用しないアクセスパスにする場合,この最適化を指定してください。プラグインインデクスでの他インデクス絞り込み結果の利用については,「プラグインインデクスでの他インデクス絞り込み結果の利用」を参照してください。

7.FROM句の導出表のマージ適用

この機能を指定した場合,強制的にコストベース最適化モード2が適用されます。FROM句の導出表を,上位問合せにマージして作業表を作成しないことで性能を向上させます。

マージを適用する条件については,マニュアル「HiRDB SQLリファレンス」の「表参照」の「FROM句の導出表についての規則」を参照してください。

留意事項
  • バージョン09-50以降のHiRDBを初めて導入した場合

    この機能の使用をお勧めします。

  • バージョン09-50より前のHiRDBをバージョンアップした場合

    この機能はSQL拡張最適化オプション省略時にデフォルトで適用されます。

    この機能を使用することによって,従来使用していたインデクスを使用しなくなり,検索方式や結合方式が変化するため,性能が低下するおそれがあります。

    そのため,この機能を使用する前後で意図したインデクスを使用しているかどうかをアクセスパスで確認してください。

    アクセスパスの変更によって性能低下が見られるときは,この機能の使用を取りやめてください。

    この機能を使用することで,強制的にコストベース最適化モード2が適用されます。そのため,バージョンアップ前にコストベース最適化モード1で運用していた場合に,すべてのSQLで使用するインデクスやサーチ条件種別などのアクセスパスが変更になることがあり,SQL文の検索性能が低下するおそれがあります。この機能を使用する前後でアクセスパスを確認し,アクセスパスの変更によって性能低下が見られるときは,この機能の使用を取りやめてください。

8.外結合内結合変換機能

この機能を指定した場合,強制的にコストベース最適化モード2が適用されます。この機能を指定した場合,外結合を含む問合せ指定のWHERE句に指定した探索条件をチェックし,外結合でナル拡張して生成される行(結合条件を満たさない外表の行)が確実に選択されないことが分かるとき,外結合から内結合に変換します。

外結合から内結合に変換することで不要な処理を省略できるだけでなく,WHERE句に指定した内表の列に対する探索条件へのインデクスの適用ができるようになり,実行性能の向上が期待できます。

また,導出表の条件繰り込み機能と組み合わせて使用することで,変換対象の外結合の内表として指定した表に対してWHERE句で指定した探索条件の導出表作成前の評価ができるようになり,実行性能の向上が期待できます。

留意事項
  • バージョン09-50以降のHiRDBを初めて導入した場合

    この機能の使用をお勧めします。

  • バージョン09-50より前のHiRDBをバージョンアップした場合

    この機能はSQL拡張最適化オプション省略時にデフォルトで適用されます。

    この機能を使用することで,アクセスパスが変わった結果として選択されたインデクスが,検索する行を有効に絞り込めなくなり,性能が低下するおそれがあります。

    そのため,この機能を使用する前後でアクセスパスを確認し,この機能を使用した後に,検索する行を有効に絞り込めないインデクスを使用していないことを確認してください。

    検索する行を有効に絞り込めないインデクスを使用している場合は,使用インデクスのSQL最適化指定で使用するインデクスを指定するか,又はこの機能の使用をやめるなどの対策をしてください。

    この機能を使用することで,強制的にコストベース最適化モード2が適用されます。そのため,バージョンアップ前にコストベース最適化モード1で運用していた場合に,すべてのSQLで使用するインデクスやサーチ条件種別などのアクセスパスが変更になることがあり,SQL文の検索性能が低下するおそれがあります。この機能を使用する前後でアクセスパスを確認し,アクセスパスの変更によって性能低下が見られるときは,この機能の使用を取りやめてください。

(99) PDHASHTBLSIZE=ハッシュジョイン,副問合せのハッシュ実行適用時のハッシュ表サイズ

   32ビットモードの場合

    〜<符号なし整数>((128〜524288))(単位:キロバイト)

   64ビットモードの場合

    〜<符号なし整数>((128〜2097152))(単位:キロバイト)

SQL拡張最適化オプションで「ハッシュジョイン,副問合せのハッシュ実行」を適用した場合,ハッシュ表のサイズを指定します。

指定値は,128の倍数で指定してください。指定値が128の倍数でない場合,128の倍数に切り上げられます。

サーバ側が32ビットモードの場合,524289〜2097152の値を指定すると,上限値524288が仮定されます。

《指定値の目安》

ハッシュジョイン,副問合せのハッシュ実行を適用する場合の準備」を参照してください。

《システム定義との関係》

この環境変数を省略した場合,システム定義のpd_hash_table_sizeオペランドの指定値が仮定されます。

(100) PDDFLNVAL={USE|NOUSE}

表中のデータを埋込み変数に取り出す場合,取り出した値がナル値のときに埋込み変数に既定値を設定するかどうかを指定します。

USE:ナル値の既定値設定機能を使用します。

NOUSE:ナル値の既定値設定機能を使用しません。

ナル値の既定値設定機能については,マニュアル「HiRDB SQLリファレンス」を参照してください。

Javaストアドプロシジャで動作するType4 内部JDBCドライバの場合は,Javaストアドプロシジャ呼び出し元のこの環境変数の指定と同じ指定をしてください。

(101) PDAGGR=グループ分けのときに発生するグループ数

   32ビットモードの場合

    〜〈符号なし整数〉((0〜30000000))《1024》

   64ビットモードの場合

    〜〈符号なし整数〉((0〜2147483647))《1024》

GROUP BY処理に使用するメモリ量を決定するため,サーバごとに発生するグループ数の最大値を指定します。なお,この環境変数は,SQL最適化オプションでグループ分け高速化処理を指定した場合に有効になります。

《見積もり方法》
  • 1024以上のグループ数が発生する場合,又は期待していた性能が得られない場合

    この環境変数の値を大きくしてください。ただし,メモリ所要量との兼ね合いを考えて,少しずつ指定値を大きくしてください。

    1024を指定すると,メモリが足りなくなるユーザはメモリに合わせて指定してください。

  • 1024未満のグループ数が発生する場合,又はメモリが足りなくなる場合

    この環境変数の値を小さくしてください。また,メモリ所要量が多くなり,必要な大きさの値が指定できない場合,グループ数以下の値でも指定できる最大値を指定してください。

《留意事項》

指定値が大き過ぎると,メモリ不足となることがあります。また,指定値を超えたグループ数が発生した場合,割り当てられたメモリが不十分なため,処理が遅くなることがあります。なお,グループ分け高速化機能で使用するメモリ所要量の計算式については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

(102) PDCMMTBFDDL={YES|NO

操作系SQLを実行しているトランザクションで定義系SQLを実行する場合,自動的にコミットしてから定義系SQLを実行するときに指定します。なお,定義系SQL実行前に自動的にコミットをした場合,開いているホールダブルカーソルは閉じて,前処理したSQL文の結果は無効になります。

YES:

操作系SQLを実行しているトランザクションを自動的にコミットしてから,定義系SQLを実行します。また,開いているホールダブルカーソルは閉じて,前処理したSQL文の結果は無効になります。

NO:

操作系SQLを実行しているトランザクションを明示的に決着してから,定義系SQLを実行します。

(103) PDPRPCRCLS={YES|NO

開いているカーソルで使用しているSQL識別子を再度PREPRARE文で使用する場合,開いているカーソルを自動的にクローズするかどうかを指定します。

この環境変数は,プリプロセス時に-Xeオプションを指定しない場合に有効になります。プリプロセスについては,「プリプロセス」を参照してください。

YES:開いているカーソルを自動的にクローズします。

NO:開いているカーソルを自動的にクローズしません。

(104) PDAUTOCONNECT={ON|OFF}

HiRDBと接続していない状態でSQL文を実行した場合,自動的にCONNECTするかどうかを指定します。

ON:自動的にCONNECTしてからSQL文を実行します。

OFF:自動的にCONNECTしません。このときSQL文はエラー(SQLCODE=-563)となります。

HiRDBサーバと接続していない状態でSET SESSION AUTHORIZATION文を実行した場合,この環境変数の指定に関係なく常にエラー(SQLCODE=-563)となります。

UAPを開発する場合は,HiRDBに正しくCONNECTしているかどうかを判断する必要があるため,この環境変数にはOFFを指定することをお勧めします。

(105) PDDDLDEAPRPEXE={YES|NO

先行するトランザクション(以降,先行トランザクションと呼びます)が,定義系SQLを実行するトランザクション(以降,定義系トランザクションと呼びます)で操作する表,ストアドルーチン,抽象データ型などを既に使用していると,通常,定義系トランザクションは先行トランザクションの決着を待ちます。この環境変数にYESを指定すると,先行トランザクションの前処理結果を無効にし,定義系トランザクションを優先的に実行できます。

参考

次に示す環境変数を指定することで,定義系トランザクションを実行するタイミングを指定できます。

  1. PDDDLDEAPRPEXE

    先行トランザクションの前処理結果を無効にし,定義系トランザクションを実行できます。

  2. PDDDLDEAPRP

    先行トランザクションのホールダブルカーソルが閉じた後,そのホールダブルカーソルを含むトランザクションの決着後に定義系トランザクションを実行できます。定義系トランザクションが実行されると,ホールダブルカーソルの前処理結果は無効になります。

  3. PDLCKWAITTIME

    排他待ち限界経過時間を指定できます。PDDDLDEAPRPとPDLCKWAITTIMEを組み合わせて使用すると,先行トランザクションの決着までに定義系トランザクションがタイムアウトエラーになることを防止できます。

また,PDDDLDEAPRPEXE及びPDDDLDEAPRPを組み合わせた場合の,先行トランザクションの前処理結果無効の可否を次に示します。

クライアント環境定義

ホールダブルカーソルで使用する前処理結果

ホールダブルカーソルで使用しない前処理結果

PDDDLDEAPRPEXE

PDDDLDEAPRP

YES

YES

NO

NO

YES

×

NO

×

×

(凡例)

○:無効にできます。

△:先行トランザクションの決着後,無効にできます。

×:無効にできません。

YES:

先行トランザクションの前処理結果を無効にし,定義系トランザクションの実行を優先します。YESを指定した場合の例を次に示します。

[図データ]

[説明]

定義系トランザクションは,先行トランザクションの決着を待ちません。

定義系トランザクションを実行すると,先行トランザクションの前処理結果が無効になり,先行トランザクションは実行できなくなり,SQLCODE=-1512エラーとなります。

《留意事項》

  1. 前処理結果を無効にできるのは,定義系トランザクションが次の操作をした場合です(ただし,先行トランザクションが前処理実行中の場合を除く)。

    • 定義系SQLを実行した場合

    • ストアドルーチンのSQLオブジェクトを格納するデータディクショナリLOB用RDエリアをクローズした場合・

    • データベース構成変更ユティリティ(pdmod)で次に示す操作をした場合

      ・RDエリアの削除(remove rdarea文)で解析情報表(SQL_DB_STATE_ANALYZED),及び運用履歴表(SQL_DB_MANAGEMENT)を格納するデータディクショナリ用RDエリアを削除したとき

      ・ディクショナリ表の属性定義変更(alter system文)で参照権限,又は混在文字データの使用有無を変更したとき

      ・RDエリアの属性変更(alter rdarea文)でRDエリアの名称を変更したとき

    ただし,先行トランザクションで定義系SQL(リバランスユティリティなども含む)が実行中の場合,その定義変更中の表,手続き,関数などを使用する定義系トランザクションはエラーになります。

  2. 前処理結果を無効にした場合,先行トランザクションでは再度前処理を行う必要があります。

  3. Java EEアプリケーションサーバのステートメントプーリング/ステートメントキャッシュ機能を使用している場合,無効になったStatementオブジェクトを再利用してSQLエラーとなる場合があります。詳細はマニュアル「HiRDB システム導入・設計ガイド」の「ステートメントプーリング/ステートメントキャッシュ」の注意事項を参照してください。

NO:

定義系トランザクションの実行を優先しません。NOを指定した場合の例を次に示します。

[図データ]

[説明]

定義系トランザクションは,先行トランザクションで実行中のSQL文に関係なく,先行トランザクションの決着を待ちます。

先行トランザクションの決着後に,定義系トランザクションが実行されます。

《指定値の目安》

先行するトランザクションの終了を待たないで,先行するトランザクション中に使用する表に対する定義変更,インデクス定義変更などを行う場合の,クライアント環境定義PDDDLDEAPRPEXEとPDDDLDEAPRPの指定値の目安を次に示します。

使用している機能

無効にする前処理結果のSQL形式

PDDDLDEAPRPEXEの指定値の目安

PDDDLDEAPRPの指定値の目安

接続プーリング機能

ステートメントプーリング機能

ホールダブルカーソル

YES

YES

×

NO

YES

×

YES

NO

×

×

NO

NO

×

×

NO

YES

×

×

×

NO

NO

(凡例)

○:使用しています。

×:使用していません。

(106) PDDDLDEAPRP={YES|NO

閉じているホールダブルカーソルで使用している表の定義情報を,トランザクション間に他UAPからの変更を許可するかどうかを指定します。なお,定義系SQLが実行されると,ホールダブルカーソルの前処理は無効になります。

YES:

ホールダブルカーソルを使用しているUAPのトランザクション間に,他UAPから表の定義情報の変更を許します。

YESを指定した場合の例を次に示します。

[図データ]

[説明]

UAP2で実行した定義系SQLは,UAP1のホールダブルカーソルが閉じた後,そのホールダブルカーソルを含んだトランザクションが決着すると,実行できます。また,UAP1のホールダブルカーソルを再度開くと,SQLCODE=-1512エラーとなります(前処理は無効になります)。

《留意事項》

定義系SQL実行後,そのホールダブルカーソルの前処理が無効になるため,後続のトランザクションでは再度ホールダブルカーソルを前処理する必要があります。

NO:

ホールダブルカーソルを使用しているUAPのトランザクション間に,他UAPから表の定義情報の変更を許しません。

NOを指定した場合の例を次に示します。

[図データ]

[説明]

UAP2で実行した定義系SQLは,UAP1のDISCONNECT後に実行できます。

《指定値の目安》

HiRDBの接続を保持したまま,サービスの要求を待機するWebアプリケーションで,ホールダブルカーソル使用中に表の定義変更を行うSQL文を実行する場合は,YESを指定してください。

《ほかの環境変数との関係》

PDLCKWAITTIMEで排他待ち限界経過時間を指定できます。PDDDLDEAPRPとPDLCKWAITTIMEを組み合わせて使用すると,トランザクションの決着までに定義系SQLがタイムアウトエラーになることを防止できます。

(107) PDLCKWAITTIME=排他待ち限界経過時間

   〜<符号なし整数>((0〜65535))《システム定義pd_lck_wait_timeoutの値》(単位:秒)

排他要求が待ち状態になってから解除されるまでの最大監視時間を指定します。指定した最大時間を過ぎても排他が解除されない場合,SQLはエラーリターンします。0を指定した場合,待ち状態を監視しないで,排他が解除されるまで待ち続けます。

(108) PDCURSORLVL={0|1|2}

カーソルを使用した検索をする場合に,HiRDBクライアントからHiRDBサーバに対するカーソルオープン・クローズの要求を,どのタイミングで行うかを指定します。この環境変数を指定することで,アプリケーションからカーソルオープンの要求を受けた場合に,HiRDBサーバに対しては要求をしないで,初回取り出し時にカーソルオープン要求をします。また,検索データなし(SQLCODE=100)を検知した時点で,カーソルクローズをします。これによって,通信オーバヘッドを削減できます。

0:

アプリケーションから,カーソルオープン・クローズの要求を受けた場合,HiRDBクライアントはHiRDBサーバに対して,そのまま実行要求をします。

1:

検索データがない場合,HiRDBサーバはSQLCODE=100の返却と同時に,HiRDBクライアントからの要求なしでカーソルをクローズします。HiRDBクライアントは,アプリケーションからのカーソルクローズ要求を受けた場合に,既にSQLCODE=100を検知していれば,HiRDBサーバに対してカーソルクローズ要求をしません。SQLCODE=100を検知していない場合にだけ,カーソルクローズ要求をします。

カーソルオープン要求については,0を指定した場合と同じです。

2:

アプリケーションからのカーソルオープン要求を受けた場合に,HiRDBサーバに対しては実行を要求しないで,初回取り出し要求と同時にカーソルオープン要求を行います。

カーソルクローズ要求については,1を指定した場合と同じです。

指定値ごとの処理概要を次の図に示します。

図6‒7 PDCURSORLVLの指定値ごとの処理概要

[図データ]

《注意事項》
  • この環境変数に1又は2を指定した場合でも,手続きから返却された結果集合に対するカーソルのクローズ要求を受けたときは,HiRDBサーバに対して実行要求を行います。

  • この環境変数に1又は2を指定した場合のカーソルクローズは,UAPに関する統計情報のSQL実行回数には加算されますが,SQLに関する統計情報には出力されません。また,この環境変数に2を指定した場合のカーソルオープンも,UAPに関する統計情報のSQL実行回数に加算されますが,SQLに関する統計情報には出力されません。

  • この環境変数に1又は2を指定した場合でも,SQLトレースにはカーソルオープン・クローズのオペレーションコードが出力されます。また,FETCH文でカーソルオープン・クローズした場合,カーソルオープン・クローズのSQLに関する統計情報,アクセスパス情報,及びSQL実行時の中間結果情報はFETCH側に出力されます。

  • HiRDB/パラレルサーバの場合,カーソルオープン実行後から初回取り出しを実行するまでの間が長いと,初回取り出しに時間が掛かることがあります。

  • この環境変数に2を指定した場合に,初回取り出しのコール前のオープン中カーソルに対して,再度PREPARE文を実行しても,HiRDBサーバへのカーソルオープン実行要求は行われていないため,エラーになりません。再度PREPARE文を実行した場合は,そのPREPARE文の情報をカーソル情報として使用するため,カーソルのオープンも再実行する必要があります。

  • この環境変数に1又は2を指定した場合,SQLCODE=100を検知後,CLOSE文を実行しないでPREPARE文又はOPEN文を実行しても,カーソルは既にクローズされているため,エラーになりません。また,SQLCODE=100を検知後に続けてFETCH文を実行した場合は,検索データなしにはならないで,カーソルが開かれていないことを示すSQLCODE=-501が返却されます。

(109) PDDELRSVWDFILE=SQL予約語削除ファイル名

   〜<識別子>((最大8文字))

SQL予約語削除機能を使用する場合に,SQL予約語削除ファイル名を指定します。SQL予約語削除ファイルには,SQLの予約語から削除するキーワードを記述します。

《システム定義との関連》

PDDELRSVWDFILEを指定する場合,システム定義のpd_delete_reserved_word_fileオペランドでSQL予約語削除ファイルを指定しておく必要があります。SQL予約語削除ファイルについては,マニュアル「HiRDB システム定義」を参照してください。

《注意事項》

Windows版のHiRDBの場合,SQL予約語削除ファイル名は,大文字,小文字が区別されません。したがって,大文字,小文字が異なるだけのファイル名は,同一ファイルとして扱われるため注意してください。

(110) PDCALCMDWAITTIME=CALL COMMAND文の最大待ち時間

   〜<符号なし整数>((0〜65535))《PDCWAITTIMEの指定値》(単位:秒)

CALL COMMAND文によってコマンド,又はユティリティを開始してから終了するまでの,HiRDBクライアントの最大待ち時間を指定します。最大待ち時間を経過してもサーバから応答がない場合は,UAPにエラーを返し,サーバ側のプロセスをキャンセルします。0を指定した場合,HiRDBクライアントはHiRDBサーバからの応答があるまで待ち続けます。

(111) PDSTANDARDSQLSTATE={YES|NO}

SQLSTATEの値を詳細に出力するかどうかを指定します。

YES:

SQLSTATEの値を詳細に出力します。

NO:

SQLSTATEの値を詳細に出力しません。

《システム定義との関連》

この環境変数を省略した場合,システム共通定義のpd_standard_sqlstateオペランドの指定値が仮定されます。ただし,サーバとの接続が完了するまでにエラーが発生した場合,HiRDBはこの環境変数を省略したときにはNOが指定されたものとして動作し,環境変数を指定したときには指定した内容で動作します。

SQLSTATEについては,マニュアル「HiRDB メッセージ」を参照してください。

なお,Javaストアドプロシジャで使用するドライバがType4 JDBCドライバの場合,Javaストアドプロシジャに返されるSQLSTATEの値を詳細に設定するかどうかは,クライアント(Javaストアドプロシジャ呼び出し元)のPDSTANDARDSQLSTATE,システム共通定義のpd_standard_sqlstateの値,及びJavaストアドプロシジャのPDSTANDARDSQLSTATEの指定値の組み合わせによって決まります。指定値の組み合わせを次に示します。

クライアント環境変数PDSTANDARDSQLSTATEの指定値

システム共通定義pd_standard_sqlstateの値

JavaストアドプロシジャPDSTANDARDSQLSTATEの指定値

SQLSTATEの値を詳細に設定するかどうか

YES

YES

詳細に設定する

省略

Y

YES

NO

NO又は省略

詳細に設定しない

省略

N

NO又は省略

(凡例)

−:pd_standard_sqlstateの値はSQLSTATEの詳細設定に影響しません。

上記以外の組み合わせは指定できません。

ODBCドライバから返却するSQLSTATEはこの環境変数,及びシステム共通定義のpd_standard_sqlstateの指定に関係なく,ODBCの規格に従った値となります。

(112) PDBLKF=ブロック転送の行数

   〜<符号なし整数>((1〜4096))《1》

サーバからクライアントに検索結果を転送する場合の,一回の転送処理で送信する行数を指定します。

なお,実際に送信する行数は,クライアント環境定義PDBLKBUFFSIZEの指定値によって変わります。送信する行数については,「1回の通信で転送する行数」を参照してください。

この値を大きくすると通信オーバヘッドが減り,検索時間を短縮できますが,その分メモリが余計に必要となります。したがって,メモリとの兼ね合いを考慮して値を決めてください。

サーバ側で必要なメモリの計算式については,マニュアル「HiRDB システム導入・設計ガイド」の「ブロック転送又は配列FETCHで必要なメモリ所要量」を参照してください。クライアント側で必要なメモリの計算式を次に示します。

メモリ計算式(単位:キロバイト)
=↑(600+19×検索列数+(7×検索列数+Σ 列の定義長)×PDBLKFの値)
 ÷4096↑×4
 
注※ 単位はバイトです。

(113) PDBINARYBLKF={YES|NO}

定義長が32,001バイト以上のBINARY型の選択式がある表を検索する場合,ブロック転送機能を適用するかどうかを指定します。ブロック転送機能については,「ブロック転送機能」を参照してください。

YES:

ブロック転送機能を適用します。

NO:

ブロック転送機能を適用しません。

この場合,クライアント環境定義PDBLKFに2以上,PDBLKBUFFSIZEに1以上を指定しても,1件ずつの転送となります。

(114) PDBLKBUFFSIZE=通信バッファサイズ

   〜<符号なし整数>(単位:キロバイト)

・Type4 JDBCドライバ使用時:((0〜2000000))《0》

・上記以外:

 ・PDBLKFを省略した場合:((0〜2000000))《10》

 ・PDBLKFを指定した場合:((0〜2000000))《0》

 ・0904互換モードの場合:((0〜2000000))《0》

ブロック転送機能で使用する,サーバ,クライアント間の通信バッファのサイズを指定します。

0を指定した場合,クライアント環境定義PDBLKFの値と1行の最大長から,HiRDBが通信バッファサイズ(単位:バイト)を算出します。

PDBLKBUFFSIZEで指定した値は,次のバッファサイズ,及び行数に影響します。

(115) PDBINDRETRYCOUNT=bindシステムコールのリトライ回数

   〜<整数>((-1〜1000))《10》

UNIXドメインでのbindシステムコールでEADDRINUSEが返却された場合のリトライ回数を指定します。

クライアントサーバ間が同一ホストの場合,HiRDBクライアントではUNIXドメイン通信の準備として名前付きファイルをソケットに割り当てるため,bindシステムコールを発行します。

-1を指定した場合は,EADDRINUSEが返却されなくなるまでリトライします。0を指定した場合は,リトライをしないでUAPにエラーを返します。

《指定値の目安》

KFPA11723-Eメッセージのネットワーク障害(reason=NETWORK)で,クライアントエラーログファイルにKFPZ02444-Eメッセージが出力されている場合,内容がfunc=bind,errno=EADDRINUSEでcountとintervalが表示されているときは,この環境変数とPDBINDRETRYINTERVALの値を大きくしてください。

(116) PDBINDRETRYINTERVAL=bindシステムコールのリトライ間隔

   〜<符号なし整数>((0〜1000))《0》(単位:ミリ秒)

UNIXドメインでのbindシステムコールでEADDRINUSEが返却された場合のリトライ間隔を指定します。0を指定した場合は,即時にリトライを行います。

(117) PDDBACCS=アクセスするRDエリアの世代番号

   〜<符号なし整数>((0〜10))

インナレプリカ機能を使用している場合,インナレプリカグループ内でカレントRDエリアでないRDエリアをアクセスしたいときに,そのRDエリアの世代番号を指定します。0はオリジナルRDエリアとなります。省略した場合は,UAP環境定義PDDBACCSの値が仮定されます。

この環境変数は,HiRDBに定義されているすべてのインナレプリカグループに対して適用されます。この環境変数で指定した世代のレプリカRDエリアが定義されていない場合,該当するインナレプリカグループ内のカレントのRDエリアが処理対象となります。このため,レプリカRDエリアを使用するテスト環境を設定する場合,誤って本番用のRDエリアをアクセスしないように,アクセスするすべてのRDエリアについて,指定する世代のレプリカRDエリアが定義されているか確認する必要があります。

(118) PDDBORGUAP={YES|NO}

レプリカRDエリアでのオンライン業務中に,オリジナルRDエリアに対してUAPを実行する場合に指定します。

YES:

オンライン再編成閉塞のオリジナルRDエリアに対して,UAPを実行する場合に指定します。

NO:

オンライン再編成閉塞のオリジナルRDエリアに対して,UAPを実行しない場合に指定します。

(119) PDSPACELVL={0|1|3}

データの格納,比較,及び検索時の,空白変換レベルを指定します。なお,定義系SQL実行時には,空白変換はされません。

0:

空白は変換しません。

1:

操作系SQLでの定数,埋込み変数,又は?パラメタのデータの空白を,次のように変換します。

  • 文字列定数を各国文字列定数とみなした場合,半角空白2バイトを全角空白1文字に変換します。このとき,半角空白が1バイト単独で現れる場合,変換はしません。

  • 混在文字列定数は,全角空白1文字を半角空白2バイトに変換します。

  • 各国文字列型の列へのデータの格納時,及び各国文字列型の値式との比較時は,埋込み変数,又は?パラメタの半角空白2バイトを全角空白1文字に変換します。このとき,半角空白が1バイト単独で現れる場合,変換しません。

  • 混在文字列型の列へのデータの格納時,及び混在文字列型の値式との比較時は,埋込み変数,又は?パラメタの全角空白1文字を半角空白2バイトに変換します。

3:

空白変換レベル1に加えて,各国文字列型の値式のデータを検索するときに,全角空白1文字を半角空白2バイトに変換します。

《システム定義との関連》

この環境変数を省略した場合,システム共通定義のpd_space_levelオペランドの指定値が仮定されます。

《注意事項》
  1. 空白変換レベルを変更した場合,変更の前後でUAPの結果が異なる場合があります。UAPの結果を同じにしたい場合には,空白変換レベルを変更しないでください。

  2. 空白変換レベル3を指定してソートをした場合,HiRDBはソートの結果に対して空白変換をするため,期待した結果を得られないことがあります。

  3. クラスタキーの列へデータを格納する場合,空白変換によってユニークエラーとなることがあります。この場合,空白変換をしないでデータを格納するか,又は既存のデータベースの空白を統一(データベース再編成ユティリティで空白変換)してください。

  4. 各国文字列の空白変換は,先頭から2バイト単位で変換します。

  5. 空白変換レベル1,又は3を指定した場合,ハッシュ分割した表に対してUAPで表分割ハッシュ関数を使用して格納先RDエリアを求めるときは,表分割ハッシュ関数の引数に空白変換レベルを指定しないと,表分割ハッシュ関数の結果が不正になることがあります。表分割ハッシュ関数については,「表分割ハッシュ関数」を参照してください。

  6. 空白変換レベル1,又は3を指定した場合,キーレンジ分割した表に対してUAPでキーレンジ分割処理をしていて分割キーに各国文字列型,又は混在文字列型の列があるときは,その分割キー値を空白変換関数で変換しないとキーレンジ分割の結果が不正になることがあります。空白変換関数については,「空白変換関数」を参照してください。

(120) PDCLTRDNODE=XDM/RD E2のデータベース識別子

   〜<識別子>

XDM/RD E2接続機能使用時に,接続するXDM/RD E2のデータベース識別子を指定します。データベース識別子とは,XDMのサブシステム定義で指定するRDノード名のことです。

(121) PDTP1SERVICE={YES|NO

XDM/RD E2接続機能使用時に,XDM/RD E2にOpenTP1のサービス名称を通知するかどうかを指定します。

Windows版のHiRDBクライアントライブラリでcltdll.dllを使用している場合,この環境変数は指定できません。ほかのHiRDBクライアントライブラリ(pdcltm32.dllなど)と再リンケージすれば指定できます。

YES:

OpenTP1のサービス名称をXDM/RD E2に通知します。

OpenTP1のサービス名称をXDM/RD E2に通知すると,XDM/RD E2の統計情報をサービス単位に分析できます。なお,XDM/RD E2のバージョンが09-01以降であることが前提です。

OpenTP1を使用しない場合,及びOpenTP1のサービスではない場合(SUPなど),YESを指定してもサービス名称は通知されません。

NO:

OpenTP1のサービス名称の通知はしません。

(122) PDRDCLTCODE={SJIS|UTF-8}

この環境変数は,Windows版クライアントの場合に有効になります。UNIX版クライアントの場合は指定しても無効になります。

XDM/RD E2接続機能使用時に,クライアントで使用する文字コード種別を指定します。

SJIS:

シフトJIS漢字コードを使用します。

UTF-8:

Unicode(UTF-8)を使用します。UTF-8を指定する場合,クライアント環境定義PDCLTCNVMODEにはNOUSEを指定するか,又は省略してください。

《UTF-8指定時の規則》
  1. 埋込み変数で扱う入出力データ,及び?パラメタで扱うデータにUnicode(UTF-8)を使用できます。

  2. UAPで記述するSQL文には,ASCIIコードだけ指定できます。SQL文中でASCIIコード以外の文字(漢字,半角片仮名,外字など)を指定する場合,PREPARE文又はEXECUTE IMMEDIATE文を使用して,埋込み変数でSQL文を指定してください。

  3. XDM/RD E2から返却される,SQL連絡領域に格納されるエラーメッセージ,列名記述領域に格納される列名,型名記述領域に格納されるデータ型名など,Unicode(UTF-8)となります。このため,これらの値にASCIIコード以外の文字が含まれている場合,シフトJIS漢字コードとして出力すると,正しく表示されないことがあります。

  4. XDM/RD E2側で,文字コードをUnicode(UTF-8)からEBCDIKコード若しくはKEISコード,又はEBCDIKコード若しくはKEISコードからUnicode(UTF-8)に変換する場合,データの長さが変化することがあります。このため,埋込み変数の定義長などに注意してください。

(123) PDCNSTRNTNAME={LEADING|TRAILING}

参照制約,及び検査制約を定義する場合,制約名定義の位置を指定します。

LEADING:

制約名定義を,制約定義の前に指定します。

TRAILING:

制約名定義を,制約定義の後に指定します。

《システム定義との関係》

省略した場合は,システム定義のpd_constraint_nameオペランドの値が仮定されます。

(124) PDTMPTBLRDAREA=RDエリア名[,RDエリア名…]

   〜<文字列>((最大3299バイト))

使用する一時表及び一時インデクスを格納する一時表用RDエリア名の候補を指定します。

一時表のデータ有効期間外にINSERT文を実行した場合,この環境変数に指定したRDエリアの中からデータ格納先の一時表用RDエリアを決定します。この環境変数を省略した場合,HiRDBが自動的にデータ格納先の一時表用RDエリアを決定します。一時表の格納先RDエリアの決定規則については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

《指定値の規則》
  1. 指定値には,最大100個のRDエリア名を指定できます。

  2. RDエリア名は,重複して指定できません。

(125) PDBESCONHOLD={YES|NO}

この環境変数は,HiRDB/パラレルサーバの場合に指定できます。

バックエンドサーバ接続保持機能を使用するかどうかを指定します。バックエンドサーバ接続保持機能については,マニュアル「HiRDB システム運用ガイド」を参照してください。

YES:

バックエンドサーバ接続保持機能を使用します。

NO:

バックエンドサーバ接続保持機能を使用しません。

《システム定義との関係》

省略した場合は,システム定義のpd_bes_connection_holdオペランドの値が仮定されます。

(126) PDBESCONHTI=バックエンドサーバ接続保持期間

   〜<符号なし整数>((0〜3600))(単位:秒)

バックエンドサーバ接続保持機能を使用する場合,バックエンドサーバ接続保持期間を指定します。

バックエンドサーバ接続保持機能を使用した場合,バックエンドサーバはトランザクション終了後,次のトランザクションが実行されるまでの時間を監視します。次のトランザクションが実行されるまでの時間がPDBESCONHTIの指定値の範囲内であれば,バックエンドサーバ接続保持機能を続行します。PDBESCONHTIの指定値を超えている場合は,トランザクション終了後にフロントエンドサーバとの接続を切り離します。

《留意事項》
  1. 0を指定した場合,時間監視はしません。SQLのDISCONNECT(XAライブラリ使用時はxa_close),クライアント環境定義PDCWAITTIMEのタイムオーバなどで,フロントエンドサーバとクライアントの接続が切り離された場合にだけ,フロントエンドサーバとバックエンドサーバの接続を切り離します。

  2. PDBESCONHTIは,PDBESCONHOLDにYESを指定している場合に有効になります。

(127) PDODBSTATCACHE={0|1}

ODBC関数のSQLColumns()関数,SQLStatistics()関数で,1度発行して取得したカラム情報,又はインデクス情報をキャッシュするかどうかを指定します。

0:

キャッシュしません。

SQLColumns()関数,SQLStatistics()関数を呼び出すごとにサーバにアクセスして,カラム情報,又はインデクス情報を取得します。

1:

1度取得したカラム情報,及びインデクス情報をキャッシュします。

ただし,サーバと接続中のときはキャッシュのリフレッシュはしません。したがって,接続中にテーブル定義を変更した場合は,実際の定義と異なるカラム情報,又はインデクス情報を返すことになるため,1度サーバとの接続を切断する必要があります。

《利点》

SQLColumns()関数,SQLStatistics()関数が同一のパラメタで呼び出された場合は,キャッシュ上の検索結果をAPに返すことで,サーバとの通信回数を削減できます。

《留意事項》

このオプションの指定が効果的かどうかを判断するには,ODBCのトレースを取得し同一接続中に同じパラメタのSQLColumns()関数,SQLStatistics()関数が発行されているかどうかを調査する必要があります。

キャッシュできる行数を次に示します。

SQLColumns():

約60000/(50+表オーナ名長+表名長+列名長+コメント長)行数文

SQLStatistics():

約60000/(50+表オーナ名長+表名長+インデクス名長+列名長)行数文

(128) PDODBESCAPE={0|1}

カタログ系のODBC関数(SQLTables(),SQLColumns()など)の検索で,パターン文字に対してESCAPE文字('&')を指定するかどうかを指定します。

0:パターン文字に対してESCAPE文字を('&')を指定しません。

1:パターン文字に対してESCAPE文字を('&')を指定します。

《留意事項》
  1. ディクショナリ表の列属性がCHAR型(データベース初期設定ユティリティでdictionary datatype mchar nouseを指定)で,かつ表名,列名にコード'0x26'を含む2バイト文字を使用している場合,このオプションには0を指定してください。1を指定してODBC経由でアクセスした場合,特定の表,列が認識されないことがあります。

  2. 表名などの識別子にアンダスコア(_)を使用している場合,このオプションには,1を指定してください。0を指定した場合,一部のODBC対応ソフトからアンダスコア(_)を使用した識別子にアクセスできないことがあります。

(129) PDGDATAOPT={YES|NO

ODBC関数のSQLGetData関数を使用してデータを取り出す場合,データ取得が完了した列に対して繰り返しデータを取得する場合に指定します。

通常,データ取得が完了した列に対して繰り返しデータを取得すると,戻り値としてSQL_NO_DATAが返ります。

YES:

SQLGetData関数でデータ取得が完了した列に対して,繰り返しデータを取得できます。

NO:

SQLGetData関数でデータ取得が完了した列に対して,繰り返しデータ取得をすると,戻り値としてSQL_NO_DATAが返ります。

《適用基準》

同じ列に対して複数回データ取得をしたい場合に指定します。例えば,複数回のデータ取得でSQL_SUCCESSを期待する上位APなどを使用する場合など,この環境変数を指定してください。

《留意事項》

Internet Banking Serverを使用している場合,HiRDBクライアント側のHiRDB.iniにPDGDATAOPT=YESを設定してください。設定しないと,Internet Banking Serverの顧客情報管理ユティリティ,及び取引履歴管理ユティリティを使用してHiRDBへログインした後,「顧客登録」「顧客情報の更新」「顧客情報の参照」などの機能選択ボタンを押した後,[戻る]ボタン以外の画面操作ができなくなることがあります。

(130) PDODBLOCATOR={YES|NO

DBアクセス部品を使用して,BLOB型,又はBINARY型の列を検索する場合に,位置付け子機能を使用してデータを分割取得するかどうかを指定します。DBアクセス部品とは,ODBCドライバ,OLE DBプロバイダ,及びHiRDBデータプロバイダ for .NET Frameworkを示します。

YES:

DBアクセス部品を使用して,BLOB型,又はBINARY型の列を検索する場合に,位置付け子機能を使用してデータを分割取得します。

NO:

DBアクセス部品を使用して,BLOB型,又はBINARY型の列を検索する場合に,位置付け子機能を使用しません。

《適用基準》

NOを指定した場合(省略時仮定値の場合),DBアクセス部品側が列の定義長分のデータ受信領域を確保します。また,HiRDBクライアント側でも列の定義長分のデータ受信領域を必要とします。

列の定義長が大きいと,実行時にメモリ不足になったりすることがあるため,メモリ不足になることを回避する場合はYESを指定してください。なお,YESを指定すると,HiRDBサーバとの通信回数が分割取得回数分増えます。

(131) PDODBSPLITSIZE=分割取得サイズ

   〜<符号なし整数>((4〜2097152))《100》(単位:キロバイト)

PDODBLOCATOR=YESを指定している場合に,分割取得のサイズを指定します。

《指定値の目安》

実データ長の分布を考慮して,分割取得回数が少なくなり,かつメモリ不足が発生しない値を指定してください。

(132) PDODBCWRNSKIP={YES|NO

ODBC,OLE DB接続時のワーニングを回避するかどうかを指定します。なお,ODBC,OLE DB接続以外の場合,この環境変数を指定しても無効になります。

YES:

ODBCドライバ使用時にSQLFetch()の延長でSQLWARNが設定された場合でも,ODBCドライバでSQLFetch()の戻り値としてSQL_SUCCESSを返却します。

OLE DBプロバイダ使用時にSQLWARNが設定された場合でも,エラーオブジェクトの生成をスキップします。

NO:

ODBCドライバ使用時にSQLFetch()の延長でSQLWARNが設定された場合,ODBCドライバでSQLFetch()の戻り値としてSQL_SUCCESS_WITH_INFOを返却します。

OLE DBプロバイダ使用時にSQLWARNが設定された場合,エラーオブジェクトを生成します。

《適用基準》

ODBCドライバでは,検索処理でHiRDBのSQL連絡領域のSQLWARNが設定された場合,SQLFetch()の戻り値としてSQL_SUCCESS_WITH_INFOを返却します。しかし,ODBCドライバを呼び出す上位アプリケーションによっては,SQL_SUCCESS_WITH_INFOで検索処理を打ち切るものがあります。この環境変数にYESを指定すると,検索処理でSQL連絡領域のSQLWARNが設定された場合でも,SQLFetch()の戻り値をSQL_SUCCESSとすることで,検索処理が続行できるようになります。

OLE DBプロバイダでは,SQL実行時にHiRDBのSQL連絡領域のSQLWARNが設定された場合,エラーオブジェクトを生成します。しかし,OLE DBプロバイダを呼び出す上位アプリケーションによっては,エラーオブジェクトの生成に伴い例外が発生するときがあります。この機能を適用すれば,SQL実行時に警告が発生した場合でもエラーオブジェクトの生成をスキップすることで,上位アプリケーションによる例外の発生を回避できるようになります。

注※

例えば,ADO.NETを使用してODBC経由でHiRDBに接続している場合,SQL_SUCCESS_WITH_INFOで検索処理が打ち切られることがあります。

(133) PDJETCOMPATIBLE={YES|NO

ODBC3.5ドライバを,ODBC3.5の規格ではなくMicrosoft Access互換モードで動作させるかどうかを指定します。

YES:

ODBC3.5ドライバは,Microsoft Access互換モードで動作します。

NO:

ODBC3.5ドライバは,ODBC3.5の規格どおりに動作します。

《適用基準》

Microsoft Accessを使用してHiRDBにアクセスする場合に指定します。この環境変数を指定しないと,検索結果が"#Delete"と表示されたり,挿入したデータが不正に変換されることがあります。なお,Microsoft社が提供するほかの製品やインタフェースでこのような現象が発生した場合,この環境変数を指定することで回避できることがあります。

(134) PDODBGINFOSUPPRESS={YES|NO

この環境変数は,HiRDB ODBC3.5ドライバがODBC関数のSQLGetInfoW()関数でODBC規格に準拠した情報を返却するかどうかを指定します。ODBC規格に準拠した情報を返却するHiRDB ODBC3.5ドライバのバージョンを次に示します。

上記より前のバージョンのHiRDB ODBC3.5ドライバを,上記のバージョンにバージョンアップした場合,ADO及びADO.NETのインターフェースからODBC3.5ドライバを経由したSQLの実行でエラーが発生するおそれがありますが,この環境変数にYESを指定することでエラーを回避できることがあります。発生するエラーの詳細については,「ADO及びADO.NETからODBCを経由してHiRDBサーバにアクセスする場合の留意事項」を参照してください。

通常は,この環境変数を省略するか,又はNOを指定してください。

YES:

HiRDB ODBC3.5ドライバがSQLGetInfoW()関数で返却する情報を制限します。SQLGetInfoW()関数の第3引数InfoValuePtr にNULLが指定された場合,第5引数StringLengthPtrがポイントする領域に0を設定します。

NO:

HiRDB ODBC3.5ドライバがSQLGetInfoW()関数で返却する情報を制限しないで,ODBC規格に準拠した情報を返却します。SQLGetInfoW()関数の第3引数InfoValuePtrにNULLが指定された場合,第5引数StringLengthPtrがポイントする領域に取得対象となる情報の長さを設定します。

(135) PDODBSTANDARDARGSIZE={YES|NO

64ビットモードで動作するODBC3.5ドライバについて,一部のODBC関数の引数に指定されたポインタが指すバッファを4バイト整数として扱うか,8バイト整数として扱うかを指定します。

YES:

ODBC3.5ドライバの一部のODBC関数について,引数に指定されたポインタが指すバッファを8バイト整数として扱います(ODBC規格に準拠)。

NO:

ODBC3.5ドライバの一部のODBC関数について,引数に指定されたポインタが指すバッファを4バイト整数として扱います(HiRDB独自)。

.NET Framework 4の.NET Framework Data Provider for ODBCから64ビットモードで動作するODBC3.5ドライバを経由してHiRDBにアクセスする場合,この環境変数にYESを指定してください。

この環境変数の指定値と,8バイト整数として扱うODBC関数の引数の関係を次の表に示します。「パラメタの名称」列のパラメタに「パラメタの属性」列のパラメタのどれかを指定した場合,「8バイト整数として扱う引数の名称」列の引数に指定したポインタが指すバッファが8バイト整数として扱われます。

表6‒46 環境変数PDODBSTANDARDARGSIZEの指定値と8バイト整数として扱うODBC関数の引数の関係

ODBC関数名

8バイト整数として扱う引数の名称

パラメタの名称

パラメタの属性

環境変数の指定値がPDODBSTANDARDARGSIZE=NO又は指定を省略した場合

環境変数の指定値が

PDODBSTANDARDARGSIZE=YESの場合

SQLColAttribute

NumericAttribute

FieldIdentifier

SQL_DESC_DISPLAY_SIZE

SQL_DESC_LENGTH

SQL_DESC_OCTET_LENGTH

SQL_DESC_DISPLAY_SIZE

SQL_DESC_LENGTH

SQL_DESC_OCTET_LENGTH

SQL_DESC_AUTO_UNIQUE_VALUE

SQL_DESC_CASE_SENSITIVE

SQL_DESC_CONCISE_TYPE

SQL_DESC_FIXED_PREC_SCALE

SQL_DESC_NULLABLE

SQL_DESC_NUM_PREC_RADIX

SQL_DESC_PRECISION

SQL_DESC_SCALE

SQL_DESC_SEARCHABLE

SQL_DESC_TYPE

SQL_DESC_UNNAMED

SQL_DESC_UNSIGNED

SQL_DESC_UPDATABLE

SQLGetDescField

ValuePtr

FieldIdentifier

SQL_DESC_ARRAY_SIZE

SQL_DESC_ARRAY_STATUS_PTR

SQL_DESC_BIND_OFFSET_PTR

SQL_DESC_DATA_PTR

SQL_DESC_INDICATOR_PTR

SQL_DESC_OCTET_LENGTH_PTR

SQL_DESC_ROWS_PROCESSED_PTR

SQL_DESC_ARRAY_SIZE

SQL_DESC_ARRAY_STATUS_PTR

SQL_DESC_BIND_OFFSET_PTR

SQL_DESC_DATA_PTR

SQL_DESC_DISPLAY_SIZE

SQL_DESC_INDICATOR_PTR

SQL_DESC_LENGTH

SQL_DESC_OCTET_LENGTH

SQL_DESC_OCTET_LENGTH_PTR

SQL_DESC_ROWS_PROCESSED_PTR

SQLGetDiagField

DiagInfoPtr

DiagIdentifier

SQL_DIAG_CURSOR_ROW_COUNT

SQL_DIAG_ROW_COUNT

SQL_DIAG_ROW_NUMBER

SQL_DIAG_CURSOR_ROW_COUNT

SQL_DIAG_ROW_COUNT

SQL_DIAG_ROW_NUMBER

SQLGetInfo

InfoValuePtr

InfoType

SQL_DRIVER_HENV

SQL_DRIVER_HDBC

SQL_DRIVER_HLIB

SQL_DRIVER_HSTMT

SQL_DRIVER_HDESC

SQL_DRIVER_HENV

SQL_DRIVER_HDBC

SQL_DRIVER_HLIB

SQL_DRIVER_HSTMT

SQL_DRIVER_HDESC

SQLGetStmtAttr

ValuePtr

Attribute

SQL_ATTR_APP_PARAM_DESC

SQL_ATTR_APP_ROW_DESC

SQL_ATTR_IMP_PARAM_DESC

SQL_ATTR_IMP_ROW_DESC

SQL_ATTR_MAX_LENGTH

SQL_ATTR_MAX_ROWS

SQL_ATTR_ROW_ARRAY_SIZE

SQL_ATTR_ROWS_FETCHED_PTR

SQL_ATTR_PARAM_STATUS_PTR

SQL_ATTR_PARAMS_PROCESSED_PTR

SQL_ATTR_PARAMSET_SIZE

SQL_ATTR_RETRIEVE_DATA

SQL_ATTR_ROW_OPERATION_PTR

SQL_ATTR_ROW_STATUS_PTR

SQL_ATTR_APP_PARAM_DESC

SQL_ATTR_APP_ROW_DESC

SQL_ATTR_IMP_PARAM_DESC

SQL_ATTR_IMP_ROW_DESC

SQL_ATTR_MAX_LENGTH

SQL_ATTR_MAX_ROWS

SQL_ATTR_ROW_ARRAY_SIZE

SQL_ATTR_ROWS_FETCHED_PTR

SQL_ATTR_ASYNC_ENABLE

SQL_ATTR_CONCURRENCY

SQL_ATTR_CURSOR_SCROLLABLE

SQL_ATTR_CURSOR_SENSITIVITY

SQL_ATTR_CURSOR_TYPE

SQL_ATTR_ENABLE_AUTO_IPD

SQL_ATTR_METADATA_ID

SQL_ATTR_NOSCAN

SQL_ATTR_PARAM_OPERATION_PTR

SQL_ATTR_PARAM_STATUS_PTR

SQL_ATTR_PARAMS_PROCESSED_PTR

SQL_ATTR_PARAMSET_SIZE

SQL_ATTR_RETRIEVE_DATA

SQL_ATTR_ROW_OPERATION_PTR

SQL_ATTR_ROW_STATUS_PTR

(136) PDODBSTANDARDSQLSTATE={YES|NO

HiRDBサーバでのSQLエラー発生時,ODBC3.5ドライバからODBC規格に準拠したSQLSTATEを返却するかどうかを指定します。

YES:

ODBC3.5ドライバからODBC規格に準拠したSQLSTATEが返却されます。

NO:

ODBC3.5ドライバからHiRDB独自のSQLSTATEが返却されます。

この環境変数にYESを指定すると,ODBC3.5ドライバは,HiRDBサーバから返却されたSQLSTATEについて,対応するODBC規格のSQLSTATEにマッピングします。このため,この機能を使用する場合,HiRDBサーバでSQLSTATEの値の詳細を出力する設定が必要です。

SQLSTATEの値の詳細を出力するには,環境変数PDSTANDARDSQLSTATEにYESを指定するか,又はシステム共通定義のpd_standard_sqlstateの値をYにしてください。

この環境変数の指定値,システム共通定義の値,及びODBC3.5ドライバが返却するSQLSTATEの関係を次の表に示します。

表6‒47 環境変数PDSTANDARDSQLSTATE,システム共通定義の値,及びODBC3.5ドライバが返却するSQLSTATEの関係

環境変数

PDSTANDARDSQLSTATEの指定値

システム共通定義pd_standard_sqlstateの値

ODBC3.5ドライバが返却するSQLSTATE

環境変数の指定値が

PDODBSTANDARDSQLSTATE=YESの場合

環境変数の指定値が

PDODBSTANDARDSQLSTATE=NO又は指定を省略した場合

YES

ODBC準拠

HiRDB独自

NO

HiRDB独自

省略

Y

ODBC準拠

N

HiRDB独自

(凡例)

−:pd_standard_sqlstateの値は返却されるSQLSTATEに影響しません。

HiRDB独自:HiRDB独自のSQLSTATEが返却されます(ODBC規格に非準拠)。

ODBC準拠:ODBC規格に準拠したSQLSTATEが返却されます。

ODBC3.5ドライバを呼び出す他製品を利用している場合,この環境変数にYESを指定してください。SQLSTATEについては,「ODBC3.5ドライバが返却するSQLSTATE」を参照してください。

(137) PDODBSTANDARDDESCCOL={YES|NO

ODBC3.5ドライバのSQLDescribeCol関数の検索対象列が数データ型の場合,返却する列のサイズとして,ODBC規格に準拠した値を返却するかどうかを指定します。

YES:

SQLDescribeCol関数の検索対象列が数データ型の場合,ColumnSizePtrに指定されたポインタが指すバッファに対して,ODBC規格に準拠した列のサイズ(数データの最大けた数)を返却します。

NO:

SQLDescribeCol関数の検索対象列が数データ型の場合,ColumnSizePtrに指定されたポインタが指すバッファに対して,HiRDB独自の列のサイズ(データ型がSQL_DECIMALの場合は数データの精度,SQL_DECIMAL以外の場合は数データのバイト数)を返却します。

検索した数データについて,ODBC3.5ドライバを呼び出す上位アプリケーションが文字列形式で扱う場合,この環境変数にYESを指定してください。通常の運用では,この環境変数にはNOを指定するか,指定を省略してください。

この環境変数の指定値と,SQLDescribeCol関数で返却する数データ型の列のサイズの関係を次の表に示します。

表6‒48 環境変数PDODBSTANDARDDESCCOLの指定値とSQLDescribeCol関数で返却する数データ型の列のサイズの関係

ODBCのデータ型

HiRDBのデータ型

SQLDescribeCol関数で返却する列のサイズ

環境変数の指定値が

PDODBSTANDARDDESCCOL=NO又は指定を省略した場合

環境変数の指定値が

PDODBSTANDARDDESCCOL=YESの場合

SQL_DECIMAL

DECIMAL,NUMERIC

精度(全体のけた数)

SQL_SMALLINT

SMALLINT

2

5

SQL_INTEGER

INTEGER

4

10

SQL_REAL

SMALLFLT,REAL

4

7

SQL_FLOAT

FLOAT,DOUBLE PRECISION

8

15

SQL_DOUBLE

FLOAT,DOUBLE PRECISION

8

15

(138) PDODBSTANDARDGTYPEINFO={YES|NO

ODBC3.5ドライバのSQLGetTypeInfo関数で,ODBC規格に準拠した値を返却するかどうかを指定します。

DataStageを使用してHiRDB ODBC3.5ドライバを使用する場合は,このクライアント環境定義にYESを指定してください。

YES:

SQLGetTypeInfo関数の第2引数に指定されたデータ型に対して,ODBC規格に準拠した結果セットを返却します。

NO:

SQLGetTypeInfo関数の第2引数に指定されたデータ型に対して,HiRDB独自の結果セットを返却します。

この環境定義の指定値と,SQLGetTypeInfo関数で返却する戻り値,結果セットの関係を次の表に示します。

表6‒49 環境変数PDODBSTANDARDGTYPEINFOの指定値とSQLGetTypeInfo関数で返却する戻り値の関係

第2引数への指定値

SQLGetTypeInfo関数で返却する戻り値

環境変数の指定値がPDODBSTANDARDGTYPEINFO=NOの場合

環境変数の指定値がPDODBSTANDARDGTYPEINFO =YESの場合

SQL_GUID

SQL_INTERVAL_DAY

SQL_INTERVAL_DAY_TO_HOUR

SQL_INTERVAL_DAY_TO_MINUTE

SQL_INTERVAL_DAY_TO_SECOND

SQL_INTERVAL_HOUR

SQL_INTERVAL_HOUR_TO_MINUTE

SQL_INTERVAL_HOUR_TO_SECOND

SQL_INTERVAL_MINUTE

SQL_INTERVAL_MINUTE_TO_SECOND

SQL_INTERVAL_MONTH

SQL_INTERVAL_SECOND

SQL_INTERVAL_YEAR

SQL_INTERVAL_YEAR_TO_MONTH

SQL_ERROR

SQL_SUCCESS

表6‒50 環境変数PDODBSTANDARDGTYPEINFOの指定値とSQLGetTypeInfo関数で返却する結果セットの関係

第2引数への指定値

SQLGetTypeInfo関数で返却する結果セット

結果セットの差異内容

環境変数の指定値がPDODBSTANDARDGTYPEINFO=NOの場合

環境変数の指定値がPDODBSTANDARDGTYPEINFO =YESの場合

SQL_ALL_TYPE

DATA_TYPE列に次のデータ型を含むかどうか

  • SQL_DOUBLE

  • SQL_NUMERIC

  • SQL_LONGVARCHAR

  • SQL_INTERVAL_HOUR_TO_SECOND

  • SQL_WCHAR

  • SQL_WVARCHAR

  • SQL_WLONGVARCHAR

含まない

含む

TYPE_NAME列がBINARYのDATE_TYPE列とSQL_DATETIME_SUB列の値

SQL_BINARY

SQL_LONGVARBINARY

TYPE_NAME列がDATEのDATA_TYPE列の値

SQL_DATE

SQL_TYPE_DATE

TYPE_NAME列がDATEのSQL_DATETIME_SUB列の値

SQL_TYPE_DATE

SQL_CODE_DATE

TYPE_NAME列がTIMEのDATA_TYPE列の値

SQL_TIME

SQL_TYPE_TIME

TYPE_NAME列がTIMEのSQL_DATETIME_SUB列の値

SQL_TYPE_TIME

SQL_CODE_TIME

TYPE_NAME列がTIMESTAMPのDATA_TYPE列の値

SQL_TIMESTAMP

SQL_TYPE_TIMESTAMP

TYPE_NAME列がTIMESTAMPのSQL_DATETIME_SUB列の値

SQL_TYPE_TIMESTAMP

SQL_CODE_TIMESTAMP

SQL_DOUBLE

SQL_NUMERIC

SQL_LONGVARCHAR

SQL_INTERVAL_HOUR_TO_SECOND

SQL_WCHAR

SQL_WVARCHAR

SQL_WLONGVARCHAR

結果セットの返却

返却する

返却しない

SQL_BINARY

結果セットの返却

返却する

返却しない

SQL_LONGVARBINARY

DATA_TYPE列に次のデータ型を含むかどうか

  • BLOB

  • BINARY

BLOBだけ含む

含む

SQL_DATE

SQL_TYPE_DATE

DATA_TYPE列の値

SQL_DATE

SQL_TYPE_DATE

SQL_DATETIME_SUB列の値

SQL_TYPE_DATE

SQL_CODE_DATE

SQL_TIME

SQL_TYPE_TIME

DATA_TYPE列の値

SQL_TIME

SQL_TYPE_TIME

SQL_DATETIME_SUB列の値

SQL_TYPE_TIME

SQL_CODE_TIME

SQL_TIMESTAMP

SQL_TYPE_TIMESTAMP

DATA_TYPE列の値

SQL_TIMESTAMP

SQL_TYPE_TIMESTAMP

SQL_DATETIME_SUB列の値

SQL_TYPE_TIMESTAMP

SQL_CODE_TIMESTAMP

(139) PDPLGIXMK={YES|NO

プラグインインデクスの遅延一括作成をするかどうかを指定します。プラグインインデクスの遅延一括作成については,マニュアル「HiRDB システム運用ガイド」を参照してください。

YES:

プラグインインデクスの遅延一括作成をします。

NO:

プラグインインデクスの遅延一括作成をしません。

(140) PDPLUGINNSUB

詳細については,各プラグインマニュアルを参照してください。

(141) PDPLGPFSZ=遅延一括作成用のインデクス情報ファイルの初期容量

   〜〈符号なし整数〉((1〜1048574000))《8192》(単位:キロバイト)

プラグインインデクスの遅延一括作成用のインデクス情報ファイルの初期容量を指定します。なお,指定値は4の倍数に切り上げられます。

インデクス情報ファイルをHiRDBファイルシステム領域に作成する場合に,この指定が有効になります。

この環境変数を指定する場合,同時にPDPLGIXMK=YESも指定してください。

(142) PDPLGPFSZEXP=遅延一括作成用のインデクス情報ファイルの増分値

   〜〈符号なし整数〉((1〜1048573000))《8192》(単位:キロバイト)

プラグインインデクスの遅延一括作成用のインデクス情報ファイルの増分値を指定します。インデクス情報ファイルが満杯になった場合,ここで指定した値で増分します。なお,指定値は4の倍数に切り上げられます。

インデクス情報ファイルをHiRDBファイルシステム領域に作成する場合に,この指定が有効になります。

この環境変数を指定する場合,同時にPDPLGIXMK=YESも指定してください。

(143) PDHSICOPTIONS=集積モード[,集積モード]…

   〜〈識別子〉

HSICを使用する運用の場合に,HSICで集積する情報を指定します。

集積モードの指定値を次に示します。

ROOTAP:

この指定値は,Type4 JDBCドライバを使用しているときだけ有効になります。

クライアントからサーバへの電文にルートアプリケーション情報を常に付加する場合に指定します。指定がない場合は,製品付加情報に変更が発生したときだけ電文に付加します。

UAPREP:

PDSQLTRACEが指定されていなくても,PDUAPREPLVLにutが指定されていた場合,UAP統計レポート情報をサーバからクライアントへの電文に付加します。

PDUAPREPLVL,PDSQLTRACEの指定値とUAPREPとの対応を次の表に示します。

表6‒51 PDUAPREPLVL,PDSQLTRACEの指定値とUAPREPとの対応

PDUAPREPLVL=ut

PDSQLTRACE

UAPREP

指定なし

指定あり

指定あり

指定あり

指定なし

×

指定なし

指定あり

×

指定なし

(凡例)

○:電文にUAP統計レポートを付加します。

×:電文にUAP統計レポートを付加しません。

ALL:

上記のすべての指定値を適用したい場合に指定します。

PDHSICOPTIONSの指定値とHSICで集積できる情報を次の表に示します。

表6‒52 PDHSICOPTIONSの指定値とHSICで集積できる情報

PDHSICOPTIONSの

指定値

クライアントライブラリ

Type4 JDBCドライバ

未指定

なし

なし

UAPREP

UAP統計レポート情報

UAP統計レポート情報

ROOTAP

指定できません

ルートアプリケーション情報

ALL

UAP統計レポート情報

UAP統計レポート情報

および

ルートアプリケーション情報

《注意事項》
  • HSICを使用しない場合は,このクライアント環境定義を指定しないでください。

    指定値については,HSICのマニュアルを参照してください。

  • UAPREP又はALLを指定している場合,pdclttrcコマンドを使用してSQLトレースを取得しないでください。UAPREPの情報が取得できなくなることがあります。pdclttrcコマンドの詳細は,マニュアル「HiRDB コマンドリファレンス」の「pdclttrc(SQLトレースの動的取得)」を参照してください。

  • UAPREP又はALLを指定している場合,pdtrcmgrコマンドを使用してSQLトレースを取得するときは,-kオプションにutを指定してください。pdtrcmgrコマンドの詳細は「SQLトレース動的取得機能」を参照してください。

(144) PDJDBFILEDIR=Exceptionトレースログのファイル出力先

   〜<パス名>((最大256バイト))《PDCLTPATHの指定値》

Type4 JDBCドライバでのExceptionトレースログ及び不正電文トレースのファイル出力先を指定します。ファイル出力先には,ディレクトリの絶対パスを256バイトまでで指定してください。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

Exceptionトレースログの詳細は,「Exceptionトレースログ」を参照してください。不正電文トレースの詳細は,「不正電文トレース」を参照してください。そのほかの詳細は,「システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_FileDIR」を参照してください。

(145) PDJDBFILEOUTNUM=Exceptionトレースログのファイルへの出力数

   〜<符号なし整数>((1〜50))《5》

Type4 JDBCドライバでのExceptionトレースログのファイルへの出力数を指定します。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

クライアント環境定義PDJDBFILESIZE,又はシステムプロパティHiRDB_for_Java_FileSizeを指定している場合,このクライアント環境定義の値は無視されます。

Exceptionトレースログの詳細は,「Exceptionトレースログ」を参照してください。そのほかの詳細は,「システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_FileOutNUM」を参照してください。

(146) PDJDBONMEMNUM=Exceptionトレースログのメモリ内取得情報数

   〜<符号なし整数>((500〜10000))《1000》

Type4 JDBCドライバでのExceptionトレースログのメモリ内取得情報数を指定します。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

Exceptionトレースログの詳細は,「Exceptionトレースログ」を参照してください。そのほかの詳細は,「システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_OnMemNUM」を参照してください。

(147) PDJDBTRACELEVEL=Exceptionトレースログのトレース取得レベル

   〜<符号なし整数>((0〜5))《1》

Type4 JDBCドライバでのExceptionトレースログのトレース取得レベルを指定します。0を指定した場合,Exceptionトレースログを取得しません。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

Exceptionトレースログの詳細は,「Exceptionトレースログ」を参照してください。そのほかの詳細は,「システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_TraceLevel」を参照してください。

(148) PDJDBFILESIZE=Exceptionトレースログの最大ファイルサイズ

   〜<符号なし整数>((4096〜2000000000))

Type4 JDBCドライバでのExceptionトレースログの最大ファイルサイズを指定します。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

Exceptionトレースログの詳細は,「Exceptionトレースログ」を参照してください。そのほかの詳細は,「システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_FileSize」を参照してください。

(149) PDDNDPCOMPATIBLE={NO|ALL}

HiRDBデータプロバイダ for .NET Frameworkでは,HiRDB独自の仕様から.NET Frameworkの規格に準拠した仕様へ変更したメソッドがあります。

このクライアント環境定義には,ADO.NET2.0に対応したHiRDBデータプロバイダ for .NET Frameworkのメソッドが,.NET Frameworkの規格に準拠した仕様とするか,又は以前のHiRDB独自の仕様とするかを指定します。

NO:

メソッドの仕様が.NET Frameworkの規格に準拠した仕様となります。

ALL:

メソッドの仕様が以前のHiRDB独自の仕様となります。指定値ごとのHiRDBデータプロバイダ for .NET Frameworkのメソッドの仕様を次の表に示します。

表6‒53 PDDNDPCOMPATIBLE指定値ごとのメソッドの仕様

対象クラス

対象メソッド

メソッドの仕様

環境変数の指定値が

PDDNDPCOMPATIBLE =NOの場合

環境変数の指定値が

PDDNDPCOMPATIBLE =ALLの場合

HiRDBCommand

ExecuteScalar

結果セットの最初の行の最初の列がナル値の場合,UAPにSystem.DBNull.Valueを返却します。

結果セットの最初の行の最初の列がナル値の場合,次の値をUAPに返却します。

  • Microsoft Visual C#の場合:null

  • Microsoft Visual Basicの場合:Nothing