Error recovery, historical reporting, trend analysis, data forensics and fraud detection are just some of the business problems that can be solved by using the Flashback Data Archive feature in Oracle 11g database. The Flashback option can be enabled for the entire database or for a selected set of tables. It can be enabled in the database with no application changes.
At work I usually run performance tests by starting with a clean copy of the database. I analyze the test results at the end of the test, determine the next course of action (tuning), restore the clean copy of the database from a backup, apply the tuning and re-run the performance test. It goes on in a cycle until I'm happy with the overall test result. In some cases especially with large data sets, restoring the database from a backup becomes one of the time consuming tasks. In such situations, using the database flashback to go back to a previously saved restore point saves quite a bit of time. Rest of this blog post demonstrates how to enable database flashback and to go back to a specified restore point. Check Oracle Total Recall with Oracle Database 11g Release 2 white paper for more information on Flashback Data Archive (FDA).
Objective
Revert the entire database to a previously saved state at will
Steps to perform
- Configure the following initialization parameters:
db_recovery_file_dest
&db_recovery_file_dest_size
- Enable Archive Log mode
- Enable database Flashback option
- Create a restore point. Decide whether to create a normal or a guaranteed restore point
--------------------------------------------------------------------------------------------------------
- Finally flashback database to the created restore point when required
Be aware that there will be some performance and storage overhead in using the database flashback. Evaluate all your options carefully before configuring database flashback.
Example
The following example uses guaranteed restore point to flashback the database in a two-node RAC environment. Most of the example is self-explanatory.
% srvctl status database -d DEMO Instance DEMO1 is running on node racnode01 Instance DEMO2 is running on node racnode02 /* stop all the database instances except one (anyone) in RAC config */ % srvctl stop instance -d DEMO -i DEMO2 % export ORACLE_SID=DEMO1 /* put one of the instances in non-cluster mode */ % sqlplus / as sysdba SQL> alter system set cluster_database=false scope=spfile; % srvctl stop instance -d DEMO -i DEMO1 % sqlplus / as sysdba SQL> startup mount /* enable archive log mode */ SQL> alter database archivelog; SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 2 Next log sequence to archive 4 Current log sequence 4 SQL> show parameter db_recovery_file NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string +FRA db_recovery_file_dest_size big integer 512G /* enable flashback option */ SQL> alter database flashback on; SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES /* put the instance back in cluster mode and restart the database */ SQL> alter system set cluster_database=true scope=spfile; SQL> alter database open; % srvctl stop instance -d DEMO -i DEMO1 % srvctl start database -d DEMO /* create a guaranteed restore point */ % sqlplus / as sysdba SQL> create restore point demo_clean_before_test guarantee flashback database; Restore point created. SQL> column NAME format A25 SQL> column TIME format A40 SQL> set lines 120 SQL> select NAME, SCN, TIME, GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE 2 from V$RESTORE_POINT where GUARANTEE_FLASHBACK_DATABASE='YES'; NAME SCN TIME GUA STORAGE_SIZE ------------------------- ---------- ---------------------------------------- --- ------------ DEMO_CLEAN_BEFORE_TEST 17460960 21-AUG-11 01.01.20.000000000 AM YES 67125248 /* flashback database to the saved restore point */ % srvctl stop database -d DEMO % export ORACLE_SID=DEMO1 % rman TARGET / RMAN> STARTUP MOUNT; RMAN> FLASHBACK DATABASE TO RESTORE POINT 'DEMO_CLEAN_BEFORE_TEST'; Starting flashback at 21-AUG-11 using channel ORA_DISK_1 starting media recovery media recovery complete, elapsed time: 00:00:25 Finished flashback at 21-AUG-11 RMAN> ALTER DATABASE OPEN RESETLOGS; database opened RMAN> SHUTDOWN IMMEDIATE; % srvctl start database -d DEMO /* ============================================================================== */ /* alternatively run the following RMAN script as shown below */ % cat restore.rman RUN { STARTUP MOUNT; FLASHBACK DATABASE TO RESTORE POINT 'DEMO_CLEAN_BEFORE_TEST'; ALTER DATABASE OPEN RESETLOGS; SHUTDOWN IMMEDIATE; } EXIT % rman TARGET / cmdfile=restore.rman
Note:
It is not mandatory to enable logging for flashback database in order to create and use restore points. The requirement in such a case is to put the database in ARCHIVELOG mode and creating the first guaranteed restore point when the database is in mounted state.
No comments:
Post a Comment