目录
LLL的数据库培训-68-第四部分—Oracle RMAN备份恢复—高级篇—第1讲—增量备份功能—分级增量备份
一、RMAN有3个增量备份功能:
1、分级增量备份
在使用分级增量备份功能时,RMAN仅会备份上次备份操作后被修改的数据块。分级增量备份可以应用于整个数据库、表空间和数据文件。分级增量备份是最常用的RMAN增量备份功能。
2、增量更新备份
增量更新备份是独立于分级增量备份的功能。使用该功能可以为数据文件创建镜像副本,然后使用增量备份更新这些镜像副本。
这可以高效地实现和维护备份策略中的镜像副本。你只需创建一次镜像副本,然后通过增量备份将镜像副本更新到最新状态。
3、块修改跟踪。
块修改跟踪是另一种专门用来提高增量备份性能的功能。其思路是使用OS文件记录上次备份操作后被修改的数据块。
在执行增量备份操作时,RMAN可以使用块修改跟踪文件快速找到需要备份的数据块。这个功能可以大幅度提高增量备份操作的性能。
二、分级增量备份(差异型和累计型)
RMAN通过分级实现增量备份。
从Oracle Database 10g开始,在说明文档中增量备份只有两个等级:0级和1级。
之前的Oracle版本提供了5个等级: 0~ 4级。现在仍旧可以使用这些等级(0-4级)但是Oracle文档没有介绍它们。
你必须先使用0级备份创建增量备份的基础,然后才能执行1级增量备份操作。我们下面只讲0/1级备份。+
1、0级全量备份
完全备份就是对数据库使用过的所有数据块进行备份,没有使用过的数据块是不做备份的。
在进行完全备份时,rman将数据文件中所有的非空白数据块都复制到备份集中
rman可对数据文件进行完全备份或者增量备份,但是对控制文件和日志文件(归档日志)只能进行完全备份。
在一个完全数据库备份中,将所有的数据库文件都复制到闪回恢复区。
2、1级差异增量备份
如果每周周日对数据库做级别为0的增量备份,即备份数据库中所有被使用的数据块,其余每天对数据库做差异增量备份,即周一备份相对周日的增量备份发生数据变化的数据块,周二备份相对于周一的增量备份发生数据变化的数据块,…,以此类推。备份策略应该如下图:
3、1级累积增量备份
如果每周周日对数据库做级别为0的增量备份,即备份数据库中所有被使用的数据块,其余每天对数据库做累积增量备份,即周一备份相对周日的增量备份发生数据变化的数据块,周二也备份相对于周日的增量备份发生数据变化的数据块,…,以此类推。备份策略应该如下图:
4、差异性增量备份和累积性增量备份区别
(1)数据量区别
差异型备份(默认设置)的尺寸较小,但是执行恢复操作时会花更多时间。 累积型备份的尺寸较大,但是执行恢复操作时花费的时间较少。
(2)增量原理
执行差异型1级增量备份操作,会使RMAN备份上次1级或0级增量备份操作后被修改的数据块,
执行累积型1级增量备份操作,会使RMAN备份上次0级备份操作后被修改的数据块。事实上,累积型增量备份操作会忽略所有1级增量备份操作。
三、增量备份语法
1、差异增量备份
RMAN> backup incremental level=0 database; RMAN> backup incremental level=1 database;
2、累积增量备份
RMAN> backup incremental level=0 database; RMAN> backup incremental level=1 cumulative database;
四、案例1—差异增量备份与恢复
1、数据准备
create tablespace test_tbsp datafile '/oracle/oradata/test01.dbf' size 10m autoextend on; create user test identified by 123 default tablespace test_tbsp; grant dba to test; conn test/123; create table test1(id number,name varchar2(10)); insert into test1 values(1,'LLL01'); insert into test1 values(2,'LLL02'); commit;
2、差异增量备份
(1)做全量0级备份
rman> backup incremental level=0 database;
(2)插入新数据
conn test/123; insert into test1 values(3,'LLL03'); commit;
(3)做差异增量备份
rman> backup incremental level=1 database;
(4)插入新数据
insert into test1 values(4,'LLL04'); commit;
(5)做差异增量备份
rman> backup incremental level=1 database;
3、数据库文件删除,并做恢复
(1)删除文件
rm -rf tes01.dbf
(2)数据库恢复
rman > restore database; rman> recover database;
五、案例2—累计增量备份与恢复
1、数据准备
create tablespace test_tbsp2 datafile '/oracle/oradata/test02.dbf' size 10m autoextend on; create user test2 identified by 123 default tablespace test_tbsp; grant dba to test2; conn test2/123; create table test2(id number,name varchar2(10)); insert into test2 values(1,'LLL01'); insert into test2 values(2,'LLL02'); commit;
2、累计增量备份
(1)做全量0级备份
rman> backup incremental level=0 database;
(2)插入新数据
insert into test2 values(3,'LLL03'); commit;
(3)做累计增量备份
rman> backup incremental level=1 cumulative database;
(4)插入新数据
insert into test2 values(4,'LLL04'); commit;
(5)做累计增量备份
rman> backup incremental level=1 cumulative database;
3、数据库文件删除,并做恢复
(1)删除文件
rm -rf test02.dbf
(2)数据库恢复
rman > restore database; rman > recover database;