Oracle 差异、增量、零级备份

时间:2020-11-30
本文章向大家介绍Oracle 差异、增量、零级备份,主要包括Oracle 差异、增量、零级备份使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.概念
差异增量备份自上级及同级备份以来所有更改过的块。
累积增量备份自上级备份以来所有更改过的块。

因为累积增量是备份上级备份以来所有更改过的数据块,所以累积增量备份需要更多的备份时间及较少的恢复时间;差异备份则相反,它可以备份同级备份以来更改过的数据块。所以会减少备份时间,但在恢复时需要更多的时间。

差异增量备份更快,会写出更少的块,产生更小的备份文件。备份过程更快,但在恢复时,RMAN必须过滤并应用每个增量备份。累积增量备份则相反。

Oracle 9中增量备份需要扫描整个数据库的数据块才能知道哪些数据块发生了变化变化,这是一个代价很大,时将很长的过程,而且由于增量备份形成多个不同的备份集,使恢复变得更加不可靠,所以增量备份在版本9中不被推荐使用;在10g中,增量备份作了很大的改进,不需要扫描所有数据块就能得知哪些数据块发生变化,从而大大提升备份效率。但这些却以牺牲磁盘I/O为代价,所以在OLTP事务系统中还得衡量是否愿意以I/O为代价来保证安全及高可用性。10g还支持增量合并,增量备份可支持7级增量。

小插一段:关于Block change tracking

Block Change TrackingOracle 10g的一个新特性,Block Change Tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫毛整个文件以查找变更数据。

为此,Oracle引入了一个新的后台进程,CTWRChange Tracking Writer),用于记录变化的块并将变化写入相应的日志文件中。

启用跟踪:
alter database enable block change tracking using
file 'D:\oracle\product\10.2.0\flash_recovery_area\block_tracking.log'
--如果是采用OMF文件管理方式,则不需要添加using file子句。

查询当前设置:select filename,status,bytes from v$block_change_tracking;

关闭跟踪:alter database
disable block change tracking;
2.备份策略及恢复
RMAN多级增量备份作为备份策略例子:

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

全备份脚本

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;
    }

一级备份脚本

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;
    }

原文地址:https://www.cnblogs.com/biebiejiujiu/p/14061396.html