RMAN 備份詳解

us_yunleiwang發表於2013-12-05

--======================

-- RMAN 備份詳解

--======================

 

一、資料庫備份與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 numberSCN)

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

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

       

        非一致性備份

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

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

   

    4.備份集與映象副本

        備份集

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

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

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

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

           

        映象副本

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

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

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

            可以作為級增量備份

   

    5.備份路徑

        可以備份到磁碟目錄

        可以備份到磁帶

        閃回區

   

    6.備份限制

        資料庫必須處於mountopen狀態

        不能備份聯機日誌

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

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

       

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

       

二、使用RMAN進行備份

 

    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                       --備份整個資料庫並壓縮備份集

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

 

        RMAN> run{

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

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

        4> backup as compressed backupset                          --壓縮備份集

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

        6> database;

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

 

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

    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';      --備份型別為備份集

 

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

    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"

 

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

    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.dbfsystem表空間時將會自動備份控制檔案和引數檔案,即使自動備份控制檔案引數為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;

 

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

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

 

    6.備份閃回區

       

        RMAN> backup recovery area;

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

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

            聯機重做日誌不會被備份

       

        RMAN> backup recovery files;

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

           

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

       

    7.總結:

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

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

 

三、備份的其它特性

    1.併發:主要用於提高備份的速度,可以分為手動併發或自動併發

        手動併發:透過分配多個通道並將檔案指定到特定的通道

       

            RMAN> run {

            2>  allocate channel ch1 device type disk;

            3>  allocate channel ch2 device type disk;

            4>  allocate channel ch3 device type disk;

            5> backup incremental level=0

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

            7>  (datafile 1 channel ch1 tag='sys')

            8>  (datafile 3 channel ch2 tag='aux')

            9>  (datafile 2,4,5,6 channel ch3 tag='other');

            10> sql 'alter system archive log current';

            11> release channel ch1;

            12> release channel ch2;

            13> release channel ch3;

            14> }  

 

        自動併發:使用configure配置併發度即可

            RMAN> configure device type disk parallelism 3 backup type to backupset;

           

            --下面的備份將自動啟用個通道執行併發

            RMAN>  backup database format '/u01/app/oralce/rmanbak/p3_%U';

 

    2.複用備份

        即將一個備份集複製多份,同一備份集,Oracle最多可複用個

        手工指定:

            RMAN> backup copies 2 datafile 4

            2> format '/u01/app/oracle/rmanbak/d1/df_%U',

            3>        '/u01/app/oracle/rmanbak/d2/df_%U';  

           

        自動指定:配置下列引數

            RMAN> configure datafile backup copies for device type disk to 2;  --指定備份資料檔案副本數

            RMAN> configure archivelog backup copies for device type disk to 2;--指定備份日誌檔案副本數

           

    3.備份備份集

        bacup backupset

       

    4.映象備份

        映象備份時會檢查資料檔案中是否存在壞塊,可以使用nochecksum來跳過壞塊的檢測

        也可以指定maxcorrupt判斷有多少個壞塊時,Oracle將停止該映象備份

       

        RMAN> backup as copy

        2> datafile 4 format '/u01/app/oracle/rmanbak/users.dbf' tag='users'

 

        --以下命令等同於上一條

        RMAN> copy datafile 4 to '/u01/app/oracle/rmanbak/user01.dbf';

 

        RMAN> backup as copy

        2> archivelog like 'o1_mf_1_118_6chl1byd_.arc'

        3> format '/u01/app/oracle/rmanbak/arch_1015.bak';

 

        --使用下面的configure命令將backup type設定為copy之後,則預設的備份為映象副本

        RMAN> configure device type disk parallelism 1 backup type to copy;

 

        RMAN> backup datafile 4  --由於上面的設定,則此命令備份的將是映象副本

        2> format '/u01/app/oracle/rmanbak/users.dbf.bak' tag=users;   

 

        --使用並行度來執行映象複製

        RMAN> configure device type disk parallelism 4;

 

        RMAN> backup as copy #3 files copied in parallel

        2> (datafile 1 format '/u01/app/oracle/rmanbak/df1.bak')

        3> (datafile 2 format '/u01/app/oracle/rmanbak/df2.bak')

        4> (datafile 3  format '/u01/app/oracle/rmanbak/df3.bak');

       

        映象備份時指定子句DB_FILE_NAME_CONVERT來實現映象路徑轉移,該子句也是一個初始化引數,用於primary db standby db

            的資料檔案的轉換

           

            DB_FILE_NAME_CONVERT = ('string1' , 'string2' , 'string3' , 'string4' ...)

            string2替換string1,string4替換string3

           

            RMAN> backup as copy device type disk

            2> db_file_name_convert('oradata/orcl','bk/rmbk')

            3> tablespace users;       

           

    5.壓縮備份集   

        RMAN> configure channel device type disk format '/u01/app/oracle/rmanbak/%d_%U.bak';

       

        --下面的命令使用了引數as compressed來實現手動壓縮

        RMAN> backup as compressed backupset database;

        RMAN> backup as compressed backupset datafile 4,5,6;

       

        --下面使用configure命令配置自動壓縮備份集功能,則後續的備份會自動使用壓縮功能

        RMAN> configure device type disk parallelism 4 backup type to compressed backupset;

       

        --由於設定了自動壓縮,則下面的命令將壓縮備份的system表空間及控制檔案、引數檔案

        RMAN> backup tablespace system tag=system;

       

    6.使用tag標記

        tag標記可以為備份集或映像副本指定一個有意義的名字,以備後續使用,其優點如下

            為備份集或映像副本提供描述資訊

            能夠在list 命令中使用更好的定位備份檔案

            能夠在restoreswitch命令中使用

            同一個tag在多個備份集或多個映像副本中使用

            當未指定tag標記時,則系統產生預設的tag標記,其格式為:TAGYYYYMMDDTHHMMSS

       

        RMAN> backup as compressed backupset datafile 1,2,3 tag='Monthly_full_bak';

       

        RMAN> backup as compressed backupset tablespace users tag='Weekly_full_bak';

               

        RMAN> list backupset tag=monthly_full_bak; 

 

    7.增量備份

        差異增量備份將備份自上次增量備份以來所有發生改變的資料塊

        累計增量備份將備份自上次級增量備份以來所有改變過的資料塊

       

        --下面啟用級增量備份

        RMAN> run{

        2> allocate channel ch1 type disk;

        3> backup incremental level 0 database

        4> format '/u01/app/oracle/rmanbak/db_%d_%U'

        5> tag=db_inc_0;

        6> release channel ch1;

        7> }

 

        SQL> select sid,sofar,totalwork from v$session_longops;  --查詢備份情況

 

        --下面啟用級差異增量備份

        RMAN> run{

        2> allocate channel ch1 type disk;

        3> backup incremental level 1 database

        4> format '/u01/app/oracle/rmanbak/db1_%d_%U'

        5> tag=db_inc_1;

        6> release channel ch1;

        7> }

 

        --下面啟用級累計增量備份

        RMAN> run{

        2> allocate channel ch1 type disk;

        3> backup incremental level 1 cumulative database

        4> format '/u01/app/oracle/rmanbak/dbc_%d_%U'

        5> tag=db_inc_c_1;

        6> release channel ch1;

        7> }

 

    8.啟用塊變化跟蹤

        啟用塊變化跟蹤即是指定一個檔案用於記錄資料檔案中哪些塊發生了變化,在RAMN進行增量備份時,僅僅需讀取該檔案來備份這些

        發生變化的塊,從而減少了備份時間和I/O資源。

        使用下面的命令來啟用塊變化跟蹤

            ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '

'

 

        SQL> alter database enable block change tracking

          2  using file '/u01/app/oracle/oradata/orcl/blk_ch_trc.trc';

 

        SQL> ho ls -lht /u01/app/oracle/oradata/orcl/blk_ch_trc.trc

        -rw-r----- 1 oracle oinstall 12M Oct 15 19:41 /u01/app/oracle/oradata/orcl/blk_ch_trc.trc

 

        SQL> select * from v$block_change_tracking;

 

        STATUS     FILENAME                                           BYTES

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

        ENABLED    /u01/app/oracle/oradata/orcl/blk_ch_trc.trc     11599872

 

        SQL> alter database disable block change tracking; --disable後塊變化跟蹤檔案被自動刪除

 

        SQL>  select * from v$block_change_tracking;

 

        STATUS     FILENAME                                           BYTES

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

        DISABLED       

       

    9.備份保留策略

        保留策略主要是保留備份副本的一些規則,通常用於滿足恢復或其他的需要(比如磁碟空間或磁帶空間大小限制)

        備份保留策略分為冗餘和恢復視窗,這兩種保留策略互不相容,要麼使用前者,要麼使用後者

        備份冗餘

            預設為,可以透過RMAN> configure retention policy to redundancy 2;來修改

            當為時,RMAN會為每個資料檔案、歸檔日誌、控制檔案生成一個備份。可以使用report obsolete命令檢視備份數多於的備份

            並使用delete obsolete來刪除過時的備份

           

        恢復視窗       

            恢復視窗允許完成恢復到過去某個時間點的時點恢復,通常設定為多少天

            使用命令RMAN> configure retetion policy to recovery window of 7 days

            該命令將確保具有足夠的資料檔案和歸檔日誌來執行能夠返回一個星期中任意時間點的不完全恢復,且允許刪除隨著時間推移

                而變為廢棄的備份,即應當滿足該條件:SYSDATE - BACKUP CHECKPOINT TIME >= 7

            對於大於天但是是恢復所需要的備份依然會被保留

           

        清除備份保留策略

            RMAN> configure retention policy clear;

           

        注意obsolete expired

            obsolete:是指根據保留策略來確定該備份是否在恢復的時候需要,如不在需要或有更新的備份來替代,則該備份集被置為

                obsolete,即廢棄的備份集或映象副本。

            expired: 是指執行crosscheck時,根據儲存倉庫中記錄的備份資訊來定位備份集或映象副本,而找不到對應的備份集或映象副

                本,則這些備份集或映象副本被置為expired

 

    10.使用BACKUP ... VALIDATE驗證資料檔案邏輯壞塊,損壞的壞塊將被記錄到v$database_block_corruption檢視

            BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;

           

四、備份相關的動態效能檢視及監控

    1.相關檢視

        v$backup_files

        v$backup_set

        v$backup_piece

        v$backup_redolog

        v$backup_spfile

        v$backup_device

        v$rman_configuration

        v$archived_log

        v$backup_corruption

        v$copy_corruption

        v$database_block_corruption

        v$backup_datafile

       

    2.檢視channel對應的server sessions

            使用set command id命令

        查詢v$processv$session判斷哪一個會話與之對應的RMAN通道

        SQL> select sid,username,client_info from v$session

          2  where client_info is not null;

 

               SID USERNAME                       CLIENT_INFO

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

               146 SYS                            rman channel=ORA_DISK_1

               148 SYS                            rman channel=ORA_DISK_2

               150 SYS                            rman channel=ORA_DISK_3

           

        --下面使用了set command id命令

        RMAN> run{

        2> allocate channel ch1 type disk;

        3> set command id to 'rman';

        4> backup as copy datafile 4

        5> format '/u01/app/oracle/rmanbak/dd_%U';

        6> }

           

        SQL> select sid,username,client_info from v$session

          2   where client_info is not null;

 

               SID USERNAME                       CLIENT_INFO

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

               140 SYS                            id=rman

          

        SQL> select sid,spid,client_info

          2  from v$process p ,v$session s

          3  where p.addr = s.paddr

          4  and client_info like '%id=%';

 

               SID SPID         CLIENT_INFO

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

               140 5002         id=rman 

          

        --檢視rman完整的進度      

        SQL> select sid,serial#,context,sofar,totalwork,

          2  round(sofar/totalwork*100,2) "% Complete"

          3  from v$session_longops

          4   where opname like 'RMAN:%'

          5  and opname not like 'RMAN:aggregate%'

           and totalwork!=0;    

 

        --透過如下SQL獲得rman用來完成備份操作的服務程式的SIDSPID資訊:

        select sid, spid, client_info

          from v$process p, v$session s

         where p.addr = s.paddr

           and client_info like '%id=rman%'

     

    3.Linux下的rman自動備份

        備份指令碼+crontab

        bak_inc0 :0級增量備份,每週日使用級增量進行備份

        bak_inc1 :1級增量備份,每週三使用級增量備份,備份從週日以來到週三所發生的資料變化

        bak_inc2 :2級增量備份,備份每天發生的差異增量。如從週日到週一的差異,從週一到週二的差異

       

        --下面是級增量的指令碼,其餘級與級依法炮製,所不同的是備份級別以及tag標記

        [oracle@oradb scripts]$ cat bak_inc0

        run {

        allocate channel ch1 type disk;

        backup as compressed backupset  incremental level 0

        format '/u01/oracle/bk/rmbk/incr0_%d_%U'

        tag 'day_incr0'

        database plus archivelog delete input;

        release channel ch1;

        }

               

        逐個測試指令碼

        [oracle@oradb bk]$ rman target / log=/u01/oracle/bk/log/bak_inc0.log /

        > cmdfile=/u01/oracle/bk/scripts/bak_inc0.rcv

        RMAN> 2> 3> 4> 5> 6> 7> 8> 9>

        [oracle@oradb bk]$

 

        編輯crontab

        [root@oradb ~]# whoami

        root

        [root@oradb ~]# crontab --u oracle

 

        45 23 * * 0 rman target / log=/u01/oracle/bk/log/bak_inc0.log append cmdfile =/u01/oracle/bk/scripts/bak_inc0.rcv

        45 23 * * 1 rman target / log=/u01/oracle/bk/log/bak_inc2.log append cmdfile =/u01/oracle/bk/scripts/bak_inc2.rcv

        45 23 * * 2 rman target / log=/u01/oracle/bk/log/bak_inc2.log append cmdfile =/u01/oracle/bk/scripts/bak_inc2.rcv

        45 23 * * 3 rman target / log=/u01/oracle/bk/log/bak_inc1.log append cmdfile =/u01/oracle/bk/scripts/bak_inc1.rcv

        45 23 * * 4 rman target / log=/u01/oracle/bk/log/bak_inc2.log append cmdfile =/u01/oracle/bk/scripts/bak_inc2.rcv

        45 23 * * 5 rman target / log=/u01/oracle/bk/log/bak_inc2.log append cmdfile =/u01/oracle/bk/scripts/bak_inc2.rcv

        45 23 * * 6 rman target / log=/u01/oracle/bk/log/bak_inc2.log append cmdfile =/u01/oracle/bk/scripts/bak_inc2.rcv

        "/tmp/crontab.XXXXInBzgR" 7L, 791C written

        crontab: installing new crontab

        儲存之後重啟crontab

        [root@oradb ~]# service crond restart

        Stopping crond: [  OK  ]

        Starting crond: [  OK  ]

       

        檢查自動備份是否成功執行

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23490154/viewspace-1062416/,如需轉載,請註明出處,否則將追究法律責任。

相關文章