While reviewing some material in advance of my presentation at UKOUG Conference 2006, I found an interesting change in RMAN behavior in Oracle 10g.
The difference is in the way RMAN handles the case when an incremental level 1 backup is taken without an available level 0 backup. This probably won’t affect anyone much, but I found it interesting. And actually, there are scenarios in which it might cause issues.
Pre-10g behavior (also in effect in 10g by setting compatibility to < 10.0.0) produces a level 0 backup in case incremental level 1 is run without level 0.
Oracle 10g behavior is to take a level one backup assuming that a checkpoint SCN of the last level 0 backup is the datafile creation SCN.
It doesn’t look like a big deal but imagine the following scenario (I didn’t test it – just thinking logically):
Incremental backup strategy is “standard”.
Sunday – level 0 backup.
Monday-Saturday – level 1 cumulative.
Now, imagine that on Monday there is an issue and the backup is not available anymore — either it’s lost, or recovery with resetlogs has been done. The next incremental backup stores all the blocks, so we have a valid backup — no problem here.
However, the keyword in the backup strategy is cumulative. The next incremental level 1 cumulative backup still doesn’t find the level 0 backup and again copies every block in the database. This continues until the next level 0 backup is taken on Sunday. Assuming DBAs are always unlucky, the backup destination tapes will fill up before the incremental level 1 backup is run. Typical, isn’t it?
How can we avoid this? By taking the level 0 backup first time and not regular level 1.
Note that “differential” (when no cumulative keyword is specified) incremental backup won’t cause any issues, as it takes only those blocks changed since the last incremental backup.