Try OpenEdge Now
skip to main content
Database Administration
Protecting Your Data : Distributed Transaction Processing : Two-phase commit with ABL clients : Resolving limbo transactions with PROUTIL
 
Resolving limbo transactions with PROUTIL
To resolve limbo transactions using PROUTIL:
1. Try to start a database session with PROSERVE, PRO, or PROUTIL.
f the session starts successfully, no limbo transactions have occurred on the database. If limbo transactions occurred, the session fails to start and output similar to the following is displayed, or written to the event log file for the database:
2. Capture information, for all the listed limbo transactions.
Capture the following:
*The transaction number on the current database (that is, the database where you tried to start the session)
*The name of the coordinator database
*The transaction number in the coordinator database
Once you have this information, you must consult the coordinator database to determine whether it committed or aborted the transaction.
3. Determine if the coordinator database committed or aborted the limbo transaction.
Enter the following command against the coordinator database to make the determination:
proutil db-name -C 2phase commit tr-number
In this command:
*db-name specifies the coordinator database
*tr-number specifies the number of the transaction to check
Specify the number of the transaction on the coordinator database.
If the coordinator committed the transaction, PROUTIL displays a message similar to the following:
Transaction 42453 has committed. (2048)
If the coordinator database committed the transaction, you must also commit the transaction on the database where the limbo transaction occurred. If the coordinator did not commit the transaction, you must abort the transaction on the database where the limbo transaction occurred.
4. Commit or abort the limbo transactions, depending on whether the coordinator committed or aborted the transaction in .
Use the PROUTIL 2PHASE RECOVER utility to commit or abort transactions for a database. Before you enter this command, determine whether you will commit or abort each transaction; you must either commit or abort all limbo transactions to complete this command:
proutil db-name -C 2phase recover
When you run this command against a database with limbo transactions, PROUTIL displays a message similar to the following:
Commit transaction 760, on coordinator sports1 #42453
    (y to commit/n to abort)? (2039)
5. If you respond yes, PROUTIL commits the transaction. If you respond no, PROUTIL aborts the transaction.
PROUTIL displays this message for all of the limbo transactions that exist in the database.
After you commit or abort all of the limbo transactions, they are resolved.