簡單的來說,RMAN(Oracle Recovery Manager)可以用來備份和還原數據庫文件、歸檔日誌和控制文件。它也可以用來執行完全或不完全的數據庫恢復。
RMAN啓動數據庫上的Oracle服務器進程來進行備份或還原。備份、還原、恢復是由這些進程驅動的。
1、RMAN概述
•RMAN: Oracle Recovery Manager, Oracle恢復管理器。
•RMAN是一個用來管理備份,還原,恢復操作的Oracle工具。
•RMAN擁有一套獨立於平臺的強大的命令語言。
•RMAN有一個命令行接口(CLI),OEM也提供一個圖形化的用戶界面。
•從Oracle8i開始,RMAN開始得到使用。
•RMAN提供了一些用戶管理備份所不能完成的功能。
–將頻繁執行的腳本保存在數據庫中
–可以使用增量備份,只備份上次備份以來被改變過的塊
–可以用RMAN管理備份片的大小
–通過並行操作,可以節省備份時間
–RMAN操作可以被集成到操作系統的計劃任務自動執行
2、RMAN功能
•備份數據庫,表空間,數據文件,控制文件,歸檔日誌,spfile
•存儲頻繁執行的備份和恢復的操作腳本
•執行增量的塊級備份
•跳過未使用的塊
•指定備份限制
•探測備份過程中的壞塊
•管理備份和恢復任務
•通過以下方式增加性能:
–自動並行處理
–更少的redo生成
–限制備份的I/O
–磁帶流
•RMAN還可以:
–複製數據庫
–創建複用數據庫
–…
3、RMAN知識庫的保存
Rman知識庫用來記錄已存在的rman備份的資料信息。
·通常有以下兩個場所
–目標數據庫控制文件
–恢復目錄
•如果選擇目標數據庫的控制文件保存RMAN知識庫:
–該知識庫不能保存RMAN腳本。
•如果選擇目標數據庫控制文件保存RMAN知識庫:
–CONTROL_FILE_RECORD_KEEP_TIME決定了控制文件中RMAN知識庫被覆蓋之前保留的天數。
–控制文件可能會增大。
4、幾個常見常用的名詞解釋
·Backup sets 備份集合
備份集合有下面的特性:
- 包括一個或多個數據文件或歸檔日誌
- 以oracle專有的格式保存
- 有一個完全的所有的備份片集合構成
- 構成一個完全備份或增量備份
·Backup pieces 備份片
- 一個備份集由若干個備份片組成。
- 每個備份片是一個單獨的輸出文件。
- 一個備份片的大小是有限制的;如果沒有大小的限制, 備份集就只由一個備份片構成。
- 備份片的大小不能大於使用的文件系統所支持的文件長度的最大值。
·Image copies 鏡像備份
- 鏡像備份是獨立文件(數據文件、歸檔日誌、控制文件)的備份。
- 它很類似操作系統級的文件備份。
- 它不是備份集或 備份片,也沒有被壓縮。
·Full backup sets 全備份集合
- 全備份是一個或多個數據文件中使用過的數據塊的的備份。
- 沒有使用過的數據塊是不被備份的,也就是說,oracle 進行備份集合的壓縮。
·Incremental backup sets 增量備份集合
- 增量備份是指備份一個或多個數據文件的自從上一次同一級別的或更低級別的備份以來被修改過的數據塊。
- 與完全備份相同,增量備份也進行壓縮。
·File multiplexing
- 不同的多個數據文件的數據塊可以混合備份在一個備份集中。
·Recovery catalog resyncing 恢復目錄同步
- 使用恢復管理器執行backup、copy、restore或者switch命令時,恢復目錄自動進行更新,但是有關日誌與歸檔日誌信息沒有自動記入恢復目錄。
- 需要進行目錄同步。使用resync catalog命令進行同步。
RMAN>resync catalog;
RMAN-03022:正在編譯命令:resync
RMAN-03023:正在執行命令:resync
RMAN-08002:正在啓動全部恢復目錄的 resync
RMAN-08004:完成全部 resync
·Recovery catalog恢復目錄
- 恢復目錄是由RMAN使用、維護的用來放置備份信息的倉庫。RMAN利用恢復目錄記載的信息去判斷如何執行需要的備份恢復操作。
- 恢復目錄可以存在於ORACLE數據庫的計劃中。
- 雖然恢復目錄可以用來備份多個數據庫,建議爲恢復目錄數據庫創建一個單獨的數據庫。
- 恢復目錄數據庫不能使用恢復目錄備份自身。
·使用恢復目錄的優勢
- 可以存儲腳本;
- 記載較長時間的備份恢復操作;
·通道
一個通道是RMAN和目標數據庫之間的一個連接,'allocate channel'命令在目標數據庫啓動一個服務器進程,同時必須定義服務器進程執行備份或者恢復操作使用的I/O類型
通道控制命令可以用來:
- 控制RMAN使用的O/S資源
- 影響並行度
- 指定I/O帶寬的限制值(設置limit read rate參數)
- 定義備份片大小的限制(設置limit kbytes)
- 指定當前打開文件的限制值(設置limit maxopenfiles)
5、FORMAT字符串替代變量
使用FORMAT參數時經常使用的一些替換變量:
%c:備份片的拷貝數(從1開始編號),當生成多重備份時,用於指定備份片的副本號
%d:數據庫名稱;
%D:位於該月中的天數 (DD);
%M:位於該年中的月份 (MM);
%N:用於指定表空間的名稱
%f: 用於指定絕對文件號
%F:一個基於DBID 唯一的名稱,這個格式的形式爲c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 爲該數據庫的DBID,YYYYMMDD 爲日期,QQ 是一個1-256 的序列;
%n:數據庫名稱,並且會在右側用x字符進行填充,使其保持長度爲8;
%u:是一個由備份集編號和建立時間壓縮後組成的8字符名稱。利用%u可以爲每個備份集生成一個唯一的名稱;
%p:表示備份集中備份片段的編號,從1 開始編號;
%U:是%u_%p_%c的簡寫形式,利用它可以爲每一個備份片段(即磁盤文件)生成一個唯一名稱,這是最常用的命名方式;
%s:備份集的號;
%t:備份集時間戳;
%T:年月日格式(YYYYMMDD);s
注:如果在BACKUP命令中沒有指定FORMAT選項,則RMAN默認使用%U爲備份片段命名。
%e: 用於指定歸檔日誌序列號
6、CONFIGURE配置項
通過SHOW ALL命令,我們可以來查看當前配置。
-----------------------------------------------------------------------------------
RMAN>
RMAN> show all;
RMAN 配置參數爲:
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 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 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SNCFCHIC.ORA'; # default
RMAN>
-----------------------------------------------------------------------------------
先介紹一個很有用的小竅門。
-- 後跟#default表示該條配置仍然是初始的默認配置
-- 如果我們想修改某條配置,直接拷貝下來,把“# default”部分去掉,前面改爲新設定值即可。
例如,我們要修改RETENTION POLICY的值爲5,
Step1:show all一下,拷貝下面這句話
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
Step2:修改爲新配置值,並執行。
-------------------------------------------------------------------------------
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
新的 RMAN 配置參數:
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
已成功存儲新的 RMAN 配置參數
RMAN>
-------------------------------------------------------------------------------
-- 如果我們想把某條更改過的配置再置爲初始值,我們可以用下面的命令
命令:CONFIGURE ... CLEAR;
例如:
-------------------------------------------------------------------------------
RMAN> CONFIGURE RETENTION POLICY CLEAR;
舊的 RMAN 配置參數:
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
RMAN 配置參數已成功重置爲默認值
RMAN>
-------------------------------------------------------------------------------
接下來,我們把上面的各種配置逐條過一遍。
(1)CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
(2)CONFIGURE BACKUP OPTIMIZATION OFF; # default
(3)CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
(4)CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
(5)CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
(6)CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
(7)CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
(8)CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
(9)CONFIGURE MAXSETSIZE TO UNLIMITED; # default
(10)CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
(11)CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
(12)CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
(13)CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SNCFCHIC.ORA'; # default
■(1)
CONFIGURE RETENTION POLICY 配置備份保留策略
關於備份保留策略,有兩種:
基於時間:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;
基於冗餘數量:
CONFIGURE RETENTION POLICY TO REDUNDANCY n;
也可以取消備份保留策略:
CONFIGURE RETENTION POLICY TO NONE;
■(2)
CONFIGURE BACKUP OPTIMIZATION配置備份優化
備份優化,包括OFF和ON兩個狀態
打開備份優化:
CONFIGURE BACKUP OPTIMIZATION ON;
關閉備份優化:
CONFIGURE BACKUP OPTIMIZATION OFF;
■(3)
CONFIGURE DEFAULT DEVICE TYPE 配置IO設備類型
RMAN支持的IO設備類型有兩種:磁盤(DISK)和磁帶(SBT),默認情況下爲磁盤。
使用磁盤設備:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
使用磁帶設置:
CONFIGURE DEFAULT DEVICE TYPE TO SBT;
在這裏需要注意的一點是:如果IO設備發生變化,相關配置項也需要修改。例如:
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
■(4)(5)(13)
CONFIGURE CONTROLFILE AUTOBACKUP配置控制文件自動備份
是否自動備份,包含兩個狀態:OFF和ON
打開自動備份
CONFIGURE CONTROLFILE AUTOBACKUP ON
禁止自動備份
CONFIGURE CONTROLFILE AUTOBACKUP OFF
同時可以通過如下配置指定備份的控制格式,路徑。例如:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
在備份期間,將產生一個控制文件的快照,用於控制文件的讀一致性,這個快照可以通過如下配置:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/BACKUP/SNCFJSSWEB.ORA';
■(6)
CONFIGURE DEVICE TYPE 設置並行備份
RMAN支持並行備份與恢復,也可以在配置中指定默認的並行程度。例如:
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
指定在以後的備份與恢復中,將採用並行度爲2,同時開啓2個通道進行備份與恢復,當然也可以在run中指定通道來決定備份與恢復的並行程度。
並行的數目決定了開啓通道的個數。如果指定了通道配置,將採用指定的通道,如果沒有指定通道,將採用默認通道配置。
默認情況下,自動分配通道的並行度爲1,如果你通過設置PARALLELISM設置了並行通道爲2,那麼在run塊中,如果你沒有單獨通過ALLOCATE CHANNEL命令指定通道,
它會默認使用2條並行通道,如果你在run命令塊中指定了數個ALLOCATE CHANNEL,那麼rman在執行備份命令時會以你設置的channel爲準,而不管configure中配置了多少個並行通道。
需要注意的一點是,在backup命令中有一個FILESPERSET參數,該參數是指rman建立的每個備份集中所能包含的備份片段(即磁盤文件)的最大數,該參數默認值爲64,
如果在執行backup命令時沒有指定該參數值,那麼rman會僅使用第一個通道來執行備份,其它通道將處於空閒狀態。
關於通道數與FILESPERSET值之間也有一個大小關係,邏輯稍顯複雜,總之一條,filesperset值不要小於你設定的通道數。
■(7)(8)
CONFIGURE DATAFILE BACKUP COPIES 設置備份文件冗餘度
RMAN提供了一種更謹慎的備份策略:Duplexed方式備份,其實質即是在生成備份集的同時,向指定位置生成指定份數(最大不超過4份)的備份集複製,
以避免在災難性事故時數據庫損壞和備份丟失的情況下導致完全崩潰,提高備份可用性。
RMAN中提供了三種方式實現Duplexed方式備份:
-- 在RMAN中執行BACKUP命令時顯式指定COPIES參數。
例如: RMAN> BACKUP COPIES 3 DATABASE;
上述命令將會在全庫備份的同時,自動生成當前備份集的2份拷貝到默認備份目錄。
-- 在RUN{}命令塊中利用SET BACKUP COPIES命令爲該命令塊中所有的BACKUP命令設置Duplexed方式,
例如: RMAN> RUN{
2>SET BACKUP COPIES 2;
3>BACKUP DEVICE TYPE DISK FORMAT 'D:\BACKUP1\%U','D:\BACKUP2\%U'
4>TABLESPACE USERS,SALES;
5>}
上述命令將生成兩份備份集,分別存儲到d:\backup1和d:\backup2目錄。
-- 通過CONFIGURE ..... BACKUP COPIES命令設置預定義的備份Duplexed方式。
CONFIGURE ... BACKUP COPIES命令可以爲指定的設備類型設置默認的備份拷貝數量。這個配置僅適用於數據文件與歸檔重做日誌文件和備份,
並且,只有在使用自動分配的通道時才能夠使用CONFIGURE ... BACKUP COPIES命令設置的配置。
例如:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;
上述命令將disk設置上數據文件與歸檔文件的拷備數量設置爲2,當再執行BACKUP DATABASE備份時,即會自動生成2份數據文件的備份集。
■(9)
CONFIGURE MAXSETSIZE 配置備份集的最大尺寸
該配置限制通道上備份集的最大尺寸。單位支持bytes,K,M,G。默認值是unlimited。
■(10)
8.CONFIGURE ENCRYPTION 配置備份加密
10g版本中新增的配置選項。數據庫端配置好了Oracle Encryption Wallet後,即可通過CONFIGURE命令設置加密備份策略,加密策略既可以是針對整個數據庫,
也可以是表空間,或者歸檔文件。要打開備份加密,只需設置ENCRYPTION爲ON即可:
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON; 如果要禁止的話將ON改爲OFF:
RMAN> CONFIGURE ENCRYPTION FOR DATABASE OFF; 表空間級的設置同理。
■(11)
CONFIGURE ENCRYPTION ALGORITHM 配置默認的加密算法
視圖V$RMAN_ENCRYPTION_ALGORITHMS中可以獲取RMAN中支持的加密算法,視圖中列出的加密算法可以在執行備份操作時指定,或者是通過CONFIGURE進行配置:
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256'; 如果沒有指定加密算法,默認情況下會選擇AES128。
■(12)
CONFIGURE ARCHIVELOG DELETION POLICY配置歸檔文件刪除策略
也是從10g版本開始提供的配置選項,用來指定歸檔文件的刪除策略。
在默認情況下歸檔文件備份完之後就可以被刪除,不過對於配置了Data Guard環境的數據庫系統,Primary數據庫端的歸檔文件就不能說刪就刪,因爲歸檔文件不僅它自己要用,
與其在相同Data Guard環境的Standby數據庫也要用,從嚴謹的角度來考慮,DBA必須要保證歸檔文件在Standby端成功接收並且應用之前,Primary端始終能保存該文件。
在10g之前的版本,這一問題困擾了很多DBA,無奈之下不少人只能通過操作系統腳本的方式,在刪除歸檔文件之前,首先對Standby端數據庫的歸檔文件應用狀態作判斷,直到確認一切OK纔敢在Primary端執行正常刪除。
10g之後的版本,Oracle在RMAN中內置增加了一項歸檔文件的刪除策略,終於,DBA可以僅通過一項配置就解決該問題了。該策略對應兩個值:
APPLIED ON STANDBY:設置爲該值時,當通過附加的DELETE INPUT子句刪除Standby數據庫仍需要的日誌時,會提示RMAN-08137錯誤。
不過用戶仍然可以手動地通過DELETE ARCHIVELOG方式刪除。
NONE:設置爲該值時,則不啓用歸檔文件的刪除策略。默認情況下就是NONE。
例如,啓用APPLIED ON STANDBY:
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters are successfully stored
7、RMAN備份相關的動態性能表 (20110821)
-- V$ARCHIVED_LOG:
本視圖包含了所有歸檔重做日誌文件的創建情況,備份情況以及其他信息。
-- V$BACKUP_CORRUPTION:
這個視圖顯示了RMAN在哪些備份集中發現了損壞的數據壞。在你使用BACKUP VALIDATE命令對備份集進行檢查時如果發現了損壞的數據塊,RMAN將在這個視圖中寫入記錄。
-- V$COPY_CORRUPTIO:
本視圖顯示了哪些鏡像複製備份文件已經被損壞。
-- V$BACKUP_DATAFILE:
本視圖通常用來獲取每個數據文件中非空白數據塊的數量,從而幫助你創建出大小基本相等的備份集。另外,在視圖中也包含了數據文件中損壞的數據塊的信息。
-- V$BACKUP_REDOLOG:
本視圖顯示了在現有的備份集中飲食有哪些歸檔重做日誌文件。
-- V$BACKUP_SET:
本視圖顯示了已經創建的備份集的信息。
-- V$BACKUP_PIECT:
本視圖顯示了已經創建的備份片段的信息。
可以通過如下SQL語句獲得正在進行的鏡像複製操作的狀態信息:
Select sid,
serial#,
context,
sofar,
totalwork,
round(sofar / totalwork * 100, 2) "% Complete"
From v$session_longops
where opname like 'RMAN:%'
and opname not like 'RMAN:aggregate%'
通過如下SQL獲得rman用來完成備份操作的服務進程的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%'
1、目標數據庫
2、服務器進程
3、通道
4、RMAN資料庫
ORACLE總是將RMAN元數據放到目標數據庫的控制文件中,如果配置了恢復目錄,則RMAN元數據會被放到恢復目錄中。
5、恢復目錄
在RMAN元數據存放天數達到初始化參數control_file_record_keep_time的值之後,其元數據可能會被覆蓋,從而導致之前的備份不能使用。
6、介質管理層
7、RMAN包
包dbms_backup_restore用於執行備份、轉儲和恢復操作。backup、copy、restore、recover
包dbms_revcat用於維護恢復目錄。resync catalog、catalog
包dbms_rcvman用於查詢恢復目錄和目標數據庫控制文件。list、report
9、RMAN特點
1、備份數據庫、表空間、數據文件、控制文件、歸檔日誌和SPFILE。目標庫必須處於MOUNT狀態或OPEN狀態。
2、存儲頻繁執行的備份和恢復操作。放到腳本中執行
3、跳過未用塊。
4、執行增量塊級備份
5、指定備份限制
6、在備份時檢測損壞塊。用DBVERIFY工具進行檢查
7、自動使用並行化特徵提高備份和恢復性能。分配多個CPU、多個通道。