Oracle® Database Administrator's Guide 11g Release 1 (11.1) Part Number B28310-01 |
|
|
View PDF |
Use the COMMIT
or ROLLBACK
statement with the FORCE
option and a text string that indicates either the local or global transaction ID of the in-doubt transaction to commit.
Note:
In all examples, the transaction is committed or rolled back on the local node, and the local pending transaction table records a value of forced commit or forced termination for theSTATE
column the row for this transaction.This section contains the following topics:
Before attempting to commit the transaction, ensure that you have the proper privileges. Note the following requirements:
User Committing the Transaction | Privilege Required |
---|---|
You | FORCE TRANSACTION |
Another user | FORCE ANY TRANSACTION |
The following SQL statement commits an in-doubt transaction:
COMMIT FORCE 'transaction_id';
The variable transaction_id is the identifier of the transaction as specified in either the LOCAL_TRAN_ID
or GLOBAL_TRAN_ID
columns of the DBA_2PC_PENDING
data dictionary view.
For example, assume that you query DBA_2PC_PENDING
and determine that LOCAL_TRAN_ID
for a distributed transaction is 1:45.13
.
You then issue the following SQL statement to force the commit of this in-doubt transaction:
COMMIT FORCE '1.45.13';
Optionally, you can specify the SCN for the transaction when forcing a transaction to commit. This feature lets you commit an in-doubt transaction with the SCN assigned when it was committed at other nodes.
Consequently, you maintain the synchronized commit time of the distributed transaction even if there is a failure. Specify an SCN only when you can determine the SCN of the same transaction already committed at another node.
For example, assume you want to manually commit a transaction with the following global transaction ID:
SALES.ACME.COM.55d1c563.1.93.29
First, query the DBA_2PC_PENDING
view of a remote database also involved with the transaction in question. Note the SCN used for the commit of the transaction at that node. Specify the SCN when committing the transaction at the local node. For example, if the SCN is 829381993
, issue:
COMMIT FORCE 'SALES.ACME.COM.55d1c563.1.93.29', 829381993;
See Also:
Oracle Database SQL Language Reference for more information about using theCOMMIT
statementBefore attempting to roll back the in-doubt distributed transaction, ensure that you have the proper privileges. Note the following requirements:
User Committing the Transaction | Privilege Required |
---|---|
You | FORCE TRANSACTION |
Another user | FORCE ANY TRANSACTION |
The following SQL statement rolls back an in-doubt transaction:
ROLLBACK FORCE 'transaction_id';
The variable transaction_id is the identifier of the transaction as specified in either the LOCAL_TRAN_ID
or GLOBAL_TRAN_ID
columns of the DBA_2PC_PENDING
data dictionary view.
For example, to roll back the in-doubt transaction with the local transaction ID of 2.9.4
, use the following statement:
ROLLBACK FORCE '2.9.4';
Note:
You cannot roll back an in-doubt transaction to a savepoint.See Also:
Oracle Database SQL Language Reference for more information about using theROLLBACK
statement