ページの先頭行へ戻る
Symfoware Server V11.1.0 RDB運用ガイド
FUJITSU Software

14.5.3 手動によるインダウトトランザクションの解決

インダウト閉塞された資源は、それを更新したインダウトトランザクションが解決されるまでアプリケーションからアクセスすることはできません。通常はアプリケーションサーバを再起動することでインダウトトランザクションが自動的に解決され、それらの資源はアプリケーションから利用可能になります。

しかし、アプリケーションサーバのマシンやトランザクションログファイルが破損した場合など、トランザクションマネージャによるインダウトトランザクションの解決が不可能になることがあります。結果として、インダウト閉塞された資源には恒久的にアクセスすることができなくなります。

このような場合に備え、Symfoware/RDBでは、リカバリ指示(コミットまたはロールバック)を与えて手動でインダウトトランザクションを解決する手段が用意されています。

注意

グローバルトランザクションの結果とは異なるリカバリ指示を与えてしまうと、データベースは矛盾した内容を含むことになります。したがって、この方法はほかにリカバリ手段がない場合にのみ用いてください。

リカバリ指示は、rdbxarcvコマンドで行います。

Symfoware/RDBからのリカバリ指示には、以下の2つの方法があります。

参照

rdbxarcvコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。

すべてのトランザクションに同一の指示を与える

インダウト状態のトランザクションをすべてコミットするかロールバックするかの指示を与えます。この指示は、rdbxarcvコマンドでeオプションを指定します。

トランザクションをコミットする

インダウト状態のトランザクションをすべてコミットする場合は、以下のように指定します。

$ rdbxarcv -e C 
トランザクションをロールバックする

インダウト状態のトランザクションをすべてロールバックする場合は、以下のように指定します。

$ rdbxarcv -e A 

トランザクションごとに異なる指示を与える

インダウト状態のトランザクションごとにコミットするかロールバックするかの指示を与えます。この操作は、以下の手順で行います。

トランザクション識別子の取得

rdbprxidコマンドを実行して、トランザクション識別子(XID)の一覧をXIDリストファイルとして取得します。

参照

rdbprxidコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。

操作例を以下に示します。

$ rdbprxid > xid.lst 

上記のコマンドの実行により、ファイル“xid.lst”に以下の形式のトランザクション識別子の一覧が出力されます。

 XID1 
 XID2 
 XID3 
 XID4 
XIDリストファイルの作成

rdbprxidコマンドの実行により取得したトランザクション識別子の一覧が記述されているファイルをXIDリストファイルと呼びます。このファイルは、テキストエディタなどで修正し、トランザクションごとのリカバリ指示を記述します。トランザクションをコミットする場合は、Cを指定します。トランザクションをロールバックする場合は、Aを指定します。指定例を以下に示します。

 XID1 A                   (1)
 XID2 C                   (2)
 XID3 C                   (3)
 XID4 C                   (4)
(1) : トランザクション識別子“XID1”はロールバックします。
(2)、(3)および(4) : トランザクション識別子“XID2”、“XID3”および“XID4”はコミットします。
トランザクションごとにリカバリ指示を与える

rdbxarcvコマンドにfオプションを指定して実行することにより、XIDリストファイルに指定されている情報をもとに、トランザクションごとにリカバリ指示を与えます。

$ rdbxarcv -f xid.lst