1.最大可用性模式(Maximum Availability)
1)該模式提供了僅次於“最大保護模式”的數據保護能力;
2)要求至少一個物理備庫收到重做日志后,主庫的事務才能夠提交;
3)主庫找不到合適的備庫寫入時,主庫不會關閉,而是臨時降低到“最大性能模式”模式,直到問題得到處理;
4)優點:該模式可以在沒有問題出現的情況下,保證備庫沒有數據丟失,是一種折中的方法;
5)缺點:在正常運行的過程中缺點是主庫的性能受到諸多因素的影響。
2.最大性能模式(Maximum Performance)
1)該模式是默認模式,可以保證主數據庫的最高可用性;
2)保證主庫運行過程中不受備庫的影響,主庫事務正常提交,不因備庫的任何問題影響到主庫的運行;
4)優點:避免了備庫對主數據庫的性能和可用性影響;
5)缺點:如果與主庫提交的事務相關的恢復數據沒有發送到備庫,這些事務數據將被丟失,不能保證數據無損失。
3.最大保護模式(Maximum Protection)
1)這種模式提供了最高級別的數據保護能力;
2)要求至少一個物理備庫收到重做日志后,主庫的事務才能夠提交;
3)主庫找不到合適的備庫寫入時,主庫會自動關閉,防止未受保護的數據出現;
4)優點:該模式可以保證備庫沒有數據丟失;
5)缺點:主庫的自動關閉會影響到主庫的可用性,同時需要備庫恢復后才能提交,對網絡等客觀條件要求非常的高,主庫的性能會因此受到非常大的沖擊。
三種模式
比較項
最大保護
最高可用
最大性能
Redo寫或傳輸進程
lgwr
lgwr
lgwr或者arch
網絡傳輸模式
sync
sync
sync或者async
是否落盤確認
affirm
affirm
affirm或者noaffirm
standby redologs
需要
需要
可有可無
ARCH傳輸模式只能用於最大性能模式下
最大保護和最高可用模式下只能使用LGWR SYNC傳輸模式
AFFIRM:在日志寫進程進行之前,所以的歸檔日志和備庫日志必須同步寫完
NOFFIRM:在主庫的日志寫進程不等所有磁盤IO完成
參數如缺省的 則是NOFFIRM
使用AFFIRM時,可以確保以下三點:
1能確保數據沒有丟失在主庫失敗后
2 可以在本地或遠程使用
3 影響主庫的性能
LGWR和AFFIRM,日志寫進程同步寫REDO DATA到磁盤,在DISK寫完前,控制權不交給用戶,還有主庫的在線日志可能不可用在歸檔完成之前
ARCH和AFFIRM ARCn進程同步寫REDO DATA到磁盤,歸檔操作可能發生時間比較長,主庫的在線日志在歸檔完成日志前可能不可用。
ASYNC和AFFIRM,性能不受影響。
設置參數位置
主庫log_archive_dest_n參數設置
示例:*.log_archive_dest_2='service=orcl lgwr sync affirm
valid_for=(online_logfiles,primary_role) db_unique_name=orcl'
重要參數分析
arch:只支持最大性能模式。歸檔日志通過primary上的arch進程傳送給standby的rfs進程,保存到指定路徑(如果有standby redo logfile,則保存到該位置,然后再歸檔),然后redo應用。
lgwr:primary使用LGWR即時將日志傳送到standby的rfs進程,並保存到standby redo logfile中,而不再需要等到歸檔操作時才傳送,保存到standbyredo logfile,然后再歸檔,然后redo應用。
用LGWR傳輸大致如下:
1)主庫:只要有新的重做日志產生,lgwr進程將觸發LNSn進程把新生成的日志傳輸給備庫rfs進程。
2)備庫:rfs進程接收到日志后,將其寫入standby重做日志,如果備庫開啟了實時應用,就立即做日志應用,如果沒有開啟,則等standby重做日志歸檔后再應用。
3)其中,async和sync的區別在於:sync是在redo還在內存時,LNSn進程就開始傳輸,而async是在redo寫到online redo log后,LNSn才開始傳輸。
同步的實時性來看,lgwr(sync) > lgwr(async)> arch
sync模式下,主庫產生任何redo時,同時馬上觸發網絡傳輸給備庫RFS進程;
async模式下,主庫產生redo時,先寫到本地online redo logfile文件中,LNSn進程從online redo logfile文件中取redo數據網絡傳輸給備庫RFS進程。
模式切換
首次performance>>availability>>protection順序需要在主庫執行且主庫必須處於mount狀態;
如果已經由performance>> availability>>protection數據保護級別操作過1次,那么再次操作時可直接操作;
protection>>availability>>performance順序直接操作即可
主備庫操作:SQL>select database_role,protection_mode,protection_level from v$database;
主庫更改log_archive_dest_n參數配置,如:
SQL>alter system set log_archive_dest_2='service=orcldg lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=orcldg';
主庫操作:SQL> shutdown immediate;
備庫操作:alter database recover managed standby database cancel;
主庫操作:SQL>startup mount;
主庫操作:SQL>alter database set standby database to maximize availability;
主庫操作:SQL>alter database open
完成。
-----------------------------------------------------------------------------------------上下一樣的--------------------------------------------------------------------------------------------------
切換方式
1.主庫啟動到mount狀態
2.主庫中執行如下SQL語句
SQL> ALTER SYSTEM SET log_archive_dest_2='SERVICE=DG LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DG';
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION};
3.查詢保護模式語句
SQL> SELECT PROTECTION_MODE FROM V$DATABASE;