標籤:oracle 11g dataguard三種模式以及即時查詢(real-time query)功能設定
之前我們討論過《Linux Oracle 11g dataguard物理standby 配置過程》,
但是在實際過程中會遇到不同的問題,首先我們討論下ORACLE DATAGUARD的三種模式,
保護最大化:這種模式的配置可以保證主庫和備庫的同步,任何情況下主庫的損毀都不會導致已提交資料的丟失。如果主庫和備庫之間的網路出現問題,或者備庫本身出現問題,都會導致主庫停止資料處理。
可用最大化:這種模式和上面一種類似,也是會保證主庫和備庫的同步,區別在於,當網路或備庫不可用時,主庫仍然可以繼續處理。
效能最大化:主庫和備庫是非同步。這種模式可能在主庫出現損毀時,丟失一部分資料。但是這種模式對主庫負荷最小,因此具有最好的效能。
1.最大保護模式:(如果採用這種模式,最好能建立多個standby database,以確保日誌能夠至少歸檔到一台備用機上,減少down機的機會。)
1).這種模式提供了最進階別的資料保護能力
2).重做日誌在至少一個物理從庫資料庫後,主庫的事務才能夠提交
3).主庫找不到合適的從庫寫入時,主庫會自動關閉,防止無保護的資料出現
4).優點:該模式可以保證從庫沒有資料丟失
5).缺點:主庫的自動關閉會影響到主庫的可用性,同時需要從庫恢複後才能提交,對網路等客觀條件要求非常的高,主庫的效能會受到非常大的影響。
2.最大可用性模式:(如果只有一台standby,又不想有資料丟失的話,推薦採用這種模式。)
1).這種模式提供了僅次於“最大保護模式”的資料保護能力
2).重做日誌在至少一個物理從庫資料庫後,主庫的事務才能夠提交
3).主庫找不到合適的從庫寫入時,主庫不會關閉,而是臨時降低到“最大效能模式”模式,直到問題得到處理
4).優點:該模式可以在沒有問題出現的情況下保證從庫沒有資料丟失,是一種折中的方法
5).缺點:在正常啟動並執行過程中缺點是主庫的效能收到諸多因素的影響
3.最大效能模式:
1).預設模式,提供主要資料庫的最高可用性
2).保證主庫運行過程中不受從庫的影響,主庫事務正常提交,不因從庫的任何問題影響到主庫的運行
4).優點:避免了從庫對主要資料庫的效能和可用性影響
5).缺點:如果與主庫提交的事務相關的恢複資料沒有發送到從庫,這些交易資料將被丟失,不能保證資料無損失
可以選擇適合自己合適的模式進行配置,在這裡我們選擇更改模式為Protection
開啟主庫,修改主庫DataGuard保護模式
SQL> shutdown immediate SQL> startup mount SQL> select name,db_unique_name,protection_mode from v$database; NAME DB_UNIQUE_NAME PROTECTION_MODE ----- --------------- -------------------- ORCL orcl MAXIMUM PERFORMANCE SQL> alter database set standby database to maximize protection;
切換主庫保護模式的文法:
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {PROTECTION | AVAILABILITY | PERFORMANCE }
開啟主庫到OPEN狀態,監控alert記錄檔,查看是否配置成功。
有實際切換中可能會遇到若干問題,如本人在切換過程中日誌報以下錯誤,主要資料不能OPEN
錯誤記錄檔:
LGWR: Minimum of 1 synchronous standby database required
Errors in file /oracle/app/oracle/diag/rdbms/nod1/test/trace/test_lgwr_7255.trc:
ORA-16072: a minimum of one standby database destination is required
Errors in file /oracle/app/oracle/diag/rdbms/nod1/test/trace/test_lgwr_7255.trc:
ORA-16072: a minimum of one standby database destination is required
解決方案如下:
SQL> conn /as sysdbaSQL>startup mount; SQL> alter database set standby database to maximize protection;SQL>alter system set log_archive_dest_2=‘SERVICE=nod2 LGWR SYNC AFFIRM NET_TIMEOUT=120 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=nod2‘ ;SQL> alter database open;Database altered.SQL> select name,db_unique_name,protection_mode from v$database;NAME DB_UNIQUE_NAME PROTECTION_MODE--------- ------------------------------ --------------------TEST nod1 MAXIMUM PROTECTION
在實際運行中又有一個問題,就是發現日誌恢複不能即時到備庫,能不能在日誌恢複的同時可以用唯讀方式開啟資料庫,這就不得不提到ORACLE 11G中的一個特性:Oracle 11g物理Active Data Guard即時查詢(Real-time query)功能,用以下方法實現
此過程只須在備庫實現
1)查看備庫目前狀態
SQL> select open_mode from v$database;OPEN_MODE--------------------MOUNTED此時備庫處於MOUNT狀態。
2)取消備庫的自動回復
SQL> alter database recover managed standby database cancel;Database altered.
3)OPEN備庫調整為“READ ONLY”狀態
SQL> alter database open;Database altered.SQL> select open_mode from v$database;OPEN_MODE--------------------READ ONLY
4)在“READ ONLY”狀態下進一步啟動備庫的恢複
[email protected]@> alter database recover managed standby database using current logfile disconnect;Database altered.選項“USING CURRENT LOGFILE”的含義是當備庫收到日誌後,儘快完成恢複。SQL> select open_mode from v$database;OPEN_MODE--------------------READ ONLY WITH APPLY
狀態“READ ONLY WITH APPLY”即表示此時備庫處於Read Only狀態的同時可以接受主庫傳過來的日誌進行恢複,以便達到備庫可以即時查看到主庫變化的目的。
測試過程過程比較簡單,我們在主庫匯入一個資料表,然後會看到在備庫幾乎沒有什麼延遲就過去了,
[[email protected] ~]# imp system/[email protected] fromuser=kiss touser=kiss file=kiss.DMP ignore=y log=kiss.log
本文出自 “xiangcun168” 部落格,請務必保留此出處http://xiangcun168.blog.51cto.com/4788340/1663330
Oracle 11g dataguard三種模式以及即時查詢(Real-time query)功能設定