天天看點

增量備份

        增量備份,是指在完整備份的基礎上,每次隻是備份自上次備份以來被修改過的資料塊。增量備份政策不能用于映像備份,因為映像備份總是對于所有的資料檔案。增量備份可以是資料庫、資料檔案和表空間三個級别。

一、增量備份的種類

第一、累積增量備份

        累積增量備份是指自累積備份自上次完整資料庫備份或上一次LEVEL 0差異增量備份以來所修改過的資料塊.

增量備份

第二、差異增量備份

增量備份

        差異增量備份有分為level 0和level1兩種。

        其中,level 0是指在上一次完整備份或level 0級别的差異增量備份的基礎上進行的第一次差異備份,期間會掃描所有的資料塊,判斷自上次完整備份後有哪些資料塊被更新過,然後,對這些資料塊進行備份。

        而level 1是指自上一次level 0或level 1差異備份之後,有哪些資料塊被更新過,然後備份這些資料塊。如果沒有進行過level 0 的備份則會先進行level 0的備份。期間,如果沒有啟動塊修改跟蹤特性(Block Change Tracking)的話,将會有進行對所有資料塊的掃描。為此,為了提高性能,自10g以來增加了Block Change Tracking檔案,來儲存自上次level 0或level 1以來更新的所有資料塊記錄。

檢視是否啟動了Block Change Tracking:

SQL> select status from v$block_change_tracking;
STATUS
----------
DISABLED
           

啟動Block Change Tracking:

SQL> alter database enable block change tracking using file  'rman_inc.trk';

Database altered.
           

關閉Block Change Tracking:

SQL> alter database disable block change tracking using file  'rman_inc.trk';

Database altered.
           

檢視Block Change Tracking檔案的位置與大小:

SQL> select * from v$block_change_tracking;

STATUS     FILENAME                                                BYTES
---------- -------------------------------------------------- ----------
ENABLED    D:\APP\ASUS\PRODUCT\11.2.0\DBHOME_1\DATABASE\RMAN_   11599872
           INC.TRK
           

三、增量備份原理

1、查找更新過的資料塊

     首先需要知道的是,每個資料塊都有一個block scn,該scn記錄的是該資料塊最近一次被修改的時間。然後跟最近的一次備份對應的備份時間SCN進行比較,如果block scn大于或等于scn說明該資料塊被修改過,需要進行備份。如果已經開啟了block change tracking功能而且已經進行過LEVEL 0級别的備份,則這些block就會被記錄在block change tracking檔案中。以便下一次LEVEL 1的時候使用。

2、增量備份原理

     每次LEVEL 1備份後,都會參照前一次增量備份LEVEL 1或LEVEL 0的備份資料的SCN,也就是incremental start scn 。對于目前所有的資料塊,如果資料塊的block scn比incremental start scn大或等于其的資料塊都會是本次LEVEL 1備份的對象,然後就備份這些資料塊。

3、利用增量備份進行恢複的原理

     介紹前需要了解兩點:

第一,每個資料檔案都有一個checkpoint_change#,可以通過v$datafile_checkpoint_change#來檢視。該資料檔案中的所有資料塊的block scn都必須小于或等于該checkpoint_change#.

第二,每個備份集,包括增量備份集、全量備份集,其中的資料都是資料檔案在某個時間點中的資料塊,也就是其中的所有資料塊的block scn都是一樣的。在這裡稱其為backup_change#。

     原理:恢複的時候,相當于複制這些備份集中的資料塊到對應的資料檔案中,覆寫原有資料塊,同時修改資料塊頭的checkpoint_change#以及控制檔案中的對應資料檔案記錄的checkpoint_change#。

    應用:該備份可以用來修複nologging操作可能帶來的非一緻性風險。因為增量備份是應用所有修改的資料塊,nologging的資料塊是新的,也就是修改過的,也是增量備份的對象。是以,進行完nologging操作的批量插入操作之後,通常需要進行一次增量備份。

     增量備份的優勢:

第一,如果恢複的時候,有兩條路選擇:一是,通過備份的歸檔日志檔案進行前滾的方式修複;一是,通過複制應用增量備份的資料來恢複。那麼增量備份因為方式簡單,而使得比redo修複更有效率;

第二,由于映像檔案是可以直接使用,不像備份檔案那樣需要先進行還原操作。為此,如果如果可以的話,可以用映像檔案跟增量備份檔案結合,減少還原資料量,進而提高還原恢複的效率。