標示來源表格以進行重新整理

CDC 抄寫 重新整理作業設計為同步化來源與目標表格。

表格可能會因為各種原因而不同步,包括下列問題:

駐留表格
從抄寫中駐留表格一段時間以進行變更 (例如更新來源表格的定義) ,並不再抄寫來源上正在進行的變更。
這可能會導致目標表格與來源表格不一致。
配置變更
當一組訂閱從測試環境提升至正式作業環境時,可能需要重新整理。
升級作業可能會新增轉換或其他表格對映變更,這些變更需要重新整理來源和目標表格才能準備鏡映。
維護作業
在來源表格上的維護時間期間所執行的大型大量 SQL 作業 (會影響大部分列) ,可能會更快使用重新整理來重新同步化。 由於能夠將橫列大量載入至目標資料庫,因此重新整理可能比鏡映更快,以抄寫數百萬個變更。

當您的訂閱包含未與來源表格同步的目標表格時,您可以標示來源表格進行重新整理。 在開始鏡映之前,將會重新整理標示為重新整理且抄寫方法為「鏡映」的表格。

CDC 抄寫 會將單一訂閱內所有已標示的表格重新整理為一個循序作業,直到完成為止。 每一個表格一次個別重新整理一次,直到所有已標示的表格都完成重新整理為止。 重新整理是適用於單一訂閱的作業,因此當一個訂閱正在重新整理其他訂閱時,不會受到影響; 它們可以視需要繼續鏡映不同表格或重新整理表格的資料。 若要執行平行重新整理,可以使用多個訂閱。

CDC 抄寫 提供兩種類型的重新整理作業:「標準重新整理」及「差異重新整理」。

「標準重新整理」會導致將來源表格中資料的完整副本傳送至目標表格。 此作業會截斷或刪除目標表格的內容,然後插入來源系統所傳送的新內容。

「差異重新整理」只會套用目標表格與來源表格之間的差異,以更新目標表格。 與「標準重新整理」一樣,「差異重新整理」會比較目標表格中的每一列與來源表格中的每一列,以識別遺漏、已變更或其他列,而不是在重新整理開始時清除目標表格並重新移入資料。 「差異重新整理」的主要優點是目標表格在重新整理作業期間保持在線上。

差異重新整理有三種可能的方法:

僅重新整理
透過變更與來源列不同的任何目標列來執行「差異重新整理」。
重新整理並記錄差異
執行「差異重新整理」,同時在目標抄寫引擎 meta 資料中建立日誌表格,以在重新整理期間追蹤所有變更。
日誌表格與目標表格相同,其中新增了一個直欄來指出重新整理期間所採取的動作,例如插入列、刪除列或更新列。 對於更新,會同時記載來源和目標列影像。 此日誌表格建立在與 TS_CONFAUD 表格 (或 CDC Replication Engine for Db2® for z/OS®的 DMMD_DMCONFAUD 表格) 相同的資料庫及表格空間中,且具有與 meta 資料相同的擁有者。 日誌表格的名稱是透過結合訂閱名稱、目標表格名稱及重新整理開始日期和時間來建立。
僅記載差異
在目標抄寫引擎 meta 資料中建立並移入日誌表格,以識別來源與目標表格之間的所有差異。
未更新目標表格。 這可讓您評估目標與來源之間的差異。 如果您隨後決定重新整理表格,則可以回到訂閱並選取 僅重新整理 以更新目標表格,或根據日誌表格的內容手動更新目標表格。

執行「差異重新整理」有一些需求和限制:

  • 差異重新整理僅適用於使用標準抄寫的表格
  • 來源與目標表格的對照順序必須相同
  • 不支援來源表格上的衍生直欄
  • 將忽略對映至衍生表示式、常數或日誌登載控制欄位的任何目標直欄
  • 目標表格的索引鍵直欄必須直接對映至來源表格上的直欄。
  • 目標表格必須具有唯一索引鍵,主要索引鍵或具有至少一個不可為空值的直欄的唯一索引。
  • 當您指定表格對映的索引鍵直欄時,差異重新整理不支援 使用所有可搜尋的直欄指定索引鍵 選項。 只有 使用索引 選項有效。

透過使用 SQL WHERE 子句,可以進一步精簡「標準重新整理」及「差異重新整理」,以僅包括指定範圍內的列。 這對於只有最新資料需要重新整理的表格非常有用。

如果您想要透過使用 SQL WHERE 子句來精簡重新整理,則「列子集」功能需要符合下列其中一個條件:
  • 已明確設定表格擷取點,或已透過已在 管理主控台 或 CHCCLP 程式中鏡映的表格來設定表格擷取點。
  • 已設定訂閱的提取點 (如果適用的話,使用 SETLOGPOS 指令或 dmsetbookmark 指令)

在重新整理期間從資料庫擷取資料的順序取決於所執行的重新整理類型。 在「標準重新整理」期間,不會使用 ORDER BY 排序; 資料庫會決定傳回資料的順序。 在「差異重新整理」期間, CDC 抄寫 會在表格上使用 ORDER BY 排序來查詢資料庫。 選擇主要索引鍵或唯一索引鍵來排序來源和目標表格,並判斷其差異。

使用多個表格執行重新整理時,每一個個別表格的重新整理順序是根據群組順序,如重新整理順序選項中所設定。

在順利完成重新整理之後,可以重新啟動訂閱以進行鏡映。 然後, CDC 抄寫 將處理變更待辦事項。 對於未重新整理 CDC 抄寫 的表格,將從鏡映結束的位置繼續處理變更。 對於已重新整理的表格, CDC 抄寫 將處理在該表格開始重新整理之後確定的所有變更。

附註:
  • 在雙向配置中使用 CDC 抄寫 時,您需要確保在從 A 端到 B 端重新整理表格時存在下列條件:
    • 在進行重新整理時,該表格的 B 端沒有發生應用程式工作量。
    • 表格不是從 B 面鏡映到 A 面。
    • 重新整理完成之後,在 B 端重新新增工作量之前,您需要針對該表格執行 dmmarktablecapturepoint 指令。
  • 差異重新整理不適用於 CDC Replication Engine for InfoSphere® DataStage®CDC Replication Engine for Netezza® TechnologyCDC Replication Engine for FlexRepCDC Replication Engine for KafkaCDC Replication Engine for Db2 for i 資料儲存庫。
  • Db2 for z/OS: 如果未針對 CDC Replication Engine for Db2 for z/OS的訂閱設定「重新整理順序」,則會按字母順序重新整理表格。