Data Guard提供如下三種資料保護模式:
1)最高保護模式(Maximum Protection)
這裡的”最高保護“是指最大限度的保護資料不丟失,也就是至少有一個standby和 primary保持即時同步,但這樣做的代價很大,因為只要當一個事務提交時,不但要寫到primary段的 online redo log,還有寫到至少一個standby的standby redo log。這樣會有一個嚴重的問題,就是當 standby出現故障或網路故障,導致日誌無法同步時,primary資料庫會被shutdown,這在生產系統中是 不可接受的,因此這種模式很少用。
2)最高效能模式(Maximum Performance)
最高效能正好和最高保護相反,當事務提交時,只要寫入到primary的online redo log即可, primary幾乎不受影響。然後再把redo同步到standby中,這樣就無法保證primary和standby即時同步。 這種模式在實際應用中比較常見,畢竟primary不受影響是最重要的,如果出現standby落後primary太 多,DBA可以手工介入,在standby端apply redo。
3)最高可用性模式(Maximum Availability)
最高可用性模式介於前兩者之間,在正常情況下,它和最高保護模式一樣,但一旦standby出現故障 ,就立即切換成最高效能模式,primary不會shutdown。如果實際應用該模式,得關注一下即時應用時 對primary的效能影響。
那麼如何配置及修改DG的保護模式呢?首先你要檢查以下2點:
1. 主備庫的db_unique_name是否唯一?
2. log_archive_config的dg_config屬性是否已經包含所有的主備庫db_unique_name?
以上2點確認之後,就可以使用LOG_ARCHIVE_DEST_n來配置,下表顯示該參數和保護模式的關係:
從上圖可以看出,最大保護和最高可用性的配置一模一樣(這很正常因為最高可用性在正常情況下 就是最大保護):必須使用LGWR進程傳輸Redo,網路傳輸模式必須是sync,磁碟寫選項AFFIRM,必須配 置standby redo log。
而最大效能模式比較靈活,即可以用LGWR,也可以用ARCH進程傳輸redo,網路即可以sync也可以 async,磁碟IO寫即可以AFFIRM也可以NOAFFIRM,standby redo log也可有可無(建議有)。
上面所有的參數都確認配置無誤之後,就可以用以下語句修改保護模式:
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION};
修改成功後,可以通過以下語句驗證:
SELECT PROTECTION_MODE FROM V$DATABASE;
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/