2007/12/06

增量追加备份:前滚镜像拷贝 explain

RUN {
RECOVER COPY OF DATABASE WITH TAG 'incr_update';
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE;
}

增量追加备份:前滚镜像拷贝
ORACLE文档原文:Incrementally Updated Backups: Rolling Forward Image Copy Backups。
增量追加备份工作原理:首先创建一个文件镜像拷贝,然后定期把从上次镜像拷贝最大SCN以来变化的数据块追加到镜像拷贝文件中。增量追加备份可以达到快速恢复的目的,如果是每天进行增量追加的话,在进行恢复的时候,我们最多应用一天的REDO数据就可以完成恢复。
创建增量追加备份,格式如下:
BACKUP... FOR RECOVER OF COPY WITH TAG
一个基础的增量追加备份示例:简称basic脚本
RUN {
RECOVER COPY OF DATABASE WITH TAG 'incr_update';
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update'
DATABASE;
}
为了理解上述脚本,我们先看一下如果没有数据文件拷贝和增量备份运行这两个脚本的情况。
1、如果没有LEVEL0备份或者备份文件拷贝,执行BACKUP INCREMENTAL LEVEL 1... FOR RECOVER OF COPY WITH TAG...不能产生LEVEL1增量备份文件,但是RMAN会按照指定的tag在DATAFILE对应的目录下创建一分镜像文件拷贝。
2、如果没有LEVEL0备份或者备份文件拷贝,执行RECOVER COPY OF DATABASE WITH TAG...则生成一些信息但是不产生错误。

我们看一下整个basic脚本的执行情况:
第一次运行该脚本没有数据文件拷贝和增量备份所以执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'没有任何结果;执行BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE将产生数据文件的镜像文件拷贝。
第二次运行该脚本,由于第一次运行的时候BACKUP INCREMENTAL LEVEL 1... FOR RECOVER OF COPY WITH TAG...命令产生一个镜像文件拷贝,但是没有LEVEL1的增量备份,所以执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'还是没有任何结果;执行BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE将产生LEVEL1增量备份。
第三次运行该脚本,执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'命令将把第二次执行该脚本产生的LEVEL1增量备份追加到镜像文件拷贝,同时又产生一个新的LEVEL1增量备份文件。
以后再执行该脚本都是把上次产生的LEVEL1的增量备份追加到镜像文件拷贝,然后再产生一个新的LEVEL1的增量备份文件。

如果需要恢复,我们首先恢复镜像文件拷贝和最后一次LEVEL1增量备份,最后应用REDO。

No comments: