スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

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

<この項の構成>
(1) PDHOST=HiRDBサーバのホスト名[,予備系HiRDBサーバのホスト名]
(2) PDNAMEPORT=HiRDBサーバのポート番号
(3) PDFESHOST=フロントエンドサーバのホスト名[:フロントエンドサーバがあるユニットのポート番号][,予備系フロントエンドサーバのホスト名[:予備系フロントエンドサーバがあるユニットのポート番号]]
(4) PDSERVICEGRP=サーバ名
(5) PDSRVTYPE={WS|PC}
(6) PDSERVICEPORT=高速接続用のポート番号[,予備系の高速接続用ポート番号]
(7) PDFESGRP=FESグループ[,切替FESグループ[,切替FESグループ]…]
(8) PDCLTRCVPORT=クライアントの受信ポート番号
(9) PDCLTRCVADDR={クライアントのIPアドレス|クライアントのホスト名}
(10) PDTMID=OLTP識別子
(11) PDXAMODE={0|1}
(12) PDTXACANUM=1プロセス当たりのトランザクション最大同時実行数
(13) PDXARCVWTIME=トランザクションが回復できない場合の待ち合わせ時間
(14) PDXATRCFILEMODE={LUMP|SEPARATE}
(15) PDXAAUTORECONNECT={YES|NO}
(16) HiRDB_PDHOST=HiRDBサーバのホスト名[,予備系HiRDBサーバのホスト名]
(17) HiRDB_PDNAMEPORT=HiRDBサーバのポート番号
(18) HiRDB_PDTMID=OLTP識別子
(19) HiRDB_PDXAMODE={0|1}
(20) PDUSER=認可識別子[/パスワード]
(21) PDCLTAPNAME=実行するUAPの識別名称
(22) PDCLTLANG={SJIS|CHINESE|UJIS|C|UTF-8|CHINESE-GB18030}
(23) PDLANG={UTF-8|SJIS|CHINESE|CHINESE-GB18030|ANY}
(24) PDDBLOG={ALL|NO}
(25) PDEXWARN={YES|NO}
(26) PDSUBSTRLEN={3|4|5|6}
(27) PDCLTCNVMODE={AUTO|NOUSE|UJIS|UJIS2|UTF8|UTF8MS|UTF8_TXT|UTF8_EX|UTF8_EX2|UTF8MS_TXT|UCS2_UJIS|UCS2_UTF8}
(28) PDCLTGAIJIDLL=ユーザ定義外字変換DLLファイル名
(29) PDCLTGAIJIFUNC=ユーザ定義外字変換関数名
(30) PDCLTGRP=クライアントグループ名
(31) PDTCPCONOPT={0|1}
(32) PDAUTORECONNECT={YES|NO}
(33) PDRCCOUNT=自動再接続機能でのCONNECTのリトライ回数
(34) PDRCINTERVAL=自動再接続機能でのCONNECTのリトライ間隔
(35) PDUAPENVFILE=UAP環境定義のファイル名
(36) PDDBBUFLRU={YES|NO}
(37) PDHATRNQUEUING=NO
(38) PDCLTBINDLOOPBACKADDR={YES|NO}
(39) PDASTHOST=HiRDB Control Manager - Agentのホスト名[,予備系HiRDB Control Manager - Agentのホスト名]
(40) PDASTPORT=HiRDB Control Manager - Agentのポート番号
(41) PDSYSTEMID=HiRDB Control Manager - Agentが管理するHiRDBサーバのHiRDB識別子
(42) PDASTUSER=OSのユーザ名/パスワード
(43) PDCMDWAITTIME=コマンド実行時のクライアントの最大待ち時間
(44) PDCMDTRACE=コマンドトレースファイルのサイズ
(45) PDIPC={MEMORY|DEFAULT}
(46) PDSENDMEMSIZE=クライアント側のデータ送信用メモリサイズ
(47) PDRECVMEMSIZE=クライアント側のデータ受信用メモリサイズ
(48) PDCWAITTIME=クライアントの最大待ち時間
(49) PDSWAITTIME=トランザクション処理中のサーバの最大待ち時間
(50) PDSWATCHTIME=トランザクション処理以外のサーバの最大待ち時間
(51) PDCWAITTIMEWRNPNT=SQL実行時間警告出力の契機
(52) PDKALVL={0|1|2}
(53) PDKATIME=パケットの送信間隔
(54) PDTIMEDOUTRETRY=リトライ回数
(55) PDNBLOCKWAITTIME=ノンブロックモードでのコネクション確立監視時間
(56) PDCONNECTWAITTIME=サーバ接続時のHiRDBクライアントの最大待ち時間
(57) PDCLTPATH=トレースファイル格納ディレクトリ
(58) PDSQLTRACE=SQLトレースファイルのサイズ
(59) PDUAPERLOG=エラーログファイルのサイズ
(60) PDERRSKIPCODE=SQLCODE[,SQLCODE]…
(61) PDPRMTRC={YES|NO|IN|OUT|INOUT}
(62) PDPRMTRCSIZE=SQLトレースに出力するパラメタ情報の最大データ長
(63) PDTRCMODE={ERR|NONE}
(64) PDUAPREPLVL={[s] [u] [p] [r] |a}
(65) PDREPPATH=UAP統計レポートファイルの格納ディレクトリ
(66) PDTRCPATH=動的SQLトレースファイルの格納ディレクトリ
(67) PDSQLTRCOPENMODE={CNCT|SQL}
(68) PDSQLTEXTSIZE=SQL文のサイズ
(69) PDSQLEXECTIME={YES|NO}
(70) PDRCTRACE=再接続トレースファイルのサイズ
(71) PDWRTLNPATH=WRITE LINE文の値式の値を出力するファイルの格納先ディレクトリ
(72) PDWRTLNFILSZ=WRITE LINE文の値式の値を出力するファイルの最大サイズ
(73) PDWRTLNCOMSZ=WRITE LINE文の値式の値の合計サイズ
(74) PDUAPEXERLOGUSE={YES|NO}
(75) PDUAPEXERLOGPRMSZ=パラメタ情報の最大データ長
(76) PDARYERRPOS={YES|NO}
(77) PDDNDPTRACE=メソッドトレースのファイルサイズ
(78) PDVWOPTMODE={0|1|2}
(79) PDTAAPINFPATH=アクセスパス情報ファイル出力ディレクトリ名
(80) PDTAAPINFMODE={0|1}
(81) PDTAAPINFSIZE=アクセスパス情報ファイルサイズ
(82) PDSTJTRNOUT={YES|NO}
(83) PDLOCKLIMIT=ユーザ当たりの最大排他資源要求数
(84) PDDLKPRIO={96|64|32}
(85) PDLOCKSKIP={YES|NO}
(86) PDFORUPDATEEXLOCK={YES|NO}
(87) PDISLLVL=データ保証レベル
(88) PDSQLOPTLVL=SQL最適化オプション[,SQL最適化オプション]…
(89) PDADDITIONALOPTLVL=SQL拡張最適化オプション[,SQL拡張最適化オプション]…
(90) PDHASHTBLSIZE=ハッシュジョイン,副問合せのハッシュ実行適用時のハッシュ表サイズ
(91) PDDFLNVAL={USE|NOUSE}
(92) PDAGGR=グループ分けのときに発生するグループ数
(93) PDCMMTBFDDL={YES|NO}
(94) PDPRPCRCLS={YES|NO}
(95) PDAUTOCONNECT={ON|OFF}
(96) PDDDLDEAPRPEXE={YES|NO}
(97) PDDDLDEAPRP={YES|NO}
(98) PDLCKWAITTIME=排他待ち限界経過時間
(99) PDCURSORLVL={0|1|2}
(100) PDDELRSVWDFILE=SQL予約語削除ファイル名
(101) PDHJHASHINGMODE={TYPE1|TYPE2}
(102) PDCALCMDWAITTIME=CALL COMMAND文の最大待ち時間
(103) PDSTANDARDSQLSTATE={YES|NO}
(104) PDBLKF=ブロック転送の行数
(105) PDBINARYBLKF={YES|NO}
(106) PDBLKBUFFSIZE=通信バッファサイズ
(107) PDBLKFUPD={YES|NO}
(108) PDBLKFERRBREAK={YES|NO}
(109) PDNODELAYACK={YES|NO}
(110) PDBINDRETRYCOUNT=bindシステムコールのリトライ回数
(111) PDBINDRETRYINTERVAL=bindシステムコールのリトライ間隔
(112) PDCLTSIGPIPE={CATCH|IGNORE}
(113) PDDBACCS=アクセスするRDエリアの世代番号
(114) PDDBORGUAP={YES|NO}
(115) PDSPACELVL={0|1|3}
(116) PDCLTRDNODE=XDM/RD E2のデータベース識別子
(117) PDTP1SERVICE={YES|NO}
(118) PDRDCLTCODE={SJIS|UTF-8}
(119) PDCNSTRNTNAME={LEADING|TRAILING}
(120) PDBESCONHOLD={YES|NO}
(121) PDBESCONHTI=バックエンドサーバ接続保持期間
(122) PDRDABLKF=一括検索の行数
(123) PDODBSTATCACHE={0|1}
(124) PDODBESCAPE={0|1}
(125) PDGDATAOPT={YES|NO}
(126) PDODBLOCATOR={YES|NO}
(127) PDODBSPLITSIZE=分割取得サイズ
(128) PDODBCWRNSKIP={YES|NO}
(129) PDJETCOMPATIBLE={YES|NO}
(130) PDPLGIXMK={YES|NO}
(131) PDPLUGINNSUB
(132) PDPLGPFSZ=遅延一括作成用のインデクス情報ファイルの初期容量
(133) PDPLGPFSZEXP=遅延一括作成用のインデクス情報ファイルの増分値
(134) PDJDBFILEDIR=Exceptionトレースログのファイル出力先
(135) PDJDBFILEOUTNUM=Exceptionトレースログのファイルへの出力数
(136) PDJDBONMEMNUM=Exceptionトレースログのメモリ内取得情報数
(137) PDJDBTRACELEVEL=Exceptionトレースログのトレース取得レベル

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

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

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

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

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

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

FQDN:
FQDNとは,HiRDBサーバのホスト名とドメイン名とを,ピリオドで結んだ名称のことをいいます。
(指定例)
PDHOST=host1.soft.hitachi.co.jp

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

《IPアドレスを引き継ぐ系切り替えをする場合》
  • UNIX版の場合
    現用系のホスト名を指定してください。
  • Windows版の場合
    MSCS又はMSFCのネットワーク名に登録した仮想ネットワーク名を指定してください。仮想ネットワークについては,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。

《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:
FQDNとは,HiRDBサーバのホスト名とドメイン名とを,ピリオドで結んだ名称のことをいいます。
(指定例)
PDFESHOST=host1.soft.hitachi.co.jp

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

《IPアドレスを引き継ぐ系切り替えをする場合》
  • UNIX版の場合
    現用系のホスト名を指定してください。
  • Windows版の場合
    MSCS又はMSFCのネットワーク名に登録した仮想ネットワーク名を指定してください。仮想ネットワークについては,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。

《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版,Solaris版,又はAIX版の場合に指定します。

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

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

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

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

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

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

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

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

《ほかの環境変数との関係》
この環境変数を指定する場合,次に示す環境変数も必ず指定してください。
<HiRDB/シングルサーバの場合>
  • PDHOST
  • PDNAMEPORT
  • PDSERVICEGRP
<HiRDB/パラレルサーバの場合>
  • PDHOST
  • PDNAMEPORT
  • PDFESHOST
  • PDSERVICEGRP

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

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

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

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

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

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

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

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

《留意事項》
  1. この環境変数を指定した場合,PDFESHOST,PDSERVICEGRP,及びPDSERVICEPORTの指定は無効になります。
  2. 切替FESグループを指定する場合,サーバ障害,及び接続ユーザ数オーバーで接続先を切り替えるため,一時的に切替FESグループ側の接続数が増えることがあります。そのため,切替FESグループ側のpd_max_usersオペランドの値を見直す必要があります。
  3. 切替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 Jetデータベースエンジンなどを経由している場合は,暗黙的に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:
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を指定している場合

(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 Version 8 システム導入・設計ガイド」を参照してください。

《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のトランザクションは決着できません。

《WebLogic Serverと連携している場合》
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:
FQDNとは,HiRDBサーバのホスト名とドメイン名とを,ピリオドで結んだ名称のことをいいます。
(指定例)
PDHOST=host1.soft.hitachi.co.jp

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

《IPアドレスを引き継ぐ系切り替えをする場合》
  • UNIX版の場合
    IPアドレスを引き継ぐ場合は,現用系のホスト名を指定します。
  • Windows版の場合
    IPアドレスを引き継ぐ場合は,MSCS又はMSFCのネットワーク名に登録した仮想ネットワーク名を指定します。仮想ネットワークについては,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。

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

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

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

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

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

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

(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 Version 8 システム導入・設計ガイド」を参照してください。

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

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

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

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

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

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

《留意事項》
  1. OpenTP1下のUAPをクライアントとする運用形態の場合,「'認可識別子/パスワード'」の形式で指定します。また,認可識別子,パスワードに英小文字を使用する場合は,「'"認可識別子"/"パスワード"'」の形式で指定してください。
  2. パスワードを省略する場合,「認可識別子」だけの形式で指定すると,ユティリティによってはパスワードの入力を要求するものがあります。このような場合は,「認可識別子/パスワード」の形式で,パスワードに任意の文字列を指定してください。また,UAPからコマンドを実行する(COMMAND EXECUTEを実行する)場合,パスワードは省略できません。
  3. ディレクトリサーバ連携機能を使用している場合,ユーザIDとパスワードの管理,及びHiRDB接続時のユーザ認証は,ディレクトリサーバが行います(HiRDBは行いません)。したがって,ディレクトリサーバに登録したユーザIDとパスワードを指定する必要があります。ディレクトリサーバに登録していないユーザIDとパスワードを指定してユティリティなどを実行した場合,ユーザ認証でエラーとなります。

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

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

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

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

《留意事項》
  1. UAPの識別名称に英数字以外の文字を使用した場合は,pdcancelコマンドを実行できないことがありますので,英数字だけで構成される名称にすることをお勧めします。
  2. 次の文字列は,UAPの識別名称に使用しないでください。
    ・「pd」で始まる文字列
    ・「hds」で始まる文字列
    ・「0」で始まる文字列
注※
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)を使う場合に指定します。

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

 

《留意事項》
  1. PDCLTLANGに上記以外の値を設定するとエラーになります。
  2. Windows版の場合に,UJISを設定するとエラーになります。
  3. Windows版の場合に,この環境変数を省略すると,SJISが仮定されます。
  4. UNIX版の場合に,この環境変数を省略すると,環境変数LANGで指定した文字コード種別が仮定されます。SQLプリプロセサの実行時に設定する環境変数LANGについては,「UNIX環境でのプリプロセス」を参照してください。

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

UAP実行環境のOSでサポートしていない文字コードを使用する場合に指定してください。省略した場合は,環境変数LANGの指定値が仮定されます。

SJISはLinux版の場合だけ指定できます。また,Windows版の場合はANYだけ指定できます。

ANYを指定した場合は,サーバがどの文字コードを使用していても接続できます。ただし,クライアント(アプリケーション)では,接続するサーバの文字コードを意識して,データ操作及びSQL文の生成をする必要があります。

(24) PDDBLOG={ALL|NO}

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

ALL:
ログ取得モードでUAPを実行します。
ALLを指定すると,障害対策のための運用が簡単になりますが,大量のデータを更新する場合,処理に時間が掛かります。

NO:
ログレスモードでUAPを実行します。
UAPの実行途中で異常終了した場合,このトランザクションで更新したデータベースは回復されません。NOを指定する場合,データベースの更新ログを取得しない分,処理時間を短縮できますが,UAPの実行前後にバックアップを取得する必要があるので,必ずHiRDB管理者の許可を受けてください。
ログレスモードでUAPを実行するときの方法については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
 

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

また,分散データベース環境下では,サーバ側のこの環境変数の指定に関係なく,すべてのデータベースの更新ログを取得します。

(25) PDEXWARN={YES|NO

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

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

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

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

(26) PDSUBSTRLEN={3|4|5|6}

1文字を表現する最大バイト数を指定します。この環境変数は,文字コード種別をUnicode(UTF-8)でセットアップした場合にだけ有効になり,スカラ関数SUBSTRの結果の長さに影響します。SUBSTRの詳細については,マニュアル「HiRDB Version 8 SQLリファレンス」を参照してください。

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

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

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

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

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

 

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

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

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

HiRDBクライアントのアプリケーションで使用する文字コード HiRDBサーバ側の文字コード
SJIS Unicode(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 × ×
C NOUSE NOUSE NOUSE NOUSE ×
GB18030 × × × ×

(凡例)
×:変換できないため,指定できません。
−:コード変換が不要のため,指定する必要がありません。

UTF8,UTF8_EX,及びUTF8_EX2指定時の文字コード変換の差異を表6-26及び表6-27に示します。

表6-26 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

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

表6-27 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のバイトオーダは,プログラムを実行するホストのバイトオーダとして処理されます。

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

   〜<文字列>

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

ユーザ定義外字変換DLLファイルの名称を指定します。この環境変数はPDCLTCNVMODEにNOUSE以外を指定しているときだけ有効になります。また,この環境変数を省略した場合,2バイト外字を全角文字"#"に変換します。

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

   〜<文字列>

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

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

《ユーザ定義外字関数の記述形式》
ユーザ定義外字変換関数の記述形式を次に示します。
 
  _declspec(dllexport)※1 WINAPI※2 ユーザ定義外字変換関数名 (
     long        direct,
     unsigned char far *instr,
     unsigned char far *outstr) ;
 
注※1
DLLの宣言形式は,使用しているコンパイラによって異なります。使用しているコンパイラのDLL形式に合わせてください。
注※2
作成したDLLのエクスポート関数名(ユーザ定義外字変換関数名)は使用しているコンパイラによって異なります。次のどちらかの方法で,指定するエクスポート関数名を調べてください。
  • DLL作成時に,プロジェクトの設定でMAPファイルを出力するように指定し,MAPファイルからエクスポート関数名を確認してください。
  • Microsoft Visual C++のdumpbinコマンド(dumpbin /exports DLL名)を使用してエクスポート関数名を確認してください。
[入力]
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-28 *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
6 EUC日本語漢字コードの外字コード 任意のUTF-16形式のコード UCS2_UJIS
7 Unicodeのサロゲートペア EUC日本語漢字コードの外字コード UCS2_UJIS

 

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

表6-29 各文字コードの外字コードの範囲

文字コード 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-30 サロゲートペアの範囲

エンコード 上位サロゲート 下位サロゲート
1バイト目 2バイト目 1バイト目 2バイト目
UTF-16 0xd8〜0xdb 0x00〜0xff 0xdc〜0xdf 0x00〜0xff

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

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

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

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

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

(31) PDTCPCONOPT={0|1}

この環境変数は,バージョン06-02以降のHiRDBサーバと接続する場合に有効になります。サーバとの通信で消費するTCPポートの数を削減するときに指定します。

TCPプロトコルの仕様によって,TCPポートではTCPコネクションの終了後の一定時間(1〜4分間)は,新しいTCPコネクションが使用できない状態(TIME_WAIT状態)になることがあります。TIME_WAIT状態のポートは,終了したTCPコネクションのために消費されます。この環境変数に1を指定すると,クライアント側とサーバ側とで発生するTIME_WAIT状態のTCPポートの数を削減できます。

0:
サーバとの通信で消費する,TCPポートの数を削減しなくてもよい場合に指定します。

1:
サーバとの通信で消費する,TCPポートの数を削減する場合に指定します。
1を指定した場合の,削減できるTIME_WAIT状態のTCPポート数を次に示します。
UAPの実行環境 UAPからHiRDBサーバへの接続形態 通信の種類 環境変数の効果 削減できるTIME_WAIT状態のTCPポートの数※1
クライアント※2 サーバ
OLTP下 通常接続 UAPがHiRDBサーバへ接続するための通信※3 1 1
OLTPからHiRDBサーバへの障害回復用の通信※4※5 1 1
高速接続,及びFESホストダイレクト接続 UAPがHiRDBサーバへ接続するための通信 ×
OLTPからHiRDBサーバへの障害回復用の通信※4※5 1 1
OLTP下以外 通常接続 UAPがHiRDBサーバへ接続するための通信※3 1 1
高速接続,及びFESホストダイレクト接続 UAPがHiRDBサーバへ接続するための通信 ×

(凡例)
○:PDTCPCONOPTに1を指定した場合,有効になります。
×:PDTCPCONOPTに1を指定しても無効になります。
−:該当しません。

注※1
TIME_WAIT状態になるTCPポートの数は,TCPコネクションの終了プロトコルに関与するパケットが到達するタイミングに依存するため,ネットワークの状態によって変わります。したがって,削減できるTIME_WAIT状態のTCPポートの数は変わることもあります。

注※2
OLTPからの障害回復用の通信の場合は,OLTPの障害回復用のプロセスがクライアントになります。

注※3
UAPがHiRDBサーバへ接続するときに使用する,TCPポートの一部がTIME_WAIT状態になります。

注※4
OLTPの障害回復用のプロセスが,障害で中断されたトランザクションを回復するために,X/Openに従ったXAインタフェース関数(xa_open,xa_recover,xa_rollbackなど)を呼び出す場合,OLTPからHiRDBサーバへの障害回復用の通信が発生します。このとき,XAインタフェース関数の実行で使用する,TCPポートの一部がTIME_WAIT状態になります。削減できるTIME_WAIT状態のTCPポートの数は,一つのXAインタフェース関数を呼び出す場合に削減できる数です。したがって,n個のXAインタフェース関数を呼び出す場合は,n倍削減できます。

注※5
OLTPの障害回復用のプロセスの環境変数を指定する方法は,OLTPごとに異なります。例えば,OpenTP1の場合は,トランザクションサービス定義で指定します。

《適用基準》
次のどちらかの条件を満たす場合,この環境変数に1を指定してください。
  • OSが自動的に割り当てるTCPポート数が5000未満の場合(TCPポートの範囲はOSによって異なります)
  • OpenTP1下のUAPで,PDXAMODEに1を設定している場合
ただし,システム定義のpd_max_usersオペランドの指定値が100未満の場合,又はpd_registered_portオペランドを指定している場合は,上記の条件に該当しても1を指定する必要はありません。

《留意事項》
  1. バージョン06-02より前のHiRDBサーバと接続する場合,この環境変数には1を指定しないでください。1を指定すると,HiRDBサーバが使用できる通信ソケットが不足するおそれがあります。
  2. この環境変数に1を指定する場合は,HiRDBサーバ側のOSのオペレーティングシステムパラメタmaxfiles_limを見直す必要があります。オペレーティングシステムパラメタの見積もりについては,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

(32) PDAUTORECONNECT={YES|NO

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

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

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

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

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

《留意事項》
  1. 再接続するときのCONNECTのリトライ回数,及びリトライ間隔は,PDRCCOUNT,及びPDRCINTERVALで設定できます。
  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以前である。

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

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

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

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

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

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

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

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

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

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

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

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

(36) 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数※1×pd_log_rec_lengオペランドの指定値
    注※1
    更新GET数は,UAP統計レポートのDIDUCの値,又はUAPに関する統計情報のDIDUCの値で確認できます。

(37) PDHATRNQUEUING=NO

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

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

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

(38) PDCLTBINDLOOPBACKADDR={YES|NO

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

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

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

システム共通定義のpd_rpc_bind_loopback_addressオペランドに"Y"を指定している場合は,この環境変数にYESを指定してください。

この環境変数は,HiRDBサーバがWindows版,及びLinux版の場合に指定できます。

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

(39) 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:
FQDNとは,HiRDBサーバのホスト名とドメイン名とを,ピリオドで結んだ名称のことをいいます。
(指定例)
PDASTHOST=host1.soft.hitachi.co.jp

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

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

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

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

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

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

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

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

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

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

   〜《PDUSERの指定値》

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

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

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

(43) 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,又は実行中のコマンドをキャンセルする必要があります。

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

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

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

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

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

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

(45) 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++又はWeblogic Server下のUAPをクライアントとする場合,この環境変数の指定は無効になり,DEFAULTが仮定されます。
  3. UNIX版クライアントでPDIPC=MEMORYを指定した場合,クライアントの接続ごとにPDSENDMEMSIZE及びPDRECVMEMSIZEの指定値分の共用メモリが確保されます。したがって,複数のクライアントを同時に実行した場合,共用メモリが不足することがあるため,使用できる共用メモリのサイズを考慮して,PDSENDMEMSIZE及びPDRECVMEMSIZEを指定する必要があります。
  4. PDIPC=MEMORYを指定した場合,PDCLTRCVADDRの指定は無効になります。
  5. PDIPC=MEMORYを指定して,同時にPDUAPREPLVLにp,r,若しくはaを指定している場合,又はPDWRTLNFILSZを指定している場合,PDIPCの指定は無効になります。

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

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

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

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

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

《見積もり方法》
指定値は,次の計算式から見積もってください。
 
指定値(単位:バイト)=
 ↑(400+16×検索列数+16×?パラメタ数+SQL文長)÷4096↑×4
 
なお,この計算式は,実際の通信で送信するデータ量とは異なります。

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

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

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

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

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

《見積もり方法》
指定値は,次の計算式から見積もってください。
 
指定値(単位:バイト)=
 ↑(600+25×検索列数+Σ 列のデータ長)÷4096↑×4
 
列のデータ長は,VARCHARの場合は構造体長にしてください。また,配列FETCH,又は繰返し列を受け取る場合は,「列のデータ長×配列数」,又は「列のデータ長×繰り返し数の要素」にしてください。
PDBLKFを指定している場合は,次の計算式から値を求めてください。
 
指定値(単位:バイト)=
 ↑(600+19×検索列数+(7×検索列数+Σ 列のデータ長)
   ×PDBLKFの値)÷4096↑×4
 
なお,この計算式は,実際の通信で送信するデータ量とは異なります。

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

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

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

《留意事項》
  1. 0を指定した場合,HiRDBクライアントはHiRDBサーバからの応答があるまで待ち続けます。
  2. 最大待ち時間を経過してもHiRDBサーバから応答がない場合には,UAPにエラーリターンします。このとき,トランザクション処理中の場合は,HiRDBサーバ側のプロセスをキャンセルします。
  3. 0を指定した場合に,次のような障害が発生すると,HiRDBクライアントが無応答状態になることがあります。
    ・通信障害(HiRDBクライアントとHiRDBサーバ,及びHiRDBサーバとHiRDBサーバの通信障害(一時的な障害も含む))
    ・ディスク障害などでのプロセスの沈み込み
    したがって,設定値には,0以外で,かつ各SQL実行時間の最大値より大きな値を指定することをお勧めします。なお,排他待ちが発生するSQLを実行する場合は,システム定義のpd_lck_wait_timeoutオペランドも考慮して値を決める必要があります。

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

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

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

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

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

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

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

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

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

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

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

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

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

《留意事項》
  1. OLTP下のUAPをクライアントとする運用形態の場合,及びトランザクションに関係なくHiRDBサーバと常に接続しているUAPの場合,この環境変数には必ず0を指定してください。
  2. HiRDBサーバがHiRDBクライアントとの接続を切断しても,HiRDBサーバはHiRDBクライアントに切断したことを通知しないので,注意が必要です。

《システム定義との関係》
この環境変数を省略すると,システム定義のpd_watch_pc_client_timeオペランドで指定した値を使用してトランザクション開始までの時間を監視します。pd_watch_pc_client_timeオペランドについては,マニュアル「HiRDB Version 8 システム定義」を参照してください。

《ほかの環境変数との関係》
PDCWAITTIME,PDSWAITTIME,及びPDSWATCHTIMEの関係を次の図に示します。

図6-2 PDCWAITTIME,PDSWAITTIME,及びPDSWATCHTIMEの関係

[図データ]

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

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

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

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

PDCWAITTIMEの指定値に対する比率(小数点を指定しない場合):
   〜<符号なし整数>((0〜99))(単位:%)
PDCWAITTIMEの指定値に対する比率を指定します。例えば,PDCWAITTIMEオペランドに100(秒)を指定し,PDCWAITTIMEWRNPNTに90(%)を指定すると,SQLの実行後にHiRDBがSQLの実行時間を調べます。その結果,SQLの実行時間が90秒以上100秒未満の場合に警告情報が出力されます。

PDCWAITTIMEの指定値に対する比率(小数点を指定する場合):
   〜<符号なし10進数>((0〜99.999999))(単位:%)
PDCWAITTIMEの指定値に対する比率(小数点を含む比率)を指定します。

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

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

(52) PDKALVL={0|1|2}

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

この環境変数はマルチスレッド版のHiRDBクライアントライブラリでだけ有効になります。

0以外を指定した場合,HiRDBとの接続ごとにパケット送信スレッドを一つ生成します。パケットの送信間隔は,PDKATIMEで指定できます。

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

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

1:
定期的にパケットを送信する機能を使用します。パケット送信スレッドは,一定時間間隔でHiRDBサーバとの接続経路にパケットを送信します。
HiRDBサーバで時間監視しているPDSWAITTIME,及びPDSWATCHTIMEの監視時間をリセットしません。
HiRDBクライアントとHiRDBサーバが同一マシンの場合,1を指定しないでください。

2:
定期的にパケットを送信する機能を使用します。パケット送信スレッドは,一定時間間隔でHiRDBサーバとの接続経路にパケットを送信し,HiRDBサーバからの返信パケットを受信します。
HiRDBサーバで時間監視しているPDSWAITTIME,及びPDSWATCHTIMEの監視時間をリセットします。
HiRDBサーバからのパケットが,クライアント環境定義PDCWAITTIMEの時間を過ぎても返ってこない場合,接続を無効にします。この場合,SQL実行スレッドが次のSQLを実行するときに,タイムオーバのSQLCODE(-732)をアプリケーションに返却します。
パケット送信スレッドがHiRDBサーバからの応答の返却を待っている間に,SQL実行スレッドにアプリケーションからSQL要求があった場合,パケット送信スレッドがHiRDBサーバからの応答を受信するまでSQL実行スレッドは待ち状態になります。このため,SQL実行時間が遅くなることがあります。また,受信待ちのときに,select()システムコールを発行するため,設定値に1を指定した場合よりもCPU使用率が高くなります。HiRDBサーバで時間監視しているPDSWAITTIME,及びPDSWATCHTIMEの監視時間をリセットする必要のない場合は,設定値に1を指定することをお勧めします。

《適用基準》
ルータやファイアウォールなどのネットワーク管理アプリケーションでは,一定時間パケットが流れないと接続を切断する,無通信時間監視機能を備えていることがあります。この環境変数に0以外を指定することで,HiRDBの接続を保持したまま,サービスの要求を待機するWebアプリケーションなどが,ネットワーク管理アプリケーションによってHiRDBの接続を不当に切断されることを防げます。
また,HiRDBサーバでの時間監視(PDSWAITTIME,及びPDSWATCHTIME)を無限にしておくと,HiRDBクライアント側のマシンダウンやネットワーク障害の場合,HiRDBサーバプロセスが残ることがあります。この環境変数に2を指定することで,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の監視時間で接続が切られることがある。

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

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

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

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

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

(54) PDTIMEDOUTRETRY=リトライ回数

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

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

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

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

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

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

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

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

《適用基準》
LAN障害時の,connect()システムコールが数十秒(OSに依存)待たされることを回避したいときに指定します(ノンブロックモードにします)。これを指定することで,LAN障害を早く検知できます。なお,ノンブロックモードではPDTIMEDOUTRETRYの指定の有無に関係なく,PDTIMEDOUTRETRY=0を仮定します。
この環境変数の指定を省略した場合,又は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の待ち時間で接続タイムアウトになります。

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

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

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

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

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

《見積もり方法》
指定値が小さ過ぎる場合,ネットワークの状態や接続時のスケジュール待ちで時間が掛かって,正常な接続処理がエラーとなることがあります。指定値には,次の計算式以上の値を設定してください。
MIN(システム定義pd_max_usersオペランドの値×0.2,300)

《ほかの環境変数との関係》
PDTIMEDOUTRETRY,PDNBLOCKWAITTIME,及びPDCONNECTWAITTIMEの関係を次の図に示します。

図6-3 PDTIMEDOUTRETRY,PDNBLOCKWAITTIME,及びPDCONNECTWAITTIMEの関係

[図データ]

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

   〜<パス名>《カレントディレクトリのパス名》

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

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

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

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

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

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

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

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

(59) PDUAPERLOG=エラーログファイルのサイズ

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

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

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

エラーログについては,「11.1.2 エラーログ機能」を参照してください。

《ほかの環境変数との関係》
エラーログは,PDCLTPATHで指定したディレクトリに出力されます。PDCLTPATHの指定がない場合,UAPを起動したときのカレントディレクトリOpenTP1から起動されるUAPの場合,%DCDIR%\tmp\home\サーバ名××のディレクトリの下に出力されます。

(60) PDERRSKIPCODE=SQLCODE[,SQLCODE]…

エラーログへのメッセージ出力を抑止するSQLCODEを指定します。SQLCODEは最大10個指定できます。

例えば,SQLCODE−901と−917を抑止する場合は,次のように指定します。

 
 PDERRSKIPCODE=-901,-917
 

《利点》
UAPの構造によっては,SQLの処理で必然的にエラーが発生することがあります。通常の業務でこのようなエラーが頻繁に発生すると,ファイルシステムを圧迫してしまうおそれがあります。特に,X/Openに従ったAPIを使用するUAPの場合,プロセスごとにエラーログファイルを二つ作成してしまいます。この環境変数を指定すると,特定のエラーについてはメッセージの出力を抑止できるので,ファイルシステムへの負荷を軽減できます。

《適用基準》
次の条件をすべて満たす場合に適用してください。
  • UAPの構造上エラーが頻繁に発生する。
  • あらかじめ障害の原因が特定できて,その要因を調査する必要がない。
この環境変数を指定すると,不慮の障害が発生したときにその原因を調査できなくなります。適用する場合には注意してください。

(61) PDPRMTRC={YES|NO|IN|OUT|INOUT}

SQLトレースにパラメタ情報及び検索データを出力するかどうかを指定します。出力内容については,「11.1.1 SQLトレース機能」を参照してください。

YES:
SQLトレースに入力用パラメタ情報を出力します。YESを指定した場合,検索データ情報と入力パラメタを出力します。

NO:
SQLトレースにパラメタ情報を出力しません。

IN:
SQLトレースに入力用パラメタ情報を出力します。CALL文のINパラメタとINOUTパラメタも該当します。

OUT:
SQLトレースに出力用パラメタ情報,及び検索データ情報を出力します。CALL文のOUTパラメタとINOUTパラメタも該当します。

INOUT:
SQLトレースに入力用パラメタ情報,出力用パラメタ情報,及び検索データ情報を出力します。CALL文のINOUTパラメタは2回出力します。

注※
CALL文のINOUTパラメタの情報は,出力データだけとなります。

(62) PDPRMTRCSIZE=SQLトレースに出力するパラメタ情報の最大データ長

   〜<符号なし整数>((4〜32008))《256》(単位:バイト)

SQLトレースに出力するパラメタ情報及び検索データの最大データ長を指定します。可変長文字列型,BLOB型,及びBINARY型の場合,文字列長の領域もデータ長に含まれます。

この環境変数は,PDPRMTRC=NO以外の場合に有効になります。

この環境変数の指定値を大きくすると,出力する情報量が増えます。そのため,SQLトレースファイルのサイズ(PDSQLTRACEの指定値)も大きくする必要があります。

(63) PDTRCMODE={ERR|NONE}

SQLトレース以外のトラブルシュート情報(pderr*.trcの情報)を出力するかどうかを指定します。

ERR:pderr*.trcの情報を出力します。

NONE:pderr*.trcの情報を出力しません。

(64) PDUAPREPLVL={[s] [u] [p] [r] |a}

UAP統計レポートの出力情報を指定します。UAP統計レポートを出力するファイルをUAP統計レポートファイルといいます。この環境変数は,PDSQLTRACEを指定しているときに有効になります。

省略した場合,SQLトレース情報だけ出力されます。

なお,UAP統計レポートについては,「11.1.4 UAP統計レポート機能」を参照してください。

s:SQL単位の情報が出力されます。また,SQLトレース情報も出力します。

u:UAP単位の情報が出力されます。

p:アクセスパス情報が出力されます。

r:SQL実行時の中間結果情報を出力します。

a:すべての情報が出力されます。

s,u,p,及びrを組み合わせて指定できます(su,sr,uprなど)。suprと指定した場合は,aと同じ意味になります。u,p,r,up,ur,pr,uprを指定した場合,SQLトレース情報は出力されません。

《留意事項》
  1. アクセスパス情報,又はSQL実行時の中間結果情報を取得する場合,SQLオブジェクトがバッファ中にあってもSQLオブジェクトを再作成するため,サーバの負荷が増えることがあります。
  2. 次の場合は,UAP単位の情報は出力されません。
    ・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となります。

(65) PDREPPATH=UAP統計レポートファイルの格納ディレクトリ

   〜<パス名>((最大256バイト))

UAP統計レポートファイルを,PDCLTPATHで指定したディレクトリとは別のディレクトリに作成する場合に指定します。この環境変数は,PDUAPREPLVLを指定しているときだけ有効になります。

UAP統計レポートファイルには,CONNECT及びDISCONNECT単位に情報を出力します。また,ファイル名は,CONNECTした時間(HH:MM:SS:mmm)とコネクト通番(XXX)から,「pdHHMMSSmmm_XXX_1.trc」と「pdHHMMSSmmm_XXX_2.trc」という名称になります。

(66) PDTRCPATH=動的SQLトレースファイルの格納ディレクトリ

   〜<パス名>((最大256バイト))

HiRDBクライアントが作成する動的SQLトレースファイルの格納先ディレクトリを指定します。トレース取得コマンド(pdtrcmgr)で動的SQLトレースファイルを取得する場合には,この環境変数を必ず指定してください。

ここで指定したディレクトリをpdtrcmgrで指定すると,次回のCONNECTから,指定したディレクトリにSQLトレースファイルが作成されます。pdtrcmgrについては,「11.1.6 SQLトレース動的取得機能」を参照してください。

(67) PDSQLTRCOPENMODE={CNCT|SQL

PDREPPATHを指定している場合に,SQLトレースファイルのオープンモードを指定します。

CNCT:
CONNECT,DISCONNECT単位にSQLトレースファイルをオープン,クローズして,トレース情報を出力します。CNCTを指定した場合,PDSQLTRCOPENMODEにSQLを指定するよりオーバヘッドが削減されるため,SQLトレースを出力するための時間が短縮できます。
なお,CNCTを指定した場合,SQLトレースファイルをオープンしたままで情報を書き込むため,正常にDISCONNECTできなかったときには,SQLトレース情報が欠落することがあります。

SQL:
オペレーション単位(SQL単位)にSQLトレースファイルをオープン,クローズして,トレース情報を出力します。

(68) PDSQLTEXTSIZE=SQL文のサイズ

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

SQLトレースに出力するSQL文のサイズを指定します。

アクセスパス取得時に省略した場合,4096ではなく,2000000が仮定されます。

(69) PDSQLEXECTIME={YES|NO}

SQLトレースにSQL実行時間を出力するかどうかを指定します。

YES:
SQL実行時間を出力します。
出力されるSQL実行時間の単位はマイクロ秒となります。SQLトレースに出力される値は,実行時間が24時間以上のものは正常に出力されません。

NO:
SQL実行時間を出力しません。

(70) PDRCTRACE=再接続トレースファイルのサイズ

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

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

0を指定した場合はファイルの最大サイズとなり,最大サイズを超えるとUAPの再接続トレースは出力されません。また,省略した場合もUAPの再接続トレースは出力されません。

4,096〜2,000,000,000を指定した場合は指定値のサイズとなり,指定値のサイズを超えると出力先が切り替わります。

再接続トレースは,PDCLTPATHで指定したディレクトリに出力されます。PDCLTPATHを指定していない場合は,UAPを実行したときのカレントディレクトリ(Cosminexusから実行されるUAPの場合はJ2EEサーバの実行時のカレントディレクトリ)下に出力されます。再接続トレースについては,「11.1.7 再接続トレース機能」を参照してください。

(71) PDWRTLNPATH=WRITE LINE文の値式の値を出力するファイルの格納先ディレクトリ

   〜<パス名>((最大256バイト))

WRITE LINE文の値式の値を出力する,ファイルの格納先ディレクトリを指定します。WRITE LINE文については,マニュアル「HiRDB Version 8 SQLリファレンス」を参照してください。

この環境変数を省略した場合,PDCLTPATHで指定したディレクトリが仮定されます。

ファイルは,指定したディレクトリ(省略した場合はPDCLTPATHで指定したディレクトリ)に二つ作成されます。作成されるファイルは,X/Openに従がったAPI(TX_関数)の使用有無で異なります。作成されるファイル名を次に示します。

TX_関数を使用していない場合:
pdwrtln1.trc,及びpdwrtln2.trc

TX_関数を使用している場合:
pdwrtlnxxxxx-1.trc,及びpdwrtlnxxxxx-2.trc
xxxxx:UAP実行時のプロセスID

(72) 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コマンドを実行,又はエクスプローラで参照します。

(73) PDWRTLNCOMSZ=WRITE LINE文の値式の値の合計サイズ

   〜<符号なし整数>((1024〜131072))《1024》(単位:バイト)

WRITE LINE文の値式の値の合計サイズを指定します。

WRITE LINE文の値式の値の合計サイズが,この環境変数の指定値を超えた場合,超えた分の情報は無効になります。また,この場合,次の行に「**PDWRTLNCOMSZover**」が出力されます。

(74) PDUAPEXERLOGUSE={YES|NO}

拡張SQLエラー情報出力機能を使用するかどうかを指定します。

拡張SQLエラー情報出力機能については,「11.1.3 拡張SQLエラー情報出力機能」を参照してください。

YES:
拡張SQLエラー情報出力機能を使用します。

NO:
拡張SQLエラー情報出力機能を使用しません。

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

(75) PDUAPEXERLOGPRMSZ=パラメタ情報の最大データ長

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

拡張SQLエラー情報出力機能使用時に,エラーログファイル及びSQLエラーレポートファイルに出力するパラメタ情報の最大データ長を指定します。1以上を指定した場合はパラメタ情報を出力しますが,0を指定した場合はパラメタ情報を出力しません。

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

《留意事項》
  1. 可変長文字列型,BLOB型,及びBINARY型のデータの場合,データ長の領域も環境変数の指定値に含まれます。
  2. 出力するパラメタ情報のデータ長が,この環境変数の指定値を超えた場合,超えた分の情報は切り捨てられます。

(76) PDARYERRPOS={YES|NO}

配列を使った更新でエラーとなった場合,そのエラーとなった配列要素を示す値をSQL連絡領域に設定するかどうかを指定します。

YES:
エラーとなった配列要素を示す値をSQL連絡領域に設定します。

NO:
エラーとなった配列要素を示す値をSQL連絡領域に設定しません。

エラーとなった配列要素を示す値が格納されるSQL連絡領域を次に示します。

エラーとなった配列要素を示す値は,配列の先頭要素を-1,配列の最後の要素を-nとして,-1〜-nの値が格納されます。SQL連絡領域については,「付録A SQL連絡領域」を参照してください。

(77) PDDNDPTRACE=メソッドトレースのファイルサイズ

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

ADO.NET 2.0に対応したHiRDB.NETデータプロバイダで出力するメソッドトレースのファイルサイズを指定します。

指定値がある場合は,PDCLTPATHで指定されたディレクトリにメソッドトレースを出力します。

0を指定した場合はマシンのディスクに空き領域がある限り出力します。65536〜2147483647を指定した場合は指定値が最大サイズとなり,最大サイズを超えるとトレース出力先が切り替わります。省略した場合は,メソッドトレースを出力しません。メソッドトレースについては,「16.10 HiRDB.NETデータプロバイダのトラブルシュート機能」を参照してください。

(78) PDVWOPTMODE={0|1|2}

アクセスパス表示ユティリティ用のアクセスパス情報を取得するかどうかを指定します。

アクセスパス情報ファイルは,UAPが接続したシングルサーバ又はフロントエンドサーバがあるユニットのSQL情報ディレクトリ(%PDDIR%\spool\pdsqldump)下に作成されます。

アクセスパス表示ユティリティについては,マニュアル「HiRDB Version 8 コマンドリファレンス」を参照してください。

0:
アクセスパス情報を取得しません。

1:
アクセスパス情報を取得し,アクセスパス情報ファイルに出力します。このとき,SQLオブジェクトがバッファ中にあるSQLについては,情報を出力しません。

2:
アクセスパス情報を取得し,アクセスパス情報ファイルに出力します。このとき,SQLオブジェクトがバッファ中にあるSQLについてもSQLオブジェクトを再作成し,情報を出力します。

《留意事項》
  1. HiRDB SQL Tuning Advisor用にアクセスパス情報を取得する場合は,PDTAAPINFPATHを指定してください。HiRDB SQL Tuning Advisor用アクセスパス情報ファイルについては,「11.1.8 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統計レポート機能については,「11.1.4 UAP統計レポート機能」を参照してください。
  5. SQL種別とPDVWOPTMODEの指定値の関係を次に示します。
    SQL種別 条件 PDVWOPTMODEの指定値
    0 1 2
    静的SQL SQLオブジェクトがバッファ中にない ×
    SQLオブジェクトがバッファ中にある × ×
    動的SQL SQLオブジェクトがバッファ中にない ×
    SQLオブジェクトがバッファ中にある × ×
    ルーチン定義 なし ×
    CALL文 インデクスの追加又は削除で,手続きのSQLオブジェクトのインデクス情報が無効になった場合 ×
    上記以外の場合 × × ×

(凡例)
○:アクセスパス情報を出力します。
×:アクセスパス情報を出力しません。

(79) PDTAAPINFPATH=アクセスパス情報ファイル出力ディレクトリ名

   〜<パス名>

HiRDB SQL Tuning Advisor用のアクセスパス情報ファイルを出力する場合に,出力先ディレクトリを指定します。この環境変数を指定しても,出力先ディレクトリがなかったり,書き込み権限がなかったりして,出力処理でエラーが発生した場合,アクセスパス情報を出力しません。なお,出力処理でエラーが発生しても,実行中のSQLはエラーにはなりません。HiRDB SQL Tuning Advisor用アクセスパス情報ファイルについては,「11.1.8 HiRDB SQL Tuning Advisor用アクセスパス情報ファイル」を参照してください。

《留意事項》
  • HiRDB SQL Tuning Advisorのダイナミックブラウジング機能を使用する場合は,この環境変数の指定は無効になります。
  • この環境変数を指定している場合,プロセス間メモリ通信機能は使用できません。クライアント環境定義のPDIPCオペランドにMEMORYを指定していても,DEFAULTを指定した場合の動作となります。

(80) PDTAAPINFMODE={0|1}

HiRDB SQL Tuning Advisor用のアクセスパス情報ファイルを出力する場合に,アクセスパス情報ファイルのファイル名の形式を指定します。

0:
ファイル名はpdtaapinf1及びpdtaapinf2となります。

1:
接続ごとに,pdtaapinfHHMMSSmmm_XXX_1及びpdtaapinfHHMMSSmmm_XXX_2のファイル名で出力します。
HHMMSSmmm:
接続した時刻(SQLトレースに出力される,該当するCONNECTの接続開始時間と同じ)
XXXXXXXXXX:
接続通番(最大10けた)

(81) PDTAAPINFSIZE=アクセスパス情報ファイルサイズ

   〜<符号なし整数>((100000〜2000000000))《409600》(単位:バイト)

HiRDB SQL Tuning Advisor用のアクセスパス情報ファイルを出力する場合に,アクセスパス情報ファイルのファイルサイズを指定します。ここで指定したファイルサイズを超えると,出力先をもう一方のファイルに切り替えます。以降,これを繰り返しながら二つのファイルを交互に使用します。

(82) PDSTJTRNOUT={YES|NO}

UAPに関する統計情報を,トランザクションごとに統計ログファイルに出力するかどうかを指定します。

YES:
UAPに関する統計情報を,トランザクションごとに統計ログファイルに出力します。

NO:
UAPに関する統計情報を,コネクションごとに統計ログファイルに出力します。

UAPに関する統計情報の出力の開始は,システム定義のpdstbeginオペランド,又はpdstbeginコマンドで指定します。pdstbeginオペランドについてはマニュアル「HiRDB Version 8 システム定義」を,pdstbeginコマンドについてはマニュアル「HiRDB Version 8 コマンドリファレンス」を参照してください。

この環境変数を省略した場合,OLTP環境下ではトランザクションごとに統計ログファイルに出力します。それ以外の環境下では,コネクションごとに統計ログファイルに出力します。

(83) PDLOCKLIMIT=ユーザ当たりの最大排他資源要求数

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

一つのサーバに対して,UAPから発行する排他要求の上限値(排他資源数の上限値)を指定します。

0を指定するか省略した場合は,排他要求上限数のチェックをしません。この場合,できる限りの排他要求が発行されます。

《見積もり方法》
見積もり方法には,次の2種類があります。
  • 一つのUAPで使用する排他資源数から,上限値を算出します。
    排他資源数はSQLによって異なります。排他制御による排他資源数を概算し,その値からこの指定値を算出してください。排他資源数の見積もりについては,マニュアル「HiRDB Version 8 システム定義」を参照してください。また,排他制御については,「3.4 排他制御」を参照してください。
  • UAPを接続するHiRDBサーバ側が持つ排他資源数の総数のうち,一つのUAPで使用できる排他資源数から,上限値を算出します。
    排他資源数の見積もりについては,マニュアル「HiRDB Version 8 システム定義」を参照してください。

(84) 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
ユティリティ 64
運用コマンド pddbchg,pdhold(-b及び-s),pdorbegin,及びpdorend システム定義のpd_command_deadlock_priorityオペランドの指定値
上記以外 64

(凡例)−:該当しません。


(85) PDLOCKSKIP={YES|NO}

無排他条件判定をするかどうかを指定します。

YES:無排他条件判定をします。

NO:無排他条件判定をしません。

この環境変数にYESを指定した場合,検索処理(DELETE,UPDATE時の検索処理を含みます)の条件判定処理を無排他で実行します。無排他条件判定については,「3.4.5 無排他条件判定」を参照してください。

(86) PDFORUPDATEEXLOCK={YES|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コンパイルオプションで指定します。

(87) PDISLLVL=データ保証レベル

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

SQL文のデータ保証レベルを指定します。データ保証レベルとは,トランザクションのどの時点までデータの内容を保証するかのレベルのことをいいます。この環境変数は,SELECT文に指定する排他オプションのWITHOUT LOCKに相当します。

この環境変数を指定すると,UAP中のSQL文の排他オプションを一括して決定できます。ただし,SQL文中で排他オプションを指定している場合は,SQL文中の排他オプションの指定が優先されます。

データ保証レベルについては,「4.6 データ保証レベル」を参照してください。

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 Version 8 SQLリファレンス」を参照してください。

(88) 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 Version 8 システム定義」を参照してください。
  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 Version 8 SQLリファレンス」を参照してください。

 

《SQL最適化オプションの指定値》
SQL最適化オプションの指定値を次の表に示します。

表6-31 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/シングルサーバの場合,指定しても無効になります。

 

《指定値の目安》
指定値の目安で項番XXと表記していますが,これは表6-28の項番のことを示しています。
  • HiRDB/シングルサーバの場合
    項番4,6,8,9,14,及び16を指定してください。識別子で指定した場合の例を次に示します。
 
  PDSQLOPTLVL="PRIOR_NEST_JOIN",
               "PRIOR_OR_INDEXES",
               "DETER_AND_INDEXES",
               "RAPID_GROUPING",
               "DETER_WORK_TABLE_FOR_UPDATE"
               "APPLY_ENHANCED_KEY_COND"
 
  • HiRDB/パラレルサーバの場合
    SQL最適化オプションの指定値の目安を次の表に示します。

    表6-32 SQL最適化オプションの指定値の目安(HiRDB/パラレルサーバの場合)

    条件 指定値
    SQL処理になるべく多くのバックエンドサーバを使用し,個々のSQL処理を速くしたい場合 大量検索のSQLを速くしたい場合 項番3〜9,14,及び16を指定してください。
    (識別子で指定した例)
    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"
    結果が数十件程度の検索を速くしたい場合 項番3,4,6〜9,14,及び16を指定してください。
    (識別子で指定した例)
    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"
    業務ごとにバックエンドサーバを切り分けて使用したい場合 大量検索のSQLを速くしたい場合 項番4〜10,14,及び16を指定してください。
    (識別子で指定した例)
    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"
    数十件程度に絞り込む検索を速くしたい場合 項番4,6〜10,14,及び16を指定してください。
    (識別子で指定した例)
    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"
    上記の条件に該当しない場合 項番4,6〜9,14,及び16を指定してください。
    (識別子で指定した例)
    PDSQLOPTLVL="PRIOR_NEST_JOIN",
    "PRIOR_OR_INDEXES",
    "SORT_DATA_BES",
    "DETER_AND_INDEXES",
    "RAPID_GROUPING",
    "DETER_WORK_TABLE_FOR_UPDATE"
    "APPLY_ENHANCED_KEY_COND"

 

《各最適化方法の内容》

1.ネストループジョイン強制
結合条件の列にインデクスを定義してある場合,結合処理にネストループジョインだけを使用します。ネストループジョインの結合処理方式については,「4.5.6 結合方式」を参照してください。
ただし,次のどれかの条件に当てはまる場合,ネストループジョイン以外の結合処理をすることがあります。
  • 結合条件にスカラ演算など,列指定以外を指定している。
  • 結合条件が=述語以外である。
  • 結合条件の列が,インデクスの先頭構成列でない。かつ,結合条件の列がインデクスの第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が計算して求めるのですべてのバックエンドサーバを使用するとは限りません。すべてのバックエンドサーバを使用したい場合は,「フロータブルサーバ候補数の拡大」とともに指定してください。
フロータブルサーバの割り当て方法については,「4.5.4 フロータブルサーバの割り当て方法(HiRDB/パラレルサーバ限定)」を参照してください。
この指定は,HiRDB/パラレルサーバのときだけ有効になります。

4.ネストループジョイン優先
結合条件の列にインデクスを定義してある場合,結合処理にネストループジョインを優先して使用します。ネストループジョインの結合処理方式については,「4.5.6 結合方式」を参照してください。
「ネストループジョイン強制」との違いは,ネストループジョイン強制は結合条件にインデクスが定義してあれば,絞り込み条件がなくても(制限に該当する場合を除く)必ずネストループジョインします。これに対して,ネストループジョイン優先は,絞り込み条件を指定している場合は必ずネストループジョインしますが,絞り込み条件がないときは結合方式を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が計算して割り当てます。この最適化方法を適用すると,利用できるフロータブルサーバをすべて利用します。ただし,データ取り出しに使用するバックエンドサーバはフロータブルサーバとして使用できません。
データ取り出しに使用するバックエンドサーバもフロータブルサーバとして使用したいときは,「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」とともに指定してください。
フロータブルサーバの割り当て方法については,「4.5.4 フロータブルサーバの割り当て方法(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集合関数処理をします。
グループ分け処理方式については,「4.5.5 グループ分け処理方式(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句で指定したグループ分けを,ハッシングを使って高速に処理します。
グループ分け高速化機能については,「4.9 グループ分け高速化機能」を参照してください。

10.フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)
通常はデータ取り出しに使用しないバックエンドサーバをフロータブルサーバとして使用しています。この最適化方法を適用すると,データ取り出しに使用するバックエンドサーバだけをフロータブルサーバとして使用します。この適用は,HiRDB/パラレルサーバのときだけ有効になります。
フロータブルサーバの割り当て方法については,「4.5.4 フロータブルサーバの割り当て方法(HiRDB/パラレルサーバ限定)」を参照してください。

11.データ収集用サーバの分離機能
「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」,又は「フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)」を指定した場合は,データ収集用サーバの分離機能となります。
データ収集用サーバの分離機能を適用した場合,複数のバックエンドサーバから1か所のバックエンドサーバにデータを集める必要があるSQLに対しては,データ転送元以外のバックエンドサーバをデータ収集用に割り当てます。これ以外の用途のフロータブルサーバとしては,データ収集用以外のバックエンドサーバ(データ取り出しバックエンドサーバも含みます)を割り当てます。
フロータブルサーバの割り当て方法については,「4.5.4 フロータブルサーバの割り当て方法(HiRDB/パラレルサーバ限定)」を参照してください。

12.インデクス利用の抑止(テーブルスキャン強制)
通常はインデクスの利用判定をHiRDBが決定します。この最適化方法を適用すると,インデクスを使用しない方式を強制的に使用するようにします。
ただし,ジョインを使用してネストループ結合になる場合,構造化繰返し述語を探索条件に指定した場合,又はインデクス型プラグイン専用関数の条件の場合は,インデクス利用を抑止できません。

13.複数インデクス利用の強制
ANDの複数インデクス利用を強制的に選択して,表を検索する場合に指定します。
ANDで結ばれた条件を複数指定している場合,この最適化を指定しないとANDの複数インデクス利用が選択されたときでも,通常は最大二つ程度のインデクスしか使用しません。使用するインデクスの数は,表定義,インデクス定義,及び探索条件によって変わります。
この最適化を指定すると,インデクスを使用することでサーチ範囲が絞り込める条件をすべて使用するようになります。
ANDの複数インデクス利用は,それぞれのインデクスを使用することで,ある程度の件数に絞り込めて,更に積集合をとることで重なっている部分が少なくなる場合に有効になります。
2表以上の結合検索時には,結合列のインデクスを使用して検索した方が高速に検索できるとHiRDBが判断した場合,適用されないことがあります。
SQL拡張最適化オプションでコストベース最適化モード2を使用しない場合は,結合検索時に複数インデクスを利用しません。ただし,複数インデクス利用を適用しないと評価できない条件がある場合には,このオプションの指定に関係なく複数インデクスを利用します。

14.更新SQLの作業表作成抑止
インデクスキー値無排他を適用している場合にこの最適化を指定すると,FOR UPDATE句を指定した検索,UPDATE文,又はDELETE文に対してインデクスを使用したときでも,HiRDBは内部処理のための作業表を作成しません。したがって,高速にSQL文を処理できます。
なお,インデクスキー値無排他を適用していない場合,作業表は作成されます。
インデクスを使用しているかどうかについては,アクセスパス表示ユティリティで確認できます。
更新SQLの作業表作成抑止を指定して,更にインデクスキー値無排他機能を使用している場合,カーソル使用時の表操作の制限が緩和されます。
作業表を作成するSQL文と,更新SQLの作業表作成抑止との関係を次の表に示します。

表6-33 作業表を作成する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文中に指定するようにしてください。探索高速化条件の導出については,「4.5.11 探索高速化条件の導出」を参照してください。

16.スカラ演算を含むキー条件の適用
この最適化を指定すると,スカラ演算を指定した制限条件のうち,スカラ演算中に含まれる列がすべてインデクス構成列である場合に,インデクスのキー値ごとに条件を判定して絞り込みをします。この条件はキー条件として評価されます。
<スカラ演算を含むキー条件の適用を指定した場合のHiRDBの動作>
HiRDBは,インデクスを使用した検索の場合,次の順序で評価をします。
  1. インデクスのサーチ範囲を絞りこみます(サーチ条件)。
  2. 1.で絞り込んだ結果に対して,インデクスのキー値ごとに条件を判定して更に絞り込みます(キー条件)。
  3. 2.で真となったキー値に対して,行識別子(ROWID)を使用してデータページを参照し,条件を評価します。
スカラ演算を含む条件は,この最適化を指定しない場合は3.で評価されます。この最適化を指定した場合は,2.で評価されるため,データページを参照する行数が少なくなり,入出力を削減できます。サーチ条件,及びキー条件については,マニュアル「HiRDB Version 8 コマンドリファレンス」を参照してください。
<スカラ演算を含むキー条件の適用についての留意事項>
  1. この最適化を指定すると,HiRDBはインデクスでの絞り込みが有効に行われていると判断します。その結果,インデクスがより使用されやすくなるため,スカラ演算を含む条件のインデクスでの絞り込みがあまり期待できない場合には,この最適化は指定しないでください。
  2. 次のどれかの条件に該当する場合,その条件はキー条件として評価されません。
    ・インデクス構成列以外の列を含む場合
    ・システム定義スカラ関数を含む場合
    ・システム組込みスカラ関数IS_USER_CONTAINED_IN_HDS_GROUPを含む場合
    ・関数呼出しを含む場合
    ・添字が整数の繰返し列を含む場合
  3. スカラ演算を含む構造化繰返し述語は,インデクスを使用しないと評価できないため,エラーとなります。そのため,この最適化を指定しなくても,キー条件が適用されます。

17.プラグイン提供関数からの一括取得機能
探索条件にプラグイン提供関数を指定し,HiRDBがプラグインインデクスを使用して検索する場合,通常,HiRDBはプラグイン提供関数からの返却結果(行位置情報と,必要に応じて受渡し値)を1行ごとに取得します。
この最適化を適用すると,プラグイン提供関数の返却結果を複数行まとめて取得できるため,プラグイン提供関数の呼び出し回数を削減できます。このため,検索性能も向上します。なお,プラグイン提供関数からの一括取得機能を適用する場合,HiRDBが内部的に作業表を作成します。
この最適化を指定していなくても,HiRDBが常にプラグイン提供関数からの一括取得機能を適用した方が高速に検索できると判断した場合には,無条件にプラグイン提供関数からの一括取得機能を適用することがあります。プラグイン提供関数からの一括取得機能の適用有無を次に示します。
指定したSQL文の種類 プラグイン提供関数からの一括取得機能の指定
なし あり
実表の検索結果に対して作業表が必要なSQL文 一括取得に対応していない関数 × ×
一括取得に対応している関数
実表の検索結果に対して作業表が不要なSQL文 一括取得に対応していない関数 × ×
一括取得に対応している関数 ×
(凡例)
○:無条件にプラグイン提供関数からの一括取得機能を適用します。
△:新たに作業表を作成して,プラグイン提供関数からの一括取得機能を適用します。
×:プラグイン提供関数からの一括取得機能を適用しません。
注※
作業表用ファイルを必要とするSQLについては,マニュアル「HiRDB Version 8 解説」を参照してください。
<プラグイン提供関数からの一括取得機能の留意事項>
  1. プラグイン提供関数の返却結果を取得する場合,HiRDBが内部的に作業表を作成する必要があります。通常は,行ごとに返却結果を受け取る時間よりも,作業表を作成する時間の方が短いため,検索性能が向上します。ただし,この最適化を指定することで検索性能が低下する場合もあるため,性能低下による影響が大きいときにはこの最適化を指定しないでください。
  2. 作業表を作成しない検索の場合に,この最適化を指定すると,1件目のFETCHまでの時間が遅くなります。これは,1行取り出すごとにクライアントへ結果を返却していた処理が,プラグイン提供関数を指定した探索条件を満たすすべての行を取り出して作業表を作成した後に,クライアントへ結果を返却するように変わるためです。1件目のFETCHの性能低下が問題になる場合は,この最適化を指定しないでください。
  3. この最適化を適用すると,プラグイン提供関数の返却結果を複数行まとめて取得するため,メモリ所要量が増加します。メモリ所要量については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

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の作業表作成抑止」を適用した場合,FOR UPDATE句を指定した検索中に,この検索で使用するインデクスの構成列が探索条件を満たす値で更新されたときは,同一行を複数回検索することがあります。
    (例)
     
    <インデクス定義>
      CREATE INDEX X1 ON T1(C1)
     
    <カーソル宣言>
      DECLARE CR1 CURSOR FOR SELECT C1 FROM T1 WHERE C1>0 FOR UPDATE
     
    上記のカーソルを使用して,次のFETCH文,UPDATE文を繰り返すと,C1=10に更新した号が複数回検索されます。
     
      FETCH CR1 INTO :XX
      UPDATE T1 SET C1=10 WHERE CURRENT OF CR1
     
    (対策方法)
    • UPDATE文の更新値が,検索の探索条件を満たさないように探索条件を変更してください。
      (例)WHERE C1>0 → WHERE C1>0 AND C1<>10
    • 同一行が複数回検索されると困るUAPについては,「更新SQLの作業表作成抑止」を適用しないようにしてください。ストアドルーチンの場合は,ルーチン定義時のSQL最適化オプションで「更新SQLの作業表作成抑止」を指定しないで,ルーチンを定義し直してください。
    • 検索に使用するインデクスの構成列から,該当する列を削除してください。ただし,インデクス構成列の一部を削除した場合,その列が探索条件で十分に絞り込める列のときは,性能が劣化するため注意してください。また,インデクスの一部を削除した場合,インデクスキーの重複数が多くなり,排他待ち及びデッドロックが多発する可能性があります。したがって,この対策方法はあまりお勧めできる対処でないため,採用する場合には十分に検証してください。
    また,UPDATE文のSET句の列名に,このUPDATE文で使用するインデクスの構成列を指定し,その更新値にWHERE句の探索条件を満たす値を指定した場合も,同一行を複数回更新することがあります。

(89) 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 Version 8 システム定義」を参照してください。

 

《SQLとの関係》
ストアドルーチン中のSQL文のSQL拡張最適化オプションは,CREATE PROCEDURE,CREATE TYPE,ALTER PROCEDURE,又はALTER ROUTINEの指定で決まり,PDADDITIONALOPTLVLの指定によって影響を受けることはありません。
SQL文中にSQL最適化指定を指定している場合は,SQL最適化拡張オプションよりもSQL最適化指定が優先されます。SQL最適化指定については,マニュアル「HiRDB Version 8 SQLリファレンス」を参照してください。

 

《SQL拡張最適化オプションの指定値》
SQL拡張最適化オプションの指定値を次の表に示します。

表6-34 SQL拡張最適化オプションの指定値

項番 最適化方法 指定値
識別子 符号なし整数
1 コストベース最適化モード2の適用 "COST_BASE_2" 1
2 ハッシュジョイン,副問合せのハッシュ実行 "APPLY_HASH_JOIN" 2
3 値式に対する結合条件適用機能 "APPLY_JOIN_COND_FOR_VALUE_EXP" 32
4 ジョインを含むSQL文の外部サーバ実行の抑止 "DETER_JOIN_SQL" 67108864
5 直積を含むSQL文の外部サーバ実行の強制 "FORCE_CROSS_JOIN_SQL" 134217728
6 無条件に生成する,外部サーバで実行できる探索高速化条件の導出の抑止 "DETER_FSVR_DERIVATIVE_COND" 1073741824

注1
項番2〜6は,「コストベース最適化モード2の適用」を指定した場合,有効になります。

注2
項番4〜6は,外部表を検索する場合に有効になる最適化です。それ以外の場合は無効になります。

《指定値の目安》
  • HiRDBを新規に導入した場合は,コストベース最適化モード2を使用することをお勧めします。コストベース最適化モード2を使用する場合,最適化の精度を更に向上させるために,必要に応じて最適化情報収集ユティリティを実行してください。最適化情報収集ユティリティの実行要否については,マニュアル「HiRDB Version 8 コマンドリファレンス」を参照し,性能について十分に検証するようにしてください。最適化情報収集ユティリティを実行する場合は,テスト環境と本番環境でDB規模が異なると(表の行数が異なると),テスト環境と本番環境でアクセスパスが変わることがあります。テスト環境では,本番での表の行数(NROWS)を最適化情報パラメタファイルに記述して,最適化情報収集ユティリティに-sオプションを指定して実行してください。
  • バージョン06-00より前のバージョンからHiRDBをバージョンアップした場合は,コストベース最適化モード2を使用するかどうかを検討してください。バージョンアップ前と同じ動作環境にするならば,コストベース最適化モード2を使用しないでください。ただし,バージョン06-00以降にサポートするSQL文によっては,常にコストベース最適化モード2を使用して最適化処理をすることがあります。
  • ハッシュジョインを使用しない場合は,「ハッシュジョイン,副問合せのハッシュ実行の適用」を指定する必要はありません。

 

《各最適化方法の内容》

1.コストベース最適化モード2の適用
コストベース最適化モード2を使用して最適化処理をします。コストベース最適化モード2については,「4.5.1 SQL最適化モード」を参照してください。

2.ハッシュジョイン,副問合せのハッシュ実行
結合検索の場合にハッシュジョインを適用して最適化をします。副問合せを伴った検索については,ハッシングによって副問合せを処理します。この最適化を適用するかどうかについては,結合方式,外への参照のない副問合せの実行方式,及び外への参照のある副問合せの実行方式を考慮して決めてください。なお,これらの詳細については,それぞれ「4.5.6 結合方式」,「4.5.8 外への参照のない副問合せの実行方式」,及び「4.5.9 外への参照のある副問合せの実行方式」を参照してください。
また,この最適化を適用する場合は,事前にシステム定義を指定しておく必要があります。ハッシュジョイン,副問合せのハッシュ実行を適用する場合の準備については,「4.5.10 ハッシュジョイン,副問合せのハッシュ実行を適用する場合の準備」を参照してください。

3.値式に対する結合条件適用機能
この機能を指定した場合,値式を含む条件に対して結合条件を作成します。
(例)
次の式の場合,結合条件を作成します。
substr(t1.c1,1,100)=t2.c1
値式を含む結合条件しかない場合,この機能によってアクセスパスが直積からネストループジョイン,ハッシュジョイン,又はマージジョインになり,SQL実行の高速化が期待できます。
留意事項
バージョン08-04以降のHiRDBを初めて導入する場合は,この機能の使用をお勧めします。
バージョン08-04より前のHiRDBをバージョンアップする場合,この機能を使用することで結合条件が増えるため,結合順序と結合方式が変わることがあります。結合順序と結合方式が変わると,絞り込みが有効に行われない結合順序,又は性能が悪い結合方式を選択するおそれがあり,これによって,性能が劣化することがあります。また,有効に行が絞り込めない結合順序を選択した場合,ジョインの途中結果を作業表に入れることができなくなり,結果がエラーになるおそれがあります。そのため,この機能を適用する前後でアクセスパスを確認し,この機能の適用によって性能の劣化やエラーが発生しないことを確認してください。性能の劣化やエラーが発生した場合は,この機能の使用をやめるか,結合表のINNER又はLEFT OUTERで結合順序を指定し,結合方式のSQL最適化指定で適切な結合方式を指定してください。

4.ジョインを含むSQL文の外部サーバ実行の抑止
外部表へのアクセスを含む問合せから,外部表へアクセスするSQL文を作成する場合に,ジョインを含むSQL文の作成を抑止します。
この最適化を指定すると,ジョインを含むSQL文の代わりに,ジョインの入力となる外部表のデータを取得するSQL文を作成します。なお,ジョインの処理は,HiRDBでします。
ジョインを含むSQL文の外部サーバ実行の抑止については,マニュアル「HiRDB External Data Access Version 8」を参照してください。

5.直積を含むSQL文の外部サーバ実行の強制
外部表へのアクセスを含む問合せから,外部表へアクセスするSQL文を作成する場合に,できるだけ直積を含むSQL文を作成します。
直積を含むSQL文の外部サーバ実行の強制については,マニュアル「HiRDB External Data Access Version 8」を参照してください。

6.無条件に生成する,外部サーバで実行できる探索高速化条件の導出の抑止
無条件に導出している,外部サーバで実行できる探索高速化条件を抑止できます。
探索高速化条件を導出すると,探索高速化条件の生成及び実行に時間が掛かったり,アクセスパスが意図したとおりにならなかったりすることがあります。このような場合に,この最適化を指定してください。
SQL最適化オプションに「探索高速化条件の導出」を指定した場合,この最適化を指定しても無効になります。
探索高速化条件の導出については,「4.5.11 探索高速化条件の導出」を参照してください。

(90) PDHASHTBLSIZE=ハッシュジョイン,副問合せのハッシュ実行適用時のハッシュ表サイズ

   32ビットモードの場合

    〜<符号なし整数>((128〜524288))(単位:キロバイト)

   64ビットモードの場合

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

SQL拡張最適化オプションで「ハッシュジョイン,副問合せのハッシュ実行」を適用した場合,ハッシュ表のサイズを指定します。

指定値は,128の倍数で指定してください。指定値が128の倍数でない場合,128の倍数に切り上げられます。

サーバ側が32ビットモードの場合,524289〜2097152の値を指定すると,上限値524288が仮定されます。

《指定値の目安》
4.5.10 ハッシュジョイン,副問合せのハッシュ実行を適用する場合の準備」を参照してください。

《システム定義との関係》
この環境変数を省略した場合,システム定義のpd_hash_table_sizeオペランドの指定値が仮定されます。

(91) PDDFLNVAL={USE|NOUSE}

表中のデータを埋込み変数に取り出す場合,取り出した値がナル値のときに埋込み変数に既定値を設定するかどうかを指定します。

USE:ナル値の既定値設定機能を使用します。

NOUSE:ナル値の既定値設定機能を使用しません。

ナル値の既定値設定機能については,マニュアル「HiRDB Version 8 SQLリファレンス」を参照してください。

Javaストアドプロシジャで動作するType4 内部JDBCドライバの場合は,Javaストアドプロシジャ呼び出し元のこの環境変数の指定と同じ指定をしてください。

(92) PDAGGR=グループ分けのときに発生するグループ数

   32ビットモードの場合

    〜〈符号なし整数〉((0〜30000000))《1024》

   64ビットモードの場合

    〜〈符号なし整数〉((0〜2147483647))《1024》

GROUP BY処理に使用するメモリ量を決定するため,サーバごとに発生するグループ数の最大値を指定します。なお,この環境変数は,SQL最適化オプションでグループ分け高速化処理を指定した場合に有効になります。

《見積もり方法》
  • 1024以上のグループ数が発生する場合,又は期待していた性能が得られない場合
    この環境変数の値を大きくしてください。ただし,メモリ所要量との兼ね合いを考えて,少しずつ指定値を大きくしてください。
    1024を指定すると,メモリが足りなくなるユーザはメモリに合わせて指定してください。
  • 1024未満のグループ数が発生する場合,又はメモリが足りなくなる場合
    この環境変数の値を小さくしてください。また,メモリ所要量が多くなり,必要な大きさの値が指定できない場合,グループ数以下の値でも指定できる最大値を指定してください。

《留意事項》
指定値が大き過ぎると,メモリ不足となることがあります。また,指定値を超えたグループ数が発生した場合,割り当てられたメモリが不十分なため,処理が遅くなることがあります。なお,グループ分け高速化機能で使用するメモリ所要量の計算式については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

(93) PDCMMTBFDDL={YES|NO

操作系SQLを実行しているトランザクションで定義系SQLを実行する場合,自動的にコミットしてから定義系SQLを実行するときに指定します。なお,定義系SQL実行前に自動的にコミットをした場合,開いているホールダブルカーソルは閉じて,前処理したSQL文の結果は無効になります。

YES:
操作系SQLを実行しているトランザクションを自動的にコミットしてから,定義系SQLを実行します。また,開いているホールダブルカーソルは閉じて,前処理したSQL文の結果は無効になります。

NO:
操作系SQLを実行しているトランザクションを明示的に決着してから,定義系SQLを実行します。

(94) PDPRPCRCLS={YES|NO

開いているカーソルで使用しているSQL識別子を再度PREPRARE文で使用する場合,開いているカーソルを自動的にクローズするかどうかを指定します。

この環境変数は,プリプロセス時に-Xeオプションを指定しない場合に有効になります。プリプロセスについては,「8.2 プリプロセス」を参照してください。

YES:開いているカーソルを自動的にクローズします。

NO:開いているカーソルを自動的にクローズしません。

(95) PDAUTOCONNECT={ON|OFF}

HiRDBと接続していない状態でSQL文を実行した場合,自動的にCONNECTするかどうかを指定します。

ON:自動的にCONNECTしてからSQL文を実行します。

OFF:自動的にCONNECTしません。このときSQL文はエラー(SQLCODE=-563)となります。

HiRDBサーバと接続していない状態でSET SESSION AUTHORIZATION文を実行した場合,この環境変数の指定に関係なく常にエラー(SQLCODE=-563)となります。

UAPを開発する場合は,HiRDBに正しくCONNECTしているかどうかを判断する必要があるため,この環境変数にはOFFを指定することをお勧めします。

(96) 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を指定した場合の例を次に示します。
[図データ]
[説明]
定義系トランザクションは,先行トランザクションの決着を待ちません。
定義系トランザクションを実行すると,先行トランザクションの前処理結果が無効になり,先行トランザクションは実行できません。

《留意事項》
この環境変数にYESを指定して前処理結果を無効にできるのは,定義系トランザクションが次の操作をした場合です(ただし,先行トランザクションが前処理実行中の場合を除く)。
  • 定義系SQLを実行した場合
  • ストアドルーチンのSQLオブジェクトを格納するデータディクショナリLOB用RDエリアをクローズした場合
  • データベース構成変更ユティリティ(pdmod)で次に示す操作をした場合
    ・RDエリアの削除(remove rdarea文)で解析情報表(SQL_DB_STATE_ANALYZED),及び運用履歴表(SQL_DB_MANAGEMENT)を格納するデータディクショナリ用RDエリアを削除したとき
    ・ディクショナリ表の属性定義変更(alter system文)で参照権限,又は混在文字データの使用有無を変更したとき
    ・RDエリアの属性変更(alter rdarea文)でRDエリアの名称を変更したとき
ただし,先行トランザクションで定義系SQL(リバランスユティリティなども含む)が実行中の場合,その定義変更中の表,手続き,関数などを使用する定義系トランザクションはエラーになります。

NO:
定義系トランザクションの実行を優先しません。NOを指定した場合の例を次に示します。
[図データ]
[説明]
定義系トランザクションは,先行トランザクションで実行中のSQL文に関係なく,先行トランザクションの決着を待ちます。
先行トランザクションの決着後に,定義系トランザクションが実行されます。

(97) PDDDLDEAPRP={YES|NO

閉じているホールダブルカーソルで使用している表の定義情報を,トランザクション間に他UAPからの変更を許可するかどうかを指定します。なお,定義系SQLが実行されると,ホールダブルカーソルの前処理は無効になります。

YES:
ホールダブルカーソルを使用しているUAPのトランザクション間に,他UAPから表の定義情報の変更を許します。
YESを指定した場合の例を次に示します。
[図データ]
[説明]
UAP2で実行した定義系SQLは,UAP1のホールダブルカーソルが閉じた後,そのホールダブルカーソルを含んだトランザクションが決着すると,実行できます。また,UAP1のホールダブルカーソルを再度開くと,SQLCODE=-1512エラーとなります(前処理は無効になります)。

NO:
ホールダブルカーソルを使用しているUAPのトランザクション間に,他UAPから表の定義情報の変更を許しません。
NOを指定した場合の例を次に示します。
[図データ]
[説明]
UAP2で実行した定義系SQLは,UAP1のDISCONNECT後に実行できます。

《ほかの環境変数との関係》
PDLCKWAITTIMEで排他待ち限界経過時間を指定できます。PDDDLDEAPRPとPDLCKWAITTIMEを組み合わせて使用すると,トランザクションの決着までに定義系SQLがタイムアウトエラーになることを防止できます。

(98) PDLCKWAITTIME=排他待ち限界経過時間

   〜<符号なし整数>((0〜65535))《システム定義pd_lck_wait_timeoutの値》(単位:秒)

排他要求が待ち状態になってから解除されるまでの最大監視時間を指定します。指定した最大時間を過ぎても排他が解除されない場合,SQLはエラーリターンします。0を指定した場合,待ち状態を監視しないで,排他が解除されるまで待ち続けます。

(99) 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-4 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が返却されます。

(100) PDDELRSVWDFILE=SQL予約語削除ファイル名

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

SQL予約語削除機能を使用する場合に,SQL予約語削除ファイル名を指定します。SQL予約語削除ファイルには,SQLの予約語から削除するキーワードを記述します。

《システム定義との関連》
PDDELRSVWDFILEを指定する場合,システム定義のpd_delete_reserved_word_fileオペランドでSQL予約語削除ファイルを指定しておく必要があります。SQL予約語削除ファイルについては,マニュアル「HiRDB Version 8 システム定義」を参照してください。

《注意事項》
Windows版のHiRDBの場合,SQL予約語削除ファイル名は,大文字,小文字が区別されません。したがって,大文字,小文字が異なるだけのファイル名は,同一ファイルとして扱われるため注意してください。

(101) PDHJHASHINGMODE={TYPE1|TYPE2}

SQL拡張最適化オプションで「ハッシュジョイン,副問合せのハッシュ実行の適用」を選択した場合の,ハッシング方式を指定します。

TYPE1:
バージョン07-02より前のHiRDBの性能を維持します。

TYPE2:
TYPE1に比べて均等にハッシングされます。

《指定値の目安》
  • 通常時はTYPE2を指定してください。ただし,結合条件に指定した列のデータによっては均等にならないこともあるので,その場合はTYPE1を指定してください。
  • TYPE1は,バージョン07-02より前のHiRDBのハッシング方式です。バージョンアップ後に,TYPE1を指定して期待した性能が得られなかった場合は,TYPE2を指定してください。

《システム定義との関連》
この環境変数を省略した場合,システム定義のpd_hashjoin_hashing_modeオペランドの指定値が仮定されます。

(102) PDCALCMDWAITTIME=CALL COMMAND文の最大待ち時間

   〜<符号なし整数>((0〜65535))《PDCWAITTIMEの指定値》(単位:秒)

CALL COMMAND文によってコマンド,又はユティリティを開始してから終了するまでの,HiRDBクライアントの最大待ち時間を指定します。最大待ち時間を経過してもサーバから応答がない場合は,UAPにエラーを返し,サーバ側のプロセスをキャンセルします。0を指定した場合,HiRDBクライアントはHiRDBサーバからの応答があるまで待ち続けます。

(103) PDSTANDARDSQLSTATE={YES|NO}

SQLSTATEの値を詳細に出力するかどうかを指定します。

YES:
SQLSTATEの値を詳細に出力します。

NO:
SQLSTATEの値を詳細に出力しません。

《システム定義との関連》
この環境変数を省略した場合,システム共通定義のpd_standard_sqlstateオペランドの指定値が仮定されます。ただし,サーバとの接続が完了するまでにエラーが発生した場合,HiRDBはこの環境変数にNOが指定されたものとして動作します。

SQLSTATEついては,マニュアル「HiRDB Version 8 メッセージ」を参照してください。

なお,Javaストアドプロシジャで使用するドライバがType4 JDBCドライバの場合,Javaストアドプロシジャに返されるSQLSTATEの値を詳細に設定するかどうかは,クライアント(Javaストアドプロシジャ呼び出し元)のPDSTANDARDSQLSTATE,システム共通定義のpd_standard_sqlstate,及びJavaストアドプロシジャのPDSTANDARDSQLSTATEの指定値の組み合わせによって決まります。指定値の組み合わせを次に示します。

クライアント環境変数PDSTANDARDSQLSTATEの指定値 システム共通定義pd_standard_sqlstateの指定値 JavaストアドプロシジャPDSTANDARDSQLSTATEの指定値 SQLSTATEの値を詳細に設定するかどうか
YES y, n又は省略 YES 詳細に設定する
省略 y YES
NO y, n又は省略 NO又は省略 詳細に設定しない
省略 n又は省略 NO又は省略

ODBCドライバから返却するSQLSTATEはこの環境変数,及びシステム共通定義のpd_standard_sqlstateの指定に関係なく,ODBCの規格に従った値となります。

(104) PDBLKF=ブロック転送の行数

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

サーバからクライアントに検索結果を転送する場合の,一回の転送処理で送信する行数を指定します。

なお,実際に送信する行数は,クライアント環境定義PDBLKBUFFSIZEの指定値によって変わります。送信する行数については,「4.7(4)1回の通信で転送する行数」を参照してください。

この値を大きくすると通信オーバヘッドが減り,検索時間を短縮できますが,その分メモリが余計に必要となります。したがって,メモリとの兼ね合いを考慮して値を決めてください。

サーバ側で必要なメモリの計算式については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」の「ブロック転送又は配列FETCHで必要なメモリ所要量」を参照してください。クライアント側で必要なメモリの計算式を次に示します。

 
メモリ計算式(単位:キロバイト)
=↑(600+19×検索列数+(7×検索列数+Σ 列の定義長)×PDBLKFの値)
 ÷4096↑×4
 
注※ 単位はバイトです。

(105) PDBINARYBLKF={YES|NO}

定義長が32,001バイト以上のBINARY型の選択式がある表を検索する場合,ブロック転送機能を適用するかどうかを指定します。ブロック転送機能については,「4.7 ブロック転送機能」を参照してください。

YES:
ブロック転送機能を適用します。

NO:
ブロック転送機能を適用しません。
この場合,クライアント環境定義PDBLKFに2以上,PDBLKBUFFSIZEに1以上を指定しても,1件ずつの転送となります。

(106) PDBLKBUFFSIZE=通信バッファサイズ

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

ブロック転送機能で使用する,サーバ,クライアント間の通信バッファのサイズを指定します。

0を指定した場合,クライアント環境定義PDBLKFの値と1行の最大長から,HiRDBが通信バッファサイズ(単位:バイト)を算出します。

PDBLKBUFFSIZEで指定した値は,次のバッファサイズ,及び行数に影響します。

(107) PDBLKFUPD={YES|NO}

FOR UPDATE指定の問合せで拡張カーソルを使用した検索をする場合に,ブロック転送機能を抑止するかどうかを指定します。この環境変数を指定することによって,ブロック転送機能を適用している場合でもFOR UPDATE指定の問合せで拡張カーソルを使用した検索ができます。

YES:
ブロック転送機能を抑止します。

NO:
ブロック転送機能を抑止しません。

《適用基準》
基本的にはYESを指定するか,又はこのオペランドを省略してください。
NOを指定した場合,拡張カーソルを使用した更新の結果がYESを指定した場合と異なることがあります。その場合の例を次に示します。
(例)
ブロック転送を有効(PDBLKF=100)にした状態で,50行のデータがある表(T1)を拡張カーソルで検索し,その拡張カーソルを使用して行を更新します。
 
PREPARE  :SQL1 FROM 'SELECT * FROM T1 FOR UPDATE'       1
ALLOCATE GLOBAL  :CR1 CURSOR FOR :SQL1                  2
OPEN :CR1                                               3
FETCH :CR1 INTO :C1;                                    4
UPDATE SET C1=999 WHERE CURRENT OF :CR1                 5
 
5の更新の対象となる行が,この環境変数の指定値によって,次のように異なります。
  • YESを指定した場合
    4でFETCHしたカーソル位置の行を更新します。
  • NOを指定した場合
    4でカーソル位置がブロック数分移動しているため,その移動後のカーソル位置の行を更新します。又は,移動後のカーソル位置に行が存在しない場合はエラーになります。

《注意事項》
この機能を有効にするには,次のことに注意してください。
  • C言語,又はC++言語で作成したUAPは,バージョン07-03以降のクライアントライブラリをリンケージする必要があります。
  • COBOL言語で作成したUAPは,バージョン07-03以降のプリプロセサでポストソースを作成する必要があります。

(108) PDBLKFERRBREAK={YES|NO

ブロック転送機能で複数行を取得している間に暗黙的ロールバックが行われた場合,UAPに対してどのタイミングでエラーを返却するかを指定します。

HiRDBサーバから複数行を取得している間にエラーが発生した場合,HiRDBクライアントはUAPに対して実際にエラーが発生した行でエラーを返却します。エラーの内容によっては暗黙的ロールバックが発生し,トランザクションが無効になっていることがあり,検索結果の取得中に別のSQLを発行すると,結果が不正となる場合があります。この環境変数を指定することによって,HiRDBクライアントが保持する複数行の検索結果のうち,UAPが最初の行を取得するときにエラーを返却できます。

YES:
HiRDBクライアントが保持する複数行の検索結果のうち,最初の行を取得するときにエラーを返却します。

NO:
HiRDBクライアントが保持する複数行の検索結果のうち,実際にエラーが発生した行を取得するときにエラーを返却します。

暗黙的ロールバック発生エラーを取得するタイミングについて,次に示します。

[図データ]

(109) PDNODELAYACK={YES|NO}

この環境変数は,AIX版限定です。

HiRDBサーバマシンとHiRDBクライアントマシン間の通信で,データを受信するときに,即時ACKを適用するかどうかを指定します。HiRDBの通信における即時ACKの適用については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

YES:
即時ACKを適用します。

NO:
即時ACKを適用しません。

《注意事項》
  • 接続するHiRDBサーバが同一マシン上にある場合,この環境変数は無効になります。
  • OSパラメタ(tcp_nodelayack)で即時にACKを送信する指定をしている場合,システム全体でACKの遅延が抑止されています。この場合,この環境変数の指定値に関係なく,システム全体で即時ACKが適用されます。

《システム定義との関係》
  • HiRDBサーバが他サーバマシンでAIX版環境の場合は,HiRDBサーバにも即時ACKを適用できます。HiRDBサーバマシン間で即時ACKを適用する場合は,システム共通定義のpd_ipc_tcp_nodelayackオペランドにYを指定してください。

(110) PDBINDRETRYCOUNT=bindシステムコールのリトライ回数

   〜<整数>((-1〜1000))《10》

UNIXドメインでのbindシステムコールでEADDRINUSEが返却された場合のリトライ回数を指定します。

クライアントサーバ間が同一ホストの場合,HiRDBクライアントではUNIXドメイン通信の準備として名前付きファイルをソケットに割り当てるため,bindシステムコールを発行します。Solaris 9以降では,短い間隔でSQL DISCONNECTとSQL CONNECTを実行した場合,bindシステムコールがEADDRINUSEを返却することがあります。これはリトライすることで回避できます。

-1を指定した場合は,EADDRINUSEが返却されなくなるまでリトライします。0を指定した場合は,リトライをしないでUAPにエラーを返します。

《指定値の目安》
KFPA11723-Eメッセージのネットワーク障害(reason=NETWORK)で,エラーログファイルにKFPZ02444-Eメッセージが出力されている場合,内容がfunc=bind,errno=EADDRINUSEでcountとintervalが表示されているときは,この環境変数とPDBINDRETRYINTERVALの値を大きくしてください。

(111) PDBINDRETRYINTERVAL=bindシステムコールのリトライ間隔

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

UNIXドメインでのbindシステムコールでEADDRINUSEが返却された場合のリトライ間隔を指定します。0を指定した場合は,即時にリトライを行います。

(112) PDCLTSIGPIPE={CATCH|IGNORE}

シグナルSIGPIPEにHiRDBクライアントのシグナルハンドラを設定するかどうかを指定します。

この環境変数はUNIX版マルチスレッド用クライアントライブラリの場合だけ有効です。マルチスレッド用のライブラリについては,「6.4.1 UNIXクライアントのディレクトリ及びファイル構成」を参照してください。

CATCH:
シグナルSIGPIPEにHiRDBクライアントのシグナルハンドラを設定します。

IGNORE:
シグナルSIGPIPEにSIG_IGN(無視する)を設定します。

HiRDBクライアントではシグナルSIGPIPEにシグナルハンドラを設定しています。マルチスレッド環境で複数接続機能を使用したUAPを実行する場合,HiRDBクライアントが設定したシグナルハンドラのままとなってしまうおそれがあります。この状態でUAP実行プロセスからHiRDBクライアントライブラリがアンロードされると,SIGPIPE発生時にプロセスが異常終了します。この環境変数でシグナルSIGPIPEにSIG_IGN(無視する)を指定することによって,UAP実行プロセス中にHiRDBクライアントのシグナルハンドラを設定しないようにできます。

《留意事項》
マルチスレッド環境でCOBOLを使用したUAP(CosminexusやTP1/EE)で,HiRDBクライアントライブラリがプロセスからアンロードされる場合は,SIGPIPEにSIG_IGN(無視する)を指定してください。SIG_IGN(無視する)を指定しない場合は,HiRDBクライアントライブラリがアンロードされないようにしてください。

(113) PDDBACCS=アクセスするRDエリアの世代番号

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

インナレプリカ機能を使用している場合,インナレプリカグループ内でカレントRDエリアでないRDエリアをアクセスしたいときに,そのRDエリアの世代番号を指定します。0はオリジナルRDエリアとなります。省略した場合は,UAP環境定義PDDBACCSの値が仮定されます。

この環境変数は,HiRDBに定義されているすべてのインナレプリカグループに対して適用されます。この環境変数で指定した世代のレプリカRDエリアが定義されていない場合,該当するインナレプリカグループ内のカレントのRDエリアが処理対象となります。このため,レプリカRDエリアを使用するテスト環境を設定する場合,誤って本番用のRDエリアをアクセスしないように,アクセスするすべてのRDエリアについて,指定する世代のレプリカRDエリアが定義されているか確認する必要があります。

(114) PDDBORGUAP={YES|NO}

レプリカRDエリアでのオンライン業務中に,オリジナルRDエリアに対してUAPを実行する場合に指定します。

YES:
オンライン再編成閉塞のオリジナルRDエリアに対して,UAPを実行する場合に指定します。

NO:
オンライン再編成閉塞のオリジナルRDエリアに対して,UAPを実行しない場合に指定します。

(115) 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エリアを求めるときは,表分割ハッシュ関数の引数に空白変換レベルを指定しないと,表分割ハッシュ関数の結果が不正になることがあります。表分割ハッシュ関数については,「付録H.1 表分割ハッシュ関数」を参照してください。
  6. 空白変換レベル1,又は3を指定した場合,キーレンジ分割した表に対してUAPでキーレンジ分割処理をしていて分割キーに各国文字列型,又は混在文字列型の列があるときは,その分割キー値を空白変換関数で変換しないとキーレンジ分割の結果が不正になることがあります。空白変換関数については,「付録H.2 空白変換関数」を参照してください。

(116) PDCLTRDNODE=XDM/RD E2のデータベース識別子

   〜<識別子>

XDM/RD E2接続機能使用時に,接続するXDM/RD E2のデータベース識別子を指定します。データベース識別子とは,XDMのサブシステム定義で指定するRDノード名のことです。

(117) 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のサービス名称の通知はしません。

(118) 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)に変換する場合,データの長さが変化することがあります。このため,埋込み変数の定義長などに注意してください。

(119) PDCNSTRNTNAME={LEADING|TRAILING}

参照制約,及び検査制約を定義する場合,制約名定義の位置を指定します。

LEADING:
制約名定義を,制約定義の前に指定します。

TRAILING:
制約名定義を,制約定義の後に指定します。

《システム定義との関係》
省略した場合は,システム定義のpd_constraint_nameオペランドの値が仮定されます。

(120) PDBESCONHOLD={YES|NO}

この環境変数は,HiRDB/パラレルサーバの場合に指定できます。

バックエンドサーバ接続保持機能を使用するかどうかを指定します。バックエンドサーバ接続保持機能については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。

YES:
バックエンドサーバ接続保持機能を使用します。

NO:
バックエンドサーバ接続保持機能を使用しません。

《システム定義との関係》
省略した場合は,システム定義のpd_bes_connection_holdオペランドの値が仮定されます。

(121) PDBESCONHTI=バックエンドサーバ接続保持期間

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

バックエンドサーバ接続保持機能を使用する場合,バックエンドサーバ接続保持期間を指定します。

バックエンドサーバ接続保持機能を使用した場合,バックエンドサーバはトランザクション終了後,次のトランザクションが実行されるまでの時間を監視します。次のトランザクションが実行されるまでの時間がPDBESCONHTIの指定値の範囲内であれば,バックエンドサーバ接続保持機能を続行します。PDBESCONHTIの指定値を超えている場合は,トランザクション終了後にフロントエンドサーバとの接続を切り離します。

《留意事項》
  1. 0を指定した場合,時間監視はしません。SQLのDISCONNECT(XAライブラリ使用時はxa_close),クライアント環境定義PDCWAITTIMEのタイムオーバなどで,フロントエンドサーバとクライアントの接続が切り離された場合にだけ,フロントエンドサーバとバックエンドサーバの接続を切り離します。
  2. PDBESCONHTIは,PDBESCONHOLDにYESを指定している場合に有効になります。

(122) PDRDABLKF=一括検索の行数

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

この環境変数は,HP-UX版,及びAIX版のHiRDBの場合に指定できます。

分散サーバから分散クライアントに検索結果を転送するときの,一回の転送処理で送られる行数を指定します。50〜80程度を指定することをお勧めします。なお,一括検索をしない場合は,この環境変数に1を指定してください。

環境変数の値を大きく指定すると通信オーバヘッドが減り,検索時間を短縮できますが,その分メモリが余計に必要です。したがって,メモリとの兼ね合いを考慮して値を決めてください。必要なメモリは,次に示す計算式で求められます。

 
(328+32×a+b)×c  (単位:バイト)
  aSELECT句で指定する項目数
  b1回の転送処理で出力される文字列データ長の総和
  cPDRDABLKFの指定値
 

《ほかの定義との関係》
この環境変数を省略すると,block_fetch_countオペランドDF/UXのSQL環境定義で指定した一括検索の行数が仮定されます。block_fetch_countオペランドについては,マニュアル「分散データベース DF/UX」を参照してください。

(123) 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+表オーナ名長+表名長+インデクス名長+列名長)行数文

(124) 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対応ソフトからアンダスコア(_)を使用した識別子にアクセスできないことがあります。

(125) 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へログインした後,「顧客登録」「顧客情報の更新」「顧客情報の参照」などの機能選択ボタンを押した後,[戻る]ボタン以外の画面操作ができなくなることがあります。

(126) PDODBLOCATOR={YES|NO

DBアクセス部品を使用して,BLOB型,又はBINARY型の列を検索する場合に,位置付け子機能を使用してデータを分割取得するかどうかを指定します。DBアクセス部品とは,ODBCドライバ,OLE DBプロバイダ,及びHiRDB.NETデータプロバイダを示します。

YES:
DBアクセス部品を使用して,BLOB型,又はBINARY型の列を検索する場合に,位置付け子機能を使用してデータを分割取得します。

NO:
DBアクセス部品を使用して,BLOB型,又はBINARY型の列を検索する場合に,位置付け子機能を使用しません。

《適用基準》
NOを指定した場合(省略時仮定値の場合),DBアクセス部品側が列の定義長分のデータ受信領域を確保します。また,HiRDBクライアント側でも列の定義長分のデータ受信領域を必要とします。
列の定義長が大きいと,実行時にメモリ不足になったりすることがあるため,メモリ不足になることを回避する場合はYESを指定してください。なお,YESを指定すると,HiRDBサーバとの通信回数が分割取得回数分増えます。

(127) PDODBSPLITSIZE=分割取得サイズ

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

PDODBLOCATOR=YESを指定している場合に,分割取得のサイズを指定します。

《指定値の目安》
実データ長の分布を考慮して,分割取得回数が少なくなり,かつメモリ不足が発生しない値を指定してください。

(128) PDODBCWRNSKIP={YES|NO

ODBC接続時のワーニングを回避するかどうかを指定します。なお,ODBC接続以外の場合,この環境変数を指定しても無効になります。

YES:
SQLFetch()の延長でSQLWARNが設定された場合でも,ODBCドライバでSQLFetch()の戻り値としてSQL_SUCCESSを返却します。

NO:
SQLFetch()の延長でSQLWARNが設定された場合,ODBCドライバでSQLFetch()の戻り値としてSQL_SUCCESS_WITH_INFOを返却します。

《適用基準》
ODBCドライバでは,検索処理でHiRDBのSQL連絡領域のSQLWARNが設定された場合,SQLFetch()の戻り値としてSQL_SUCCESS_WITH_INFOを返却します。しかし,ODBCドライバを呼び出す上位アプリケーションによっては,SQL_SUCCESS_WITH_INFOで検索処理を打ち切るものがあります。この環境変数にYESを指定すると,検索処理でSQL連絡領域のSQLWARNが設定された場合でも,SQLFetch()の戻り値をSQL_SUCCESSとすることで,検索処理が続行できるようになります。
注※
例えば,ADO.Netを使用してODBC経由でHiRDBに接続している場合,SQL_SUCCESS_WITH_INFOで検索処理が打ち切られることがあります。

(129) PDJETCOMPATIBLE={YES|NO

ODBC3.5ドライバを,ODBC3.5の規格ではなくMicrosoft Jetデータベースエンジン互換モードで動作させるかどうかを指定します。

YES:
ODBC3.5ドライバは,Microsoft Jetデータベースエンジン互換モードで動作します。

NO:
ODBC3.5ドライバは,ODBC3.5の規格どおりに動作します。

《適用基準》
Microsoft Accessなどの,Microsoft Jetデータベースエンジンを使用するアプリケーションプログラムでHiRDBにアクセスする場合に指定します。この環境変数を指定しないと,検索結果が"#Delete"と表示されたり,挿入したデータが不正に変換されることがあります。

(130) PDPLGIXMK={YES|NO

プラグインインデクスの遅延一括作成をするかどうかを指定します。プラグインインデクスの遅延一括作成については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。

YES:プラグインインデクスの遅延一括作成をします。

NO:プラグインインデクスの遅延一括作成をしません。

(131) PDPLUGINNSUB

詳細については,各プラグインマニュアルを参照してください。

(132) PDPLGPFSZ=遅延一括作成用のインデクス情報ファイルの初期容量

   〜〈符号なし整数〉((1〜1048574000))《8192》(単位:キロバイト)

プラグインインデクスの遅延一括作成用のインデクス情報ファイルの初期容量を指定します。

インデクス情報ファイルをHiRDBファイルシステム領域に作成する場合に,この指定が有効になります。

この環境変数を指定する場合,同時にPDPLGIXMK=YESも指定してください。

(133) PDPLGPFSZEXP=遅延一括作成用のインデクス情報ファイルの増分値

   〜〈符号なし整数〉((1〜1048573000))《8192》(単位:キロバイト)

プラグインインデクスの遅延一括作成用のインデクス情報ファイルの増分値を指定します。インデクス情報ファイルが満杯になった場合,ここで指定した値で増分します。

インデクス情報ファイルをHiRDBファイルシステム領域に作成する場合に,この指定が有効になります。

この環境変数を指定する場合,同時にPDPLGIXMK=YESも指定してください。

(134) PDJDBFILEDIR=Exceptionトレースログのファイル出力先

   〜<パス名>《PDCLTPATHの指定値》

Type4 JDBCドライバでのExceptionトレースログのファイル出力先を指定します。ファイル出力先には,ディレクトリの絶対パスを256バイトまでで指定してください。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

Exceptionトレースログの詳細は,「18.15 Exceptionトレースログ」を参照してください。そのほかの詳細は,「18.15.1(2)(b)システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_FileDIR」を参照してください。

(135) PDJDBFILEOUTNUM=Exceptionトレースログのファイルへの出力数

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

Type4 JDBCドライバでのExceptionトレースログのファイルへの出力数を指定します。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

Exceptionトレースログの詳細は,「18.15 Exceptionトレースログ」を参照してください。そのほかの詳細は,「18.15.1(2)(b)システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_FileOutNUM」を参照してください。

(136) PDJDBONMEMNUM=Exceptionトレースログのメモリ内取得情報数

   〜<符号なし整数>((500〜10000))《1000》

Type4 JDBCドライバでのExceptionトレースログのメモリ内取得情報数を指定します。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

Exceptionトレースログの詳細は,「18.15 Exceptionトレースログ」を参照してください。そのほかの詳細は,「18.15.1(2)(b)システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_OnMemNUM」を参照してください。

(137) PDJDBTRACELEVEL=Exceptionトレースログのトレース取得レベル

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

Type4 JDBCドライバでのExceptionトレースログのトレース取得レベルを指定します。0を指定した場合,Exceptionトレースログを取得しません。この環境変数は,Type4 JDBCドライバを使用する場合にだけ指定できます。

Exceptionトレースログの詳細は,「18.15 Exceptionトレースログ」を参照してください。そのほかの詳細は,「18.15.1(2)(b)システムプロパティの設定」のシステムプロパティ「HiRDB_for_Java_TraceLevel」を参照してください。