Question & Answer
Question
トランザクションログ・フルが発生しましたが、db2diag.log ではアプリケーション・ハンドルが不明です。対応方法を教えてください。
MESSAGE : ADM1823E The active log is full and is held by application handle "".
Terminate this application by COMMIT, ROLLBACK or FORCE APPLICATION.
Cause
未確定トランザクション (indoubt transaction) があると、現在存在しないアプリケーションが原因でロック・タイムアウトやログ・フルが発生する可能性があります。
RM のログが再度使用可能になって、TM が RM からの未確定状況情報に関するログを統合できるようになるまで、RM はトランザクション・ブランチに対して コミットとロールバックのどちらを実行すればよいのかを識別できません。
SQL0911N デッドロックまたはタイムアウトのため、現在のトランザクションがロールバックされました。理由コード"68"。SQLSTATE=40001
SQL0964C データベースのトランザクション・ログがいっぱいです。 SQLSTATE=57011
未確定トランザクションは、 未確定状態のままになっているグローバル・トランザクションです。 これは、2 フェーズ・コミット・プロトコルの第 1 フェーズ (つまり PREPARE フェーズ) が正常終了した後、トランザクション・マネージャー (TM)、 または少なくとも 1 つのリソース・マネージャー (RM) のいずれかが使用できなくなった場合に発生します。RM のログが再度使用可能になって、TM が RM からの未確定状況情報に関するログを統合できるようになるまで、RM はトランザクション・ブランチに対して コミットとロールバックのどちらを実行すればよいのかを識別できません。
Answer
未確定トランザクションに関する情報は、現在接続されているデータベースに対して LIST INDOUBT TRANSACTIONS コマンドを実行して確認します。
未確定トランザクションを処理するには、LIST INDOUBT TRANSACTIONS コマンドを WITH PROMPTING オプションを指定して実行します。
対話式ダイアログ・モードが開始され、 未確定トランザクションのコミット、ロールバック、または破棄が可能になります。
対話式ダイアログ・モードでは次のことが可能です。
$ db2 list indoubt transactions
1. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930013422
sequence_no: 0001 status: i
timestamp: 2011-09-30 10:34:57 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000AF0D
2. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930021847
sequence_no: 0001 status: i
timestamp: 2011-09-30 11:18:46 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000B05A
3. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930014048
sequence_no: 0001 status: i
timestamp: 2011-09-30 10:41:36 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000AFA1
4. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930014752
sequence_no: 0001 status: i
timestamp: 2011-09-30 10:48:30 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000B03E
5. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930080254
sequence_no: 0001 status: i
timestamp: 2011-09-30 17:02:54 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000C60B
未確定トランザクションを処理するには、LIST INDOUBT TRANSACTIONS コマンドを WITH PROMPTING オプションを指定して実行します。
対話式ダイアログ・モードが開始され、 未確定トランザクションのコミット、ロールバック、または破棄が可能になります。
$ db2 list indoubt transactions with prompting
1. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930013422
sequence_no: 0001 status: i
timestamp: 2011-09-30 10:34:57 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000AF0D
2. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930021847
sequence_no: 0001 status: i
timestamp: 2011-09-30 11:18:46 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000B05A
3. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930014048
sequence_no: 0001 status: i
timestamp: 2011-09-30 10:41:36 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000AFA1
4. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930014752
sequence_no: 0001 status: i
timestamp: 2011-09-30 10:48:30 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000B03E
5. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930080254
sequence_no: 0001 status: i
timestamp: 2011-09-30 17:02:54 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000C60B
c/r/f/l/q:
対話式ダイアログ・モードでは次のことが可能です。
- すべての未確定トランザクションのリスト表示 (l を入力)
- 未確定トランザクション番号 x のリスト表示 (l の後に有効なトランザクション番号を入力)
- 終了 (q を入力)
- トランザクション番号 x をコミット (c の後に有効なトランザクション番号を入力)
- トランザクション番号 x をロールバック (r の後に有効なトランザクション番号を入力)
- トランザクション番号 x を破棄 (f の後に有効なトランザクション番号を入力)
コマンド文字と引数の間は、ブランク・スペースで区切る必要があります。
今回のケースは"c/r/f/l/q:"ですが、未確定トランザクションの状態によっては"c/r/l/q:"の場合もあります。
未確定トランザクションを処理するには、2段階の操作により確定します。
1) トランザクションの確定 (トランザクションの状況に応じて r/c のいずれか) でリソースを解放します。
未確定トランザクションをロールバックする --- r 番号
未確定トランザクションをコミットする --- c 番号
上記出力例では status: i (未確定) ですので、コミットもしくはロールバックを実行できます。
'c 1' はトランザクション 1 をヒューリスティックにコミットします。
c/r/f/l/q: c 1
1. originator: DB2 Enterprise Server Edition
appl_id: *N0.db2inst1.110930013422
sequence_no: 0001 status: i
timestamp: 2011-09-30 10:34:57 auth_id: DB2INST1
log_full: n type: RM
xid: 00001D3400000008 0000000000000000 0000AF0D
この未確定トランザクションをヒューリスティックに COMMIT しますか? (y/n) y
トランザクションのコミット、ロールバック、または破棄を実行する前にトランザクション・データが表示され、アクションを確認するように求められますので、 y を入力します。このようにしてトランザクションをコミットまたはロールバックしてください。
2) 以下の状況では、コミットあるいはロールバックではなく破棄 (f) する必要があります。
コミット済みまたはロールバック済みのトランザクションを未確定トランザクションの一覧から破棄 (FORGET) する --- f 番号
- ヒューリスティックな手法でコミットまたはロールバックされたトランザクションが原因で、 ログ満杯状態が発生した場合 (LIST INDOUBT TRANSACTIONS コマンドからの出力に示される)
- オフライン・バックアップが行われる場合
運用上の考慮点
- パーティション・データベースの場合、各パーティションに接続してから list indoubt transactions コマンドを実行する必要があります。
例:SAMPLE データベースのデータベース・パーティション 3 の未確定トランザクションを表示export DB2NODE=3 db2 terminate db2 connect to SAMPLE db2 list indoubt transactions
- クラッシュ・リカバリー中に未確定トランザクションの存在を検出した場合、db2diag.log に以下のようなエントリが記録されます。
2011-11-30-16.25.25.062152+540 I857382A463 LEVEL: Warning PID : 835832 TID : 3086 PROC : db2sysc 2 INSTANCE: db2inst1 NODE : 002 DB : SAMPLE APPHDL : 1-51 APPID: AUTHID : EDUID : 3086 EDUNAME: db2agntp (SAMPLE) 2 FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:3280 MESSAGE : In-doubt transaction(s) exists at the end of crash recovery.
- トランザクションのコミット、ロールバック、または破棄を実行する前に、 トランザクション・データが表示され、アクションを確認するように求められます。
- コミットできるのは、状況が未確定 (i)、またはコミット肯定応答欠落 (m)、またはフェデレーテッド・コミット肯定応答欠落 (d) のトランザクションだけです。
- ロールバックできるのは、状況が未確定 (i)、フェデレーテッド・ロールバック肯定応答欠落 (b)、または終了済み (e) のトランザクションだけです。
- 破棄ができるのは、状況がコミット済み (c)、ロールバック (r)、フェデレーテッド・コミット肯定応答欠落 (d)、またはフェデレーテッド・ロールバック肯定応答欠落 (b) のトランザクションだけです。
- 未確定トランザクションが "SQL0998N トランザクションまたはヒューリスティック処理中に、エラーが発生しました。 理由コード = 36。" で失敗する場合は、RESTART DATABASE コマンドを実行し、再度 LIST INDOUBT TRANSACTIONS コマンドを実行して未確定トランザクションがないことを確認してください。
$ db2 list indoubt transactions with prompting SQL1251W No data returned for heuristic query. SQLSTATE=00000
db2diag.log には以下のようなメッセージが記録されます。2011-11-30-16.58.09.561284+540 E860889A491 LEVEL: Warning PID : 835832 TID : 3086 PROC : db2sysc 2 INSTANCE: db2inst1 NODE : 002 DB : SAMPLE APPHDL : 2-89 APPID: * AUTHID : EDUID : 3086 EDUNAME: db2agent (SAMPLE) 2 FUNCTION: DB2 UDB, recovery manager, sqlpssdw, probe:5000 MESSAGE : Indoubt transaction processing completed. DATA #1 : ZRC, PD_TYPE_ZRC, 4 bytes 0x00000000
パスポート・アドバンテージによく寄せられる質問
LIST INDOUBT TRANSACTIONS コマンド
未確定トランザクションの手動での解決
RESTART DATABASE コマンド
X/Open 分散トランザクション処理のモデル
SQL0998N
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PmcAAE","label":"Recovery-\u003ELogging"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
23 August 2023
UID
swg21965469