How to Purge In-Doubt Transaction?
410544Jan 8 2004 — edited Jan 8 2004I have two in-doubt transaction in the "collecting" state which I can not purge (and which I believe are counting against my DISTRIBUTED_TRANSACTIONS limit):
SELECT local_tran_id, global_tran_id, state, mixed, host, commit#
FROM dba_2pc_pending;
LOCAL_TRAN_ID GLOBAL_TRAN_ID STATE MIX HOST COMMIT#
------------- ------------------------------ ---------- --- ---------- ----------
1.78.11352 USER1.871545d2.1.78.11352 collecting no computername 3482971616
2.71.10227 USER1.871545d2.2.71.10227 collecting no computername 3479914029
None of the following methods seems to work:
--------------------------------------------
SQL> rollback force '1.78.11352';
rollback force '1.78.11352'
*
ERROR at line 1:
ORA-02058: no prepared transaction found with ID 1.78.11352
--------------------------------------------
SQL> commit force '1.78.11352'
2 ;
commit force '1.78.11352'
*
ERROR at line 1:
ORA-02058: no prepared transaction found with ID 1.78.11352
--------------------------------------------
SQL> execute dbms_transaction.purge_lost_db_entry('1.78.11352');
BEGIN dbms_transaction.purge_lost_db_entry('1.78.11352'); END;
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-06512: at "SYS.DBMS_TRANSACTION", line 86
ORA-06512: at line 1
-------------------------------------------------
These methods were suggested to me in the chapter 5, Managing Distributed Transactions, of Oracle8i Distributed Database Systems Release 2 (8.1.6) Part Number A76960-01. I have done everything else (including trying to overcome the above error messages) which this documentation suggest.
Note that the errors following the Rollback and Commit seem to indicate that the transaction must be "pending" rather than "collecting".
Anyone have any good ideas?
Thanks