(整理)RMAN備份詳解

網上查到一篇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的備份參數

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

 2.備份數據庫

2.1沒有指定路徑的備份

RMAN> backup database plus archivelog;

默認如果不用format指定文件路徑,則路徑指向閃迴路徑

RMAN備份的文件路徑的規則:

備份語句中指定的format  > rman 中顯現的configure channel device type disk format '/oracle/orclarch/%U_%d'的路徑 > 閃回恢復區>$ORACLE_HOME/dbs  
 

 2.2指定路徑的備份
RMAN> backup database format '/u01/app/oracle/rmanbak/whole_%d_%U';--備份整個數據庫
(注:文件的命名規則見附錄1)
 

 2.3指定路徑的備份-壓縮
RMAN> backup as compressed backupset--備份整個數據庫並壓縮備份集
2> database format '/u01/app/oracle/rmanbak/whole_%d_%U';
 經測試壓縮前備份文件1.2G,壓縮後320M左右

2.4用腳本進行壓縮備份
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;}--釋放通道
 

2.4修改並行度1->3,提高備份效率

並行度可以通過CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default查看
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--並行度改爲3

 
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;--查看rman的list命令 https://www.cnblogs.com/kerrycode/p/5773050.html
 List of Backup Sets
===================
 
BS KeyType LV SizeDevice Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
21Full690.30MDISK00:01:3914-OCT-10
List of Datafiles in backup set 21
File LV Type Ckp SCNCkp TimeName
---- -- ---- ---------- ---------- ----
1Full 164879114-OCT-10 /u01/app/oracle/oradata/orcl/system01.dbf
2Full 164879114-OCT-10 /u01/app/oracle/oradata/orcl/undotbs01.dbf
3Full 164879114-OCT-10 /u01/app/oracle/oradata/orcl/sysaux01.dbf
4Full 164879114-OCT-10 /u01/app/oracle/oradata/orcl/users01.dbf
5Full 164879114-OCT-10 /u01/app/oracle/oradata/orcl/example01.dbf
6Full 164879114-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
----------- ------------ --------------- ---------- ---
DISK00:01:3914-OCT-10NOTAG20101014T171115
 
List of Backup Pieces for backup set 21 Copy #1
BP KeyPc# StatusPiece Name
------- --- ----------- ----------
211AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_1_1
222AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_2_1
233AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_3_1
244AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_4_1
255AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_5_1
266AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_6_1
277AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_7_1
 
BS KeyType LV SizeDevice Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
22Full6.80MDISK00:00:0114-OCT-10
BP Key: 28Status: AVAILABLECompressed: NOTag: TAG20101014T171115
Piece Name: /u01/app/oracle/rmanbak/whole_ORCL_0olqen0s_1_1
Control File Included: Ckp SCN: 1648817Ckp time: 14-OCT-10
SPFILE Included: Modification time: 14-OCT-10
 
-----------------------------------------------------------------------------------------------------------------------
3.備份數據文件
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';--備份類型爲備份集

裏面的數字4,5,6什麼意思
 
-----------------------------------------------------------------------------------------------------------------------
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聯機重做日誌文件(ONLINELOGFILE)
關於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 sequencebetween50and120thread1deleteinput;
 
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> archiveloglike'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 3format'/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資源。
使用下面的命令來啓用塊變化跟蹤
ALTERDATABASEENABLEBLOCK CHANGE TRACKING USINGFILE'<dir>'
 
SQL> alter database enable block change tracking
2usingfile'/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;
 
STATUSFILENAMEBYTES
---------- --------------------------------------------- ----------
ENABLED/u01/app/oracle/oradata/orcl/blk_ch_trc.trc11599872
 
SQL> alter database disable block change tracking;--disable後塊變化跟蹤文件被自動刪除
 
SQL>select * from v$block_change_tracking;
 
STATUSFILENAMEBYTES
---------- --------------------------------------------- ----------
DISABLED
 
9.備份保留策略
保留策略主要是保留備份副本的一些規則,通常用於滿足恢復或其他的需要(比如磁盤空間或磁帶空間大小限制)
備份保留策略分爲冗餘和恢復窗口,這兩種保留策略互不兼容,要麼使用前者,要麼使用後者
備份冗餘
默認爲,可以通過RMAN>configure retention policytoredundancy 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
2where client_infoisnotnull;
 
SID USERNAMECLIENT_INFO
---------- ------------------------------ ------------------------------
146 SYSrman channel=ORA_DISK_1
148 SYSrman channel=ORA_DISK_2
150 SYSrman 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
2where client_infoisnotnull;
 
SID USERNAMECLIENT_INFO
---------- ------------------------------ ------------------------------
140 SYSid=rman
 
SQL> select sid,spid,client_info
2from v$process p ,v$session s
3where p.addr = s.paddr
4and client_infolike'%id=%';
 
SID SPIDCLIENT_INFO
---------- ------------ ------------------------------
140 5002id=rman
 
--查看rman完整的進度
SQL> select sid,serial#,context,sofar,totalwork,
2round(sofar/totalwork*100,2)"% Complete"
3from v$session_longops
4where opnamelike'RMAN:%'
5andopnamenotlike'RMAN:aggregate%'
6andtotalwork!=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 backupsetincremental 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.logappend cmdfile=/u01/oracle/bk/scripts/bak_inc0.rcv
45 23**1 rman target/log=/u01/oracle/bk/log/bak_inc2.logappend cmdfile=/u01/oracle/bk/scripts/bak_inc2.rcv
45 23**2 rman target/log=/u01/oracle/bk/log/bak_inc2.logappend cmdfile=/u01/oracle/bk/scripts/bak_inc2.rcv
45 23**3 rman target/log=/u01/oracle/bk/log/bak_inc1.logappend cmdfile=/u01/oracle/bk/scripts/bak_inc1.rcv
45 23**4 rman target/log=/u01/oracle/bk/log/bak_inc2.logappend cmdfile=/u01/oracle/bk/scripts/bak_inc2.rcv
45 23**5 rman target/log=/u01/oracle/bk/log/bak_inc2.logappend cmdfile=/u01/oracle/bk/scripts/bak_inc2.rcv
45 23**6 rman target/log=/u01/oracle/bk/log/bak_inc2.logappend 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]
 
檢查自動備份是否成功執行

附錄1:使用格式串

先看例子:Configure channel 1 device type disk format 'd:/backup/orcl/backup_%U';
在configure 命令中經常使用格式串,在backup,resotre,allocate channel 等其他RMAN 命令中也會經常看到格式串。RMAN 提供了與格式串關聯的一些語法元素。 這些元素稱: 佔位符, rman 將使用相應的定義值來替換他們。 例如示例中的 %U 語法元素告訴RMAN要使用系統生成的唯一表示符替換文件名。 
使用FORMAT參數時可使用的各種替換變量,如下(注意大小寫)所示:
%a:Oracle數據庫的activation ID即RESETLOG_ID。
%c:備份片段的複製數(從1開始編號,最大不超過256)。
%d:Oracle數據庫名稱。
%D:當前時間中的日,格式爲DD。
%e:歸檔序號。
%f:絕對文件編號。
%F:基於"DBID+時間"確定的唯一名稱,格式的形式爲c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 爲該數據庫的DBID,YYYYMMDD爲日期,QQ是一個1~256的序列。
%h:歸檔日誌線程號。
%I:Oracle數據庫的DBID。
%M:當前時間中的月,格式爲MM。
%N:表空間名稱。
%n:數據庫名稱,並且會在右側用x字符進行填充,使其保持長度爲8。比如數據庫名JSSBOOK,則生成的名稱則是JSSBOOKx。
%p:備份集中備份片段的編號,從1開始。
%s:備份集號。
%t:備份集時間戳。
%T:當前時間的年月日格式(YYYYMMDD)。
%u:是一個由備份集編號和建立時間壓縮後組成的8字符名稱。利用%u可以爲每個備份集生成一個唯一的名稱。
%U:默認是%u_%p_%c的簡寫形式,利用它可以爲每一個備份片段(即磁盤文件)生成一個唯一名稱,這是最常用的命名方式,執行不同備份操作時,生成的規則也不同,如下所示:
生成備份片段時,%U=%u_%p_%c;
生成數據文件鏡像複製時,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u;
生成歸檔文件鏡像複製時,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u;
生成控制文件鏡像複製時,%U=cf-D_%d-id-%I_%u。
%Y:當前時間中的年,格式爲YYYY。
注:如果在BACKUP命令中沒有指定FORMAT選項,則RMAN默認使用%U爲備份片段命名。

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