Difference between revisions of "Flashback"
From dbawiki
(→How far back can we flashback the database?) |
|||
| Line 73: | Line 73: | ||
===How far back can we flashback the database?=== | ===How far back can we flashback the database?=== | ||
<pre> | <pre> | ||
| + | col oldest_flashback_scn for 99999999999999999 | ||
select oldest_flashback_scn scn | select oldest_flashback_scn scn | ||
| − | , to_char(oldest_flashback_time, ' | + | , to_char(oldest_flashback_time, 'DD-MON-YYYY HH24:MI:SS') oldest_time |
from v$flashback_database_log | from v$flashback_database_log | ||
/ | / | ||
</pre> | </pre> | ||
Revision as of 19:14, 21 November 2014
Contents
Enable Flashback while database is open (11g+)
SYS@EUDSTGP2> show parameter recover NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /oracle/EUDSTGP2/fra db_recovery_file_dest_size big integer 4122M db_unrecoverable_scn_tracking boolean TRUE recovery_parallelism integer 0 SYS@EUDSTGP2> show parameter flash NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_flash_cache_file string db_flash_cache_size big integer 0 db_flashback_retention_target integer 1440 SYS@EUDSTGP2> select flashback_on, status from v$database, v$instance; FLASHBACK_ON STATUS ------------------ ------------ NO OPEN SYS@EUDSTGP2> alter database flashback on; Database altered. SYS@EUDSTGP2> select flashback_on, status from v$database, v$instance; FLASHBACK_ON STATUS ------------------ ------------ YES OPEN SYS@EUDSTGP2>
Enable flashback
exec dbms_flashback.enable;
Disable flashback
exec dbms_flashback.disable;
Put a session back in time
Note: undo_management must be auto
Note: Take a look at undo_retention to get an idea of how far back you might be able to go.
exec dbms_flashback.enable_at_time(to_date('24-AUG-2012 12:00:00', 'DD-MON-YYYY HH24:MI:SS'));
Set the database recovery directory and size
alter system set db_recovery_file_dest='<path>' scope=both; alter system set db_recovery_file_dest_size=<size> scope=both;
Copy old data into a new table
- Create an empty copy of the source table
create table old_table_data tablespace ts_data as select * from ruined_table where rownum < 1;
- Insert the flashback data into it
insert into old_table_data select * from ruined_table as of timestamp to_timestamp ( '24-AUG-12 12:00:00', 'DD-MON-YY HH24:MI:SS' );
Enable flashback on Standby database
select flashback_on from v$database; alter system set db_recovery_file_dest_size=50G scope=both; alter system set db_recovery_file_dest=’/<directory>/’ shutdown immediate; startup mount; alter database flashback on; show parameter db_flashback_retention_target; alter system set db_flashback_retention_target=2880 scope=both; alter database recover managed standby database cancel;
How far back can we flashback the database?
col oldest_flashback_scn for 99999999999999999 select oldest_flashback_scn scn , to_char(oldest_flashback_time, 'DD-MON-YYYY HH24:MI:SS') oldest_time from v$flashback_database_log /