oracle備份/恢復原理(1)

我的blog從這個篇幅開始登寫 oracle 備份/恢復 相關的內容。
------------------------------------------------------------
1.基本原理
備份可分為邏輯備份與物理備份。簡單的說,邏輯備份是按數據庫中數據的備份,物理備份是按存儲介質、數據文件的備份。比如說,利用數據導入導出工具進行數據庫地導出就屬於邏輯備份。而對表空間數據文件的拷貝就屬於物理備份。
因而,利用何種方式進行的備份,相應的也需要用對應的恢復方式進行恢復。
邏輯備份與恢復一般是通過Exprot/Import等相應的工具進行。物理備份與恢復,請參考下圖:
oracle備份/恢復原理(1)_第1张图片
該圖說明如下:
用戶在SCN=100的時候,執行數據庫備份,在SCN=500的時候發生介質損壞,需要執行恢復。
恢復時,取SCN=100時的數據庫備份,再利用SCN=100~500這一段時間的歸檔日志進行增量恢復,恢復成功後,數據庫達到SCN=500時的狀態。
 
另外要提一下實例恢復:
當數據庫實例發生故障而發生停機,或用戶利用abort選項關閉實例後,數據庫再啟動後會自動執行實例恢復,實例恢復時會回滾上次實例運行時未提交的事務以及一些其它的動作,以將相數據恢復到一致狀態。這個過程對於用戶來說是透明的,由實例自動進行,不需要人工干預。
 
 
2.錯誤/故障的種類及相對應的恢復策略
故障的種類可分為如下幾種:
存儲介質故障
用戶操作不當引起的數據丟失或實例故障
數據庫實例故障
SQL語句產生數據丟失
服務囂進程故障
網絡故障
 
存儲介質故障 是主要故障,大多數備份與恢復策略的制定都是針對介質故障。因此,oracle建議對於數據文件,應做多個文件映象或多個磁盤鏡像。這樣就可以在其中一個文件和磁盤發生損壞壞利用鏡像文件或磁盤執行恢復。
介質幫障發生在實例向數據庫文件中讀取或寫入數據時。當oracle讀取數據時發現無法讀取文件時返回一個錯誤,這時oracle實例仍然繼續運行,但會在每次讀數據失敗時返回一個錯誤。而當一個檢查點發生時,oracle要向數據文件寫入數據,若oracle發現無法向數據文件寫入數據,且數據庫運行的歸檔模式,oracle就會返回一個錯誤,並且將此錯誤寫入軌跡文件中,並肯將該數據文件置於脫機狀態。但是如果無法寫入的數據文件屬於system表空間,oracle就會返回一個錯誤立即停止實例的運行。
 
實例故障 產生的原因可能是因為機器的硬件問題,或操作系統故障,或者如用戶關閉電源,以及以abort方式關閉數據庫。發生實例故障後,當數據庫再次啟動時會自動執行實例恢復,其步驟如下:
a.前滾(與回滾相反)已寫入在線日志,但未寫入數據文件的數據。此過程稱為 緩存恢復
b.打開數據庫;
c.將故障時刻的 DEAD 事務標識為 systemwide ,並將包含這些事務的回滾段重做段設置為 PARTLYAVAILABLE;
d.回滾 DEAD 事務。這個過程稱為 事務恢復
e.處理未完成的 two-phasecommit 的分布式事務;
 
其它幾類故障就不多做說明了。
 
3.與數據庫恢復有關的數據結構
重做日志
回滾與重做段
控制文件
 
重做日志雙包括聯機重做日志與歸檔日志。
9.0版本之間回滾段在system表空間中由用戶管理,之後的版本中oracle增加了undo tablespace用於專門管理回滾段,因此被稱為重做段。
控制文件包含了一個數據庫的物理結構信息,包括如下內容:
數據庫SCN,歸檔日志歷史記錄,表空間及數據文件信息(數據文件檢查點,讀寫狀態,脫機信息),重做日志線程,日志SCN,RMAN相關信息,數據塊毀損信息等等。
 
4.數據庫的歸檔/非歸檔模式
關於這一塊的內容,前面的篇已經有介紹,可以參考之前的篇幅。
 
5.oracle 備份/恢復解決方案
有兩種方式用於執行oracle數據庫的備份與恢復,一種是Recover manager(RMAN),另一種是由用戶自行管理的備份/恢復。
RMAN是Oracle提供的一套強大的備份/恢復工具包,它只在oracle8及以後版本才有。
下圖是手動備份與RMAN的功能對比:
  oracle備份/恢復原理(1)_第2张图片
 
 

你可能感兴趣的:(oracle,sql,manager,Blog,System,工具)