(2011-06-27 11:38:28)
标签:
杂谈
分类:
oracle
在rman增量备份中,有差异增量和累积增量的概念
1、概念
差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式
累积增量:是备份上级备份以来所有变化的块
因为累积增量是备份上级备份以来所有变化的数据块,所以累积增量需要更多的备份时间,同时需要较小的恢复时间;而差异增量正好相反,它可以备份同级备份以来变化的数据块。所以会减少备份时间,但需要更多的恢复时间.在oracle
9中增量备份需要通过扫描整个数据库的数据块才能知道哪些数据块发生了变化,这是一个代价很大,时间很长的过程,而且由于增量备份形成多个不同的备份集,使恢复变得更加不可靠,所以增量备份在版本9中仍然不被推荐使用;在10g中,增量备份作了很大的改进,不需要再扫描所有数据块就能得知哪些数据块发生变化(块跟踪),从而大大提升备份效率。但这些却以牺牲磁盘i/o为代价,所以在oltp事务系统中还得衡量是否愿意以i/o为代价来保证安全及高可用性。10g还支持增量合并,增量备份可支持7级增量。
开启块跟踪功能 (Database Backup and Recovery Basics 4.4.4 Improving Incremental Backup Performance: Change Tracking)
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE
‘/app/oracle/product/oradata/fatdb/rman_chg.log‘ reuse;
Database altered.
需要说明的是10g起oracle官方只推荐使用level 0和level 1级备份,10g还能使用level 2。本文只讨论下level
2的含义,并不推荐使用。
首先看下Oracle官方解释 载至在线文档Database Backup and Recovery Basics 4.4节RMAN
Incremental Backups:
A level 1 incremental backup can be either of the following types:
A differential backup, which backs up all blocks changed after the most
recent incremental backup at level 1 or 0
A cumulative backup, which backs up all blocks changed after the most recent
incremental backup at level 0
Incremental backups are differential by default.
也就是differential 是上次备份(不论是level 0或者level 1)至今的变化数据,这个是level 1的缺省值。而cumulative
是从上次level 0备份后至今的所有的变化数据,也就是说,如果在level 0 至今,中间如果有若干次增量备份(level
1的differential 或者cumulative ),所有的变化内容都将保存在这个增量集中。
集合下图理解:
增量备份的level 1是从上次0或者1至今的变化,而level 2是从上次备份至今的增量,无论是0或者1或者2;
累积备份的level 1是从上次0至今的累积变化,而level 2是上次level 0或者level 1至今的累积增量(包括期间的level
2增量累计和)
这里看一个具体例子:若我们对一个星期做如下备份策略。如果我们要恢复到星期五那天,那么差异增量只需要使用星期天的0级,星期三的1级,星期四、五的2级就可以恢复;累积增量则需要星期天的0级、星期三的1级,星期五的2级即可进行恢复。
从网上载了几个备份脚本
全库备份:
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 filesperset 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 filesperset 3
format ‘/u01/oradata/backup/arch%u_%s_%p‘
archivelog all delete input;
#备份归档可选,可以单独定期备份
release channel c1;
release channel c2;
release
channel c3;
}
1级备份:
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 filesperset 3 format
‘/u01/oradata/backup/arch%u_%s_%p‘
archivelog all delete input;
#备份归档可选,可以单独定期备份
release channel c1;
release channel c2;
release
channel c3;
}
参考资料:
1.ORACLE在线文档
2.http://blog.sina.com.cn/s/blog_4d8a2c970100fxae.html
3.http://jackrui.blog.163.com/blog/static/14951299201072141321938/