数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle的差异增量备份和累积增量备份


发布日期:2023年08月18日
 
Oracle的差异增量备份和累积增量备份

在rman增量备份中有差异增量和累积增量的概念

概念

差异增量是备份上级及同级备份以来所有变化的数据块差异增量是默认增量备份方式

累积增量是备份上级备份以来所有变化的块

因为累积增量是备份上级备份以来所有变化的数据块所以累积增量需要更多的备份时间同时需要较小的恢复时间而差异增量正好相反它可以备份同级备份以来变化的数据块所以会减少备份时间但需要更多的恢复时间在oracle 中增量备份需要通过扫描整个数据库的数据块才能知道哪些数据块发生了变化这是一个代价很大时间很长的过程而且由于增量备份形成多个不同的备份集使恢复变得更加不可靠所以增量备份在版本中仍然不被推荐使用g中增量备份作了很大的改进不需要再扫描所有数据块就能得知哪些数据块发生变化从而大大提升备份效率但这些却以牺牲磁盘i/o为代价所以在oltp事务系统中还得衡量是否愿意以i/o为代价来保证安全及高可用性g还支持增量合并增量备份可支持级增量

备份策略及恢复

以rman多级增量备份来作为备份策略例子

增量备份都需要一个级备份来作为基础级备份与全备份的区别在于级可以用来增量恢复而全备份则不可以

备份策略

eg我们对一星期做如下备份策略 那么差异增量只需要使用星期天的星期三的一级星期四五的二级就可以恢复累积增量则需要星期天的星期三的星期五的二级即可进行恢复以上是一个星期的备份策略如果做长期的备份策略则只需要把备份的时间延长即可得到新的备份策略具体需要看自己备份及恢复能够接受的程度而顶见最后的备份策略典型案例

星期

差异增量

累积增量

星期天

星期一

星期二

星期三

星期四

星期五

星期六

星期天

备份命令如下

零级备份

backup incremental level database;

一级差异增量

backup incremental level database;

一级累计增量

backup incremental level cumulative database;

备份策略典型案例

每半年做一个数据库的全备份(包括所有的数据和只读表空间)

每一个月做一次零级备份(不包含只读表空间)

每个星期做一次一级备份

每天做一次二级备份

任何数据库的更改需要重新同步CATALOG目录并重新备份(如添加数据文件)或重新备份(如修改表空间为只读)

建议备份一段时间归档日志和定期备份归档到到磁带上

全库备份脚本

run{

allocate channel c type disk;

allocate channel c type disk;

allocate channel c type disk;

backup full tag dbfull format /u/oradata/backup/full%u_%s_%p database

include current controlfile;

sql alter system archive log current;

backup fileaperset format /u/oradata/backup/arch%u_%s_%p

archivelog all delete input; #备份归档可选可以单独定期备份

release channel c;

release channel c;

release channel c;

}

零级备份脚本

run{

allocate channel c type disk;

allocate channel c type disk;

allocate channel c type disk;

backup incremental level tag db format /u/oradata/backup/db%u_%s_%p

database skip readonly;

sql alter system archive log current;

backup fileaperset format /u/oradata/backup/arch%u_%s_%p

archivelog all delete input; #备份归档可选可以单独定期备份

release channel c;

release channel c;

release channel c;

}

一级备份脚本

run{

allocate channel c type disk;

allocate channel c type disk;

allocate channel c type disk;

backup incremental level tag db format /u/oradata/backup/db%u_%s_%p

database skip readonly;

sql alter system archive log current;

backup fileaperset format /u/oradata/backup/arch%u_%s_%p

archivelog all delete input; #备份归档可选可以单独定期备份

release channel c;

release channel c;

release channel c;

}

如果按照以上备份策略则每天的所需要备份的数据量只有一天的改变量而做恢复时最多要恢复当月的一个零级备份+三个一级备份+个二级备份+当天的归档文件如果不能接受这样的恢复时间可以减少零级备份之间的时间间隔在每次备份后原则上在该备份点之前的归档日志就可以删除掉了但是为了进一步的安全以及日后需要(如使用LOGMNR查找所需信息)建议有条件的话归档日志保存到能够接受的时间点可以保存在磁带等廉价存取设备上

上一篇:教你删除Oracle数据库中重复没用的数据

下一篇:Oracle的索引类型