RMAN 實際上即裝即用的,我們通常不需要對其做什麼調整。 但是,RMAN 體繫結構中還包含許多組件,當這些組件構成一個整體時,就必須調整RMAN的設定以從備份進程中得到最佳的效能。 通常RMAN 調整設計到處理邏輯和物理資料庫設計中的低效率,調整介質管理庫(Media Management Library: MML), 調整RMAN 和MML 層以備份資料庫的物理裝置更好地共存。
一. 調整RMAN 前的工作
如果RMAN 的備份操作時間非常長,這可能不是RMAN的故障。 在大多數情況下,這可能是資料庫或MML存在問題。
調整RMAN和備份與恢複進程時,也可能會出現備份時間長的問題。儘管RMAN經常出現問題,但是這並不一定是RMAN故障。可能是系統總的頻寬不夠,而RMAN 只是造成這種局面的一個因素而已。 資料庫的效能越好,RMAN 備份操作的效能就越好。
1、可以達到的RMAN 效能
在RMAN 的白皮書上提到,在當前有效技術條件下,在磁帶備份和恢複資料的速率能夠達到每小時1TB。 隨著磁帶備份技術的不斷髮展,這個速率還可能變的更大。
2、使用合適的硬體
如果想得到更高的備份效能,首先考慮的是所配置的備份硬體。 備份硬體可能包括磁帶裝置以及關聯的基礎結構(如電纜, 自動磁帶介面 和 可能選用的MML層軟體)。
備份介質硬體決定了讀寫裝置的速度。 寫裝置的速度越快,備份的速度就會越快。 此外,執行備份操作的裝置越多,備份速度也就會越快。 增加RMAN使用磁碟機幾乎能夠線性地提高備份與還原操作的效率。 在多個通道和備份裝置中並存執行備份操作的能力對於快速備份大型Oracle 資料庫是至關重要的。
RMAN能夠受益於並行的CPU 資源,但是僅限於此而已,再增加更多的CPU 並不會繼續使效能顯著提高。 這與使用更多的備份裝置是完全不同的。 在大多數情況下,使用多個備份裝置比添加CPU更能夠對備份與還原視窗產生積極的影響。
大多數備份裝置是非同步而不是同步的。 非同步裝置使得備份伺服器處理序無需等待I/O 的完成就可以發出I/O指令。例如:一個非同步作業允許伺服器處理序發出磁碟寫指令,在執行這個指令的同時,該進程可以繼續填充記憶體緩衝區以準備下一個寫操作。 另一方面,同步裝置在執行其他任何工作之前都必須等待備份操作的完成。 因此,使用非同步比同步裝置更有效率。
下面說幾個有關非同步作業的參數:
BACKUP_TAPE_IO_SLAVES參數(預設為False)是設定磁帶I/O非同步。如果支援磁帶備份裝置的非同步I/O,我們建議將這個參數設定為TRUE,以啟動該設定。 建立BACKUP_TAPE_IO_SLAVES參數後,可以使用allocate channel命令或configure channel 命令的parm 參數來定義記憶體緩衝區的大小。
磁帶緩衝區的大小是在配置通道時確定的,它的預設值是由作業系統決定的,不過通常為64kb。 使用allocate channel命令可以將磁帶緩衝區的大小設定為不同的值。 為了達到最佳效能,我們建議將磁帶緩衝區的大小設定為256KB 或更大。 如:
Allocate channel c1 device type sbt parms="blksize=262144, ENV=(NB_ORA_CLASS=RMAN_orcl)"
如果要在磁碟上備份資料,我們必須判斷作業系統是否支援非同步I/O。 如果支援,Oracle 會自動使用非同步I/O的功能;如果不支援,此時將Oracle提供的DBWR_IO_SLAVES參數設定為非零值,通過啟動多個DBWR進程,Oracle 會類比到磁碟的非同步I/O.
當配置DBWR_IO_SLAVES或者BACKUP_TAPE_IO_SLAVES時,可能也需要建立一個large池。 這將協助消除共用池爭用和記憶體配置的錯誤問題,這些是在啟用BACKUP_TAPE_IO_SLAVES時伴隨共用池使用一起發生的問題。如果使用Oracle 10g中的Automatic Shared Memory Management(ASMM),Oracle 將管理共用池的記憶體配置。 如果需要手工設定large 池,則磁碟緩衝區的總大小限制為每個通道16MB。 為備份設定LARGE_POOL_SIZE參數的公式如下:
LARGE_POOL_SIZE=(number of allocated channels)*(16MB+size of tape buffer)
如果沒有配置DBWR_IO_SLAVES 和BACKUP_TAPE_IO_SLAVES。Rman就不會使用large池。一般來說,除非系統不支援非同步I/O,這時才需要配置這些參數設定以從RMAN中獲得良好的效能。
3、調整資料庫
調整欠缺的資料庫也會對備份時間產生非常消極的影響。 某些資料庫的調整問題也會顯著地影響還原時間。
(1)調整I/O
I/O 爭會降低系統的運行速度。較差的I/O分發不但會影響資料庫的效能,還會影響備份與還原時間, 這是因為RMAN就是在裝置上爭用I/O時間的另一個進程(或者並行的多個進程)。
備份是一個讀密集型(read-intensive)操作。 如果I/O 分發較差,不僅RMAN效能會受到影響,而且使用者也至少會在備份操作過程中收到影響。 如果所有恢複都是完全資料庫恢複,恢複操作可能會簡單一點。 但是如果只恢複一個資料檔案或一個資料表空間,由於資料庫被開啟並處於使用當中,就能夠發現較差的I/O分發會影響恢複視窗和使用者。 從根本上說,差的I/O 分發不僅會影響日常的資料庫使用者, 而且會導致備份和恢複操作花費更長的時間。
(2)調整記憶體的使用
與所有的Oracle 進程相同,RMAN 也需要使用記憶體。 啟動RMAN操作時,就會為這個Rman操作分配一個用於工作的緩衝區,我們可以根據以下因素來確定緩衝區的大小:
(a) RMAN 備份和恢複多工影響
(b) 所使用的裝置類型
(c) 操作期間所分配的通道數
(2.1) 為磁碟裝置分配記憶體緩衝區
在磁碟裝置上備份資料時,RMAN 最多可以分配16MB記憶體,這個記憶體是基於複用層級分配的。 如果複用層級誒4或以下,RMAN 會分配滅個大小為1MB的16個緩衝區。這些1MB緩衝區在要備份的資料檔案數之間分配。 因此,如果filesperset 參數(設定複用層級)設定為2,每個資料檔案就分配8個1MB緩衝區。
如果filesperset參數被設定為5到8之間的數,RMAN 就會分配大小為512KB的緩衝區,並且均勻地分給不同的資料檔案,此時,所分配的記憶體緩衝區不超過16MB。 如果複用層級大於8,每個資料檔案愛你被分配4個128kb的緩衝區,為每個資料檔案分配的緩衝區總計為512KB。
(2.2) 為SBT裝置分配記憶體緩衝區
為SBT裝置上備份資料時,RMAN會為所分配的每個通道分配4個緩衝區。 這些緩衝區的大小通常為256kb,因此每個通道分配的總記憶體為1MB。 可以使用allocate 或send 命令的parms 和blkzise 參數管理緩衝區大小。
這個記憶體通常是從PGA中分配的,不過如果BACKUP_TAPE_TO_SLAVES參數被設定為TRUE,除非分配了large池,否則就需要使用SGA,在這種情況下要使用large池。 因此,如果要配置I/O從屬(在SBT裝置上備份資料時通常應當配置I/O從屬),就應當配置一個large池,以減少large池對整個記憶體的需求。
(3)調整SQL
較差的SQL語句操作會對整個資料庫和資料庫所在的系統產生消極的影響。任何對資料庫的消極影響同樣會對備份操作產生消極的影響。 我們應當調整SQL 操作, 以減少鎖需的I/O數(邏輯上和物理上),並安排在系統空閑時間執行備份操作。
(4)調整環境
要確認備份調度不與I/O密集型資料庫操作(如資料載入或報告)衝突。另外,如果備份操作時間過長,就需要考慮使用增量備份策略,同時分析資料庫並判斷是否存在唯讀資料表空間,這樣就不需要經常備份唯讀資料表空間。 如果在歸檔模式下運行資料庫,還可以考慮在不同日期交錯備份資料表空間,以減少整個備份操作的時間, 不過,這個也是以更長的恢復為代價的。
(5)調整備份和恢複策略
如果資料庫相當大,我們就不能只執行一條backup database命令來備份全部檔案集,而應當採用分塊備份策略。 可以考慮使用單獨的backup tablespace 或者backup datafile命令對可能需要一起還原的相關資料檔案進行備份,並且為這些備份分配一個特定的通道,這樣可以減少在恢複操作期間交換磁帶的次數,可以最快的恢複相關的資料檔案。 如: