The key difference
- Guaranteed restore point does not need explicitly flashback on, where in the normal restore point does
- Guaranteed restore point requires less I/O as compared to the normal restore point due to the fact that flashback log maintains only one copy of block image before it get modified. where in the normal restore point maintains the different block versions at different timestamp
- This does mean that, guaranteed restore point does not get your database flashback to different point in time, it does flashback your database at that particular point of time when the guaranteed restore point created
- You can have normal and guaranteed restore points in the database. if a normal restore point is created first and then guaranteed restore point created later then the database can be flashbacked to different point in times.
- No logging operations i.e direct path inserts etc will have same affect on both normal and guaranteed restore point
- Flashback area will not be cleared if you have guaranteed restore point, where in the space will be cleared in normal restore point adhering to DB_FLASHBACK_RETENTION_TARGET
- The size of the flashback log is equal to the flashback log buffer generally the redo log buffer size in both cases, but the volume is different i.e number of flashback logs can vary due to the fact that guaranteed restore point will generate less flashback log
- Only flashback database operations will use the flashback logs and archivelogs, rest all flashback operations like flashback query,table,as of uses undo
- Redo logs are required for both types since the redo log files will need to apply the changes (i.e rollforward the changes) to the block that has been flashbacked during flashback operation. For example in general case when flashback is on
- When the block is modified it will be kept in flashback buffer (a part of shared pool) before it get modified
- RVWR flushes that block to flashback log, remember only changed blocks will get recorded into the flashback buffer, but redo will maintain all information about database
- For example this, flashback block will contains SCN 1 to SCN 10
- When you want to flashback to particular SCN 5,
- Flashback operation will perform the operation until 1 mean flashback until SCN 1 and then uses redo to reapply the changes from 1 to 5 for that block.
- hence redo is required to get the block to consistent state with that of all other blocks.
Thanks to my friend who asked me this question yesterday and it let me to writeup some notes on it for all benefit.
-Geek DBAGeek DBA
Follow Me!!!