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

在變更資料擷取期間,Datastream 會讀取 Oracle 重做記錄檔,監控來源資料庫的變更,並將這些變更複製到目的地執行個體。每個 Oracle 資料庫都有一組線上重做記錄檔。資料庫中的所有交易記錄都會記錄在檔案中。當目前的重做記錄檔旋轉 (或切換) 時,封存程序會 將此檔案複製到封存儲存空間。同時,資料庫會將另一個檔案升級為目前的檔案。

Datastream Oracle 連接器會從封存的 Oracle 重做記錄檔中擷取變更資料擷取 (CDC) 事件。

存取重做日誌檔案

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

  • Oracle LogMiner:Oracle 資料庫中隨附的即用工具。如果您將 Datastream 設為使用 Oracle LogMiner API,Datastream 只能搭配封存的重做記錄檔運作,不支援線上重做記錄檔。LogMiner API 方法是單執行緒的,因此在處理大量交易數來源資料庫時,延遲時間會更長,處理量也會降低。LogMiner 支援多數資料類型和 Oracle 資料庫功能。

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

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

這項設計對 Datastream 的潛在延遲時間影響深遠。如果 Oracle 的重做記錄檔經常切換,或保持較小的大小 (例如 < 256MB),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;

後續步驟