先說說DG的三種保護模式
Maximum Protection:
最大保護模式,不允許資料丟失,所有事務必須完成主備庫的日誌寫後才能提交,如果主備庫之間網路異常,將會嚴重影響主庫效能。
Maximum Performance:
此為DG的預設模式,此模式保證主庫以最大效能運行,允許事務在完成本地日誌寫成功後主庫立即提交,而不需等待redo資料寫到備庫,事務產生的redo 資料非同步傳輸到備庫,此模式在主庫發生故障時,備庫可能有少量資料丟失,對主庫效能影響最小。
Maximum Availability:
在正常情況下,此保護模式同Maximum Protection,需要恢複此事務的所有redo 資料都同步寫到主庫online redo file 和備庫的standby redo log中,事務才能成功提交,當主庫不能將redo資料同步寫到主庫和備庫,此保護模式自動變成同Maximum Performance模式運行,不會導致主庫不可用,而當異常處理完成,其又恢複到同Maximum Protection模式
大家可以根據實際情況和需求採用不同的模式,各種保護模式的設定非常簡單,但是有些地方還是需要瞭解清楚。
各保護模式與log_archive_dest_n 參數日誌傳輸屬性對應表Maximum Availability Maximum Performance Maximum Protection AFFIRM NOAFFIRM AFFIRM SYNC ASYNC SYNC DB_UNIQUE_NAME DB_UNIQUE_NAME DB_UNIQUE_NAME 如何確認DG處於何種保護模式
SELECT PROTECTION_MODE FROM V$DATABASE;
設定Maximum Avalilability 模式:
SQL> alter database set standby database to maximize availability;
Database altered.
SQL> SELECT NAME,PROTECTION_MODE,PROTECTION_LEVEL,DATABASE_ROLE ,DB_UNIQUE_NAME FROM v$database;
NAME PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE DB_UNIQUE_NAME
--------- -------------------- -------------------- ---------------- ------------------------------
OGG MAXIMUM AVAILABILITY RESYNCHRONIZATION PRIMARY ogg
設定Maximum Performance 模式:
SQL> alter database set standby database to maximize PERFORMANCE;
Database altered.
SQL> SELECT NAME,PROTECTION_MODE,PROTECTION_LEVEL,DATABASE_ROLE ,DB_UNIQUE_NAME FROM v$database;
NAME PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE DB_UNIQUE_NAME
--------- -------------------- -------------------- ---------------- ------------------------------
OGG MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY ogg
以上兩種模式在設定沒有特別條件限制,可以自由從一種模式轉換過來,也不需關注log_archive_dest_n的參數設定。
Maximum Protection 有限制,下面進行測試:
由Maximum Avalilability模式設定為Maximum Protection
條件Maximum Avalilability + log_archive_dest_n ASYNC
SQL> alter database set standby database to maximize availability;
Database altered.
SQL> show parameter log_archive_dest_2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string SERVICE=tgg LGWR ASYNC VALID_F
OR=(ONLINE_LOGFILES,PRIMARY_RO
LE) DB_UNIQUE_NAME=tgg
SQL> SELECT PROTECTION_MODE FROM V$DATABASE;
PROTECTION_MODE
--------------------
MAXIMUM AVAILABILITY
SQL> alter database set standby database to maximize PROTECTION;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 4876
Session ID: 1 Serial number: 5
此時主庫執行個體直接DOWN掉,查看alert log 資料庫已經改成Maximum Protection模式,但是因為LAG_ARCHIVE_DEST_2 參數中使用的是非同步傳輸 ASYNC,這個在最大保護模式下是不允許的,所以Oracle 為了保護資料不丟失,將執行個體直接關閉。
更多詳情見請繼續閱讀下一頁的精彩內容:
推薦閱讀:
使用RMAN的Duplicate功能建立物理DataGuard
Oracle基礎教程之通過RMAN複製資料庫
RMAN備份策略制定參考內容
RMAN備份學習筆記
OracleDatabase Backup加密 RMAN加密
通過RMAN備份duplicate建立DataGuard