在一些場合,一些業務是不能容忍遺失資料的。而在另外的場合,資料庫的可用性可能比資料的丟失更加重要。一些應用要求資料庫的效能最大化,並且可以容忍少許資料的丟失。以下是三種不同資料保護模式的描述總結。
以下兩張圖三種模式的特點,下面將逐一進行分析:
1、最大保護模式(Maximum protection)
這個保護模式確保在主庫發生故障的時候,沒有資料的丟失。為了提供這種層級的保護,重做日誌涉及的事務必須寫入本地online redo log和standby database的standby redo log之後(假設有多個備庫,至少寫入其中的一個即可),才可以提交事務。為了保證資料的不丟失,如果發生了一個故障阻止了redo流可以寫入至少一個事務一致的standby database,主要資料庫將關閉。
由以上即可知,要配置最大保護模式,我們需要在備庫建立standby redo log,使用LGWR寫日誌,SYNC同步處理記錄,AFFIRM。
參數配置執行個體:
alter system set log_archive_dest_2='SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY AFFIRM ';
2、最高可用性(Maximum availability)
這種保護模式在不影響主庫的可用性情況下,提供最進階別的資料保護。與最大保護模式一樣,重做日誌涉及的事務必須寫入本地online redo log和standby database的standby redo log之後(假設有多個備庫,至少寫入其中的一個即可),才可以提交事務。不過與最大保護模式不同的是,如果發生故障阻止redo流寫入遠端standby redo log中,主庫不會關閉。取而代之的是,主庫運轉在最高效能模式下,直到故障消除以及redo log 檔案的gaps(裂縫)解決掉。當所有的gaps解決掉,主庫自動回復運行至最高可用模式。
這種模式保證在主庫故障的時候不會發生資料丟失,但是僅僅在第二個故障沒有阻止完整的redo data從主庫發送至最少一個備庫中。
採用這種模式,同最大保護模式一樣,需要在備庫建立standby redo log,使用LGWR寫日誌,SYNC同步處理記錄,AFFIRM。
參數配置執行個體:
alter system set log_archive_dest_2='SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY AFFIRM ';
3、最高效能(Maximum performance)
最高效能模式是預設的保護模式,這種模式在不影響主庫效能的前提下提供最進階別的資料保護。這種模式事務提交是不受限制的。主庫的redo data流同樣要求寫入至少一個standby database,但是redo 流與建立redo data的事務相對而言是不同步的。
當網路頻寬足夠使用時,這種模式提供了類似於最高可用模式的資料庫保護,但是對於主庫的效能影響最下。
從以上分析即可知,這種模式下,我們可以使用ARCH或LGWR。
當使用ARCH時,則需要SYNC(同步)。
當使用LGWR時,可以是SYNC也可以是ASYNC。
Standby redo這個可有可無。
樣本配置:
alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY';
相關參考:
Oracle Data Guard 重要配置參數
基於同一主機配置 Oracle 11g Data Guard
探索Oracle之11g DataGuard
Oracle Data Guard (RAC+DG) 歸檔刪除策略及指令碼
Oracle Data Guard 的角色轉換
Oracle Data Guard的日誌FAL gap問題
Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 處理方法