限制
如果您計劃使用「自動綱要發展」功能,請考量下列限制:
-
Replicat 只支援「傳統」和「協調」模式的「自動綱要」(不支援平行模式)。
-
雙向複製不支援「自動綱要」。
-
「自動綱要」不適用於 MAPEXCEPTION 子句中使用的表格。使用者必須先明確建立對應的異常狀況表格,然後才能啟動 Replicat。
-
自動綱要不支援 COLMATCH 參數。
-
自動綱要不會將來源不顯示 / 隱藏的資料欄從來源傳輸至目標。
-
「自動綱要」不採用 DDLSUBST 參數。
-
「自動綱要」不會將來源表格中存在的所有索引或限制條件傳輸到對應的目標表格中。
-
「自動綱要」不採用任何來源資料欄層次字元集和 (或) 定序。對應的資料欄層次字元集或定序未與目標資料欄關聯。
-
「自動綱要」不會將任何表格層次字元集與目標表格相關聯。
-
「自動綱要」不會將任何資料欄層次字元集或定序與目標資料欄關聯。
使用「自動綱要」時,請務必檢查來源使用的字元集,以及目標系統上可用的字元集。請勿假設來源字元集一定可在目標系統上使用。如果資料庫並非全都使用某種形式的 Unicode,這就特別適用。目前使用「自動綱要 (Automatic Schema)」時,可確保任何目標資料庫的字元資料欄使用 UTF-8 或 UTF-16,以提供與來源資料庫字元集的最佳相容性。這在 IBM Db2 資料庫為來源時最顯著。對於 z/OS 的 Db2 和 i 的 Db2,來源資料通常是 EBCDIC 的某種形式,如果目標是任何其他資料庫系列,則不太可能在目標上直接表示這些字元集。也可能對 ASCII 字元集提出類似的考量,因為並非所有資料庫都通用於支援它們。
重要事項:針對目標資料庫使用 Unicode 時,可能需要擴充字元欄位的長度,以確保從非 Unicode 本身的來源進行對應時,可使用正確的大小。如果目標資料庫所使用的位元組數目超過來源資料庫所使用的位元組數目,則使用者必須對所有這類資料欄使用
AUTOSCHEMAOPTIONS TYPEMAP,並使用更廣泛且相容的目標資料類型來避免任何可能的資料截斷。 -
-
「自動綱要」不支援
AUTO-INCREMENT類型的來源資料欄,而且不會建立 / 更改具有相同自動增量特性的對應目標資料欄。 -
當來源 MySQL 表格只包含唯一索引鍵,而且沒有主索引鍵時,「自動綱要」可能無法在目標表格上正確建立主索引鍵 / 唯一索引鍵。MySQL 資料庫未提供正確的金鑰資訊。
附註:這並不是「自動綱要」所施加的一些限制,而是 MySQL 來源。
- 如果來源資料庫是 Oracle Database 19c,則「自動綱要」可能無法正確衍生目標資料欄的空值。
附註:這不是「自動綱要」限制,而是未提供正確主要資訊的來源 Oracle Database 19c。即使來源 DDL 使用 char 語意,一律會使用位元組語意來評估 Oracle 來源 char 和 varchar2 類型資料欄。
-
如果 Oracle 來源表格未定義主索引鍵,但只有包含任何虛擬資料欄、可為空值資料欄、使用者定義的資料類型、擴充的長
varchar資料欄或以函數為基礎的索引資料欄的唯一索引鍵作為有效索引鍵資料欄,則「自動綱要」不會在目標表格上建立此類資料欄作為主要 / 唯一索引鍵。 -
如果來源是 PostgreSQL 資料庫,且來源表格包含任何 LOB 資料欄作為索引鍵的一部分,則使用者必須在其 Extract 參數檔中指定
DBOPTIONS MAXLOBKEYLEN <value>。否則,依照預設 (沒有任何AUTOSCHEMAOPTIONS TYPEMAP),「自動綱要」會在目標上建立長度為零的對應資料欄。 -
對於來源 PostgreSQL
Array類型,「自動綱要」會為對應的目標資料欄建立CLOB類型或其同等項目。必須指定AUTOSCHEMAOPTIONS TYPEMAP,才能根據來源 PostgreSQLArray資料欄名稱選取適當的目標類型。 -
對於具有多位元組資料庫字元集的 Oracle 來源
CLOB資料欄,預設會為目標資料欄選擇NCLOB或同等目標類型。若要覆寫,必須使用TYPEMAP。 -
對於 z/OS 的 Db2,複製 UTF-16 資料需要 EBCDIC 或 Unicode 資料庫。並未明確支援其他雙位元編碼。
-
對於 IBM Db2 (前身為 LUW 的 Db2) 資料庫,複製 UTF-16 資料需要 Unicode 資料庫。並未明確支援其他雙位元編碼。
-
對於來源
ENUM類型資料欄,「自動綱要」會套用char作為 MySQL 的目標類型。如有需要,請使用TYPEMAP來改用VARCHAR。 -
對於精確度小於 8 的來源數值 / 小數資料欄,必須根據來源資料欄名稱 (而非來源資料類型名稱) 指定
AUTOSCHEMAOPTIONS TYPEMAP。 - 必須根據來源資料欄名稱指定
AUTOSCHEMAOPTIONS TYPEMAP,而不是根據下列類型之來源資料欄的來源資料類型名稱:- 長度大於 4000 的字元 /Varchar 類型資料欄。
- 時間 (p)
- 時間 (p) 不含時區
- 時間 (p) 與時區
- 時間 (p)
- TIMESTAMP (p) 不含時區
- TIMESTAMP (p) 時區
- 所有 INTERVAL 變體
- 來源 SQL Server 向量類型資料欄
-
「自動綱要」不支援使用包含雙引號之資料欄名稱的
COLMAP子句。COLMAP子句中用於特定資料欄對應 (對應至一個來源資料欄名稱) 的目標資料欄名稱,不能與來源表格中的任何其他資料欄名稱相同。 -
當執行 GoldenGate 的系統語言環境為多位元組字元集時,少數「自動綱要」錯誤訊息可能會出現在 ASCII 中,例如中文或日文 (zh_CN.UTF-8)。
-
在 SQL Server 目標上,對於任何沒有分數秒數的來源
datetime/timestamp類型,您必須為具有datetime2(0)的對應來源類型 (或資料欄名稱) 指定AUTOSCHEMAOPTIONS TYPEMAP作為指定的取代目標類型。 -
在 Db2 z/OS 目標上,「自動綱要」不支援使用單一
ALTER TABLE DDL刪除多個資料欄。您可以重新執行 OGG 錯誤中報告的失敗 DDL (來自 Replicat 報表檔案),然後重新啟動 Replicat。 -
在 SQLServer 目標上,「自動綱要」無法正確偵測 / 執行從
VARCHAR(n)到TEXT或VARCHAR(max)的資料欄修改。 AUTOSCHEMAOPTIONS TYPEMAP不適用於目標類型規格:- NUMBER (p,s)
- 數字 (p,s)
- DECIMAL (p,s)
- 時區的 TIMESTAMP (p)
- 時區為「解決方法」的 TIME (p) 是使用 TIME (p) 作為目標類型名稱設定,而非不含時區的 TIME (p),因為兩者在語意上都是相等的。
- TIMESTAMP (p) 不含時區作為解決方法,您可以使用
TIMESTAMP(p)作為目標類型名稱設定,而不是使用不含時區的TIMESTAMP(p),因為兩者在語意上都相等。 - Varbinary (最大)
- Varchar (max):解決方法是使用 CLOB 作為目標類型名稱規格,而非 varchar (max)
- Nvarchar (max):解決方法是使用 NCLOB 作為目標類型名稱規格,而非使用 nvarchar (max)
-
在 SQLServer 目標上,必須指定類型規格中的
Vector維度。指定基本類型 (例如float16或float32) 是選擇性的。 -
對於類型為
DATETIME的 SQLServer 來源資料欄,Autoschema 無法區分DATETIME和DATETIME2(3)。因此,在使用明確的TYPEMAP子句時,您必須設定以來源資料欄名稱為基礎的TYPEMAP,而非以來源類型名稱為基礎的類型對應。 -
對於 DB2AS400 目標
NCHAR資料欄,「自動綱要」未正確偵測必要的資料欄類型修改。 -
如果 PostgreSQL (或 PostgreSQL 相容) 資料庫上的任何 Oracle GoldenGate Delivery 設定為使用 PostgreSQL 原生 ODBC 驅動程式,則「自動綱要」不會正確偵測「更改表格修改資料欄」案例。
-
對於 IBM Db2 for i 而言,工作可能顯示為「當機」而且沒有進展。例如,當要求的作業可能導致資料截斷問題時,在 Replicat 上更有可能使用「自動綱要」。視 IBM i 系統的設定方式而定,Copyat 工作可能會變成「訊息等待 (MSGW)」狀態,系統會在該狀態等待使用者提供解決特定問題所需採取的動作。目前 GoldenGate 無法直接解決此問題,您必須在 IBM i 端加以處理。
-
對於
TIMESTAMP_NTZ(p)、TIMESTAMP_LTZ(p)或TIMESTAMP_TZ(p)的來源 Snowflake 資料欄類型,「自動綱要」會將它們對應至對應的時間戳記資料欄,但日期時間精確度為 0。若要避免截斷分數秒數的資料,您必須使用AUTOSCHEMAOPTIONS TYPEMAP來選取目標的必要類型。 -
「自動綱要」不會區分 PostgreSQL 來源
JSON和JSONB資料欄類型。您必須根據來源資料欄名稱 (而非 PostgreSQL 來源JSONB類型的資料欄類型) 使用AUTOSCHEMAOPTIONS TYPEMAP。 -
「自動綱要」不會區分 PostgreSQL 來源未繫結數值資料欄 (無精確度和小數位數的數值) 和 PostgreSQL 來源數值 (1000、100) 類型。您必須根據來源資料欄名稱使用
AUTOSCHEMAOPTIONS TYPEMAP,而不是 PostgreSQL 來源數值 (1000,100) 類型資料欄的資料欄類型。 -
對於 Snowflake 來源資料欄類型為
ARRAY、GEOGRAPHY和GEOMETRY,「自動綱要」會對應至目標上的JSON類型 (如果支援) 或CLOB類型。若要在目標上選取不同的類型,使用者必須使用AUTOSCHEMAOPTIONS TYPEMAP。 - 包含以來源資料欄名稱為基礎之
AUTOSCHEMAOPTIONS TYPEMAP規格部分的資訊性訊息未正確顯示。