Hitachi

ノンストップデータベース HiRDB Version 10 システム運用ガイド(Windows(R)用)


8.7.1 排他資源管理テーブル不足が発生した場合の対処方法

実行者 HiRDB管理者

排他資源管理テーブル不足が発生すると,HiRDBはKFPS00443-Iメッセージと,排他資源管理テーブル情報を出力します。排他資源管理テーブル情報は,排他資源管理テーブル不足が発生したユニットのディレクトリ(%PDDIR%\spool\pdlckinf)に出力されます。HiRDB管理者はその情報を参照して,排他資源管理テーブル不足解消のための対策を立ててください。

注 排他制御処理の分散を適用している場合は,「排他資源管理テーブル」を「排他制御用プールパーティション」に読み替えてください。

〈この項の構成〉

(1) 排他資源管理テーブル情報のファイル名は

排他資源管理テーブル情報は,排他資源管理テーブル不足が発生するたびにファイルに出力されます。出力ファイル名は,「出力日時.mem」となります。memはファイル記述子です。例えば,10月3日9時16分2秒に,排他資源管理テーブル不足が発生すると,その出力ファイル名はOct3091602.memとなります。ファイル名は,KFPS00447-Iメッセージに表示されます。

(2) 不要な排他資源管理テーブル情報ファイルを削除しましょう

HiRDB管理者は不要となった排他資源管理テーブル情報ファイルを次に示す(a),(b)又は(c)の方法で削除してください。

(a) HiRDBのコマンドで削除する方法

pdcspoolコマンドで削除します。pdcspoolコマンドを実行すると,%PDDIR%¥spool下にあるトラブルシュート情報ファイルが削除されます。したがって,排他資源管理テーブル情報ファイルだけを削除する場合は,「OSの機能で削除する方法」を参照してください。

(b) HiRDBの機能で削除する方法

pd_spool_cleanup_interval_levelオペランドを省略するかallを指定すると,定期的にHiRDBが排他資源管理テーブル情報ファイルを削除します。通常は24時間ごとに削除します。この削除間隔をpd_spool_cleanup_intervalオペランドで変更できます。

また,pd_spool_cleanup_levelオペランドを省略するかallを指定すると,HiRDBの開始時にHiRDBが排他資源管理テーブル情報ファイルを削除します。

(c) OSの機能で削除する方法

OSの機能(OSのdelコマンドなど)で削除してください。delコマンドについては,OSのマニュアルを参照してください。

(3) 排他資源管理テーブル情報の出力内容

排他資源管理テーブル情報の出力内容を次の図に示します。

図8‒12 排他資源管理テーブル情報の出力内容

[図データ]

〔説明〕

(1)排他資源管理テーブル不足の検知日時(月 日 時:分:秒 西暦)

(2)不足した排他資源管理テーブルの種別(次のどちらかを出力します)

  • RESOURCE

    使用する資源名称を管理するときに使用するテーブルです。複数ユーザで共有します。そのため,全ユーザの使用しているテーブルの合計数がテーブルの総数を超えることがあります。

  • OCP/WAIT

    共有,待ちの状態を管理するときに使用するテーブルです。複数ユーザで共有しません。

RESOURCEとOCP/WAITの違いを次に示します。

[図データ]

(3)使用できる排他資源管理テーブルの総数

排他資源管理テーブル不足が発生したユーザの情報

(4)UAP識別情報 ※1

(5)サーバ名

(6)プロセスID

(7)トランザクション識別子

(8)ユーザ識別通番

(9)デッドロックプライオリティ値

(10)クライアントのIPアドレス ※3

(11)クライアントのプロセスID ※2,※3

(12)現在使用しているテーブル数

排他資源管理テーブル不足が発生したときのほかのユーザの情報(排他資源管理テーブル使用率が10%以上のユーザ)

(13)UAP識別情報 ※1

(14)サーバ名

(15)プロセスID

(16)トランザクション識別子

(17)ユーザ識別通番

(18)デッドロックプライオリティ値

(19)クライアントのIPアドレス ※3

(20)クライアントのプロセスID ※2,※3

(21)現在使用しているテーブル数

排他資源管理テーブル不足が発生したときのほかのユーザの情報(排他資源管理テーブル使用率が10%未満のユーザ)

(22)排他資源管理テーブルの使用率が10%に満たないユーザの数

注※1

CONNECTしていたクライアントUAPの名称を30バイトで表示します。

ここで表示する情報はpdls -d prcやpdls -d trnで出力されるPROGRAMに該当します。ただし,一部のユティリティは表示できません。この場合,「********」が表示されます。また,再開始処理でトランザクションを回復中のときは”Rerun”を表示します。

注※2

CONNECTしていたクライアントUAPがリンケージしているクライアントライブラリのバージョンがHiRDB Version 4.0 04-00より前の場合,及びType4 JDBCドライバから接続している場合は,プロセスIDに0が表示されます。

注※3

バックエンドサーバ及びディクショナリサーバでは,表示できないことがあります。表示できない場合,クライアントのIPアドレスは「*.*.*.*」,プロセスIDは0を表示します。

(4) 調査方法

排他資源管理テーブル情報の次の情報を参照します。

この情報から,どのUAPがどれだけの排他資源管理テーブルを使用しているかが分かります。排他資源管理テーブルの使用数は,UAPが行う排他要求数と一致します。したがって,「(21)現在使用しているテーブル数」の値が大きいUAPは,不当に多くの排他要求をしている可能性があります。UAPが行う排他要求数はSQLによって異なります。各SQLの排他要求数(排他資源数の見積もり)については,マニュアル「HiRDB システム定義」を参照してください。

(5) 対策方法

(a) 不当に多くの排他要求を行っているUAPがある場合

多くの排他要求をしないようにUAPを修正してください。

また,クライアント環境定義のPDLOCKLIMITオペランドを指定すると,1UAPの排他要求数の上限を設定できます。

(b) 不当に多くの排他要求を行っているUAPがない場合

排他資源管理テーブル数が少な過ぎると思われます。次に示すどちらかの対策をとってください。

●ユニットで使用する共用メモリに余裕がない場合(共用メモリを大きくできない場合)

排他資源管理テーブル数をたくさん使用するUAPを同時に実行しないでください。

●ユニットで使用する共用メモリに余裕がある場合(共用メモリを大きくできる場合)

HiRDBシステム定義を修正します。修正するオペランドはサーバの種類によって異なります。排他資源管理テーブルが不足したサーバは,排他資源管理テーブル情報の「(5)サーバ名」を参照すれば分かります。

排他資源管理テーブルが不足したサーバがフロントエンドサーバの場合は,エラーが発生したフロントエンドサーバ定義のpd_fes_lck_pool_sizeオペランドの値を大きくしてください。

排他資源管理テーブルが不足したサーバがフロントエンドサーバ以外の場合は,エラーが発生したサーバ定義のpd_lck_pool_sizeオペランドの値を大きくしてください。

注意事項

HiRDBシステム定義を変更する場合は,HiRDB全体又は変更する定義があるユニットを正常終了させてください。その後,HiRDBシステム定義を変更してください。pdstop -sで該当するサーバだけを正常終了させても変更した定義は有効になりません。