【轉】在rman增量備份中,有差別增量和累積增量的概念

   本文轉自hougoo的博客 html

一、概念 sql

差別增量:是備份上級及同級備份以來全部變化的數據塊,差別增量是默認增量備份方式 數據庫

累積增量:是備份上級備份以來全部變化的塊 安全

由於累積增量是備份上級備份以來全部變化的數據塊,因此累積增量須要更多的備份時間,同時須要較小的恢復時間;而差別增量正好相反,它能夠備份同級備份以來變化的數據塊。因此會減小備份時間,但須要更多的恢復時間.在oracle 9中增量備份須要經過掃描整個數據庫的數據塊才能知道哪些數據塊發生了變化,這是一個代價很大,時間很長的過程,並且因爲增量備份造成多個不一樣的備份集,使恢復變得更加不可靠,因此增量備份在版本9中仍然不被推薦使用;在10g中,增量備份做了很大的改進,不須要再掃描全部數據塊就能得知哪些數據塊發生變化(塊跟蹤),從而大大提高備份效率。但這些卻以犧牲磁盤i/o爲代價,因此在oltp事務系統中還得衡量是否願意以i/o爲代價來保證安全及高可用性。10g還支持增量合併,增量備份可支持7級增量。 oracle

開啓塊跟蹤功能 (Database Backup and Recovery Basics 4.4.4 Improving Incremental Backup Performance: Change Tracking) app

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/app/oracle/product/oradata/fatdb/rman_chg.log' reuse; url

Database altered. orm

須要說明的是10g起oracle官方只推薦使用level 0和level 1級備份,10g還能使用level 2。本文只討論下level 2的含義,並不推薦使用。 htm

首先看下Oracle官方解釋 載至在線文檔Database Backup and Recovery Basics 4.4節RMAN Incremental Backups: blog

A level 1 incremental backup can be either of the following types:

A differential backup, which backs up all blocks changed after the most recent incremental backup at level 1 or 0

A cumulative backup, which backs up all blocks changed after the most recent incremental backup at level 0

Incremental backups are differential by default.

也就是differential 是上次備份(不管是level 0或者level 1)至今的變化數據,這個是level 1的缺省值。而cumulative 是從上次level 0備份後至今的全部的變化數據,也就是說,若是在level 0 至今,中間若是有若干次增量備份(level  1的differential 或者cumulative ),全部的變化內容都將保存在這個增量集中。

集合下圖理解:

增量備份的level 1是從上次0或者1至今的變化,而level 2是從上次備份至今的增量,不管是0或者1或者2;

累積備份的level 1是從上次0至今的累積變化,而level 2是上次level 0或者level 1至今的累積增量(包括期間的level 2增量累計和)

RMAN備份等級詳解
RMAN備份等級詳解

這裏看一個具體例子:若咱們對一個星期作以下備份策略。若是咱們要恢復到星期五那天,那麼差別增量只須要使用星期天的0級,星期三的1級,星期4、五的2級就能夠恢復;累積增量則須要星期天的0級、星期三的1級,星期五的2級便可進行恢復。

RMAN備份等級詳解

從網上載了幾個備份腳本

全庫備份:

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

1級備份:

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

相關文章
相關標籤/搜索