RMAN備份功能詳解
一、Backupset 備份集
1. 完整數據庫備份
基本完整備份
RMAN> backup database format='/u01/myrman/prod_%s.bak';
完整備份包含歸檔日志
RMAN> backup database plus archivelog delete all input;
說明:備份所有數據文件、控制文件、spfile文件及所有歸檔日志,同時刪除舊的歸檔日志。執行后,控制文件相關信息(v$archived_log)也會被更新,歸檔日志物理文件被刪除。
帶跳過選項的備份(不推薦)
RMAN> backup database format '/u01/myrman/%s_bak' plus archivelog delete input skip inaccessible;
說明:skip inaccessible參數跳過物理上缺失的日志文件。注意backup database緊接format可以使datafile備份片指定到format目的地。
增量備份
-- 0級增量壓縮備份(默認差異增量)
RMAN> backup as compressed backupset incremental level 0 database;
-- 1級累計增量備份
RMAN> backup cumulative incremental level 1 database;
-- 單獨還原歸檔日志
RMAN> restore archivelog all;
2. 表空間備份
-- 備份指定表空間
RMAN> backup tablespace users format '/u01/myrman/users_%s.bak' tag=userbak;
-- 備份系統表空間及歸檔日志
RMAN> backup tablespace system plus archivelog delete all input;
3. 數據文件備份
RMAN> backup datafile 3,5 format '/u01/myrman/%d_%s.bak';
說明:可以同時備份多個數據文件,用逗號分隔。
4. 歸檔日志備份
RMAN> backup archivelog all delete input;
說明:備份數據文件、控制文件、spfile及歸檔日志,然后刪除所有歸檔原始文件。
注意:delete input和delete all input的區別在于,如果歸檔原始文件有多個路徑的副本,前者僅刪除備份了的歸檔原始文件。
5. 控制文件備份
RMAN> backup current controlfile;
6. 參數文件備份
RMAN> backup spfile;
7. 閃回恢復區備份
RMAN> backup recovery area;
說明:只能備份到磁帶上。
8. 備份備份集
RMAN> backup backupset 18;
說明:將disk上的backupset備份一份到tape上,注意不產生新的備份集,類似duplex。
二、Image(映像文件)備份
1. 映像備份語法
-- 方法一
RMAN> copy datafile 4 to '/u01/myrman/users_%s.bak';
-- 方法二(推薦,統一格式)
RMAN> backup as copy tablespace 'TEST' format '/u01/myrman/%d_test_%s.bak';
2. 列出映像集
RMAN> list datafilecopy all;
優勢:RMAN可在不執行restore情況下直接使用映像副本,而backupset在recover前必須先restore。
注意:RMAN映像副本備份不包括spfile。
3. 刪除映像集
RMAN> delete datafilecopy 1;
三、增量備份
1. 基本概念
增量備份只備份自某次備份以來發生變化的block。RMAN在備份時會記錄datablock的scn,下次備份時通過比較某次備份數據塊上的scn來確定該數據塊是否發生變化。
2. 增量備份策略
差異增量備份(Differential incremental backup)
以某次以來同級別或低級別的備份作為基礎備份
累積增量備份(Cumulative incremental backup)
以某次以來比自己級別低的備份作為基礎備份
注意:10g以后,增量備份只有0級和1級,原來2級以上的級別可兼容,但不推薦使用。
3. 重要注意事項
- 0級增量備份不等同于全備:full備份不能做為增量備份的基礎備份
- 首次備份規則:如果沒有備份過0級備份,那么第一次1級備份(差異或累計)就成為0級備份
- 恢復優先級:recover做恢復時如有增量備份,自動優先使用增量備份
-- 常規恢復
RMAN> restore database;
RMAN> recover database; -- 優先使用增量備份代替日志前滾
-- 非歸檔模式恢復
RMAN> restore database;
RMAN> recover database noredo; -- 使用增量但不應用日志
4. 塊變更跟蹤(Block Change Tracking)
概念介紹
從10G開始引入,增量備份默認要掃描整個要備份的數據文件塊,啟用塊改變跟蹤后,后臺啟動CTWR進程向變更跟蹤文件中記錄每個已更改的塊的地址,大幅提升增量備份速度。
配置示例
-- 啟用塊變更跟蹤
SQL> alter database enable block change tracking using file '/u01/oradata/prod/change_tracking';
-- 查看跟蹤狀態
SQL> col filename for a50;
SQL> select * from v$block_change_tracking;
-- 0級基礎備份(用時約36秒)
RMAN> backup incremental level 0 format '/u01/myrman/%s.bak' datafile 2;
-- 1級增量備份(用時約2秒,大幅縮短)
RMAN> backup incremental level 1 format '/u01/myrman/%s.bak' datafile 2;
-- 關閉塊變更跟蹤
SQL> alter database disable block change tracking;
考點:使能塊改變跟蹤后,需要一個相當于incremental level 0 backup做為基礎備份。
5. 增量更新備份
運行機制
以一個image copy為基礎,將增量備份應用到這個image copy,使image copy的scn不斷更新累積,恢復時無需還原步驟。
RMAN> run {
recover copy of database with tag 'incr_update';
backup incremental level 1 for recover of copy with tag 'incr_update' datafile 4;
}
執行效果:
- 第一天:創建相當于level 0的image copy
- 第二天:創建level 1的backup set
- 第三天及以后:將level 1應用(疊加)到image copy,不斷更新
優勢:image copy不斷累積更新,恢復時省去還原步驟,大幅縮短恢復時間。
四、數據恢復顧問(DRA)
功能概述
DRA是一個診斷和恢復數據庫的工具,通過RMAN界面或EM操作,依賴ADR的自動診斷信息以及Health Monitor。
使用示例
-- 1. 備份表空間
RMAN> backup tablespace sysaux format '/u01/myrman/%d_%s.bak';
-- 2. 模擬故障(刪除數據文件后啟動數據庫報錯)
-- 3. 在mount模式下連接RMAN
[oracle@prod~]$ rman target /
-- 4. 查看故障列表
RMAN> list failure;
-- 5. 獲取修復建議
RMAN> advise failure;
-- 6. 執行修復
RMAN> repair failure;
重要說明
- 操作順序:必須先
list failure,然后advise failure,順序不能錯 - 快捷修復:直接使用
advise failure all包含list failure,然后repair failure nopromp可直接open數據庫 - 模式支持:所有啟動模式下都可以使用DRA
- 環境限制:目前只能在單實例下運行,RAC不可使用
五、Expired狀態管理
1. 備份集狀態
- AVAILABLE:可用
- UNAVAILABLE:不可用
- EXPIRED:過期(RMAN元數據存在,但OS上物理備份片已被刪除)
2. 狀態轉換
-- AVAILABLE/UNAVAILABLE轉換
RMAN> CHANGE BACKUPSET 1 UNAVAILABLE;
3. 交叉檢查
-- 檢查備份狀態
RMAN> crosscheck backupset;
RMAN> crosscheck copy;
RMAN> crosscheck archivelog all;
4. 刪除過期備份
RMAN> delete expired backup;
RMAN> delete expired copy;
RMAN> delete expired archivelog all;
六、編目元數據(Catalog Command)
1. 功能說明
當RMAN元數據受損但物理備份存在時,可通過catalog命令重新編目RMAN元數據。
2. 常用語法
-- 編目備份片
RMAN> CATALOG BACKUPPIECE '/disk1/backups/backup_820.bak';
-- 編目數據文件副本
RMAN> CATALOG DATAFILECOPY '/disk1/old_datafiles/01_01_2003/users01.dbf';
-- 編目歸檔日志
RMAN> CATALOG ARCHIVELOG '/disk1/arch_logs/archive1_731.log', '/disk1/arch_logs/archive1_732.log';
-- 編目整個目錄
RMAN> CATALOG START WITH '/disk1/backups/';
3. 刪除元數據
RMAN> change backuppiece 11 uncatalog;
注意:此操作僅從RMAN元數據中刪除記錄,物理備份文件仍然存在。
4. 重要區別
DELETE EXPIRED:不刪除任何文件,只更新RMAN存儲庫(元數據)DELETE OBSOLETE:刪除文件并更新存儲庫
5. 歸檔日志整理示例
-- 1. 查看控制文件中的歸檔記錄
SYS@ prod>select name from v$archived_log;
-- 2. 物理刪除歸檔日志文件
[oracle@cuug ]$ rm /u01/arch/arch_1_880581688_10.log
[oracle@cuug ]$ rm /u01/arch/arch_1_880581688_12.log
-- 3. 清除控制文件中所有歸檔記錄
SYS@ prod>execute sys.dbms_backup_restore.resetCfileSection(11);
-- 4. 重新注冊需要的歸檔日志
RMAN> catalog start with '/u01/arch/';
-- 5. 驗證結果
SYS@ prod>select name from v$archived_log;
浙公網安備 33010602011771號