每次备份仅操作变化的数据块.首先要有一个基本备份,就是包含所有使用过的数据块的备份,该备份定义为级别0(level=0)
的备份,以后进行的增量备份都基于这个基本备份完成的.如果rman在进行增量备份时,发现没有可以参照的基本备份(也就是0级别
的备份),那么rman会自动进行0级别的基本备份操作,并忽略指定的增量级别.
增量备份有5个级别:1,2,3,4,5.而0为基本备份,一般用到的也就是0,1,2这三个级别.两种类型:differential和cumulative方式
差异备份differential
只对那些小于等于当前级别的备份以来变化过的数据块进行备份,来个例子:
周日0点进行0级备份;周一0点,周二0点进行2级别的备份;周三0点进行1级别的备份;周四0点周五0点周六0点进行2级别 备份.那么周日备份所有使用过的数据块;到了周一进行2级备份时,只备份那些小于等于当前级别,也就是小于等于2级别(最近的级别就是周日的0级) 的备份以来所变化的数据块.在这里,也就是周一这天所变化的数据块;到了周二进行2级备份时,小于等于当前2级的,最近的备份就是周一的 2级备份了,所以只备份周二这天发生变化的数据块;到了周三,进行1级备份.则小于等于当前1级的,最近的备份就是周日所做 的备份了.因此,会备份周一周二周三这三天以来变化的数据块;周四进行2级备份,小于等于2级的,最近的就是周三做的1级的备份.所以只会备份周四这一天变化 的数据块;以此类推周五备的就是周五1天变化的数据块;周六备份的是周六这天变化的数据块;到了下周日,则再进行0备,从而备份所有使用过的数据块.
这样的策略下,如果周五数据损坏需要恢复,只要用周日的0级,周三的1级,周四的2级备份,以及周四进行备份以来的归档日志,就能将
数据库恢复到周五发生损坏的时间点上.
如下所示进行差异增量备份:
周日0备
rman>backup incremental level=0 database;
周一二四五六2备
rman>backup incremental level=2 database;
周三1备
rman>backup incremental level=1 database;
累计增量备份
表示每次备份时,值对那些小于当前级别的(差异增备则为小于或等于)最近一次备份以来,变化过的数据块进行
备份,继续上图:
周日备份所有数据块,由于小于2和1的最近备份就是周日的0,so,周一备周一一天变化过的数据块,周二备周一周二变化的块,周三备周一二三三天的
变化块,周四进行2备,小于2的最近增备就是周三的1了,于是只备周四一天的变化块,周五周六备周三以来的变化块,周末来次0备.
周日0备
rman>backup incremental level=0 database;
周一二四五六2备
rman>backup incremental level=2 cumulative database;
周三1备
rman>backup incremental level=1 cumulative database;
10g开始为了加快备份速度,引入一个文件变化跟踪文件(change tracking file)专门记录自从上一次备份以来,所变化过的数据块的地址,
只要有进程修改了某个块,就会通过CTWR进程将数据块的地址写入变化跟踪文件中,只要创建了变化跟踪文件,rman就会自动
使用该文件来进行增量备份,变化跟踪文件完全由oracle来管理.
使用如下命令创建or删除变化跟踪文件:
rman>alter database enable/disable block change tracking using file 'd:\oracle\rman_change_track.file';
文件最小为10m,最小扩展10m,可查询视图v$block_change_tracking来确定是否启用了跟踪变化文件.
select * from v$block_change_tracking
增量备份有5个级别:1,2,3,4,5.而0为基本备份,一般用到的也就是0,1,2这三个级别.两种类型:differential和cumulative方式
差异备份differential
只对那些小于等于当前级别的备份以来变化过的数据块进行备份,来个例子:
周日0点进行0级备份;周一0点,周二0点进行2级别的备份;周三0点进行1级别的备份;周四0点周五0点周六0点进行2级别 备份.那么周日备份所有使用过的数据块;到了周一进行2级备份时,只备份那些小于等于当前级别,也就是小于等于2级别(最近的级别就是周日的0级) 的备份以来所变化的数据块.在这里,也就是周一这天所变化的数据块;到了周二进行2级备份时,小于等于当前2级的,最近的备份就是周一的 2级备份了,所以只备份周二这天发生变化的数据块;到了周三,进行1级备份.则小于等于当前1级的,最近的备份就是周日所做 的备份了.因此,会备份周一周二周三这三天以来变化的数据块;周四进行2级备份,小于等于2级的,最近的就是周三做的1级的备份.所以只会备份周四这一天变化 的数据块;以此类推周五备的就是周五1天变化的数据块;周六备份的是周六这天变化的数据块;到了下周日,则再进行0备,从而备份所有使用过的数据块.
这样的策略下,如果周五数据损坏需要恢复,只要用周日的0级,周三的1级,周四的2级备份,以及周四进行备份以来的归档日志,就能将
数据库恢复到周五发生损坏的时间点上.
如下所示进行差异增量备份:
周日0备
rman>backup incremental level=0 database;
周一二四五六2备
rman>backup incremental level=2 database;
周三1备
rman>backup incremental level=1 database;
累计增量备份
表示每次备份时,值对那些小于当前级别的(差异增备则为小于或等于)最近一次备份以来,变化过的数据块进行
备份,继续上图:
周日备份所有数据块,由于小于2和1的最近备份就是周日的0,so,周一备周一一天变化过的数据块,周二备周一周二变化的块,周三备周一二三三天的
变化块,周四进行2备,小于2的最近增备就是周三的1了,于是只备周四一天的变化块,周五周六备周三以来的变化块,周末来次0备.
周日0备
rman>backup incremental level=0 database;
周一二四五六2备
rman>backup incremental level=2 cumulative database;
周三1备
rman>backup incremental level=1 cumulative database;
10g开始为了加快备份速度,引入一个文件变化跟踪文件(change tracking file)专门记录自从上一次备份以来,所变化过的数据块的地址,
只要有进程修改了某个块,就会通过CTWR进程将数据块的地址写入变化跟踪文件中,只要创建了变化跟踪文件,rman就会自动
使用该文件来进行增量备份,变化跟踪文件完全由oracle来管理.
使用如下命令创建or删除变化跟踪文件:
rman>alter database enable/disable block change tracking using file 'd:\oracle\rman_change_track.file';
文件最小为10m,最小扩展10m,可查询视图v$block_change_tracking来确定是否启用了跟踪变化文件.
select * from v$block_change_tracking
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25025926/viewspace-1065046/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25025926/viewspace-1065046/