增量备份主要做用是仅复制自上次备份以来已更改的数据块。您可使用RMAN建立数据文件,表空间或整个数据库的增量备份。html
将增量备份做为策略的一部分的主要缘由是:算法
用于基于增量更新备份的策略,其中这些增量备份用于按期前滚数据库的映像副本;sql
减小每日备份所需的时间;数据库
经过网络备份时节省网络带宽;网络
可以恢复使用NOLOGGING
选项建立的对象的更改。例如,直接插入不会建立重作日志而且没法使用介质恢复重现其更改的数据条目。可是,它们会更改数据块,所以会经过增量备份进行还原;oracle
您可使用RMAN BACKUP INCREMENTAL FROM SCN
命令在主数据库上建立备份,该备份从备用数据库的当前SCN开始,备库可用该备份前滚备用数据库。spa
减少非归档数据库的备份大小。您能够进行增量备份,而不是每次都进行完整的数据库备份。rest
与彻底备份同样,若是您处于ARCHIVELOG
模式,则能够在数据库打开时进行增量备份; 若是数据库处于NOARCHIVELOG
模式,则只能在一致关闭后进行增量备份。日志
Note:完整备份(full backup)不能成为增量备份策略的一部分; 也就是说,它不能是后续增量备份的父级。code
数据文件中的每一个数据块都包含一个系统更改号(SCN),它是最近对块进行更改的SCN。在增量备份期间,RMAN读取输入文件中每一个数据块的SCN,并将其与父增量备份的检查点SCN进行比较。若是输入数据块中的SCN大于或等于父级的检查点SCN,则RMAN复制该块。
请注意,若是启用块更改跟踪功能,RMAN能够引用更改跟踪文件以识别数据文件中已更改的块,而无需扫描数据文件的完整内容。启用后提升增量备份的效率,但因为要时刻维护块跟踪,系统在平时会额外增长一点负担。
#开启块更改跟踪 SQL> alter database enable block change tracking; #查看块更改跟踪文件 SQL> select filename from v$block_change_tracking; #关闭块更改跟踪 SQL> alter database disable block change tracking;
RMAN能够建立多级增量备份。每一个增量级别由值0或1表示。
0级增量备份(level 0 incremental backup):至关于全备,能够做为其余增量的父级。
使用方法:
RMAN>backup incremental level 0 database format '/RmanBackup/0-%d.%s.%p.%T';
1级增量备份(level 1 incremental backup)可分两种:
默认1级备份是差别增量备份,级别0的增量备份能够是备份集或映像副本,但级别1的增量备份只能是备份集。
图1-差别增量备份
说明:
星期天:0级备份将备份此数据库中曾使用过的全部块
周一至周六:在星期一到星期六的每一天,1级差别增量备份将备份自级别1或0的最新增量备份以来已更改的全部块。星期一备份复制自星期日0级备份以来更改的块,星期二备份复制块自星期一1级备份以来发生了变化,等等
使用方法:
RMAN>backup incremental level 1 database format '/RmanBackup/1-%d.%s.%p.%T';
图2-累计增量备份
说明:
星期天:0级备份将备份此数据库中曾使用过的全部块
周一至周六:累积增量级别1备份会复制自最近的0级备份以来更改的全部块。因为最新的0级备份是在星期日建立的,所以星期一到星期六天天的1级备份会备份自星期日备份以来更改的全部块。
使用方法:
RMAN>backup incremental level 1 cumulative database format '/RmanBackup/1c-%d.%s.%p.%T';
Note:当恢复时间比磁盘空间更重要时,累积备份优于差别备份,由于备份的数量越少恢复时间越快。
例如,能够经过0级备份还原(restore)数据文件,而后经过1级增量备份恢复(recover)它们。
Note:使用增量备份完整恢复数据库,须要至少一个0级备份、少许增量备份和一些归档重作日志。
备份过程百分比(rman执行进度查看sql): SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, ROUND(SOFAR / TOTALWORK * 100, 2) "%_COMPLETE" FROM gV$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%' AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;