1、增量備份
增量備份主要作用是僅復制自上次備份以來已更改的數據塊。您可以使用RMAN創建數據文件,表空間或整個數據庫的增量備份。
將增量備份作為策略的一部分的主要原因是:
-
用於基於增量更新備份的策略,其中這些增量備份用於定期前滾數據庫的映像副本;
-
減少每日備份所需的時間;
-
通過網絡備份時節省網絡帶寬;
-
能夠恢復使用
NOLOGGING
選項創建的對象的更改。例如,直接插入不會創建重做日志並且無法使用介質恢復重現其更改的數據條目。但是,它們會更改數據塊,因此會通過增量備份進行還原; - 能夠將物理備用數據庫與主數據庫同步
您可以使用RMAN BACKUP INCREMENTAL FROM SCN
命令在主數據庫上創建備份,該備份從備用數據庫的當前SCN開始,備庫可用該備份前滾備用數據庫。
-
減少非歸檔數據庫的備份大小。您可以進行增量備份,而不是每次都進行完整的數據庫備份。
與完全備份一樣,如果您處於
ARCHIVELOG
模式,則可以在數據庫打開時進行增量備份; 如果數據庫處於NOARCHIVELOG
模式,則只能在一致關閉后進行增量備份。
Note:完整備份(full backup)不能成為增量備份策略的一部分; 也就是說,它不能是后續增量備份的父級。
2、增量備份算法
數據文件中的每個數據塊都包含一個系統更改號(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;
3、多級增量備份
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)可分兩種:
- 差異增量備份(A differential incremental backup ):備份上一次備份(0或1級備份)后發生變化的數據;
默認1級備份是差異增量備份,級別0的增量備份可以是備份集或映像副本,但級別1的增量備份只能是備份集。
圖1-差異增量備份
說明:
星期天:0級備份將備份此數據庫中曾使用過的所有塊
周一至周六:在星期一到星期六的每一天,1級差異增量備份將備份自級別1或0的最新增量備份以來已更改的所有塊。星期一備份復制自星期日0級備份以來更改的塊,星期二備份復制塊自星期一1級備份以來發生了變化,等等
使用方法:
RMAN>backup incremental level 1 database format '/RmanBackup/1-%d.%s.%p.%T';
- 累計增量備份(A cumulative incremental backup):用於備份上一次0級備份以后所有發生變化的數據;
圖2-累計增量備份
說明:
星期天:0級備份將備份此數據庫中曾使用過的所有塊
周一至周六:累積增量級別1備份會復制自最近的0級備份以來更改的所有塊。由於最新的0級備份是在星期日創建的,因此星期一到星期六每天的1級備份會備份自星期日備份以來更改的所有塊。
使用方法:
RMAN>backup incremental level 1 cumulative database format '/RmanBackup/1c-%d.%s.%p.%T';
Note:當恢復時間比磁盤空間更重要時,累積備份優於差異備份,因為備份的數量越少恢復時間越快。
4、使用增量備份恢復數據
- 在介質恢復期間,RMAN會檢查還原的文件,以確定是否可以使用增量備份來恢復它們。如果可以選擇,那么RMAN總是選擇增量備份而不是歸檔重做日志,因為在塊級別恢復比日志重做要快。
例如,可以通過0級備份還原(restore)數據文件,然后通過1級增量備份恢復(recover)它們。
- 使用增量備份策略,只需要創建一個初始級別0的完整備份和隨后的1級增量備份。初始備份和后續增量必須是RMAN備份集,而不是數據副本(copy)。
Note:使用增量備份完整恢復數據庫,需要至少一個0級備份、少量增量備份和一些歸檔重做日志。
5、查詢rman備份進度的sql
備份過程百分比(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;