天天看點

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

作者:葫蘆兒的成長記錄

在Oracle Database 12.2.0.1 之前的版本上,對于實體standby 資料庫,将Redo應用于Oracle RAC standby資料庫上的單一執行個體是受限的。在12.2版本上, redo apply現在可以根據使用者的不同配置在部分或者所有standby執行個體上運作。 如果需要,可以通過添加其他standby執行個體來實作Redo Apply性能擴充。

有了這個新功能,可以為任何主要工作負載實作恢複時間上的目标。 這對于大型Oracle RAC叢集的客戶和Oracle Exadata的客戶都有重要的意義。 Oracle Active Data Guard使用者還可以實時通路目前資訊。 以這種方式擴充應用性能意味着standby資料庫始終是最新的,即使在有很多個節點的Oracle RAC叢集的邏輯卷上也能保證資訊的實時性

使用方式說明

從12.2.0.1開始 在執行 alter database recover managed standby database的指令的時候可以添加 INSTANCES [ ALL | integer]參數

如果需要對記憶體列式存儲(In-Memory Column Store)使用多執行個體應用那麼需要設定enable_imc_with_mira 參數 為 TRUE.

alter database recover managed standby database INSTANCES [ ALL | integer]

  • ALL選項使重做應用程式在Oracle RAC備用資料庫中啟動恢複時處于打開或裝載狀态的所有執行個體上運作。所有執行個體都必須處于相同的狀态-打開或裝入。不允許混合狀态.
  • integer選項将重做應用使用的執行個體數限制為指定的數目。對于integer,請指定一個從1到備用資料庫中執行個體數的整數值。資料庫選擇要執行“重做應用”的執行個體;不能指定特定執行個體。

V$RECOVERY_PROGRESS視圖僅在開始恢複的執行個體(MRP0程序所在的執行個體)上填充。

如果省略INSTANCES子句,則僅在發出指令的一個執行個體上進行恢複。

測試1:預設參數不指定instance 測試環境為19c rac-rac的dataguard環境

備庫執行個體1執行如下

SQL> alter database recover managed standby database disconnect from session;

Database altered.

檢視執行個體1的alert日志

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體1啟動MRP程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2未啟動mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體1有pr程序啟動進行日志應用,pr程序相當于幹活的,mrp相當于協調的

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2沒有mrp相關程序及pr程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

測試3:指定instance為1 則對于我的測試環境兩個rac備庫會選擇一個進行日志應用

備庫執行個體1執行如下

SQL> alter database recover managed standby database cancel;

Database altered.

SQL>alter database recover managed standby database disconnect from session instances 1;

執行個體1日志

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體1啟動mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體1啟動mrp程序及對應的pr子程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2沒有啟動任何程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2的日志

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

測試2:指定instance為2 則對于我的測試環境兩個rac備庫同時進行日志應用和all的作用是一緻的。

備庫執行個體1執行如下

SQL> alter database recover managed standby database cancel;

Database altered.

SQL>alter database recover managed standby database disconnect from session instances 2;

檢視執行個體1的mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體1啟動了mrp程序和多個pr程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體1 alert日志

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2隻有pr程序沒有mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2沒有mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2 alert日志

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

測試4:指定instance為all 則對于我的測試環境兩個rac備庫會全部進行日志應用

備庫執行個體1執行如下

SQL> alter database recover managed standby database cancel;

Database altered.

SQL>alter database recover managed standby database disconnect from session instances all;

執行個體1日志

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體1 啟動pr及mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體1 啟動mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2 啟動pr程序沒有mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

執行個體2 沒有mrp程序

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

從上述看來啟動多執行個體應用日志Multi-Instance Redo Apply 并不會在兩個執行個體同時啟用mrp程序,而是會在每個執行個體上面啟動多個apply slaves程序,MRP0對其它所有執行個體上的pr*程序來說是一個協調程序,在整個MIRA恢複中隻有一個mrp0程序的情況是正常的。(mos 2577535.1)

19C dataguard測試Multi-Instance Redo Apply (多執行個體redo應用)

繼續閱讀