使用 Oracle 資料庫的重做記錄檔

Datastream 會從 Oracle 重做記錄檔擷取變更資料擷取 (CDC) 事件,將來源資料庫的變更複製到目的地。Oracle 資料庫會將所有交易記錄在線上重做記錄檔中,並在目前的記錄檔輪替時封存這些檔案。您可以選擇 Datastream 存取重做記錄檔的方式,並設定記錄檔大小和輪替頻率,縮短複製作業延遲時間。

存取重做記錄檔

Datastream 可使用 Oracle LogMiner API 或二進位讀取器方法,存取重做記錄檔:

  • Oracle LogMiner:Oracle 資料庫內建的現成公用程式。如果將 Datastream 設為使用 Oracle LogMiner API,Datastream 只能處理「封存」重做記錄檔,不支援線上重做記錄檔。LogMiner API 方法為單一執行緒,在處理交易數量龐大的來源資料庫時,延遲時間較長,處理量也較低。LogMiner 支援多數資料類型和 Oracle 資料庫功能。

  • 二進位讀取器(預先發布版):專門的高效能公用程式,可與線上和封存的重做記錄檔搭配使用。二進位讀取器可使用儲存空間自動管理 (ASM) 存取記錄檔,或使用資料庫目錄物件直接讀取檔案。二進位讀取器採用多執行緒,支援低延遲 CDC。此外,由於重做日誌檔是在資料庫作業外剖析,因此對來源資料庫的影響也較小。二進位讀取器 CDC 方法對特定資料類型或功能的支援有限。詳情請參閱「已知限制」。

設定 Oracle 重做記錄檔的設定參數

使用 LogMiner CDC 方法時,這項設計會對 Datastream 的潛在延遲時間產生深遠影響。LogMiner 只會讀取封存記錄,因此如果 Oracle 的重做記錄檔經常切換或保持較小的大小 (例如 < 256 MB),Datastream 就能更快複製變更。這不適用於二進位檔讀取器方法,因為該方法會主動讀取線上重做記錄檔。

您可以設定設定參數,控制記錄檔輪替頻率:

  • 大小:線上重做記錄檔的大小下限為 4 MB,預設大小則取決於作業系統。您可以建立新的線上記錄檔並捨棄舊的記錄檔,藉此修改記錄檔的大小。

    如要查詢線上重做記錄檔的大小,請執行下列查詢:

    SELECT GROUP#, STATUS, BYTES/1024/1024 MB FROM V$LOG
  • 時間:ARCHIVE_LAG_TARGET 參數會提供主要資料庫目前記錄的時間長度上限 (以秒為單位)。

    這並非確切的記錄切換時間,因為系統會考量封存記錄所需的時間。預設值為 0 (無上限),建議設為 1800 (或 30 分鐘) 以下的合理值。

    您可以在初始化期間或資料庫啟動時,使用下列指令設定 ARCHIVE_LAG_TARGET 參數:

    • SHOW PARAMETER ARCHIVE_LAG_TARGET; 這個指令會顯示目前記錄檔涵蓋的時間長度 (以秒為單位)。
    • ALTER SYSTEM SET ARCHIVE_LAG_TARGET = number-of-seconds;使用這個指令可變更上限。

      舉例來說,如要將上限設為 10 分鐘 (或 600 秒),請輸入 ALTER SYSTEM SET ARCHIVE_LAG_TARGET = 600;

後續步驟