今天,我们来学习一下Oracle数据库的增量备份如何操作,前面我们已经讲解过差异增量备份和累计增量备份的概念和区别,下面我们先来看看他们的备份语句:
零级备份
backup incremental level 0 database;
一级差异增量
backup incremental level 1 database;
一级累计增量
backup incremental level 1cumulativedatabase;
备份各有差别,那么我们在进行数据库备份时,就必须讲求策略,一个比较经典的备份策略是:
1、每半年做一次数据库的全备份(包括所有的数据和只读表空间);
2、每一个月做一次零级备份(不包含只读表空间);
3、每个星期做一次一级备份;
4、每天做一次二级备份。
另外,有一点必须注意,如果我们使用的是CATALOG方式备份,就需要注意数据库是否有更改操作,如添加数据文件或修改表空间为只读等等。就必须重新同步到CATALOG目录并重新备份。
下面我们来看看备份的脚本语句:
全库备份脚本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup database format 'E:\rmdatabase\db0_%d_%U.bak'
include current controlfile;
sql 'alter system archive log current';
release channel c1;
release channel c2;
release channel c3;
}
在RMAN中,对控制文件的备份有多种方法,其中最简单的是将CONFIGURE CONTROLFILE AUTOBACKUP 设置为 ON,并使用如下语句设置路径和格式:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\RMDATABASE\C_%F'
设置完成后,当RMAN在执行BACKUP或COPY命令时,RMAN会对控制文件进行一次自动备份。也就是说,如果你设置了控制文件自动备份,那么上面的备份脚本中的 include current controlfile 可以省略掉。
0级备份脚本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 0 database format 'E:\rmdatabase\db0_%d_%U.bak';
database skip readonly;
sql 'alter system archive log current';
release channel c1;
release channel c2;
release channel c3;
}
在这里,我们跳过只读表空间进行备份。
1级备份脚本
run{
allocate channel c1 type disk;
backup incremental level 1 database format 'E:\rmdatabase\db1_%d_%U.bak'
database skip readonly;
sql 'alter system archive log current';
release channel c1;
}
2级备份脚本只需要将level 1改为level 2 。
当我们备份完后,并不是万事大吉了,还需要及时对备份和归档日志进行转存及对其有效性进行校验。不然,哪一天数据库崩了,备份又失效,到那时神仙都很难搭救你了。
最后,在数据恢复方面,以我们经典的备份策略为例,恢复时最多需要的备份有:当月的一个零级备份+三个一级备份+6个二级备份+当天的归档日志文件。在理论上,对于当前备份的以前的归档日志文件是可以删除的,但是我们建议保留一段合理的时间及存储空间允许范围内的归档日志文件,这是为了进一步的安全以及以后需要(如使用LOGMNR查找所需信息)。
领取专属 10元无门槛券
私享最新 技术干货