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

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

19.14.2 未決着状態のトランザクションを手動で決着する方法

未決着状態のトランザクションを手動で決着する手順を次に示します。

〈手順〉
[図データ]

  • 処理ボックスの左にある数字はこの後で説明している( )レベルに対応しています。例えば,5の操作は(5)で説明しています。
  • 以降で説明する手順の中で,メッセージを調べる操作があります。このとき,syslogfile中のメッセージを参照するようにしてください。
<この項の構成>
(1) KFPS00992-Eメッセージを確認します
(2) クライアントの製品は起動していますか?
(3) クライアントの製品を起動します
(4) 1分程度待ちます
(5) KFPS00992-Eメッセージが出力されたのはHiRDBの終了処理時ですか?
(6) KFPS00992-Eメッセージに出力されたTRNGIDを調べます
(7) pdlsコマンドでトランザクションの状態を確認します
(8) READY(p,?)又はFORGETTING(?,w)状態のトランザクションが存在しますか?
(9) 未決着状態のトランザクションの完了種別を調べます
(10) 未決着状態のトランザクションを決着させます
(11) トランザクションの決着を待ちます
(12) トランザクションが決着したか確認します
(13) すべてのトランザクションが終了しましたか?

(1) KFPS00992-Eメッセージを確認します

syslogfile中のKFPS00992-Eメッセージをサーチしてください。

 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b4d, TRNBID=HRD1unt100020034, server=bes1, service=p_f_sqa_call
 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b22, TRNBID=HRD1unt100020035, server=bes1, service=p_f_sqa_call
 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b5a, TRNBID=HRD1unt100020036, server=bes1, service=p_f_sqa_call
 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b5f, TRNBID=HRD1unt100020037, server=bes1, service=p_f_sqa_call
 
KFPS00992-E Unable to determine commit or rollback for transaction branch.
TRNGID=HRD1unt100020b64, TRNBID=HRD1unt100020038, server=bes1, service=p_f_sqa_call
 

〔説明〕
KFPS00992-Eメッセージには,コミット又はロールバックできなかったトランザクションブランチが表示されます。この場合,次に示すトランザクション識別子のトランザクションが未決着状態である可能性があります。
  • TRNGID=HRD1unt100020b4d
  • TRNGID=HRD1unt100020b22
  • TRNGID=HRD1unt100020b5a
  • TRNGID=HRD1unt100020b5f
  • TRNGID=HRD1unt100020b64

(2) クライアントの製品は起動していますか?

HiRDBのクライアントとして使用している製品が,正常に稼働しているかどうかを確認してください。

(3) クライアントの製品を起動します

HiRDBのクライアントとして使用している製品が,正常に稼働していない場合は,各製品で決められている手順で起動してください。

このとき,クライアントの製品の強制開始を行わないでください。

(4) 1分程度待ちます

トランザクションが自動的に決着する可能性があるため,1分程度待ちます。

(5) KFPS00992-Eメッセージが出力されたのはHiRDBの終了処理時ですか?

KFPS00992-EメッセージがHiRDB終了処理時に出力された場合と,それ以外の場合では,以降の対策方法が異なります。

(6) KFPS00992-Eメッセージに出力されたTRNGIDを調べます

HiRDBの終了処理時にKFPS00992-Eメッセージが出力された場合は,pdls -d trnコマンドが実行できないため,KFPS00992-Eメッセージに出力されたTRNGIDを調べます。

(7) pdlsコマンドでトランザクションの状態を確認します

pdls -d trnコマンドで,トランザクションの状態を確認してください。

pdls -d trn
 
HOSTNAME : host1(153415)
TRNGID           TRNBID           STATUS            PID    SVID    B-SVID
HRD1unt100020b4d HRD1unt100020034  READY(p,n)       0      bes1    fes1
HRD1unt100020b22 HRD1unt100020035  READY(p,n)       0      bes1    fes1
HRD1unt100020b5a HRD1unt100020036  READY(p,n)       0      bes1    fes1
HRD1unt100020b5f HRD1unt100020037  ROLLBACK(u,n)    29799  bes1    fes1
HRD1unt100020b69 HRD1unt100020039  FORGETTING(r,w)  0      bes1    fes1
 

〔説明〕
STATUS欄に表示される情報を見てください。
  • 次に示す三つのトランザクションがREADY(p,?)状態になっています。
    TRNGID=HRD1unt100020b4d
    TRNGID=HRD1unt100020b22
    TRNGID=HRD1unt100020b5a
  • TRNGID=HRD1unt100020b5fのトランザクションは,クライアントの製品を起動したため,決着処理が行われてROLLBACK状態になっています。このトランザクションは自動的に決着します。
  • TRNGID=HRD1unt100020b64のトランザクションは,クライアントの製品を起動したため,決着処理が行われてトランザクションが決着しました。そのため,pdls -d trnコマンドの実行結果に表示されません。
  • KFPS00992-Eメッセージには出力されなかったTRNGID=HRD1unt100020b69のトランザクションが,FORGETTING(?,w)状態になっています。

(8) READY(p,?)又はFORGETTING(?,w)状態のトランザクションが存在しますか?

pdls -d trnコマンドの実行結果(STATUSの欄)に,READY(p,?)状態又はFORGETTING(?,w)状態のトランザクションがある場合,未決着トランザクションの決着を行います。

READY(p,?)状態又はFORGETTING(?,w)状態以外のトランザクションだけがある場合は,トランザクションが自動的に決着するのを待ちます。

(9) 未決着状態のトランザクションの完了種別を調べます

READY(p,?)状態又はFORGETTING(?,w)状態のトランザクションがある場合は,syslogfile中のKFPS00990-Iメッセージをサーチしてください。このとき,決着させる必要があるトランザクションのTRNGIDをキーにしてサーチします。KFPS00990-Iメッセージにはトランザクションの完了種別が表示されます。なお,サーチするKFPS00990-Iメッセージは,前回正常開始時点以降に出力されたメッセージだけを対象にしてください。

 
KFPS00990-I Transaction branch recovery complete. TRNGID=HRD1unt100020b5a,
TRNBID=HRD1unt200020015, server=fes1, service=p_f_sqa_cauxi, completion type=c, c
 
KFPS00990-I Transaction branch recovery complete. TRNGID=HRD1unt100020b4d,
TRNBID=HRD1unt200020014, server=fes1, service=p_f_sqa_cauxi, completion type=r, r
 

〔説明〕
サーチした結果,ヒットしたトランザクションの処置を次に示します。
  • TRNGID=HRD1unt100020b5aのトランザクション完了種別
    completion type=cとなっているため,コミットでトランザクションを決着させます。
  • TRNGID=HRD1unt100020b4dのトランザクション完了種別
    completion type=rとなっているため,ロールバックでトランザクションを決着させます。
 
サーチした結果,ヒットしなかったトランザクションの処置を次に示します。
  • TRNGID=HRD1unt100020b22のトランザクション完了種別
    同じTRNGIDを持つKFPS00990-Iメッセージがなかったため,ロールバックでトランザクションを決着させます。
  • TRNGID=HRD1unt100020b69のトランザクション完了種別
    STATUSがFORGETTING(?,w)のため,トランザクションを強制終了します。
 
次に示すTRNGIDのトランザクションについては完了種別を調べる必要がありません。
  • TRNGID=HRD1unt100020b5f
  • TRNGID=HRD1unt100020b64

(10) 未決着状態のトランザクションを決着させます

次に示すコマンドでトランザクションを決着してください。

コマンド名 機能及び適用基準
pdcmt トランザクションをコミットします。
pdrbk トランザクションをロールバックします。
pdfgt トランザクションを強制終了します。FORGETTING(?,w)状態のトランザクションに実行します。

(11) トランザクションの決着を待ちます

READY(p,?)又はFORGETTING(?,w)状態以外のトランザクションだけがある場合,トランザクションは決着中のため,決着処理が完了するのを待ってください。

(12) トランザクションが決着したか確認します

KFPS00992-EメッセージがHiRDBの終了処理中に出力された場合は,KFPS02183-Iメッセージが出力されたかどうかを確認してください。未決着状態のトランザクションが決着すると,30秒以内にKFPS02183-Eメッセージが出力されます。30秒以上経過してもKFPS02183-Iメッセージが表示されない場合は,未決着状態のトランザクションが存在します。

HiRDBの再開始時にKFPS00992-Eメッセージが出力された場合,又はHiRDBの稼働中にpdls -d trnコマンドで未決着状態のトランザクションを発見した場合は,トランザクションが決着しているかどうかをpdls -d trnコマンドで確認してください。

(13) すべてのトランザクションが終了しましたか?

すべてのトランザクションが終了していない場合は,(5)に戻って操作してください。