oracle數據庫下rman備份詳解

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

-- 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 number,SCN)

也就是說,備份所包含的各個文件中的所有數據均來自同一時間點。

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


非一致性備份

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

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


   4.備份集與鏡像副本

備份集

是包含一個或多個數據文件,歸檔日誌文件的二進制文件的集合.備份集由備份片組成,一個備份集中可以包含一個或多個備份片

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

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

備份集中空閒的數據塊將不會被備份,因此備份集可以支持壓縮。備份集支持增量備份,可以備份到磁盤或磁帶。


鏡像副本

是數據文件或歸檔日誌文件等的完整拷貝,未經過任何壓縮等處理,不能備份到磁帶,也不支持增量備份

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

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

可以作爲級增量備份


   5.備份路徑

可以備份到磁盤目錄

可以備份到磁帶

閃回區


   6.備份限制

數據庫必須處於mount或open狀態

不能備份聯機日誌

在非歸檔模式下僅僅能作乾淨備份,即在乾淨關閉且啓動到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> backupdatabaseformat'/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> backupas 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.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;


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

   5.備份歸檔日誌文件

備份歸檔日誌時僅僅備份歸檔過的數據文件(不備份聯機重做日誌文件)

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

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

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

歸檔日誌的備份集不能包含其它類型的文件


關於Oracle日誌文件請參考:Oracle 聯機重做日誌文件(ONLINE LOGFILE)

關於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 deleteinput;


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


   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 命令中使用更好的定位備份文件

能夠在restore和switch命令中使用

同一個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資源。

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

ALTERDATABASEENABLE BLOCK CHANGE TRACKING USING FILE'<dir>'


SQL> alter database enable block change tracking

         2  usingfile'/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$process和v$session判斷哪一個會話與之對應的RMAN通道

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

         2  where client_infoisnotnull;


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


              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 opnamelike'RMAN:%'

5 andopname notlike'RMAN:aggregate%'

6 andtotalwork!=0;


--通過如下SQL獲得rman用來完成備份操作的服務進程的SID與SPID信息:

select sid, spid, client_info

         from v$process p, v$session s

        where p.addr = s.paddr

andclient_infolike'%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 -e -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  ]


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


五、更多參考


RMAN 概述及其體系結構

RMAN 配置、監控與管理

Oracle 用戶、對象權限、系統權限


Oracle 角色、配置文件


Oracle 聯機重做日誌文件(ONLINE LOG FILE)


Oracle 控制文件(CONTROLFILE)


Oracle 表空間與數據文件


Oracle 歸檔日誌


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章