RMAN備份詳解

智慧先行者發表於2015-01-11

 

1.7.1資料庫備份與RMAN備份的概念

   

    1.資料庫完全備份:按歸檔模式分為歸檔和非歸檔

        歸檔模式

            開啟狀態,屬於非一致性備份

            關閉狀態,可以分為一致性和非一致性

        非歸檔模式

            開啟狀態,非一致性備份無效

            關閉狀態,一致性備份,非一致性備份不被推薦

    2.RMAN備份     

        RMAN使用伺服器會話來完成備份操作,從RMAN客戶端連線到伺服器將產生一個伺服器會話

        RMAN備份內容包括:整個資料庫,表空間,資料檔案,指定的資料檔案,控制檔案,歸檔日誌檔案,引數檔案等

       

    3.RMAN備份的型別

        完整備份(full) 或增量備份(incremental)

        一致性備份(consistent)或不一致性備份(inconsistent)

        熱備(open)或冷備(closed),冷備時資料庫必須處於mount狀態,冷備可以為一致性備份或非一致性備份

               

        完整備份

            一個或多個資料檔案的一個完整副本,包含從備份開始處所有的資料塊.完整備份不能作為增量的基礎

           

        增量備份

            包含從最近一次備份以來被修改或新增的資料塊.可以分為差異增量備份和累計增量備份

            差異增量備份僅僅包含n級或n級以下被修改過的資料塊。備份資料量小,恢復時間長。

            累計增量備份僅僅包含n-1級或n-1級以下被修改過的資料塊。備份資料量大,恢復時間短。

            0級增量備份相當於一個完整備份,該備份包含所有已用的資料塊檔案,與完整備份的差異是完整備份不能用作級增量備份的基礎

                       

        一致性備份

            備份所包含的各個檔案中的所有修改都具備相同的系統變化編號(system change number,SCN)。

            也就是說,備份所包含的各個檔案中的所有資料均來自同一時間點。

            一致性資料庫完全備份(consis-tent whole database backup)進行還原(restore)後,不需要執行恢復操作(recovery)

       

        非一致性備份

            在資料庫處於開啟(open)狀態時,或資料庫異常關閉(shut down abnormally)後,對一個或多個資料

            庫檔案進行的備份。非一致性備份需要在還原之後進行恢復操作

   

    4.備份集與映象副本

        備份集

            是包含一個或多個資料檔案,歸檔日誌檔案的二進位制檔案的集合.備份集由備份片組成,一個備份集中可以包含一個或多個備份片

            可以通過filesperset引數來設定備份集中可包含的備份片數,

            也可以設定引數maxpiecesize來制定每個備份片的大小。

            備份集中空閒的資料塊將不會被備份,因此備份集可以支援壓縮。備份集支援增量備份,可以備份到磁碟或磁帶。

           

        映象副本

            是資料檔案或歸檔日誌檔案等的完整拷貝,未經過任何壓縮等處理,不能備份到磁帶,也不支援增量備份

            恢復時可以立即使用實現快速恢復

            等同於作業系統的複製命令

            可以作為級增量備份

   

    5.備份路徑

        可以備份到磁碟目錄

        可以備份到磁帶

        閃回區

   

    6.備份限制

        資料庫必須處於mount或open狀態

        不能備份聯機日誌

        在非歸檔模式下僅僅能作乾淨備份,即在乾淨關閉且啟動到mount狀態下備份

        在歸檔模式下,current狀態下資料檔案可以備份

       

     關於更多備份與恢復的概念請參考:Oracle 備份恢復概念

       

1.7.2使用RMAN進行備份

    1.7.2.1備份資料庫

        RMAN> show all;

        RMAN configuration parameters are:

        CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

        CONFIGURE BACKUP OPTIMIZATION OFF; # default

        CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

        CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

        CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

        CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

        CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

        CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

        CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/u01/app/oracle/rmanbak/df_%d_%U';

        CONFIGURE MAXSETSIZE TO UNLIMITED; # default

        CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

        CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

        CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

        CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/10g/dbs/snapcf_orcl.f'; # defaul       

 

        RMAN> backup database format '/u01/app/oracle/rmanbak/whole_%d_%U';  --備份整個資料庫

        RMAN> backup as compressed backupset database format '/u01/app/oracle/rmanbak/whole_%d_%U';--備份整個資料庫並壓縮備份集

 rman>backup database plus archivelog;

rman>backup database plus archivelogdelete all input;

rman>backup as compressed backupset database include current controlfile plus archivelog delete all input;

        RMAN> run{

        allocate channel ch1 type disk                      --手動分配一個通道

        maxpiecesize=2g;                              --指定備份片的大小為2g

        backup as compressed backupset                      --壓縮備份集

        format  '/u01/app/oracle/rmanbak/whole_%d_%U' filesperset=3--指定備份集中允許容納的檔案數為個

         database;

        release channel ch1;}                           --釋放通道

 

        RMAN> configure device type disk parallelism 3;   --將並行度改為

 

        old RMAN configuration parameters:

        CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;

        new RMAN configuration parameters:

        CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;

        new RMAN configuration parameters are successfully stored

 

        RMAN> backup as compressed backupset    --並行度改為之後,自動啟用了個通道

        2> format '/u01/app/oracle/rmanbak/whole_%d_%U' filesperset=3

        3> database;

 

        Starting backup at 14-OCT-10

        allocated channel: ORA_DISK_1

        channel ORA_DISK_1: sid=148 devtype=DISK    --sid值對應v$session檢視中的sid

        allocated channel: ORA_DISK_2

        channel ORA_DISK_2: sid=146 devtype=DISK

        allocated channel: ORA_DISK_3

        channel ORA_DISK_3: sid=144 devtype=DISK

 

        RMAN> run{

        2> allocate channel ch1 type disk

        3> maxpiecesize=100m;   --備份片大小設定為m,則一個備份集包含多個備份片,且每個備份片大小為100m

        4> backup

        5> format '/u01/app/oracle/rmanbak/whole_%d_%U'

        6> database;

        7> release channel ch1;}

 

        RMAN> list backupset tag=TAG20101014T171115;

 

        List of Backup Sets

        ===================

 

        BS Key  Type LV Size       Device Type Elapsed Time Completion Time

        ------- ---- -- ---------- ----------- ------------ ---------------

        21      Full    690.30M    DISK        00:01:39     14-OCT-10

          List of Datafiles in backup set 21

          File LV Type Ckp SCN    Ckp Time   Name

          ---- -- ---- ---------- ---------- ----

          1       Full 1648791    14-OCT-10 /u01/app/oracle/oradata/orcl/system01.dbf

          2       Full 1648791    14-OCT-10 /u01/app/oracle/oradata/orcl/undotbs01.dbf

          3       Full 1648791    14-OCT-10 /u01/app/oracle/oradata/orcl/sysaux01.dbf

          4       Full 1648791    14-OCT-10 /u01/app/oracle/oradata/orcl/users01.dbf

          5       Full 1648791    14-OCT-10 /u01/app/oracle/oradata/orcl/example01.dbf

          6       Full 1648791    14-OCT-10 /u01/app/oracle/oradata/orcl/tbs1.dbf

 

          Backup Set Copy #1 of backup set 21

          Device Type Elapsed Time Completion Time Compressed Tag

          ----------- ------------ --------------- ---------- ---

          DISK        00:01:39     14-OCT-10      NO         TAG20101014T171115

 

            List of Backup Pieces for backup set 21 Copy #1

            BP Key  Pc# Status      Piece Name

            ------- --- ----------- ----------

            21      1   AVAILABLE   /u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_1_1

            22      2   AVAILABLE   /u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_2_1

            23      3   AVAILABLE   /u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_3_1

            24      4   AVAILABLE   /u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_4_1

            25      5   AVAILABLE   /u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_5_1

            26      6   AVAILABLE   /u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_6_1

            27      7   AVAILABLE   /u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_7_1

 

        BS Key  Type LV Size       Device Type Elapsed Time Completion Time

        ------- ---- -- ---------- ----------- ------------ ---------------

        22      Full    6.80M      DISK        00:00:01     14-OCT-10

                BP Key: 28   Status: AVAILABLE  Compressed: NO  Tag: TAG20101014T171115

                Piece Name: /u01/app/oracle/rmanbak/whole_ORCL_0olqen0s_1_1

          Control File Included: Ckp SCN: 1648817      Ckp time: 14-OCT-10

          SPFILE Included: Modification time: 14-OCT-10

 

    -----------------------------------------------------------------------------------------------------------------------

    1.7.2.2備份資料檔案

        Oracle資料檔案及表空間的管理請參考:Oracle 表空間與資料檔案

        RMAN> backup as copy datafile 4                                             --備份型別為映象備份

        2> format '/u01/app/oracle/rmanbak/df_%d_%U';

 

        RMAN> list copy; 

 

        RMAN> backup datafile 4,5,6 format '/u01/app/oracle/rmanbak/df_%d_%U';      --備份型別為備份集

 

    -----------------------------------------------------------------------------------------------------------------------

    1.7.7.3備份表空間

        Oracle資料檔案及表空間的管理請參考:Oracle 表空間與資料檔案

 

        RMAN>  backup tablespace users,example format '/u01/app/oracle/rmanbak/tb_%d_%U';

 

        RMAN> backup tablespace temp;  --臨時表空間不需要備份

 

        Starting backup at 14-OCT-10

        using channel ORA_DISK_1

        using channel ORA_DISK_2

        RMAN-00571: ===========================================================

        RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

        RMAN-00571: ===========================================================

        RMAN-03002: failure of backup command at 10/14/2010 18:56:12

        RMAN-20202: tablespace not found in the recovery catalog

        RMAN-06019: could not translate tablespace name "TEMP"

 

    -----------------------------------------------------------------------------------------------------------------------

    1.7.7.4備份控制檔案

        Oracle 控制檔案的詳細介紹請參考:Oracle 控制檔案(CONTROLFILE)

 

        RMAN> configure controlfile autobackup on;--自動備份控制檔案置為on狀態,將自動備份控制檔案和引數檔案

 

        old RMAN configuration parameters:

        CONFIGURE CONTROLFILE AUTOBACKUP OFF;

        new RMAN configuration parameters:

        CONFIGURE CONTROLFILE AUTOBACKUP ON;

        new RMAN configuration parameters are successfully stored

 

        注:在備份system01.dbf或system表空間時將會自動備份控制檔案和引數檔案,即使自動備份控制檔案引數為off

 

        --單獨備份控制檔案及引數檔案

        RMAN> backup current controlfile;

 

        --備份資料檔案時包含控制檔案

        RMAN> backup datafile 4 include current controlfile;

 

        RMAN> sql "alter database backup controlfile to ''/tmp/orclcontrol.bak''";

 

        sql statement: alter database backup controlfile to ''/tmp/orclcontrol.bak''

 

        RMAN>  sql "alter database backup controlfile to trace as ''/tmp/orclcontrol.sql''";

 

        sql statement: alter database backup controlfile to trace as ''/tmp/orclcontrol.sql''

 

        --單獨備份spfile

        RMAN> backup spfile format '/u01/app/oracle/rmanbak/sp_%d_%U';

 

        RMAN> backup copies 2 device type disk spfile;

 

    -----------------------------------------------------------------------------------------------------------------------

    1.7.7.5備份歸檔日誌檔案

        備份歸檔日誌時僅僅備份歸檔過的資料檔案(不備份聯機重做日誌檔案)

        備份歸檔日誌時總是對歸檔日誌做完整備份

        RMAN對歸檔日誌備份前會自動做一次日誌切換,且從一組歸檔日誌中備份未損壞的歸檔日誌

        RMAN會自動判斷哪些歸檔日誌需要進行備份

        歸檔日誌的備份集不能包含其它型別的檔案

 

        關於Oracle日誌檔案請參考:Oracle 聯機重做日誌檔案(ONLINE LOG FILE)

        關於Oracle歸檔日誌請參考:Oracle 歸檔日誌

 

        RMAN> backup

        2> format '/u01/app/oracle/rmanbak/lf_%d_%U'

        3> archivelog all delete input;   --delete input 刪除所有已經備份過的歸檔日誌

 

        RMAN> backup            --此種寫法實現了上述相同的功能

        2> archivelog all delete input

        3> format '/u01/app/oracle/rmanbak/lf_%d_%U';

 

        RMAN>backup archivelog sequence between 50 and 120 thread 1 delete input;

 

        RMAN> backup archivelog from time "sysdate-15" until time "sysdate-7";

       

        RMAN> backup

        2> format '/u01/app/oracle/rmanbak/lf_%d_%U'

        3> archivelog from sequence=80

        4> delete input;

 

        使用plus archivelog時備份資料庫完成的動作(backup database plus archivelog)

            1.首先執行alter system archive log current 命令(對當前日誌歸檔)

            2.執行backup archivelog all 命令(對所有歸檔日誌進行備份)

            3.執行backup database命令中指定的資料檔案、表空間等

            4.再次執行alter system archive log current

            5.備份在備份操作期間產生的新的歸檔日誌

 

        --執行下面的命令,並觀察備份列出的資訊,可以看到使用plus archivelog時使用了上面描述的步驟來進行備份

        RMAN> backup database plus archivelog

        2> format  '/u01/app/oracle/rmanbak/lg_%d_%U' delete input;

 

    1.7.7.6備份閃回區

       

        RMAN> backup recovery area;

            使用backup recovery area時,將備份位於閃回區且未進行過備份的所有檔案,這些檔案包括完整、增量備份集、自動備份的

            控制檔案(假定使用閃回區作為備份路徑時)、歸檔日誌、資料檔案的映象副本等。閃回日誌,當前的控制檔案。

            聯機重做日誌不會被備份

       

        RMAN> backup recovery files;

            使用backup recovery files時,將備份磁碟上未進行過備份的所有恢復檔案,而不論是否位於閃回區

           

        注:使用上述兩條命令時,備份目的地必須是磁帶

       

    7.總結:

        資料檔案的備份集對於未使用的塊可以執行增量備份,可以跳過未使用過的資料塊來進行壓縮備份

        對於控制檔案、歸檔日誌檔案、spfile檔案則是簡單的拷貝,並對其進行打包壓縮而已

 

相關文章