Oracle: lock held by in-doubt distributed transaction

Last update: 4 August 2017

Oracle: lock held by in-doubt distributed transaction

Summary

This article describes the error message triggered as a result of a locked resource in a pending transaction as well as the solution.

Error message:

"ORA-01591: lock held by in-doubt distributed transaction"

Information

An attempt was made to access resource that is locked by a dead two-phase commit transaction that is in prepared state.

Solution

Warning: Please consider that the solution provided below requires a complete domain restart!

  1. Stop all COO-services of the affected domain.
    Note: Before stopping the COO-services ensure that all kernel instances have been stopped.
  2. Check if there are any pending transactions left on the Oracle database.
select * from sys.dba_pending_transactions
select * from dba_2pc_pending
  1. If there are any transactions left, execute a rollback according to http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_txnman005.htm#A...
  2. Restart all stopped COO-services
  3. Restart the stopped kernel instances and thoroughly test the domain

Applies to

  • Fabasoft Folio (all versions)
  • Fabasoft eGov-suite (all versions)

while using an Oracle database