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 數據庫之間會有一個差異。