準備用於 Oracle GoldenGate 的資料庫

瞭解如何在來源資料庫表格中啟用補充日誌記錄,這些表格將由 Extract for SQL Server 擷取,以及如何清除較舊的 CDC 暫存資料。

您可以使用下列內容進一步瞭解 CDC Capture:

使用 Oracle GoldenGate for SQL Server CDC Capture Replication http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html 。

啟用 CDC 補充記錄

使用「CDC 擷取」時,擷取變更資料的方法是透過「SQL 伺服器變更資料擷取」表格,因此必須遵循下列程序與需求,才能讓「擷取」正確啟用、維護及擷取變更資料。

您將使用 ADD TRANDATA 命令啟用補充日誌記錄,讓 Extract 能夠擷取重新建構交易所需的資訊。

必須針對要由 Oracle GoldenGate 擷取的所有表格發出 ADD TRANDATA,若要這樣做,必須使用有效的綱要才能建立必要的 Oracle GoldenGate 表格和預存程序。

啟用「CDC 擷取」的補充記錄日誌會執行下列作業:

若要使用命令行介面啟用補充記錄日誌,請使用下列高階步驟:

  1. 複查「準備資料庫使用者和權限」主題,判斷必要的權限,以及啟用資料庫以進行「變更資料擷取」(如果尚未設定) 的步驟。如果資料庫未啟用 CDC,但管理員手動啟用資料庫以進行變更資料擷取,則 GoldenGate 可能需要更高的權限。

    • 對於 SQL Server 的 Google Cloud SQL,必須由服務管理員使用者手動啟用「變更資料擷取」資料庫,並執行下列命令:

      EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database';

    • 對於「SQL 伺服器」和「Azure SQL 受管理執行處理」,若使用者具有系統管理員權限,新增 TRANDATA 將會嘗試設定資料庫以進行「變更資料擷取」,否則資料庫管理員可以在新增 TRANDATA 之前手動啟用 CDC 的資料庫,對來源資料庫執行下列命令:

      EXEC sys.sp_cdc_enable_db;

    • 對於 SQL Server 的 Amazon RDS,如果使用者已被授予權限,新增 TRANDATA 也會嘗試設定資料庫以進行變更資料擷取,否則具有主要證明資料的資料庫管理員可以在新增 TRANDATA 之前手動啟用 CDC 的資料庫,方法是對來源資料庫執行下列命令:

      EXEC msdb.dbo.rds_cdc_enable_db 'source_database'

  2. 在來源 Oracle GoldenGate 安裝中,確定 GLOBALS 檔案具有參數 GGSCHEMA schemaname,而且已在來源資料庫中建立使用的綱要名稱 (CREATE SCHEMA schemaname)。此綱要將由資料庫中建立的所有後續 Oracle GoldenGate 元件使用,因此建議您建立僅供 Oracle GoldenGate 使用的唯一綱要 (例如 'ggschema'),而不要使用 SQL Server 綱要 dbo 或 cdc。

  3. 在來源 Oracle GoldenGate 系統上,開啟命令行介面 (管理從屬端)。

  4. 使用資料庫登入證明資料連線至資料庫。

  5. 針對要由 Extract 擷取的每個表格發出下列命令。您可以使用萬用字元來指定多個表格名稱。

    ADD TRANDATA owner.table

    ADD TRANDATA owner.*

    或者,您也可以使用 FILEGROUP 選項搭配現有的檔案群組名稱,指定將放置 SQL Server 變更資料擷取暫存表格的檔案群組。

    ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA

請參閱新增 TRANDATA 以瞭解詳細資訊。

清除 CDC 暫存資料

啟用補充日誌記錄時,「擷取」重新建構交易所需的資料會儲存在一系列的 SQL Server CDC 系統表格中,以及用來追蹤交易內作業排序的 Oracle GoldenGate 物件中。這些表格需要例行清除,以減少資料庫內的資料儲存。在使用 TRANDATA 啟用補充記錄日誌的過程中,SQL Server 會建立自己的「變更資料擷取清除」工作,但此工作並不知悉 Extract 可能仍需要這些 CDC 系統表格中的資料,而且可在 Extract 有機會擷取資料之前移除該資料。

如果在處理期間擷取所需的資料已從 CDC 系統表格中刪除,則可能需要下列其中一個更正動作:

為了修正在 Extract 處理 CDC 資料之前移除的狀況,Oracle GoldenGate for SQL Server 需要建立「永久清除變更資料」作業。此任務將清除 CDC 暫存資料,同時確保 Extract 尚未處理任何資料。

啟用補充日誌記錄 (TRANDATA) 之後,在啟動 Extract 之前,立即使用下列步驟來建立「Oracle GoldenGate 永久清除變更資料」工作。「清除變更資料」任務會在「管理服務」內執行,且會在第一次建立時自動刪除「SQL Server CDC 清除」工作。「永久清除變更資料」作業沒有「SQL 伺服器代理程式」工作,因為它由「管理服務」執行。因此,必須執行「管理服務」,清除工作才能正確運作。

若要建立「清除變更資料」任務,請執行下列動作:

使用 Oracle GoldenGate for Microservices Architecture,在將 TRANDATA 新增至表格之後,但在啟動 Extract 之前,必須建立永久清除變更資料工作,才能在資料庫上執行 CDC 清除。這可以透過下列其中一種方式來完成:

若要使用「管理服務 Web UI」建立清除變更資料任務,請執行下列動作:1。展開左窗格中的工作區段。

  1. 按一下工作頁面中的永久清除變更資料。

  2. 按一下加號以顯示表單,並填寫必要欄位以建立新的「清除變更資料」任務。

    1. 作業名稱:要建立的永久清除作業名稱。

    2. 已啟用:將工作設為已啟用,這是預設值。

    3. 證明資料網域和證明資料別名:選取來源資料庫的現有「證明資料別名」。

    4. 保留規則:此值決定要保留在來源資料庫中的 CDC 暫存資料量 (小時或天)。視 Oracle GoldenGate 版本而定,預設值為 3 天或 1 小時。較低的 CDC 資料保留期間可減少資料庫中儲存的 CDC 暫存資料量,但可限制使用者將 Extract 重新定位回比暫存表中現有資料還早的時間。

    5. 永久清除頻率:此值代表工作執行頻率,預設值為每 10 分鐘一次。除非永久清除作業的超載影響高使用者活動期間的資料庫效能,否則建議保留預設值。注意:每個來源資料庫只能建立一個「永久清除變更資料」工作。

您可以在 CDC 擷取方法作業考量中找到「Oracle GoldenGate CDC 清除」工作的其他資訊。

啟用雙向迴圈偵測

迴圈偵測是 Oracle GoldenGate 雙向實行的需求,因此某個來源資料庫的 Extract 不會從另一個來源資料庫重新擷取 Replicat 傳送的交易。

使用「CDC 擷取」擷取方法時,Replicat 確認到已設定 Extract 之資料庫的任何交易,只要 Replicat 所傳遞之表格的補充記錄已啟用,就會從 Replicat 擷取該交易。

若要忽略 Replicat 所套用的重新擷取交易,您必須使用 CDC Extract 的 TRANLOGOPTIONS EXCLUDEFILTERTABLE 參數。作為篩選表格的表格將會是您必須為 Replicat 建立的 Oracle GoldenGate 檢查點表格。

若要建立「篩選表格」並啟用「補充記錄」:

以下步驟需要身為 SQL Server 系統管理員 (sysadmin) 角色成員的資料庫使用者。

  1. 在來源系統上,執行「管理用戶端」。

  2. 從「管理從屬端」連線至部署。

  3. 發出下列命令以登入資料庫。

    DBLOGIN USERIDALIAS alias

  4. 建立 Replicat 用來將資料傳遞至來源資料庫的 Oracle GoldenGate 檢查點表格。

    範例: ADD CHECKPOINTTABLE ogg.ggchkpt

    建議您使用與 GLOBALS 檔案之 GGSCHEMA 參數中使用的相同綱要名稱。

  5. 對新建立的檢查點表格啟用補充日誌記錄。

    範例:ADD TRANDATA ogg.ggchkpt

  6. 新增含有檢查點表格資訊的 Replicat。

    範例:ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt

  7. 使用 Replicat 的檢查點表格,使用篩選表格的 EXCLUDEFILTERTABLE 參數設定 Extract。

    TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt