[zt] RMAN的原理
RMAN發出備份全庫命令後,RMAN生成到目標資料庫的bequeath連線,也就是說會檢查ORACLA_SID變數中的例項名,並在該在例項上產生一個伺服器程式,然後作為sysdba登陸,然後會產生一個作為備份的通道,(在PGA或者是在SGA分配儲存)。隨後RMAN呼叫SYS.DBMS_RCVMAN請求資料庫結構資訊,包括控制檔案的資訊(當前序列號,建立時間……)由於指定了備份全庫,所以RMAN會請求資料庫中資料檔案資訊,並判斷是否存在offline資料檔案(包括所在的位置和工作方式)。
RMAN開始備份,為了保持資料一致性RMAN必須構建控制檔案快照,接下來RMAN呼叫DBMS _BACKUP_RESTORE資料包,該呼叫可以建立備份片。RMAN擁有檔案列表,所以它為資料檔案讀取操作分配記憶體緩衝區,分配緩衝區後RMAN初始化備份片。一旦初始化了備份片,RMAN會判斷是否使用了伺服器引數檔案,如果使用了則會做為備份的一部分,還要備份控制檔案,之後才開始備份資料檔案,並將其推至記憶體。
為了實現這一功能,通道程式在磁碟上執行預讀取操作,並且將多個資料檔案讀入記憶體中,RMAN會判斷資料塊頭資訊是否仍然為零,如果資料塊
沒有被使用過,就不會發生到輸出緩衝區的寫操作,同時會丟棄這個資料塊(這就RMAN為什麼會只備份使用過的資料的原因,也是它的優點)RMAN還會執行檢查資料塊有沒有corruption操作。當檢查透過了就被寫入到輸出緩衝區。一旦輸出緩衝區填滿了,就被推至備份檔案位置。
在備份資料塊的時候,RMAN影子程式會得到備份狀態資訊。並將它傳給V$session_longops檢視。查詢它能得到資訊。
當資料檔案的所有資料塊都被讀入輸入緩衝區並確定了狀態之後RMAN就會透過將這個資料檔案寫入備份片來結束該檔案的備份操作。所有資料檔案寫入備份片之後,RMAN生成最後一個對SYS DBMS BACKUP RESTORE 資料包的呼叫,該呼叫在控制檔案中寫入備份資訊(包括備份片名,啟動備份操作時的檢查點的SCN和完成備份的時間)。
以上這些都要在歸檔日至中進行。
但是我還有個疑問,就是RMAN在執行的時候,是不是在資料一致性的情況下進行的呢?如果是,怎麼在這個期間對資料進行增刪改呢,如果不是,備份的資料就會不完整,導致資料丟失,查了很多資料,終於找到了答案。如下:
其實rman備份開始之前的歸檔是沒有用的,可以刪除,但是不能在rman備份之前就刪除,因為rman有可能備份失敗,可以在rman備份成功之後刪除之。
rman備份是一種物理的備份,它直接去讀取資料塊,因此rman是塊級別的備份。從備份的那個時間點開始rman將鎖定此刻的資料檔案資訊,也就是說只是備份資料檔案到此刻的資訊為止。
但是rman並不鎖定資料檔案的使用,也就是說rman的備份,不是資料庫一致性狀態的備份,由於rman備份是塊級別的,它只備份控制檔案中已經存在的資料塊,同時資料庫還在執行之中,那麼就有可能會出現某些已經提交的操作,但是dbwn還沒有寫入資料檔案,或者已經被rman備份過的資料塊,又重新被修改,等等,
這些資訊rman備份都不會記錄,也是rman無法記錄的。但是記錄這些資訊的是redo file,所以在rman完畢建議馬上執行日誌切換,然後備份歸檔日誌,因為在rman恢復過程中,rman本身備份的資料是不一致的,要靠這些已經歸檔的redo file資訊恢復和保持資料庫的一直狀態。
當然備份的歸檔日誌中,可能包含有rman開始之前的歸檔,這些是沒用的,
其實這些歸檔檔案中真正有用的是從rman備份開始到rman備份結束時刻系統產生的歸檔日誌。
同時rman在恢復的時候,restore database完畢後,會依次利用歸檔日誌和聯機日誌進行完全恢復。此時利用的這些歸檔就是從rman備份開始到rman備份結束產生的歸檔日誌。
因此備份歸檔日誌是很必要的,當然聯機日誌也是必須的,這些日誌保證了rman能夠完全的恢復資料庫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-614151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle聯機熱備份的原理及rman增量備份原理(zt)Oracle
- RMAN的原理
- physical data guard 的原理 (zt)
- RMAN的備份原理
- [zt] ORACLE RAC原理Oracle
- rman工作原理
- 物理data guard原理的理解(zt)
- RMAN中SET命令的常見用法的小結 (ZT)
- RMAN備份原理
- zt:Different type of RMAN backup compression in 11G
- [zt] Oracle恢復內部原理Oracle
- RMAN備份恢復原理
- ZT:資料庫Oracle11g新特性RMAN資料庫Oracle
- Oracle高人寫的Oracle執行原理性文章(zt)Oracle
- oracle聯機熱備份的原理,及rman增量備份原理Oracle
- Oracle聯機熱備份的原理及rman增量備份原理Oracle
- RMAN備份恢復——RAC環境資料庫的備份(zt)資料庫
- zt_parallel_execution_message_size 對 rman recover恢復速度的影響Parallel
- zt_RMAN-06026 錯誤分析與解決
- RMAN-05517: temporary file conflicts with file used by target database(zt)Database
- Oracle9i RMAN備份及恢復步驟(zt)Oracle
- zt_eygle_Linux udev的原理、功能、使用和維護Linuxdev
- Oracle Rman Catalog的建立方法和備份原理Oracle
- Oracle RMAN備份以及壓縮原理分析Oracle
- rman configure配置彙總及原理
- 【RMAN】RMAN的備份保留策略
- Oracle的MTS (ZT)Oracle
- Oracle RMAN 映像備份(Image copies)基本原理與方案Oracle
- zt_oracle 12c後臺程式與工作原理架構圖Oracle架構
- SqlServer鎖的概述(zt)SQLServer
- ORACLE鎖的管理(zt)Oracle
- Like 的優化 (zt)優化
- dump 的語法 (zt)
- enqueue的種類(zt)ENQ
- RMAN的"rman: can't open target"錯誤
- 【RMAN】Oracle_rman中skip引發的血案Oracle
- 【RMAN】rman的日誌輸出功能演示
- 【RMAN】“壞塊”導致RMAN備份不成功的RMAN處理方法