Try OpenEdge Now
skip to main content
Database Administration
Protecting Your Data : Distributed Transaction Processing : Two-phase commit with ABL clients : Resolving limbo transactions
 
Resolving limbo transactions
Before you can resolve a limbo transaction, you must determine the transaction numbers, which database is the coordinator, whether the limbo transaction occurred in the coordinator database, and if the database in which the limbo transaction occurred is in use or shut down. How you resolve limbo transactions depends on whether the database is in use. If a server is running against the database, use PROMON. If no server is running, use PROUTIL.
To resolve a limbo transaction with PROMON:
1. Determine whether one or more limbo transactions occurred against a database by starting the PROMON database monitor.
Enter the following command:
promon db-name 
When you enter the PROMON utility, the main menu appears:
  OpenEdge MONITOR Release 11
  Database: /usr/dlc/sports
  1.  User Control
  2.  Locking and Waiting Statistics
  3.  Block Access
  4.  Record Locking Table
  5.  Activity
  6.  Shared Resources
  7.  Database Status
  8.  Shut Down Database
  9.  Currently Connected Tenants
  R&D.  Advanced Options
  T.  2PC Transactions Control
  L.  Resolve 2PC Limbo Transactions
  C.  2PC Coordinator Information
  J.  Resolve JTA Transactions
  M.  Modify Defaults
  Q.  Quit
  Enter your selection:
2. Choose option T (2PC Transaction Control).
PROMON displays a screen similar to the following:
  1.  Display all entries
  2.  Match a user number
  3.  Match a range of user numbers
  5.  Change list sorting        - by user number
  6.  Match a tenant or tenants  - None
  Q.  Return to main menu
  Enter your selection:
3. Choose 1. (Display all entries).
PROMON displays a screen similar to the following:
Note: If you run PROMON against a database where no limbo transaction has occurred, PROMON does not display any field information on the Transaction Control screen.
Take note of any limbo transactions. For example:
A transaction is in limbo if yes is displayed in the Limbo field. For each limbo transaction, write down the following information:
*The user number, shown in the Usr field
*The name of the coordinator database, shown in the Coord field
*The transaction number of the transaction in the coordinator database, shown in the Crd-task field
You need this information to resolve the limbo transaction.
To resolve limbo transactions, you must consult the coordinator database of each transaction to see if the coordinator committed the transaction. 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 terminate the transaction on the database where the limbo transaction occurred.
4. For each limbo transaction, run PROMON against the coordinator database to determine whether the coordinator committed the transaction.
5. From the PROMON main menu, choose C (2PC Coordinator Information).
PROMON displays a screen similar to the following:
     
OpenEdge MONITOR Release 11

       Database: /users/sports1

          Q. Quit

     Enter the transaction number you want to find out if committed:
Note: If the coordinator database is shut down and you cannot run PROMON against it, you must use the 2PHASE COMMIT qualifier of PROUTIL to determine whether it committed the transaction.
6. Enter the transaction number that you recorded from the Crd-task field in , and press RETURN. PROMON displays a message that tells you whether the transaction committed.
Note: To commit transactions on a database that is shut down, you must use the 2PHASE RECOVER qualifier of PROUTIL.
7. Run PROMON against the database where the limbo transaction occurred to commit or abort each limbo transaction.
8. From the PROMON main menu, choose L (Resolve 2PC Limbo Transactions).
The following menu appears:
        
1  Abort a Limbo Transaction
                    2  Commit a Limbo Transaction
                    Q  Quit
             Enter choice>
9. Commit or abort the transaction.
a. To commit the transaction, choose 2 (Commit a Limbo Transaction). PROMON prompts you to enter the user number you recorded in , then press RETURN.
PROMON displays a message similar to the following:
User 1: commit transaction and disconnect.
b. To abort the transaction, choose 1 (Abort a Limbo Transaction). PROMON prompts you to enter the user number of the transaction you want to abort. Enter the user number, then press RETURN.
Repeat through for all the limbo transactions. After you commit or abort all of the limbo transactions, they are resolved.