準備要處理的表格

必須在 Teradata 的 Oracle GoldenGate 環境中處理下列表格屬性。

停用觸發程式和串聯限制條件

如果 Oracle GoldenGate 從觸發程式或連鎖限制條件所發生的來源複製 DML,請停用目標 Teradata 表格的觸發程式、連鎖刪除限制條件以及連鎖更新限制條件。如果在目標表格上啟用相同的觸發程式或限制條件,因複製的來源資料而變為冗餘,資料庫將會傳回錯誤。請參考下列範例,其中來源表格為 emp_src 與 salary_src,而目標表格為 emp_targ 與 salary_targ。

  1. emp_src 會發出刪除。

  2. 它會將刪除重疊至 salary_src。

  3. Oracle GoldenGate 會將這兩個刪除項目傳送至目標。

  4. 父項刪除會先到達,並套用至 emp_targ。

  5. 父項刪除會將刪除重疊套用至 salary_targ。

  6. 從 salary_src 連鎖刪除會套用至 salary_targ 。

  7. 找不到資料列,因為該資料列已在步驟 5 中刪除。

確保表格的資料列唯一性

Oracle GoldenGate 在來源和目標表格上需要某種形式的唯一資料列 ID,才能尋找正確的目標資料列以進行複製的更新和刪除。

除非 TABLE 或 MAP 敘述句中使用 KEYCOLS 子句,否則 Oracle GoldenGate 會選取資料列 ID,以下列優先順序使用:1。主索引鍵

  1. 不包含時戳或非具體化計算資料欄的第一個唯一索引鍵文數字。

  2. 如果沒有任何先前的金鑰類型存在 (即使表格中可能定義了其他類型的金鑰),Oracle GoldenGate 會建構所有資料欄的虛擬金鑰資料庫允許用於唯一金鑰,不包括金鑰中 Oracle GoldenGate 不支援的金鑰或 Oracle GoldenGate 組態中排除的金鑰。

注意:如果表格上有其他不可使用的金鑰,或表格上沒有金鑰,Oracle GoldenGate 會將適當的訊息記錄至報表檔案。從所有資料欄建構索引鍵,代表來源系統上 Oracle GoldenGate 的效能。在目標上,此索引鍵會讓 Replicat 使用更大且更低效率的 WHERE 子句。

  1. 如果表格沒有適當的索引鍵,或者您偏好不使用現有的索引鍵,您可以定義替代索引鍵 (如果表格的資料欄一律包含唯一值)。您可以在 Extract TABLE 參數和 Replicat MAP 參數中包含 KEYCOLS 子句,以定義此替代索引鍵。指定的金鑰將會覆寫 Oracle GoldenGate 找到的任何現有主索引鍵或唯一索引鍵。請參閱 Oracle GoldenGate 的參數與函數參照中的 TABLE | MAP 。

使用 KEYCOLS 指定自訂金鑰

如果表格沒有適用的資料列識別碼,或您偏好不使用識別碼,則您可以定義替代索引鍵,前提是表格的資料欄一律包含唯一值。您可以在 Extract TABLE 參數和 Replicat MAP 參數中包含 KEYCOLS 子句,以定義此替代索引鍵。指定的金鑰會覆寫 Oracle GoldenGate 找到的任何現有主索引鍵或唯一索引鍵。

處理大量更新與刪除作業

更新或刪除大量資料列的作業,會針對訂戶資料庫上的每個資料列產生個別更新與刪除。這可能會導致 Teradata 訂戶系統上的鎖定管理程式溢位,因此終止 Replicat 處理作業。

若要避免這些錯誤,請暫時暫停這些作業的複製,然後在來源和目標系統上手動執行。若要暫停複製,請使用下列命令,僅暫停該階段作業的複製。該表格上其他階段作業的作業會正常複製。

set session override replication on;
commit;