-- RMAN備份詳解

shilei1發表於2013-02-24
-------------轉載
--======================
-- 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 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
 
-----------------------------------------------------------------------------------------------------------------------
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聯機重做日誌檔案(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''
 
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]
 
檢查自動備份是否成功執行

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

相關文章