在Flashback Database中创建基于guarantee的restore point，是可以进行快速备份和恢复的方法。这对于RAT中的播放之后的数据库恢复特别有用！
Restore point is nothing but a name associated with a timestamp or an SCN of the database. One can create either a normal restore point or a guaranteed restore point. The difference between the two is that guaranteed restore point allows you to flashback to the restore point regardless of the DB_FLASHBACK_RETENTION_TARGET initialization parameter i.e. it is always available (assuming you have enough space in the flash recovery area).
NOTE: In this article Flashback logging was not turned ON.
Guaranteed Restore point:
Prerequisites: Creating a guaranteed restore point requires the following prerequisites:
The user must have the SYSDBA system privileges
Must have created a flash recovery area
The database must be in ARCHIVELOG mode
Create a guaranteed restore point:
After you have created or migrated a fresh database, first thing to do is to create a guaranteed restore point so you can flashback to it each time before you start a new workload. The steps are as under:
$> su – oracle $> sqlplus / as sysdba; Find out if ARCHIVELOG is enabled SQL> select log_mode from v$database; If step 3 shows that ARCHIVELOG is not enabled then continue else skip to step 8 below. SQL> shutdown immediate; SQL> startup mount; SQL> alter database archivelog; SQL> alter database open; SQL> create restore point CLEAN_DB guarantee flashback database; where CLEAN_DB is the name given to the guaranteed restore point. Viewing the guaranteed restore point SQL> select * from v$restore_point;
Verify the information about the newly created restore point. Also, note down the SCN# for reference and we will refer to it as “reference SCN#”
Flashback to the guaranteed restore point
Now, in order to restore your database to the guaranteed restore point, follow the steps below:
$> su – oracle $> sqlplus / as sysdba; SQL> select current_scn from v$database; SQL> shutdown immediate; SQL> startup mount; SQL> select * from v$restore_point; SQL> flashback database to restore point CLEAN_DB; SQL> alter database open resetlogs; SQL> select current_scn from v$database;
Compare the SCN# from step 9 above to the reference SCN#.
NOTE: The SCN# from step 9 above may not necessarily be the exact SCN# as the reference SCN# but it will be close enough.