

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 錯誤處理任務設定
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.ErrorHandling"></a>

您可以使用下列設定，設定複寫任務的錯誤處理行為：如需使用任務組態檔案來設定任務設定的相關資訊，請參閱：[任務設定範例](CHAP_Tasks.CustomizingTasks.TaskSettings.md#CHAP_Tasks.CustomizingTasks.TaskSettings.Example)。
+ `DataErrorPolicy` – 決定 AWS DMS 在記錄層級發生與資料處理相關的錯誤時所採取的動作。資料處理錯誤的一些範例包括轉換錯誤、轉換中發生的錯誤，以及資料錯誤。預設值為 `LOG_ERROR`。
  + `IGNORE_RECORD` – 任務會繼續執行並忽略該記錄的資料。`DataErrorEscalationCount` 屬性的錯誤計數器會遞增。因此，若您設定資料表的錯誤限制，此錯誤便會計入該限制。
  + `LOG_ERROR` – 任務會繼續執行，並且會將錯誤寫入任務日誌。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
+ `DataTruncationErrorPolicy` – 決定 AWS DMS 在資料截斷時要採取的動作。預設值為 `LOG_ERROR`。
  + `IGNORE_RECORD` – 任務會繼續執行並忽略該記錄的資料。`DataErrorEscalationCount` 屬性的錯誤計數器會遞增。因此，若您設定資料表的錯誤限制，此錯誤便會計入該限制。
  + `LOG_ERROR` – 任務會繼續執行，並且會將錯誤寫入任務日誌。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
+ `DataErrorEscalationPolicy` – 決定 AWS DMS 在到達錯誤數量上限 (於 `DataErrorEscalationCount` 參數中設定) 時要採取的動作。預設值為 `SUSPEND_TABLE`。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
+ `DataErrorEscalationCount` – 設定針對特定記錄，資料可發生的錯誤數量上限。到達此數量時，包含錯誤記錄資料表中的資料會根據 `DataErrorEscalationPolicy` 中設定的政策處理。預設值為 0。
+ `EventErrorPolicy` – 決定 AWS DMS 在傳送任務相關事件時發生錯誤時所採取的動作。可能值如下
  + `IGNORE` – 任務會繼續執行，且會忽略與該事件相關聯的所有資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
+ `TableErrorPolicy` 決定 AWS DMS 在處理特定資料表的資料或中繼資料期間發生錯誤時要採取的動作。此錯誤僅適用於一般資料表資料，而非與特定記錄相關的錯誤。預設值為 `SUSPEND_TABLE`。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
+ `TableErrorEscalationPolicy` – 決定 AWS DMS 在到達錯誤數量上限 (使用 `TableErrorEscalationCount` 參數設定) 時要採取的動作。預設及唯一的使用者設定為 `STOP_TASK`，在此設定下任務會停止並需要手動操作。
+ `TableErrorEscalationCount` – 針對特定資料表，一般資料或中繼資料可發生的錯誤數量上限。到達此數量時，該資料表的資料會根據 `TableErrorEscalationPolicy` 中設定的政策處理。預設值為 0。
+ `RecoverableErrorCount` – 在發生環境錯誤時，嘗試重新啟動任務的次數上限。在系統嘗試重新啟動任務的次數到達指定次數後，任務便會停止並需要手動操作。預設值為 -1。

  當您將此值設定為 -1 時，DMS 嘗試的重試次數會根據傳回的錯誤類型而有所不同，如下所示：
  + **執行中狀態、可復原的錯誤**：如果發生可復原的錯誤，例如連線中斷或目標套用失敗，DMS 會重試任務九次。
  + **啟動狀態、可復原的錯誤**：DMS 會重試任務六次。
  + **DMS 處理的執行中狀態、嚴重錯誤**：DMS 會重試任務六次。
  + **DMS 未處理的執行中狀態、嚴重錯誤**：DMS 不會重試任務。
  + **除上述之外**：無限期 AWS DMS 重試任務。

  將此值設為 0 以永不嘗試重新啟動任務。

  建議您`RecoverableErrorInterval`將 `RecoverableErrorCount`和 設定為 值，以便有足夠的間隔重試，讓您的 DMS 任務可以正常復原。如果發生嚴重錯誤，DMS 會在大多數情況下停止重新啟動嘗試。
+ `RecoverableErrorInterval` – AWS DMS 在嘗試重新啟動任務之間等待的秒數。預設值為 5。
+ `RecoverableErrorThrottling` – 啟用時，嘗試重新啟動任務之間的間隔會根據 `RecoverableErrorInterval` 的值連續增加。例如，如果 `RecoverableErrorInterval` 設為 5 秒，則下一次重試將在 10 秒後發生，然後是 20 秒，然後是 40 秒，以此類推。預設值為 `true`。
+ `RecoverableErrorThrottlingMax` – 如果`RecoverableErrorThrottling`啟用 AWS ，DMS 在嘗試重新啟動任務之間等待的秒數上限。預設為 1800。
+ `RecoverableErrorStopRetryAfterThrottlingMax`– 預設值設定為 `true`，DMS 會在達到每個 的復原嘗試之間 AWS DMS 等待的秒數上限之後停止繼續任務`RecoverableErrorStopRetryAfterThrottlingMax`。設為 時`false`，DMS 會在達到復原嘗試之間 AWS DMS 等待的秒數上限之後繼續任務，每個 `RecoverableErrorStopRetryAfterThrottlingMax` 直到`RecoverableErrorCount`達到為止。
+ `ApplyErrorDeletePolicy` – 決定 AWS DMS 在與 DELETE 操作發生衝突時要採取的動作。預設值為 `IGNORE_RECORD`。可能的值如下：
  + `IGNORE_RECORD` – 任務會繼續執行並忽略該記錄的資料。`ApplyErrorEscalationCount` 屬性的錯誤計數器會遞增。因此，若您設定資料表的錯誤限制，此錯誤便會計入該限制。
  + `LOG_ERROR` – 任務會繼續執行，並且會將錯誤寫入任務日誌。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
+ `ApplyErrorInsertPolicy` – 決定 AWS DMS 在與 INSERT 操作發生衝突時要採取的動作。預設值為 `LOG_ERROR`。可能的值如下：
  + `IGNORE_RECORD` – 任務會繼續執行並忽略該記錄的資料。`ApplyErrorEscalationCount` 屬性的錯誤計數器會遞增。因此，若您設定資料表的錯誤限制，此錯誤便會計入該限制。
  + `LOG_ERROR` – 任務會繼續執行，並且會將錯誤寫入任務日誌。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
  + `INSERT_RECORD` – 若現有目標記錄與插入的來源記錄具有相同的主索引鍵，則更新目標記錄。
**注意**  
**在交易套用模式中**：在此程序中，系統會先嘗試插入記錄。如果插入因主索引鍵衝突而失敗，則會刪除現有記錄，然後插入新的記錄。
**在批次套用模式中**：程序會先移除目標批次中的所有現有記錄，再插入一組完整的新記錄，以確保資料能順利取代。
此程序可防止資料重複，但相較於預設政策，會產生一些效能成本。確切的效能影響取決於您的特定工作負載特性。
+ `ApplyErrorUpdatePolicy` – 決定 AWS DMS 在與 UPDATE 操作發生衝突時要採取的動作。預設值為 `LOG_ERROR`。可能的值如下：
  + `IGNORE_RECORD` – 任務會繼續執行並忽略該記錄的資料。`ApplyErrorEscalationCount` 屬性的錯誤計數器會遞增。因此，若您設定資料表的錯誤限制，此錯誤便會計入該限制。
  + `LOG_ERROR` – 任務會繼續執行，並且會將錯誤寫入任務日誌。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
  + `UPDATE_RECORD` – 如果遺失目標記錄，則會將遺失的目標記錄插入目標資料表。 會 AWS DMS 完全停用任務的 LOB 資料欄支援。若來源資料庫為 Oracle，則選取此選項便需要為所有來源資料表資料行啟用完整的增補日誌記錄。
**注意**  
**在交易套用模式中**：在此程序中，系統會先嘗試更新記錄。如果更新因目標遺失記錄而失敗，則會針對失敗的記錄執行刪除，然後插入新的記錄。此程序需要 Oracle 來源資料庫的完整補充記錄，DMS 會停用此任務的 LOB 資料欄支援。
**在批次套用模式中**：程序會先移除目標批次中的所有現有記錄，再插入一組完整的新記錄，以確保資料能順利取代。
+ `ApplyErrorEscalationPolicy` – 決定 AWS DMS 在達到錯誤數量上限 （使用 `ApplyErrorEscalationCount` 參數設定） 時要採取的動作。預設值為 LOG\$1ERROR：
  + `LOG_ERROR` – 任務會繼續執行，並且會將錯誤寫入任務日誌。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。
  + `STOP_TASK` – 任務會停止，並需要手動操作。
+ `ApplyErrorEscalationCount` – 此選項設定在變更處理操作期間，特定資料表所能發生的 APPLY 衝突數量上限。到達此數量時，該資料表資料會根據 `ApplyErrorEscalationPolicy` 參數中設定的政策處理。預設值為 0。
+ `ApplyErrorFailOnTruncationDdl` – 設定此選項為 `true` 會在 CDC 期間於任何追蹤資料表上執行截斷時造成任務失敗。預設值為 `false`。

  此方法無法搭配 PostgreSQL 11.x 及更低版本，或是任何其他不複寫 DDL 資料表截斷的來源端點使用。
+ `FailOnNoTablesCaptured` – 設定此選項為 `true` 會在為任務定義的資料表映射於任務啟動期間找不到任何資料表時造成任務失敗。預設值為 `true`。
+ `FailOnTransactionConsistencyBreached` – 此選項適用於使用 Oracle 做為來源，包含 CDC 的任務。預設值為 false。將此設為 `true` 會在開啟交易的時間超過指定逾時並且可進行卸除時，造成任務失敗。

  當 CDC 任務以 Oracle 啟動時， 會在有限的時間內 AWS DMS 等待最舊的開放交易關閉，再啟動 CDC。如果最舊的開啟中交易在達到逾時之前不會關閉，則大多數情況下會 AWS DMS 啟動 CDC，忽略該交易。如果此選項設定為 `true`，則任務便會失敗。
+ `FullLoadIgnoreConflicts` – 將此選項設定為 `true`，以在套用快取事件時 AWS DMS 忽略「受影響的零資料列」和「重複」錯誤。如果設定為 `false`，則 AWS DMS 報告所有錯誤，而不是忽略它們。預設值為 `true`。
+ `DataMaskingErrorPolicy` – 決定資料遮罩因不相容的資料類型或任何其他原因而失敗時所 AWS DMS 採取的動作。follwing 是可用的選項：
  + `STOP_TASK` （預設） – 任務停止且需要手動介入。
  + `IGNORE_RECORD` – 任務會繼續執行並忽略該記錄的資料。
  + `LOG_ERROR` – 任務會繼續執行，並且會將錯誤寫入任務日誌。未遮罩的資料將載入目標資料表。
  + `SUSPEND_TABLE` – 任務會繼續執行，但發生錯誤記錄資料表中的資料會移動到錯誤狀態，並且不會複寫資料。

**注意**  
 Redshift 中做為目標的資料表載入錯誤會在 中回報`STL_LOAD_ERRORS`。如需詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的 [STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)。

**注意**  
與可復原錯誤相關的參數變更只會在您停止和繼續 DMS 任務後生效。變更不適用於目前的執行。