--======================
-- RMAN 備份詳解
--======================
一、數據庫備份與RMAN備份的概念
1.數據庫完全備份:按歸檔模式分為歸檔和非歸檔
歸檔模式
打開(kāi)狀態(tài),屬于非一致性備份
關(guān)閉狀態(tài),可以分為一致性和非一致性
非歸檔模式
打開(kāi)狀態(tài),非一致性備份無(wú)效
關(guān)閉狀態(tài),一致性備份,非一致性備份不被推薦
2.RMAN備份
RMAN使用服務(wù)器會(huì )話(huà)來(lái)完成備份操作,從RMAN客戶(hù)端連接到服務(wù)器將產(chǎn)生一個(gè)服務(wù)器會(huì )話(huà)
RMAN備份內容包括:整個(gè)數據庫,表空間,數據文件,指定的數據文件,控制文件,歸檔日志文件,參數文件等
3.RMAN備份的類(lèi)型
完整備份(full) 或增量備份(incremental)
一致性備份(consistent)或不一致性備份(inconsistent)
熱備(open)或冷備(closed),冷備時(shí)數據庫必須處于mount狀態(tài),冷備可以為一致性備份或非一致性備份
完整備份
一個(gè)或多個(gè)數據文件的一個(gè)完整副本,包含從備份開(kāi)始處所有的數據塊.完整備份不能作為增量的基礎
增量備份
包含從最近一次備份以來(lái)被修改或添加的數據塊.可以分為差異增量備份和累計增量備份
差異增量備份僅僅包含n級或n級以下被修改過(guò)的數據塊。備份數據量小,恢復時(shí)間長(cháng)。
累計增量備份僅僅包含n-1級或n-1級以下被修改過(guò)的數據塊。備份數據量大,恢復時(shí)間短。
0級增量備份相當于一個(gè)完整備份,該備份包含所有已用的數據塊文件,與完整備份的差異是完整備份不能用作級增量備份的基礎
一致性備份
備份所包含的各個(gè)文件中的所有修改都具備相同的系統變化編號(system change number,SCN)。
也就是說(shuō),備份所包含的各個(gè)文件中的所有數據均來(lái)自同一時(shí)間點(diǎn)。
一致性數據庫完全備份(consis-tent whole database backup)進(jìn)行還原(restore)后,不需要執行恢復操作(recovery)
非一致性備份
在數據庫處于打開(kāi)(open)狀態(tài)時(shí),或數據庫異常關(guān)閉(shut down abnormally)后,對一個(gè)或多個(gè)數據
庫文件進(jìn)行的備份。非一致性備份需要在還原之后進(jìn)行恢復操作
4.備份集與鏡像副本
備份集
是包含一個(gè)或多個(gè)數據文件,歸檔日志文件的二進(jìn)制文件的集合.備份集由備份片組成,一個(gè)備份集中可以包含一個(gè)或多個(gè)備份片
可以通過(guò)filesperset參數來(lái)設置備份集中可包含的備份片數,
也可以設定參數maxpiecesize來(lái)制定每個(gè)備份片的大小。
備份集中空閑的數據塊將不會(huì )被備份,因此備份集可以支持壓縮。備份集支持增量備份,可以備份到磁盤(pán)或磁帶。
鏡像副本
是數據文件或歸檔日志文件等的完整拷貝,未經(jīng)過(guò)任何壓縮等處理,不能備份到磁帶,也不支持增量備份
恢復時(shí)可以立即使用實(shí)現快速恢復
等同于操作系統的復制命令
可以作為級增量備份
5.備份路徑
可以備份到磁盤(pán)目錄
可以備份到磁帶
閃回區
6.備份限制
數據庫必須處于mount或open狀態(tài)
不能備份聯(lián)機日志
在非歸檔模式下僅僅能作干凈備份,即在干凈關(guān)閉且啟動(dòng)到mount狀態(tài)下備份
在歸檔模式下,current狀態(tài)下數據文件可以備份
關(guān)于更多備份與恢復的概念請參考:Oracle 備份恢復概念
二、使用RMAN進(jìn)行備份
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'; --備份整個(gè)數據庫
RMAN> backup as compressed backupset --備份整個(gè)數據庫并壓縮備份集
2> database format '/u01/app/oracle/rmanbak/whole_%d_%U';
RMAN> run{
2> allocate channel ch1 type disk --手動(dòng)分配一個(gè)通道
3> maxpiecesize=2g; --指定備份片的大小為g
4> backup as compressed backupset --壓縮備份集
5> format '/u01/app/oracle/rmanbak/whole_%d_%U' filesperset=3--指定備份集中允許容納的文件數為個(gè)
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 --并行度改為之后,自動(dòng)啟用了個(gè)通道
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,則一個(gè)備份集包含多個(gè)備份片,且每個(gè)備份片大小為m
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 --備份類(lèi)型為鏡像備份
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'; --備份類(lèi)型為備份集
-----------------------------------------------------------------------------------------------------------------------
3.備份表空間
Oracle數據文件及表空間的管理請參考:Oracle 表空間與數據文件
RMAN> backup tablespace users,example format '/u01/app/oracle/rmanbak/tb_%d_%U';
RMAN> backup tablespace temp; --臨時(shí)表空間不需要備份
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;--自動(dòng)備份控制文件置為on狀態(tài),將自動(dòng)備份控制文件和參數文件
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表空間時(shí)將會(huì )自動(dòng)備份控制文件和參數文件,即使自動(dòng)備份控制文件參數為off
--單獨備份控制文件及參數文件
RMAN> backup current controlfile;
--備份數據文件時(shí)包含控制文件
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.備份歸檔日志文件
備份歸檔日志時(shí)僅僅備份歸檔過(guò)的數據文件(不備份聯(lián)機重做日志文件)
備份歸檔日志時(shí)總是對歸檔日志做完整備份
RMAN對歸檔日志備份前會(huì )自動(dòng)做一次日志切換,且從一組歸檔日志中備份未損壞的歸檔日志
RMAN會(huì )自動(dòng)判斷哪些歸檔日志需要進(jìn)行備份
歸檔日志的備份集不能包含其它類(lèi)型的文件
關(guān)于Oracle日志文件請參考:Oracle 聯(lián)機重做日志文件(ONLINE LOG FILE)
關(guān)于Oracle歸檔日志請參考:Oracle 歸檔日志
RMAN> backup
2> format '/u01/app/oracle/rmanbak/lf_%d_%U'
3> archivelog all delete input; --delete input 刪除所有已經(jīng)備份過(guò)的歸檔日志
RMAN> backup --此種寫(xiě)法實(shí)現了上述相同的功能
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時(shí)備份數據庫完成的動(dòng)作(backup database plus archivelog)
1.首先執行alter system archive log current 命令(對當前日志歸檔)
2.執行backup archivelog all 命令(對所有歸檔日志進(jìn)行備份)
3.執行backup database命令中指定的數據文件、表空間等
4.再次執行alter system archive log current
5.備份在備份操作期間產(chǎn)生的新的歸檔日志
--執行下面的命令,并觀(guān)察備份列出的信息,可以看到使用plus archivelog時(shí)使用了上面描述的步驟來(lái)進(jìn)行備份
RMAN> backup database plus archivelog
2> format '/u01/app/oracle/rmanbak/lg_%d_%U' delete input;
6.備份閃回區
RMAN> backup recovery area;
使用backup recovery area時(shí),將備份位于閃回區且未進(jìn)行過(guò)備份的所有文件,這些文件包括完整、增量備份集、自動(dòng)備份的
控制文件(假定使用閃回區作為備份路徑時(shí))、歸檔日志、數據文件的鏡像副本等。閃回日志,當前的控制文件。
聯(lián)機重做日志不會(huì )被備份
RMAN> backup recovery files;
使用backup recovery files時(shí),將備份磁盤(pán)上未進(jìn)行過(guò)備份的所有恢復文件,而不論是否位于閃回區
注:使用上述兩條命令時(shí),備份目的地必須是磁帶
7.總結:
數據文件的備份集對于未使用的塊可以執行增量備份,可以跳過(guò)未使用過(guò)的數據塊來(lái)進(jìn)行壓縮備份
對于控制文件、歸檔日志文件、spfile文件則是簡(jiǎn)單的拷貝,并對其進(jìn)行打包壓縮而已
三、備份的其它特性
1.并發(fā):主要用于提高備份的速度,可以分為手動(dòng)并發(fā)或自動(dòng)并發(fā)
手動(dòng)并發(fā):通過(guò)分配多個(gè)通道并將文件指定到特定的通道
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> }
自動(dòng)并發(fā):使用configure配置并發(fā)度即可
RMAN> configure device type disk parallelism 3 backup type to backupset;
--下面的備份將自動(dòng)啟用個(gè)通道執行并發(fā)
RMAN> backup database format '/u01/app/oralce/rmanbak/p3_%U';
2.復用備份
即將一個(gè)備份集復制多份,同一備份集,Oracle最多可復用個(gè)
手工指定:
RMAN> backup copies 2 datafile 4
2> format '/u01/app/oracle/rmanbak/d1/df_%U',
3> '/u01/app/oracle/rmanbak/d2/df_%U';
自動(dòng)指定:配置下列參數
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.鏡像備份
鏡像備份時(shí)會(huì )檢查數據文件中是否存在壞塊,可以使用nochecksum來(lái)跳過(guò)壞塊的檢測
也可以指定maxcorrupt判斷有多少個(gè)壞塊時(shí),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;
--使用并行度來(lái)執行鏡像拷貝
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');
鏡像備份時(shí)指定子句DB_FILE_NAME_CONVERT來(lái)實(shí)現鏡像路徑轉移,該子句也是一個(gè)初始化參數,用于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來(lái)實(shí)現手動(dòng)壓縮
RMAN> backup as compressed backupset database;
RMAN> backup as compressed backupset datafile 4,5,6;
--下面使用configure命令配置自動(dòng)壓縮備份集功能,則后續的備份會(huì )自動(dòng)使用壓縮功能
RMAN> configure device type disk parallelism 4 backup type to compressed backupset;
--由于設置了自動(dòng)壓縮,則下面的命令將壓縮備份的system表空間及控制文件、參數文件
RMAN> backup tablespace system tag=system;
6.使用tag標記
tag標記可以為備份集或映像副本指定一個(gè)有意義的名字,以備后續使用,其優(yōu)點(diǎn)如下
為備份集或映像副本提供描述信息
能夠在list 命令中使用更好的定位備份文件
能夠在restore和switch命令中使用
同一個(gè)tag在多個(gè)備份集或多個(gè)映像副本中使用
當未指定tag標記時(shí),則系統產(chǎn)生缺省的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.增量備份
差異增量備份將備份自上次增量備份以來(lái)所有發(fā)生改變的數據塊
累計增量備份將備份自上次級增量備份以來(lái)所有改變過(guò)的數據塊
--下面啟用級增量備份
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; --查詢(xún)備份情況
--下面啟用級差異增量備份
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.啟用塊變化跟蹤
啟用塊變化跟蹤即是指定一個(gè)文件用于記錄數據文件中哪些塊發(fā)生了變化,在RAMN進(jìn)行增量備份時(shí),僅僅需讀取該文件來(lái)備份這些
發(fā)生變化的塊,從而減少了備份時(shí)間和I/O資源。
使用下面的命令來(lái)啟用塊變化跟蹤
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '<dir>'
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后塊變化跟蹤文件被自動(dòng)刪除
SQL> select * from v$block_change_tracking;
STATUS FILENAME BYTES
---------- --------------------------------------------- ----------
DISABLED
9.備份保留策略
保留策略主要是保留備份副本的一些規則,通常用于滿(mǎn)足恢復或其他的需要(比如磁盤(pán)空間或磁帶空間大小限制)
備份保留策略分為冗余和恢復窗口,這兩種保留策略互不兼容,要么使用前者,要么使用后者
備份冗余
默認為,可以通過(guò)RMAN> configure retention policy to redundancy 2;來(lái)修改
當為時(shí),RMAN會(huì )為每個(gè)數據文件、歸檔日志、控制文件生成一個(gè)備份??梢允褂?span lang="EN-US">report obsolete命令查看備份數多于的備份
并使用delete obsolete來(lái)刪除過(guò)時(shí)的備份
恢復窗口
恢復窗口允許完成恢復到過(guò)去某個(gè)時(shí)間點(diǎn)的時(shí)點(diǎn)恢復,通常設定為多少天
使用命令RMAN> configure retetion policy to recovery window of 7 days
該命令將確保具有足夠的數據文件和歸檔日志來(lái)執行能夠返回一個(gè)星期中任意時(shí)間點(diǎn)的不完全恢復,且允許刪除隨著(zhù)時(shí)間推移
而變?yōu)閺U棄的備份,即應當滿(mǎn)足該條件:SYSDATE - BACKUP CHECKPOINT TIME >= 7
對于大于天但是是恢復所需要的備份依然會(huì )被保留
清除備份保留策略
RMAN> configure retention policy clear;
注意obsolete 與expired
obsolete:是指根據保留策略來(lái)確定該備份是否在恢復的時(shí)候需要,如不在需要或有更新的備份來(lái)替代,則該備份集被置為
obsolete,即廢棄的備份集或鏡像副本。
expired: 是指執行crosscheck時(shí),根據存儲倉庫中記錄的備份信息來(lái)定位備份集或鏡像副本,而找不到對應的備份集或鏡像副
本,則這些備份集或鏡像副本被置為expired。
10.使用BACKUP ... VALIDATE驗證數據文件邏輯壞塊,損壞的壞塊將被記錄到v$database_block_corruption視圖
BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
四、備份相關(guān)的動(dòng)態(tài)性能視圖及監控
1.相關(guān)視圖
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命令
查詢(xún)v$process和v$session判斷哪一個(gè)會(huì )話(huà)與之對應的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完整的進(jìn)度
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%'
6 and totalwork!=0;
--通過(guò)如下SQL獲得rman用來(lái)完成備份操作的服務(wù)進(jìn)程的SID與SPID信息:
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自動(dòng)備份
備份腳本+crontab
bak_inc0 :級增量備份,每周日使用級增量進(jìn)行備份
bak_inc1 :級增量備份,每周三使用級增量備份,備份從周日以來(lái)到周三所發(fā)生的數據變化
bak_inc2 :級增量備份,備份每天發(fā)生的差異增量。如從周日到周一的差異,從周一到周二的差異
--下面是級增量的腳本,其余級與級依法炮制,所不同的是備份級別以及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;
}
逐個(gè)測試腳本
[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 ]
檢查自動(dòng)備份是否成功執行
聯(lián)系客服