インダウト閉塞された資源は、それを更新したインダウトトランザクションが解決されるまでアプリケーションからアクセスすることはできません。通常はアプリケーションサーバを再起動することでインダウトトランザクションが自動的に解決され、それらの資源はアプリケーションから利用可能になります。
しかし、アプリケーションサーバのマシンやトランザクションログファイルが破損した場合など、トランザクションマネージャによるインダウトトランザクションの解決が不可能になることがあります。結果として、インダウト閉塞された資源には恒久的にアクセスすることができなくなります。
このような場合に備え、Symfoware/RDBでは、リカバリ指示(コミットまたはロールバック)を与えて手動でインダウトトランザクションを解決する手段が用意されています。
注意
グローバルトランザクションの結果とは異なるリカバリ指示を与えてしまうと、データベースは矛盾した内容を含むことになります。したがって、この方法はほかにリカバリ手段がない場合にのみ用いてください。
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
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