My Oracle Support Banner

Rollback Statement Does Not Contain Supplemental Log Data (Doc ID 462948.1)

Last updated on MARCH 12, 2019

Applies to:

Oracle Database - Enterprise Edition - Version to [Release 10.2 to 11.2]
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Database Cloud Exadata Service - Version N/A and later
Information in this document applies to any platform.
This problem can occur on any platform.

NOTE: In the testcase content below, the user information and metadata used represents fictitious data. Any similarity to actual persons, living or dead, is purely coincidental and not intended in any manner.


You use LogMiner to grab the information from Redo logs in source database (SUPPLEMENTAL LOGGING enabled for PK and UI) and apply this to target database. The view V$LOGMNR_CONTENTS doesn't show the complete syntax for SQL_REDO of the 'ROLLBACK' statements (including PK/UI, only ROWID is available, what is not applicable at target database).

connect / as sysdba

alter database add supplemental log data (all) columns;

connect test/test
drop table tab001;
purge recyclebin;

create table tab001 (col001 number);
alter table tab001 add constraint tab001_pk primary key (col001);
alter table tab001 add supplemental log data (primary key) columns;
alter table tab001 add supplemental log data (unique) columns;

insert into tab001 values (1);


  When an application session is aborted (for instance it exists suddenly),  a rollback should occur for any transaction failure. If a transaction is cancelled or fails, then Oracle needs to cleanup the uncommitted work that was done by this transaction so that other transactions can progress. This cleanup involves rolling back  the uncommitted work.
  From LogMiner point of view, the rollback statement is reported by itself as SQL_REDO  and not SQL_UNDO. For an SQL which rolls back, no undo SQL is generated, and the rollback flag is set. For an insert followed by a rollback the view V$LOGMNR_CONTENTS shows:

select scn,
       to_char (timestamp, ' hh24:mi') timestamp,
from   v$logmnr_contents;

For INSERT statement:

---------- -------------- ----------
1330456    16.10.07 13:50          0

insert into "TEST"."TAB001"("COL001") values ('1');

delete from "TEST"."TAB001" where "COL001" = '1' and ROWID = 'AAAM7WAAEAAAACFAAA';

USERNAME                       OPERATION
------------------------------ --------------------------------
TEST                           INSERT

For ROLLBACK statement:

---------- -------------- ----------
1330456    16.10.07 13:50          1

delete from "TEST"."TAB001" where ROWID = 'AAAM7WAAEAAAACFAAA';


USERNAME                       OPERATION
------------------------------ --------------------------------
TEST                           DELETE

==> For the "delete" statement  reported as SQL_REDO , the ROLLBACK column is set to 1 which means that the delete was executed as part of a rollback operation.




To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!

In this Document

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.