CDC 擷取方式作業考量
瞭解 SQL Server CDC Capture 選項、功能和建議的設定值。
調整 SQL 伺服器變更資料擷取
下列資訊有助於改善 Extract 的擷取效能。
-
透過遠端部署,低網路延遲很重要,建議 Oracle GoldenGate 伺服器與來源資料庫伺服器之間的網路延遲低於 1 毫秒。
-
確定資料庫已啟用「自動建立統計資料」和「自動更新統計資料」。維護
cdc.OracleGG_#####_CT tables、cdc.lsn_time_mapping table和OracleGGTranTables表格的統計資料對 Extract 的效能和延遲至關重要。 -
「SQL Server 變更資料擷取」工作會從 SQL Server 異動日誌收集資料,並將其載入資料庫內的「變更資料擷取」暫存表。
在建立的工作中,有數個可用的調整參數可供使用,以及如何最佳調整工作的相關資訊,請參閱下列文章:https://technet.microsoft.com/en-us/library/dd266396 (v=sql.100) .aspx
一般建議您應將「SQL Server 變更資料擷取工作」輪詢間隔從預設值 5 秒變更為 1 秒。
若要變更「CDC 擷取」工作的預設輪詢間隔,請對資料庫執行下列查詢:
EXEC [sys].[sp_cdc_change_job] @job_type = N'capture', @pollinginterval = 1, GO, --stops cdc job EXEC [sys].[sp_cdc_stop_job], @job_type = N'capture', GO, --restarts cdc job for new polling interval to take affect EXEC [sys].[sp_cdc_start_job], @job_type = N'capture',
Oracle GoldenGate CDC 物件版本控制
Oracle GoldenGate 提供一個版本追蹤子系統,用來追蹤啟用補充記錄日誌時,Oracle GoldenGate 所建立的 CDC 物件。這些物件包括:
-
Oracle GoldenGate 變更追蹤表格,格式為
OracleGG_object id_CT. -
預存程序格式為
fetch_database name_object id -
預存程序
OracleCDCExtract、OracleGGCreateProcs和OracleGGCreateNextBatch。 -
順利完成
ADD TRANDATA命令之後,Oracle GoldenGate 會在 GLOBALS 檔案中指定的GGSCHEMA底下建立名為OracleGGVersion的表格 (如果該表格不存在)。接著,Oracle GoldenGate 會在追蹤
TRANDATA階段作業開始與結束時間的表格中插入記錄。Extract 啟動時,它會比較其內部版本號碼與OracleGGVersion表格中找到的版本號碼,以檢查其本身與 Oracle GoldenGate CDC 物件之間的一致性。如果發現版本號碼不相符,就會出現類似下列的訊息:ERROR OGG-05337 The Oracle GoldenGate CDC object versions on database, source, are not consistent with the expected version, 6. The following versions(s) were found: 3. Rerun ADD TRANDATA for all tables previously enabled, including heartbeat, heartbeat seed, and filter tables.
SQL Server 變更資料擷取的支援和不支援的擷取參數
瞭解與「CDC 擷取」搭配使用的參數。下表列出支援與不支援的參數。
| 支援的參數 | 不支援的 參數 |
|---|---|
TRANLOGOPTIONS |
TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT/NOMANAGESECONDARYTRUNCATIONPOINT/ACTIVESECONDARYTRUNCATIONPOINT |
ALWAYSONREADONLYROUTING |
- |
TRANLOGOPTIONS LOB_CHUNK_SIZE |
- |
TRANLOGOPTIONS MANAGECDCCLEANUP/NOMANAGECDCCLEANUPTRANLOGOPTIONS |
- |
TRANLOGOPTIONS QUERYTIMEOUT |
- |
TRANLOGOPTIONS TRANCOUNT |
- |
交易選項 LOB_CHUNK_SIZE
為「CDC 擷取」方法新增 Extract 參數 LOB_CHUNK_SIZE,以支援大型物件。如果您有龐大的 LOB 資料大小,則可以將 LOB_CHUNK_SIZE 從預設值 4000 個位元組調整為較高的值,最多可調整為 65535 個位元組,以便增加擷取大小,減少擷取整個 LOB 所需的行程。
範例:TRANLOGOPTIONS LOB_CHUNK_SIZE 8000
交易選項 MANAGECDCCLEANUP/NOMANAGECDCCLEANUP
「擷取」參數 MANAGECDCCLEANUP/NOMANAGECDCCLEANUP 由「CDC 擷取」方法使用,以指示 Extract 是否在「Oracle GoldenGate CDC 清除」工作中維護復原檢查點資料。已維護復原檢查點,但如果也未啟用 SQL Server CDC 清除工作,則不會清除 ct 表格。必須要有此項目才能清除。
預設值為 MANAGECDCCLEANUP,不需要明確列在 Extract 中。不過,它需要在啟動 Extract 之前先建立「Oracle GoldenGate CDC 清除」工作。MANAGECDCCLEANUP 應用於所有生產環境,其中 NOMANAGECDCCLEANUP 可視需要用於暫時和測試實作。
範例:TRANLOGOPTIONS MANAGECDCCLEANUP
交易記錄選項排除使用者 / 排除者
「SQL Server CDC 擷取」工作不會擷取與交易關聯的使用者資訊或交易名稱,而且由於此資訊未記錄在 CDC 暫存表格中,「擷取」沒有從特定使用者或特定交易名稱的 DML 排除的方法。因此,EXCLUDEUSER 與 EXCLUDETRANS 參數對「CDC 擷取」處理無效。
交易選項管理非必要截斷點 / 女性非必要截斷點 / 活動非必要截斷點
「SQL 伺服器變更資料擷取」工作是使用 Oracle GoldenGate CDC Capture 方法時,從交易日誌擷取資料的唯一處理作業。次要截斷點管理不是由「擷取」處理,而對於「變更資料擷取擷取」而言,這些參數無效。
TRANLOGOPTIONS ALWAYSONREADONLYROUTING
ALWAYSONREADONLYROUTING 參數允許 Extract for SQL Server 在連線至 Always On 可用性群組監聽器時,將其唯讀處理遞送至可用的讀「次要」。
交易日誌選項查詢逾時
指定 SQL Server 的查詢在報告逾時錯誤訊息之前,將等待結果的時間長度。此選項會採用整數值來代表秒數。預設查詢逾時值為 300 秒 (5 分鐘)。最小值為 0 秒 (無限逾時)。最大值為 2147483645 秒。
交易記錄選項交易
允許調整 Extract 每次呼叫所處理的異動數目,以從 SQL Server 變更資料擷取暫存表格中提取資料。根據您的交易工作負載,調整此值可能會改善擷取速率傳輸量,但並非所有工作負載都會受到正面影響。最小值為 1,最大值為 100,預設值為 10。
Oracle GoldenGate CDC 清除處理作業的詳細資訊
「CDC 擷取」預設需要「Oracle GoldenGate 永久清除變更資料」工作,因為「擷取」預設為 TRANLOGOPTIONS MANAGECDCCLEANUP。
每個啟用 CDC Capture 的資料庫應該只有一個永久清除作業,而且您必須使用本文件之準備 Oracle GoldenGate 的資料庫段落中所述的步驟來建立作業。
修改 Oracle GoldenGate 永久清除變更資料作業
「Oracle GoldenGate 永久清除變更資料」作業的預設永久清除作業頻率排程和資料保留期間,是每 10 分鐘執行一次,資料保留原則為 3 天或 1 小時,視安裝的 Oracle GoldenGate 版本而定。
對於客戶特定需求,可能需要調整保留期間 ( 保留規則選項) 和工作執行階段排程 ( 清除頻率選項)。
保留規則選項會決定要保留在來源資料庫中的 CDC 暫存資料量 (小時或天)。視安裝的 Oracle GoldenGate 版本而定,預設值為 3 天或 1 小時。較低的 CDC 資料保留期間可減少資料庫中儲存的 CDC 暫存資料量,但可限制使用者將 Extract 重新定位回比暫存表中現有資料還早的時間。一般而言,不需要將現有的 Extract 重新定位回較早的時間點,因此建議使用較新的預設設定 1 小時,除非有需要更多暫存資料的特定案例需要保留在資料庫中。請注意,如果您將此值從較高的保留期間變更為非常短的保留期間,則下次作業排程執行時,它可能會耗用大量的交易日誌空間與系統負荷。因此,建議您隨著時間慢慢減少 Keep Rule 值,直到達到想要的結束值為止。
永久清除頻率代表工作的執行頻率,預設值為每 10 分鐘一次。除非永久清除作業的超載影響高使用者活動期間的資料庫效能,否則建議保留預設值。
若要修改現有的「永久清除變更資料」工作,請從「管理服務」左邊的功能表瀏覽至組態,以開啟組態頁面。1 按一下組態頁面中的工作,即可開啟工作頁面。
-
按一下工作頁面中的永久清除變更資料。
-
按一下現有工作旁邊的更改工作圖示。
-
視需要修改保留規則和清除頻率選項的值。
-
按一下提交,以儲存變更。
刪除 Oracle GoldenGate 永久清除變更資料作業
只有在未設定擷取特定資料庫的 Extract 時,才應該刪除資料庫的永久清除變更資料作業。
若要刪除現有的「永久清除變更資料」工作,請從「管理服務」左邊的功能表瀏覽至組態選項,以開啟組態頁面。1 按一下組態頁面中的工作,即可開啟工作頁面。
-
按一下工作頁面中的永久清除變更資料。
-
按一下要移除之工作旁邊的刪除工作圖示。
從傳統擷取更新為 CDC 擷取
如果您計畫從使用傳統 Extract 從 Oracle GoldenGate 12c (12.3.0.1) 或更早版本變更為 Oracle GoldenGate 26ai CDC Extract,則必須移除使用傳統 Extract 安裝方法實行的補充日誌記錄。並使用「CDC 擷取」安裝二進位檔重新啟用補充記錄日誌,因為啟用 TRANDATA 的呼叫在兩個版本之間不同,且「CDC 擷取」不支援 TRANDATA for Classic Extract 的實作。
請遵循這些一般準則來移除並重新啟用補充記錄。如果在生產系統中從傳統移轉至 CDC 擷取,則應特別考量與規劃。此處提供的資訊並不涵蓋所有要求,僅作為補充記錄的一般要求提供:
-
確定傳統擷取已處理日誌中的所有剩餘資料,而且可以正常停止。
-
請根據 Extract 與其他複製或 CDC 元件的執行方式,執行下列其中一項作業:
-
如果 Extract 未在同一個資料庫上與 SQL Server 交易複製或非 Oracle CDC 組態同時執行,請在 Management Studio 中開啟查詢階段作業,然後針對來源資料庫發出下列敘述句,以停用和刪除任何 CDC 或複製元件,以及清除次要截斷點。
EXEC sys.sp_cdc_disable_db -
如果 Extract 在同一個資料庫上以 SQL Server 交易複製或非 Oracle CDC 組態並行執行,請從傳統 Extract 的安裝資料夾執行 Admin Client,使用
DBLOGIN登入來源資料庫,然後針對 Extract 組態中的每個表格發出下列命令。您可以使用萬用字元來指定多個表格名稱DELETE TRANDATA owner.tableDELETE TRANDATA owner.*
-
-
若已安裝活動訊號表項目,請刪除此項目。
DELETE HEARTBEATTABLE -
使用 Oracle GoldenGate CDC Extract 安裝二進位檔,請依照準備 Database for Oracle GoldenGate 中所列的步驟,重新啟用補充日誌記錄和其他必要元件,然後重新新增活動訊號表。