Oracle9i Data Guard 通過使用稱為standby database的數據庫來防止出現數據的災難。它通過將primary database數據庫的重做日志傳到並應用到standby database數據庫來使standby database數據庫與primary database數據庫同步:
可以將重做日志直接從primary database數據庫同步寫到standby database數據庫來完成完全沒有數據損失的災難保護。這會給primary database數據庫的性能帶來一定的性能損失。
可以將歸檔的重做日志從primary database數據庫異步寫到standby database數據庫來使primary database數據庫在極少損失性能的前提下,最小化地減少數據的丟失。
如果重做日志數據到達standby database數據庫後快速τ玫絪tandby database數據庫,則在primary database數據庫出現問題時可以快速地 failover 到standby database數據庫。然而,如果延緩一定時間後再應用重做日志數據,可以避免primary database數據庫的錯誤快速地傳播到standby database數據庫。
如下圖所示,當聯機重做日志在本地歸檔時,它們同時通過 Oracle Net 傳送到了standby database:
數據庫數據保護級別
可以用如下的方式設置standby database數據庫來達到不同的數據庫數據保護級別:
Guaranteed protection:規定在修改主數據庫時,至少有一個備用數據庫有效。假如主(Primary Database)備(Standby Database)之間的連接中斷,Oracle會通過中斷主實例的工作來防止主備數據庫之間的數據的不一致,保證無數據丟失。這種模式對數據庫性能的影響較大。
Instant protection:規定在修改主數據庫時,至少有一個備用數據庫有效。與Guaranteed protection模式不同的是當主備數據庫之間的連接中斷時,允許主備數據庫之間的數據的不一致,並當恢復連接後,解決數據不一致的現象。這種模式對主數據庫的性能有較小的影響。
Rapid protection:主數據庫的修改快速應用在備用數據庫上。會出現數據丟失,但對數據庫性能的影響小。
Delayed protection:主數據庫的修改在延遲一定的時間後應用在備用數據庫上。Rapid protection和Delayed protection模式即使在網絡連接有效時,也允許主數據庫與所有的備用數據庫有數據分歧,數據的丟失量等同於主數據庫聯機重做日志的未歸檔數。這種方式對數據庫性能的影響小。
如何限制數據的丟失量
在primary/standby配置下,所有的歸檔日志被發送到了standby 節點,這使standby 節點的數據保持著更新。但是,如果primary 數據庫意外關閉,聯機的日志將會丟失,因為它們尚未歸檔並發送到standby節點。這使得 primary 和standby 數據庫之間會有一個差異。
Oracle9i 可以用以下的方法來限制這個差異:
DBA可以選擇讓LGWR在將重做日志數據寫到本地磁盤的同時將數據發送到 standby 數據庫。該功能稱為standby零數據丟失(standby zero data loss)。這種方法從本質的角度講提供了遠程重做日志鏡像,但帶來的問題是會極大地損失性能。
設置系統初始化參數ARCHIVE_LAG_TARGET.該參數是一個日志文件開始使用到被發送到standby數據庫的時間間隔。該參數的推薦值是 1800秒(需要注意的是,沒有傳送到 standby 數據庫的已經提交的事務會丟失,因此長的事務會使standby數據庫損失更多的數據)。
Oracle9i Data Guard數據防護與Oracle8 Standby Database的關系Oracle Standby Database 是最經常使用的最有效的災難解決方案。在過去版本的基礎上,Oracle9i 又進行了許多改進,使其功能遠遠超過了基本的災難恢復要求。通過將復雜的工作自動化,並對監控、警告、以及控制機制的大規模改進,Standby Database 和一些新的模塊可以幫助DBA 從錯誤操作、癱瘓、以及其它的災難中恢復(這些災難都可能毀掉數據庫)。另外,通過使用Oracle9i Standby Database,由於硬件和軟件升級造成的宕機時間也可以極度縮短。
Oracle9i 將改進過的8版本的Standby Database功能,與幾個新增加的防止用戶錯誤和癱瘓的模塊合起來稱為Oracle9i Data Guard。
Oracle8 Automated Standby Database 提供了創建和自動維護生產數據庫拷貝的手段來防止災難的發生。Oracle8 Automated Standby Database 具有以下的功能:
當primary database 產生日志後,系統自動用歸檔日志更新standby databases.一個primary database可以最多有4個standby databases.這4個standby databases是與primary database完全一樣的拷貝,它們都可以接管primary database的處理。