刪除錯誤
有效對象
擷取與 Replicat
說明
使用 DDLERROR 參數來處理來源和目標系統上的 DDL 錯誤。選項可用於 Extract 和 Replicat。
擷取的 DDLERROR
使用 DDLERROR 參數的「擷取」選項來處理 Extract 所找到之物件上找不到描述資料的錯誤。
預設
異常中止
語法
DDLERROR [RESTARTSKIP <number_of_skips>] [RETRYDELAY <seconds>] [SKIPTRIGGERERROR <number_of_errors>]
RESTARTSKIP <number_of_skips>
讓 Extract 在啟動時略過並忽略特定數目的 DDL 作業,以避免 Extract 因錯誤而異常中止。依照預設,DDL 錯誤會導致 Extract 異常中止,因此不會略過任何作業。有效值為 1 到 100000。
若要將略過的作業相關資訊寫入 Extract 報表檔案,請使用 DDLOPTIONS 參數搭配 REPORT 選項。
SKIPTRIGGERERROR <number_of_errors>
(Oracle) 讓 Extract 在啟動時略過並忽略由 DDL 觸發器所導致的特定 DDL 錯誤數目。有效值從 1 到 100000。
SKIPTRIGGERERROR 會在 RESTARTSKIP 選項之前勾選。如果 Extract 因觸發程式錯誤而略過 DDL 作業,則該作業不會計入 RESTARTSKIP 規格中。
Replicat 的 DDLERROR
使用 DDLERROR 參數的 Replicat 選項來處理將 DDL 套用至目標資料庫時所發生的錯誤。使用 DDLERROR 選項時,您可以預設方式處理大部分的錯誤,例如停止處理,也可以以特定方式處理其他錯誤。您可以在同一個參數檔中使用多個 DDLERROR 執行處理來處理預期的所有錯誤。
預設
異常中止
語法
DDLERROR
{<error> | DEFAULT} {<response>}
{INCLUDE <inclusion_clause> | EXCLUDE <exclusion_clause>}
[IGNOREMISSINGOBJECTS | ABENDONMISSINGOBJECTS]
[RETRYDELAY <seconds>]
{<error> | DEFAULT} {<response>}
<error>
指定此 DDLERROR 敘述句要處理的明確 DDL 錯誤。
DEFAULT
為任何沒有明確 DDLERROR 陳述式的 DDL 錯誤指定預設 <response>。
<response>
Replicat 在發生 DDL <error> 時所採取的動作。可為下列其中之一:
ABEND
倒回作業並異常終止處理。ABEND 為預設值。
DISCARD
將違規作業記錄至捨棄檔,但繼續處理後續的 DDL。
IGNORE
忽略錯誤。
{INCLUDE <inclusion_clause> | EXCLUDE <exclusion_clause>}
識別控制 DDLERROR 陳述式是否處理特定 DDL 的包含或排除子句開頭。如需語法和用法,請參閱 DDL 篩選選項。
[IGNOREMISSINGOBJECTS |
ABENDONMISSINGOBJECTS] |
控制當目標上找不到的物件發出 DML 時,Extract 是否異常中止。在目標上直接發出不在複製組態中的 DDL,或當來源與目標定義之間有差異時,通常會發生此情況。
IGNOREMISSINGOBJECTS
讓 Replicat 略過遺漏表格的 DML 作業。
ABENDONMISSINGOBJECTS
讓 Replicat 在遺漏的表格上中止 DML 作業。
[RETRYDELAY <seconds>]
指定嘗試重試失敗作業之間的延遲 (秒)。預設值是 10 秒。
範例
範例 1 DDLERROR 基本範例
在下列範例中,DDLERROR 敘述句會讓 Replicat 忽略指定的錯誤,但在以 10 秒間隔再次嘗試作業三次之前,並不會忽略該錯誤。Replicat 會將錯誤處理套用至在名稱符合 tab* 萬用字元 (任何使用者、任何作業) 的物件上執行的 DDL 作業 (滿足 tab1* 的物件除外)。
DDLERROR 1234 IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 10 &
INCLUDE ALL OBJTYPE TABLE OBJNAME tab* EXCLUDE OBJNAME tab1*
若要處理除該錯誤之外的所有錯誤,可以新增下列 DDLERROR 敘述句。
DDLERROR DEFAULT ABEND
在此情況下,Replicat 會出現 DDL 錯誤。
範例 2 使用多個 DDLERROR 陳述式
除非多個 DDLERROR 陳述式指定相同的錯誤 (不含任何其他限定元),否則您在參數檔中列出 DDLERROR 陳述式的順序不會影響其有效性。在此情況下,Replicat 只會使用列出的第一個。例如,提供下列陳述式時,Replicat 將中止錯誤。
DDLERROR 1234 ABEND
DDLERROR 5678 IGNORE
不過,使用適當的限定元後,先前的組態會變得更有用。舉例而言:
DDLERROR 1234 ABEND INCLUDE OBJNAME tab*
DDLERROR 5678 IGNORE
在此情況下,因為有 INCLUDE 陳述式,只有在錯誤 DDL 陳述式中的物件名稱符合萬用字元 tab* 時,Replicat 才會中止。Replicat 將會忽略包含任何其他物件名稱的錯誤作業。