官方文檔鏈接 http://docs.oracle.com/cd/E11882_01/server.112/e41134/protection.htm SBYDB02000 最大可用模式(Maximum Availability) 這種保護模式在 不影響主庫可用性 的前提下提供最高水平的數據保護 在 ...
官方文檔鏈接 http://docs.oracle.com/cd/E11882_01/server.112/e41134/protection.htm#SBYDB02000
最大可用模式(Maximum Availability)
- 這種保護模式在不影響主庫可用性的前提下提供最高水平的數據保護
- 在主庫需要完成兩件事,事務才會被提交
- 恢復事務所需要的 redo 數據寫入線上日誌文件(online redo log)
- 恢復事務所需要的 redo 數據寫入同步備庫(synchronized standby database)的備用日誌文件(standby redo log),如果配置了多個備庫,需要至少寫到一個備庫上
- 如果主庫不能將 redo 數據寫入至少一個備庫,則主庫就像運行在最大性能模式下以保護主庫的可用性,直到可以將 redo 數據流寫入備庫
- 這種保護模式可以確保數據零丟失,除了某些雙故障的情況,例如備庫發生故障之後主庫也發生故障
最大性能模式(Maximum Performance)
- 預設的保護模式
- 這種保護模式在不影響主庫性能的前提下提供最高水平的數據保護
- 事務生成的 redo 數據寫入線上日誌後事務立即提交;redo 數據也會寫到一到多個備庫上,相對於事務提交它是非同步完成的,所以主庫的性能不會被 redo 數據寫入備庫的延遲所影響
- 這種保護模式提供的數據保護略遜於最大可用模式,但是對主庫性能產生的影響小
最大保護模式(Maximum Protection)
- 這種保護模式確保主庫發生故障時不會有數據丟失
- 在主庫需要完成兩件事,事務才會被提交
- 恢復事務所需要的 redo 數據寫入線上日誌文件(online redo log)
- 恢復事務所需要的 redo 數據寫入同步備庫(synchronized standby database)的備用日誌文件(standby redo log),如果配置了多個備庫,需要至少寫到一個備庫上
- 要確保數據不會丟失,如果主庫不能將 redo 數據流寫入至少一個備庫,主庫會 shutdown,而不是繼續處理事務
- 因為最大保護模式更註重數據的保護,Oracle 建議至少配置兩個備庫來保護運行在最大保護模式下的主庫,這樣當其中一個備庫發生故障時不會導致主庫 shutdown
設置主庫的數據保護模式
- 1、根據需要選擇一種保護模式
- 2、確保至少一個備庫滿足 redo 傳輸條件
- 和備庫相關的 LOG_ARCHIVE_DEST_n 參數中需要包含下列 redo 傳輸屬性,不同的保護模式的設置不同
- 備庫必須要有備用 redo
- 3、確保已經在主庫和每一個備庫將資料庫初始化參數 DB_UNIQUE_NAME 設置為一個唯一值
- 4、確保已經在主庫和每一個備庫定義了資料庫初始化參數 LOG_ARCHIVE_ONFIG,該參數包含主庫和每一個備庫的 DB_UNIQUE_NAME
設置示例
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(CHICAGO,BOSTON)';
5、設置數據保護模式
在主庫執行以下語句 SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION};
- 只有當前的數據保護模式是 MAXIMIZE AVAILABILITY 並且至少有一個同步物理備庫時,才可以將一個 open 的資料庫的數據保護模式設置為 MAXIMIZE PROTECTION
6、確認數據運行在新的保護模式下
在主庫執行以下查詢 SQL> SELECT PROTECTION_MODE FROM V$DATABASE;