Data Guard 配置包含一個數據庫作為主角色以及一個或更多數據庫作為備角色典型地每個數據庫的角色不會更改然而如果Data Guard 是用於維護對主數據庫停機響應的服務你必須在配置中發起當前主數據庫和一個備數據庫之間的角色轉換要查看數據庫的當前角色查詢V$DATABASE 視圖中的DATABASE_ROLE 列
在 Data Guard 配置中的備數據庫的數量位置和類型(物理或邏輯)以及重做數據以哪種方式從主數據庫傳送到每個備數據庫決定了你用於響應主數據庫停機可用的角色管理選項
一角色轉換介紹
數據庫操作於下面互斥的角色之一主或備Data Guard 允許你通過執行本章中描述的SQL 語句或通過使用任何一個Data Guard broker 界面來動態更改這些角色Oracle DataGuard 支持下述角色轉換
* 切換
允許主數據庫切換角色到它的備數據庫之一在切換期間沒有數據丟失在切換之後每個數據庫繼續以其新的角色參與在Data Guard 配置中
* 故障轉移
更改備數據庫到主角色響應主數據庫的故障如果主數據庫在故障之前沒有操作在最大保護模式或最大可用性模式可能發生數據丟失如果在主和備數據庫上都允許Flashback數據庫一旦故障的原因更正了故障的數據庫可用恢復作為新的主數據庫的備庫
准備角色轉換(故障轉移或切換)
在開始任何角色轉換之前執行下述准備
* 對每個數據庫檢查初始化參數是否正確配置
* 檢驗將成為新的主數據庫的備數據庫是操作於 ARCHIVELOG 模式
* 確保存在於備數據庫的臨時文件符合在主數據庫上的臨時文件
* 刪除任何在應用重做中的延遲這可能會影響將會成為新的主數據庫的備數據庫
* 檢驗在 Real Application Clusters 配置中的備數據庫上除了一個RAC 實例以外都關閉?
對於 Real Application Clusters 數據庫在角色轉換過程中備數據庫上只有一個RAC實例能聯機在開始角色轉換之前關閉所有其它實例然後在角色轉換完成後將這些實例聯機
注即使在切換期間備數據庫上只有一個RAC 實例是打開的所有其它備數據庫實例在打開時還將自動經歷一個正確轉換到它們的新角色的過程
為角色轉換選擇目標備數據庫
對於使用多個備數據庫的 Data Guard 配置當為角色轉換選擇目標備數據庫時需要考慮許多因素包括如下
* 備數據庫的本地性
* 備數據庫的能力(硬件規格——如 CPU 數目可用I/O 帶寬等等)
* 執行角色轉換所需的時間這受離備數據庫後面多遠(用重做數據的應用衡量)以及你有多大的靈活性(用應用可用性與數據丟失的折衷衡量)的影響
Data Guard 提供了V$DATAGUARD_STATS 視圖能用於估計每個備數據庫的生存能力用備數據庫中數據的流通衡量以及如果所有可用的重做數據庫應用到備數據庫執行角色轉換所需的時間例如
SQL> COLUMN NAME FORMAT A
SQL> COLUMN VALUE FORMAT A
SQL> COLUMN TIME_COMPUTED FORMAT A
SQL> SELECT * FROM V$DATAGUARD_STATS;
NAME VALUE TIME_COMPUTED
apply finish time + :: MAY ::
second()
interval
apply lag + :: MAY ::
second()
interval
transport lag + :: MAY ::
second()
Interval
這顯示了對於這個備數據庫沒有傳輸延遲日志應用服務沒有應用在過去的 秒中生成的重做(apply lag)日志應用服務將使用 秒來完成應用未應用的重做(apply finishtime)在每個統計的時間在TIME_COMPUTED 列中顯示如果配置包含物理和邏輯備數據庫考慮選擇物理備數據庫作為目標備數據庫向物理備數據庫的切換或故障轉移是更可取的因為在角色轉換完成後配置中的所有數據庫對於新的主數據庫作為備數據庫是可行的然而切換或故障轉移到邏輯備數據庫將會使其它物理備數據庫對於原主數據庫無效然後在能夠重允許物理備數據庫之前你將需要從新的主數據庫的備份重建物理備數據庫
切換
切換典型地用於在計劃的停機期間減少主數據庫宕機時間如操作系統或硬件升級或Oracle 數據庫軟件和補丁集的滾動升級
切換以兩個階段發生在第一個階段現有的主數據庫經歷向備角色的轉換在第二個階段備數據庫經歷向主角色的轉換
圖 顯示了在數據庫角色切換前的兩站點Data Guard 配置主數據庫位於SanFrancisco備數據庫位於Boston
圖 在切換前的Data Guard 配置
圖 顯示了在原主數據庫切換到備數據庫後但是在原備數據庫成為新的主數據庫之前的Data Guard 環境在這個步驟Data Guard 配置臨時有兩個備數據庫
圖 在切換到新的主數據庫之前的備數據庫
圖 顯示了在切換發生後的Data Guard 環境原備數據庫成為新的主數據庫主數
據庫現在位於Boston備數據庫現在位於San Francisco
圖 切換後的Data Guard 環境
准備切換
確保滿足步驟一列出的先決條件另外下面的先決條件必須對切換滿足
* 對於包含物理備數據庫的切換檢驗主數據庫實例是否打開和備數據庫實例是否安裝
* 你計劃更改到主角色的備數據庫在你開始切換之前必須是安裝的理想地物理備數據庫在數據庫角色在切換時也將活動地應用重做如果物理備數據庫打開用於只讀訪問時切換還將發生但是需要額外的時間
* 對於包含邏輯備數據庫的切換檢驗主和備數據庫實例是否打開以及 SQL 應用是否活動
對於包含在 Real Applications Cluster 中的主數據庫的切換除了一個實例以外所有實例都必須關閉一旦切換成功執行你能將所有其它實例聯機
當數據庫從一個角色轉換到另一個DB_ROLE_CHANGE 系統事件會觸發你能寫一個觸發器關聯這個系統事件以在切換發生後管理任務當數據庫第一次在切換過後打開時該事件觸發不管其新的角色(就是說不管切換導致其第一次作為主數據庫作為邏輯備或作為只讀模式中的物理備而打開)你能查詢V$DATABASE 視圖的DATABASE_ROLE列來確定數據庫的當前角色
故障轉移
只有當主數據庫變得不可用並且沒有可能在合理的時間期間內還原以提供服務才典型地會使用故障轉移在故障轉移期間執行的特定操作基於在故障轉移中包括的是邏輯或物理備數據庫在故障轉移的時候Data Guard 配置的狀態和用於開始故障轉移使用的特定SQL 語句而不同
圖 顯示了從San Francisco 的主數據庫故障轉移到Boston 的物理備數據庫的故障轉移的結果
圖 故障轉移到備數據庫
准備故障轉移
如果可能在執行故障轉移之前你應該傳遞盡可能多的可用的和未應用的主數據庫重做數據到備數據庫
確保滿足在 步驟一准備角色轉換(故障轉移或切換)中列出的先決條件另外對於故障轉移下面的先決條件必須滿足
* 如果故障轉移中包括當前運行在最大保護模式的備數據庫首先通過在備數據庫上執行下面面語句將其置於最大性能模式
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
然後如果有合適的備數據庫可用你能在故障轉移完成之後在新的主數據庫上重新設置期望的保護模式
這是必須的因為你不能故障轉移到一個處於最大保護模式中的備數據庫另外如果處於最大保護模式中的主數據庫還與備數據庫有活動聯系執行ALTER DATABASE 語句來更改備數據庫從最大保護模式到最大性能模式將不會成功因為故障轉移將原主數據庫從Data Guard 配置中刪除了所以這些特性服務於保護操作於最大保護模式中的主數據庫不受非故意的故障轉移的影響
From:http://tw.wingwit.com/Article/program/Oracle/201311/18719.html