Corruption in Rollback With Clusterwide Global Transactions in RAC
Corruption in Rollback With Clusterwide Global Transactions in RAC
Corruption in Rollback With Clusterwide Global Transactions in RAC
1
Copyright (c) 2021, Oracle. All rights reserved. Oracle Confidential.
In this Document
Description
Occurrence
Symptoms
Workaround
Patches
History
References
APPLIES TO:
Oracle Database - Enterprise Edition - Version 11.1.0.6 to 11.2.0.3 [Release 11.1 to 11.2]
Oracle Database Cloud Schema Service - Version N/A and later
DESCRIPTION
Database Block Corruption during ROLLBACK to <SAVEPOINT> when updating a RAC database with Clusterwide Global
Transactions (database link or XA transaction).
OCCURRENCE
This affects only systems configured with Real Application Cluster (RAC) when using Cluster Wide Transactions and ROLLBACK
to <SAVEPOINT> within the transaction.
SYMPTOMS
Block corruption at a RAC database when some other database updates more than one of the instances using a Cluster Wide
Transaction: via a database link or XA transaction and ROLLBACK to SAVEPOINT was executed.
This may manifest in the client database producing errors like ORA-2055, ORA-2063 (that may also be printed in the client
database alert log) and the current cursor is a ROLLBACK to a SAVEPOINT:
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=17xl0hlc3z_1201&id=1527740.1 1/2
8/10/2021 Document 1527740.1
The affected database may then produce different errors but not limited to:
ORA-600 [ktbsdp1]
ORA-600
[kghfrempty:ds]
ORA-600
[kdourp_inorder1]
ORA-600
on call stack
[4156] with ktcrsp1
ORA-600
[6101] or [6110] when db_block_checking is enabled.
[kdBlkCheckError] with check codes
Clusterwide global transactions are a new feature in 11g to allow XA transactions to be more transparent on RAC databases.
Basically, a clusterwide global transaction is a distributed transaction which has done some work (and thus has a local
transaction) in each of two or more instances of a RAC database. With _clusterwide_global_transactions=true (the default),
Oracle treats these two local transactions as a single transaction. With _clusterwide_global_transactions=false, Oracle treats
them as separate transactions coordinated by two-phase commit.
1. Using XA to provide a global transaction id which allows multiple sessions to operate within the same global transaction,
OR:
2. Using a loopback database link to connect to a different instance in the cluster.
WORKAROUND
Set _clusterwide_global_transactions=false (at the RAC database). Setting this parameter to false does not affect
performance.
PATCHES
HISTORY
REFERENCES
NOTE:13605839.8 - Bug 13605839 - ORA-600 [ktbsdp1] ORA-600 [kghfrempty:ds]. Corruption in Rollback with Clusterwide
Global Transactions in RAC
BUG:13605839 - CORRUPTION
IN ROLLBACK: ORA-600 [KTBSDP1] AND ORA-600 [KGHFREMPTY:DS]
Didn't find what you are looking for?
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=17xl0hlc3z_1201&id=1527740.1 2/2