两篇文章、两个角度,由浅入深。首先来看第一篇。
引自:http://smailes.blog.51cto.com/28248/45813
增量备份(incremental backup)
增量备份比完全备份快得多。在进行增量备份,只有那些在上次完全或者增量备份后被
修改了的文件才会被备份。正是由于这个原因,增量备份所需时间仅为完全备份的几分之一
。为了确认一个文件是否在上次完全备份后被修改,备份软件会检查一个叫做归档位(arch
ive bit)的设置项。
当一个文件以任何形式被更改或者从一个位置拷贝到了另一个位置,归档位都会记录下
这一变化,以便这个文件在下次备份时被包含在内。完全备份在进行前不会关心这些文件的
归档位是否已经被设置,不过完全备份会在完成后清除归档位。任何在随后时间里被修改过
的文件又会在归档位中记录下来。
差量备份(differential backup)不会在备份完成后清除归档块,而增量备份会在完成
后清除归档块,这样就能避免有些文件不必要地再次被备份。使用归档块还能使用户真实地
查看到那些文件需要备份。
速度更快的备份也需要付出有些代价——在这个情况下, 就是恢复的时间。当从增量备
份里恢复时,用户需要最近一次的完全备份和自此以后的所有增量备份。例如,如果用户在
星期五进行了完全备份,然后在星期一、星期二、星期三进行了增量备份,然后服务器在星
期四早上崩溃了,那么用户就需要4盒磁带 - 星期五的完全备份盒星期一、星期二、星期三
的增量备份。
差量备份
差量备份和增量备份往往容易被弄混淆,不过两者之间有一个明显的区别。增量备份会
备份那些自从上次完全备份或者增量备份之后被修改过的文件,差量备份会备份自从上次完
全备份后被修改过的文件。从差量备份中恢复也是很快的,因为只需要两份磁带——最后一
次完全备份和最后一次差量备份。
差量备份在那些拥有充足空间和时间来进行备份的环境中很适用。在进行差量备份时,
软件会寻找那些设置了归档块的文件,然后仅仅备份这些文件。
上面已经讲过了,差量备份拷贝任何自从上次完全备份经过了修改的文件,而完全备份
会清除归档块中的信息,差量备份不会改动归档块的状态。这样做的优点是恢复时只需要2份
磁带就可以进行完全的复原。不利之处是,每次进行差量备份,都非常有可能把那些在上次
完全备份后被修改了,不过在上次差量备份后没有被修改过的文件备份不止一次。
看完上面的内容你应该有个大体的了解了吧。那再来看来下面的、从另一角度解释的文章,你就会比较清楚了……
引自:http://www.qnr.cn/pc/ora/study/200904/142790.html
在rman增量备份中,有差异增量和累积增量的概念
1、概念
差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式
累积增量:是备份上级备份以来所有变化的块
因为累积增量是备份上级备份以来所有变化的数据块,所以累积增量需要更多的备份时间,同时需要较小的恢复时间;而差异增量正好相反,它可以备份同级备份以来变化的数据块。所以会减少备份时间,但需要更多的恢复时间。在oracle 9中增量备份需要通过扫描整个数据库的数据块才能知道哪些数据块发生了变化,这是一个代价很大,时间很长的过程,而且由于增量备份形成多个不同的备份集,使恢复变得更加不可靠,所以增量备份在版本9中仍然不被推荐使用;在10g中,增量备份作了很大的改进,不需要再扫描所有数据块就能得知哪些数据块发生变化,从而大大提升备份效率。但这些却以牺牲磁盘i/o为代价,所以在oltp事务系统中还得衡量是否愿意以i/o为代价来保证安全及高可用性。10g还支持增量合并,增量备份可支持7级增量。
2、备份策略及恢复
以rman多级增量备份来作为备份策略例子:
增量备份都需要一个0级备份来作为基础,0级备份与全备份的区别在于0级可以用来增量恢复,而全备份则不可以。
备份策略:
eg:我们对一星期做如下备份策略 ,那么差异增量只需要使用星期天的0级,星期三的一级,星期四、五的二级就可以恢复,累积增量则需要星期天的0级、星期三的1级,星期五的二级即可进行恢复。以上是一个星期的备份策略,如果做长期的备份策略则只需要把备份的时间延长即可得到新的备份策略,具体需要看自己备份及恢复能够接受的程度而顶,见最后的备份策略典型案例。
星期 | 差异增量 | 累积增量 |
星期天 | 0级 | 0级 |
星期一 | 2级 | 2级 |
星期二 | 2级 | 2级 |
星期三 | 1级 | 1级 |
星期四 | 2级 | 2级 |
星期五 | 2级 | 2级 |
星期六 | 2级 | 2级 |
星期天 | 0级 | 0级 |
零级备份
backup incremental level 0 database;
一级差异增量
backup incremental level 1 database;
一级累计增量
backup incremental level 1 cumulative database;
备份策略典型案例:
每半年做一个数据库的全备份(包括所有的数据和只读表空间)
每一个月做一次零级备份(不包含只读表空间)
每个星期做一次一级备份
每天做一次二级备份
任何数据库的更改需要重新同步CATALOG目录并重新备份(如添加数据文件)或重新备份(如修改表空间为只读)
建议备份一段时间归档日志和定期备份归档到到磁带上
全库备份脚本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup full tag ’dbfull’ format ’/u01/oradata/backup/full%u_%s_%p’ database
include current controlfile;
sql ’alter system archive log current’;
backup fileaperset 3 format ’/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #备份归档可选,可以单独定期备份
release channel c1;
release channel c2;
release channel c3;
}
零级备份脚本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 0 tag ’db0’ format ’/u01/oradata/backup/db0%u_%s_%p’
database skip readonly;
sql ’alter system archive log current’;
backup fileaperset 3 format ’/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #备份归档可选,可以单独定期备份
release channel c1;
release channel c2;
release channel c3;
}
一级备份脚本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 1 tag ’db1’ format ’/u01/oradata/backup/db1%u_%s_%p’
database skip readonly;
sql ’alter system archive log current’;
backup fileaperset 3 format ’/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #备份归档可选,可以单独定期备份
release channel c1;
release channel c2;
release channel c3;
}
如果按照以上备份策略,则每天的所需要备份的数据量只有一天的改变量。而做恢复时最多要恢复当月的一个零级备份+三个一级备份+6个二级备份+当天的归档文件。如果不能接受这样的恢复时间,可以减少零级备份之间的时间间隔。在每次备份后,原则上在该备份点之前的归档日志就可以删除掉了,但是为了进一步的安全以及日后需要(如使用LOGMNR查找所需信息),建议有条件的话,归档日志保存到能够接受的时间点,可以保存在磁带等廉价存取设备上。