Suppose , DDL change happened to the database at 5 PM, and if you are trying to flashback to 4 PM,( before the DDL change), then flashback will fail with ORA-01466 error.
So flashback is possible only to a timestamp after the DDL change.
16:00:00 SQL> select count(*) from test1; COUNT(*) ---------- 135932 17:00:00 SQL> truncate table test1; Table truncated.
SQL> FLASHBACK TABLE test1 TO TIMESTAMP TO_TIMESTAMP('2023-07-12 16:30:00', 'YYYY-MM-DD HH24:MI:SS'); FLASHBACK TABLE test1 TO TIMESTAMP TO_TIMESTAMP('2023-07-12 16:30:00', 'YYYY-MM-DD HH24:MI:SS') * ERROR at line 1: ORA-08189: cannot flashback the table because row movement is not enabled 16:00:00 SQL> select count(*) from test1; COUNT(*) ---------- 135932 17:00:00 SQL> truncate table test1; Table truncated.
SQL> FLASHBACK TABLE test1 TO TIMESTAMP TO_TIMESTAMP('2023-07-12 16:30:00', 'YYYY-MM-DD HH24:MI:SS'); FLASHBACK TABLE test1 TO TIMESTAMP TO_TIMESTAMP('2023-07-12 16:30:00', 'YYYY-MM-DD HH24:MI:SS') * ERROR at line 1: ORA-08189: cannot flashback the table because row movement is not enabled
SQL> alter table test1 enable row movement; Table altered. SQL> FLASHBACK TABLE test1 TO TIMESTAMP TO_TIMESTAMP('2023-07-12 16:30:00', 'YYYY-MM-DD HH24:MI:SS'); FLASHBACK TABLE test1 TO TIMESTAMP TO_TIMESTAMP('2023-07-12 16:30:00', 'YYYY-MM-DD HH24:MI:SS') * ERROR at line 1: ORA-01466: unable to read data - table definition has changed