增量備份主要做用是僅複製自上次備份以來已更改的數據塊。您可使用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;