1.7.1資料庫備份與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 備份恢復概念
1.7.2使用RMAN進行備份
1.7.2.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 database format '/u01/app/oracle/rmanbak/whole_%d_%U';--備份整個資料庫並壓縮備份集
rman>backup database plus archivelog;
rman>backup database plus archivelogdelete all input;
rman>backup as compressed backupset database include current controlfile plus archivelog delete all input;
RMAN> run{
allocate channel ch1 type disk --手動分配一個通道
maxpiecesize=2g; --指定備份片的大小為2g
backup as compressed backupset --壓縮備份集
format '/u01/app/oracle/rmanbak/whole_%d_%U' filesperset=3--指定備份集中允許容納的檔案數為個
database;
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
-----------------------------------------------------------------------------------------------------------------------
1.7.2.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'; --備份型別為備份集
-----------------------------------------------------------------------------------------------------------------------
1.7.7.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"
-----------------------------------------------------------------------------------------------------------------------
1.7.7.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;
-----------------------------------------------------------------------------------------------------------------------
1.7.7.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 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時備份資料庫完成的動作(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;
1.7.7.6備份閃回區
RMAN> backup recovery area;
使用backup recovery area時,將備份位於閃回區且未進行過備份的所有檔案,這些檔案包括完整、增量備份集、自動備份的
控制檔案(假定使用閃回區作為備份路徑時)、歸檔日誌、資料檔案的映象副本等。閃回日誌,當前的控制檔案。
聯機重做日誌不會被備份
RMAN> backup recovery files;
使用backup recovery files時,將備份磁碟上未進行過備份的所有恢復檔案,而不論是否位於閃回區
注:使用上述兩條命令時,備份目的地必須是磁帶
7.總結:
資料檔案的備份集對於未使用的塊可以執行增量備份,可以跳過未使用過的資料塊來進行壓縮備份
對於控制檔案、歸檔日誌檔案、spfile檔案則是簡單的拷貝,並對其進行打包壓縮而已