Prior to Oracle 21c, it was not possible to flashback the database to a point before the shrink datafile operation.
SQL*Plus: Release 19.0.0.0.0 – Production on Wed Sep 15 17:25:54 2021
Version 19.9.0.0.0
SQL> select current_scn,flashback_on from v$database;
CURRENT_SCN FLASHBACK_ON
———– ——————
2557655 YES
SQL> select bytes from v$datafile where file#=1;
BYTES
———-
999153664
SQL> alter database datafile 1 resize 996147200;
Database altered.
SQL> startup mount force;
ORACLE instance started.
Total System Global Area 2.0200E+10 bytes
Fixed Size 19766544 bytes
Variable Size 2617245696 bytes
Database Buffers 1.7515E+10 bytes
Redo Buffers 47341568 bytes
Database mounted.
SQL> flashback database to scn 2557655;
ORA-38766: cannot flashback data file 1; file resized smaller
ORA-01110: data file 1:
‘/oracle19cR9/base/oradata/DB19R9/datafile/o1_mf_system_jn3s5rmk_.dbf’
In Oracle version 21c, an improvement has been made in this area, and now it is possible to flashback the database even after performing the shrink operation.
SQL*Plus: Release 21.0.0.0.0 – Production on Wed Sep 15 04:47:02 2021
Version 21.3.0.0.0
SQL> select current_scn,flashback_on from v$database;
CURRENT_SCN FLASHBACK_ON
———– ——————
27241819 YES
SQL> select bytes from v$datafile where file#=1;
BYTES
———-
1547042816
SQL> alter database datafile 1 resize 1447034880;
Database altered.
SQL> startup mount force;
ORACLE instance started.
Total System Global Area 2634021776 bytes
Fixed Size 9690000 bytes
Variable Size 1442840576 bytes
Database Buffers 889192448 bytes
Redo Buffers 292298752 bytes
Database mounted.
SQL> flashback database to scn 27241819;
Flashback complete.
SQL> alter database open resetlogs;
Database altered.
Top comments (0)