驗證 DR 整備度

複查災害復原整備的最佳做法,並驗證計畫和非計畫事件的災害復原設定。

關於 DR 整備度

複查災害復原 (DR) 整備的最佳做法。

使用 Active Data Guard 可將唯讀工作負載卸載至待命資料庫,以提供待命資料庫可以開始生產的連續應用程式層次驗證。這除了提供 Oracle Data Guard 套用處理作業執行的連續 Oracle 區塊層次驗證之外,還提供一個保證層次。

使用快照待命資料庫建立實際環境執行資料庫的確切複本,以進行開發和測試。定期將待命資料庫置於讀取/寫入模式 (使用「資料保全快照待命」),以驗證它的整備度,以支援讀寫實際環境執行工作負載。快照待命資料庫也可用於修正程式與升級的最終功能和效能測試,因為 DR 系統大小與實際環境執行系統類似。「快照待命」會繼續從存檔以供日後使用的主要資料庫接收 redo,此資料庫會隨時提供資料保護。不過,如果進行測試時需要容錯移轉,復原時間 (RTO) 將會延長成將「快照待命資料庫」轉換回待命資料庫所需的時間。當待命資料庫處於快照模式時,快速復原區域需要額外的儲存體 (保留從主要實際環境執行資料庫收到的存檔重做供稍後使用,以及快照待命產生的目前重做與倒溯日誌)。

以下是使用快照待命資料庫的一些優點:

  • 它提供實際環境執行資料庫的確切複本以供開發和測試,同時維護資料保護。您可以使用 Oracle Real Application Testing 選項來擷取主要資料庫工作負載,然後在快照待命資料庫上重新執行以供測試之用。
  • 透過轉換至實體待命資料庫並重新同步,可以輕鬆地重新整理以包含目前的生產環境資料。

將待命資料庫轉換成快照待命資料庫

當您想要實際環境執行資料庫的複本時,可以使用 Oracle Data Guard Broker 將實體待命資料庫轉換成快照待命資料庫並驗證容錯移轉。

快照待命是從實體待命資料庫建立的完全可更新待命資料庫。在快照待命資料庫上,會收到 redo 資料,但在快照待命資料庫轉換回實體待命資料庫之後才會套用。

以下是使用快照待命資料庫的一些好處:

  • 快照待命提供實際環境執行資料庫的確切複本供開發和測試之用,同時維護資料保護。您可以使用 Oracle Real Application Testing 選項來擷取主要資料庫工作負載,然後在快照待命資料庫上重新執行以供測試之用。
  • 您可以轉換成實體待命資料庫並重新同步,輕鬆重新整理快照待命資料庫以包含目前的生產資料。

Oracle Data Guard 命令行介面 (DGMGRL) 可讓您直接從命令行介面管理 Oracle Data Guard 中介組態及其各種成員。

  1. 使用 sys 使用者名稱和密碼登入待命資料庫執行處理上的 DGMGRL 階段作業。
    [oracle@exa11db01 ~]$ dgmgrl
    DGMRGL> connect
    Username: sys
    Password:
  2. 檢視組態以確認主要和待命資料庫。
    DGMGRL> show configuration;
    輸出看起來會像下面這樣:
    Configuration - onpremexadr
      Protection Mode: MaxPerformance
      Members:
      db1_phx3g7 - Primary database
        db1        - Physical standby database 
          Error: ORA-16664: unable to receive the result from a member
    Fast-Start Failover:  Disabled
    Configuration Status:
    ERROR   (status updated 108 seconds ago)
  3. 將實體待命資料庫轉換成快照待命資料庫。
    在此範例中,standby_database_unique_name 是 db1。
    DGMGRL> convert database standby_database_unique_name to snapshot standby;
    轉換完成時,輸出會有類似以下的行:
    Converting database "db1" to a Snapshot Standby database, please wait...
    Database "db1" converted successfully
  4. 檢視組態以驗證轉換。
    DGMGRL> show configuration;
    輸出看起來會像下面這樣:
    Configuration - onpremexadr
      Protection Mode: MaxPerformance
      Members:
      db1_phx3g7 - Primary database
        db1        - Snapshot standby database 
          Error: ORA-16664: unable to receive the result from a member
    Fast-Start Failover:  Disabled
    Configuration Status:
    ERROR   (status updated 59 seconds ago)
  5. 將快照待命資料庫轉換回實體待命資料庫。
    DGMGRL> convert database standby_database_unique_name to physical standby;
    輸出看起來會像下面這樣:
    Converting database "db1" to a Physical Standby database, please wait...
    Operation requires a connection to database "db1_phx3g7"
    Connecting ...
    Connected to "DB1_phx3g7"
    Connected as SYSDBA.
    Oracle Clusterware is restarting database "db1" ...
    Connected to "db1"
    Connected to "db1"
    Continuing to convert database "db1" ...
    Database "db1" converted successfully
  6. 檢視組態以驗證轉換。
    DGMGRL> show configuration;
    輸出與下列類似:
    Configuration - onpremexadr
      Protection Mode: MaxPerformance
      Members:
      db1_phx3g7 - Primary database
        db1        - Physical standby database 
          Error: ORA-16664: unable to receive the result from a member
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    ERROR   (status updated 20 seconds ago)
    DGMGRL>

設定 Oracle Data Guard 參數

執行切換之前,請先在主要和待命資料庫執行處理上設定 Oracle Data Guard 參數。

  1. 在內部部署主要資料庫上,檢查系統變更編號 (SCN)。
    select standby_became_primary_scn from v$database;
    輸出與下列類似:
    STANDBY_BECAME_PRIMARY_SCN
    --------------------------
    0
  2. 確定主要資料庫未啟用倒溯。
    select flashback_on from v$database;
    輸出與下列類似:
    FLASHBACK_ON
    ------------------
    NO
  3. 顯示參數復原。
    SQL> show parameter recovery;
    輸出與下列類似:
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest	     string	      +RECOC1
    db_recovery_file_dest_size	big integer	  8256M
    recovery_parallelism             integer             0
    remote_recovery_file_dest        string
  4. 設定 DB_RECOVERY_FILE_DEST_SIZE 參數的大小以符合您的資料庫大小。
    下列範例使用 20G 作為範例資料大小。根據您的資料庫設定資料大小。
    SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20G;
  5. 在主要資料庫啟用倒溯。
    SQL> alter database flashback on;
  6. 確認資料庫倒溯已啟用 (開啟)。
    SQL> select flashback_on from v$database;
    輸出看起來會像下面這樣:
    FLASHBACK_ON
    ------------------
    YES
  7. 在待命 Oracle Database Exadata Cloud Service 上,判斷是否已啟用倒溯。
    SQL> select flashback_on from v$database;
    輸出看起來會像下面這樣:
    FLASHBACK_ON
    ------------------
    NO
  8. 查詢雲端待命資料庫的開啟模式狀態。
    SQL> select open_mode from v$database;
    輸出看起來會像下面這樣:
    OPEN_MODE
    -------------------- 
    MOUNTED
  9. 取消待命資料庫的資料庫復原。
    SQL> alter database recover managed standby database cancel;
  10. 在雲端的資料庫執行處理上設定倒溯。
    SQL> alter database flashback on;
  11. 中斷待命資料庫與階段作業的連線。
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
    Database altered
  12. 確認資料庫倒溯已啟用 (開啟)。
    SQL> select flashback_on from v$database;
    FLASHBACK_ON
    ------------------
    YES
  13. 顯示保留參數。
    SQL> show parameter_retention;
    輸出看起來會像下面這樣:
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    db_flashback_retention_target	     integer	 1440
    undo_retention			      integer	 900