スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

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

8.7 排他資源管理テーブル不足が発生した場合

実行者 HiRDB管理者

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

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

<この節の構成>
(1) 排他資源管理テーブル情報のファイル名は
(2) 排他資源管理テーブル情報の出力内容
(3) 調査方法
(4) 対策方法

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

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

●不要な排他資源管理テーブル情報ファイルを削除しましょう
HiRDBは排他資源管理テーブル情報ファイルを削除しません。したがって,HiRDB管理者は不要となった排他資源管理テーブル情報ファイルを(OSのrmコマンドなどで)削除してください。rmコマンドについては,OSのマニュアルを参照してください。

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

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

図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を表示します。

(3) 調査方法

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

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

(4) 対策方法

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

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

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

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

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

●ユニットで使用する共用メモリに余裕がない場合(共用メモリを大きくできない場合)
排他資源管理テーブル数をたくさん使用するUAPを同時に実行しないでください。

●ユニットで使用する共用メモリに余裕がある場合(共用メモリを大きくできる場合)
HiRDBシステム定義を修正します。修正するオペランドはサーバの種類によって異なります。排他資源管理テーブルが不足したサーバは,排他資源管理テーブル情報の「(5)サーバ名」を参照すれば分かります。
排他資源管理テーブルが不足したサーバがフロントエンドサーバの場合は,エラーが発生したフロントエンドサーバ定義のpd_fes_lck_pool_sizeオペランドの値を大きくしてください。
排他資源管理テーブルが不足したサーバがフロントエンドサーバ以外の場合は,エラーが発生したサーバ定義のpd_lck_pool_sizeオペランドの値を大きくしてください。
注意
HiRDBシステム定義を変更する場合は,HiRDB全体又は変更する定義があるユニットを正常終了させてください。その後,HiRDBシステム定義を変更してください。pdstop -sで該当するサーバだけを正常終了させても変更した定義は有効になりません。