使用自動綱要演進支援的作業

Oracle、MySQL、PostgreSQL、SQL Server、Db2 LUW、DB2400、Teradata 和 Oracle TimesTen 目標均支援「自動綱要發展」。

Oracle、MySQL、PostgreSQL、SQL Server、Db2 LUW、Db2 zOS、DB2400、Sybase、Teradata、Oracle TimesTen 和 Snowflake 等來源均支援自動執行綱要。

支援下列作業:

「自動綱要發展」會根據綱要變更支援下列作業,從歷程檔中的描述資料記錄偵測到這些變更,讓來源和目標表格的綱要保持同步:

根據每個來源資料欄描述資料,預設會為對應的目標資料欄選擇最適合的資料類型。

附註:請先從資料類型對應複查適用於特定來源資料庫與目標資料庫複製案例的預設資料類型對應,再導入「自動結構進化」。

在所有情況下,目標資料類型可能與來源資料類型不完全相同。如果可能的話,會選擇目標資料類型,讓目標類型永遠相容且夠大 (大小與來源資料欄相同或更寬),以容納對應的來源資料欄資料。在某些情況下,目標資料庫上沒有對應來源資料欄資料類型可用的適當類型 (例如目標資料庫上的可用類型可能會導致資料截斷),系統會傳回錯誤給使用者,並提供適當的建議。

建立缺少的表格

AutoSchema 支援下列使用案例:

更改現有表格

如果在來源上新增 / 刪除 / 修改任何資料欄,就會產生對應的 ALTER TABLE DDL,然後在對應的對應目標表格上執行。「自動綱要」只支援與類型相關的修改 (包括資料類型名稱、長度、精確度、比例 (如果適用) 以及空值限制條件。不過,它不會對任何其他資料欄屬性進行任何修改。如果在來源資料欄上偵測到任何類型 / 空值相關綱要變更,就會將它們傳輸到目標資料欄。

來源表格的一或多個綱要變更,可能會導致對應目標表格上的單一或多個 ALTER TABLE DDL (如特定目標資料庫所支援)。目標的 DDL 數目取決於特定目標資料庫所支援的語法,例如在下列情況下:

  1. 少數資料庫不允許在單一 ALTER TABLE DDL 中新增 / 刪除 / 修改多個資料欄。

  2. 少數資料庫不允許修改單一 ALTER TABLE DDL 敘述句中資料欄的類型和空值性。

在這種情況下,會根據目標資料庫需求,在目標表格上執行所需的 ALTER TABLE DDL 敘述句數目。

「自動綱要」可能會影響需要進一步動作的目標資料庫。例如,如果 ALTER TABLE MODIFY COLUMN 可能導致某些資料截斷,則不同的資料庫可能會以不同的方式處理。當 MySQL 以啟用嚴格模式執行時,資料庫可能會偵測到某些現有資料可能會被作業截斷,並導致 Replicat 停止 (通常發生在 Oracle 與 MySQL 之間)。不過,如果以非嚴格模式設定 MySQL,則可能會發生牽引,而不會出現警告。

對於 IBM i 而言,視系統的設定方式而定,Replicat 似乎會當機。對於 Db2 (前身為 Db2 LUW) 和 Db2 z/OS 的某些動作,某些動作可能需要進行表格重組。在 Db2 z/OS 上,除非執行重組,否則無法辨識刪除資料欄;對於 Db2,表格可能會在重組擱置中狀態結束,並停止允許對表格進行進一步的作業。

附註:如有需要,您可以選擇性地將 OPTYPE ADDCOLUMN、OPTYPE DROPCOLUMN 及 OPTYPE MODIFYCOLUMN 新增至 DDL AUTOSCHEMA 包含 / 排除準則。