Sybase:支援的資料類型、物件以及作業
此段落包含 Oracle GoldenGate for Sybase 支援之資料類型、物件及作業的相關資訊。
支援的 Sybase 資料類型
整數
-
BIGINT -
BIT -
DECIMAL -
INT(已簽署與未簽署) -
TINYINT(已簽署與未簽署) -
NUMERIC -
SMALLINT(已簽署與未簽署)
支援限制
-
將資料移至相同資料類型的目標資料欄時,支援
NUMERIC和DECIMAL(固定點),且不涉及計算或轉換。必須執行計算或轉換時,Oracle GoldenGate 支援已簽署長整數 (32 位元) 的最大值。 -
Sybase 資料庫之間的自動對應支援
BIT。若要在 Sybase 與其他資料庫類型之間移動BIT資料,Oracle GoldenGate 會將BIT資料視為二進位資料。在此情況下,需要下列項目:BIT資料欄必須對應至TABLE或MAP敘述句中含有COLMAP子句的對應來源或目標資料欄。
-
對於 Sybase 15.7 和更新版本,無法複製下列資料類型:
-
BIGINT(作為索引鍵資料欄) -
BIGDATETIME -
BIGTIME
-
-
當複製
TINYINT和 Extract 不是同一個版本的 Replicat 時,即使是在相同的 Sybase 版本之間進行複製,您仍需要建立sourcedef和 (或)targetdef檔案。另請參閱不支援的 Sybase 資料類型。
浮點數
-
DOUBLE -
FLOAT -
REAL
支援限制
浮點數的支援範圍和精確度取決於主機機器。一般而言,精確度為 16 個有效位數,但您應複查資料庫文件以決定預期的近似值。Oracle GoldenGate 會捨入或截斷超過支援精確度的值。
字元資料
-
CHAR -
NCHAR -
NVARCHAR -
VARCHAR -
UNICHAR UNIVARCHAR支援限制-
資料庫支援的長度上限為這些資料類型,亦即頁面大小上限。
- 當 Sybase 資料庫是目標,而來源是異質資料庫,而您從來源複製到目標時,使用 Sybase
char_length或datalength函數擷取NVARCHAR複製結果可能會導致資料完整性問題。當您在 Windows x64 平台 EBF 21262:15.5 ESD #5.3 使用比 Adaptive Server Enterprise 15.5 更舊的 Sybase 版本時,就會發生這種情況。
日期與時間戳記
-
BIGDATETIME -
BIGTIME -
DATE -
DATETIME -
SMALLDATETIME -
TIME
支援限制
-
Oracle GoldenGate 支援從 0001/01/03:00:00:00 到 9999/12/31:23:59:59 的時戳資料。如果時間戳記是從 GMT 轉換成當地時間,這些限制也會套用至產生的時間戳記。視時區而定,轉換可能會增加或減去時數,這可能會導致時間戳記超過支援的下限或上限。
-
Oracle GoldenGate 不支援負數日期。
大型物件
-
BINARY -
IMAGE -
TEXT -
UNITEXT -
VARBINARY
支援限制
-
TEXT、UNITEXT及IMAGE的長度最多為 2 GB。 -
從其他資料庫 (例如 Oracle
BLOB和CLOB) 複製的大型物件可以對應到 SybaseCHAR、VARCHAR、BINARY以及VARBINARY資料欄。如果複製的大型物件大於目標資料欄的大小,請將DBOPTIONS參數與 Replicat 參數檔中的ALLOWLOBDATATRUNCATE選項搭配使用,以避免 Replicat 中斷。如需詳細資訊,請參閱Oracle GoldenGate for Windows and UNIX 的參照。 -
若要將資料從允許空白
LOB資料欄的來源資料庫移至 Sybase 目標,請在 Replicat 參數檔中使用DBOPTIONS參數與EMPTYLOBSTRING選項。此參數接受字串值,並防止 Replicat 將目標資料欄設為NULL(Sybase 不允許此資料欄)。如需詳細資訊,請參閱Oracle GoldenGate for Windows and UNIX 的參照。 -
當來源表格包含多個相同的資料列時,可能會造成目標表格中的
LOB不一致。當來源表格缺少主索引鍵或其他唯一資料列 ID 時,就會發生此情況。Replicat 會在目標上插入資料列,但如果在後續的來源作業中更新LOB資料,則只會複製到目標上插入的第一個資料列。 -
請勿在資料列內的 LOB 資料欄上使用
NOT NULL限制條件。若要使用NOT NULL限制條件,請在離線 LOB 資料欄中使用這些限制條件。 -
如果您需要直接從表格擷取資料列中的 LOB 資料,則必須使用
FETCHCOLS/FETCHMODCOLS。 -
Oracle GoldenGate for Sybase 15.7 和更新版本不支援資料列內 LOB 資料欄複製 (不過,仍然可以將資料植入 Replicat 資料庫中的資料列內 LOB 資料欄)。這表示複製中包含的表格不能有任何資料列內的 LOB 資料欄。如果有任何複製表格包含資料列內的 LOB 資料欄,Oracle GoldenGate 將會中止。如果您需要 LOB 支援,請洽詢 Oracle Support 以取得進一步的資訊。
貨幣類型
-
MONEY -
SMALLMONEY
供應商限制
在不涉及計算或轉換的情況下,將資料移至相同資料類型的目標欄時,貨幣資料類型不受完整性損失的支援。必須執行計算或轉換時,Oracle GoldenGate 支援已簽署長整數 (32 位元) 的最大值。
IDENTITY 類型
IDENTITY 資料類型僅支援單向複製,但雙向組態則不支援。
文字、影像及 unitext 資料類型
在 Sybase 15.7 版本中,BATCHSQL 模式現在支援 LOB 文字、影像及單文字資料類型。LOB 的資料長度限制為 4K。如果包含 LOB 資料欄和大小的記錄超過 4K,則這些記錄會從批次中排除,並一次執行一個。目前已繫結 LOB 資料欄,而在先前的 Sybase 版本 (15.5 或 15.0) 中,則未繫結 LOB。您可以使用 DBPOTIONS LEGACYLOBREPLICATION 參數來使用較舊的行為。此支援僅適用於在 Sybase 版本 15.7 和更新版本上執行的 Replicat。
使用者定義的資料類型
使用者定義的資料類型完全受到支援。
非支援的 Sybase 資料類型
此段落列示 Oracle GoldenGate 不支援的 Sybase 資料類型。
-
不支援
TIMESTAMP資料。資料因資料庫限制而無法套用至 Sybase 時戳資料欄,因此會擷取時戳資料欄資料。一旦插入或更新對應列,資料庫便會自動植入此欄。若要排除 Oracle GoldenGate 擷取的時戳資料欄,請使用TABLE參數的COLSEXCEPT選項。由於系統會產生時間戳記,因此來源與目標值會有所不同。 -
不支援 Java
rowobject資料類型。
Sybase 支援的作業與物件
本節列出 Oracle GoldenGate 支援的資料作業和資料庫物件。
-
在包含長度最多達 512 KB 列的 Sybase 表格上擷取及複製插入、更新及刪除作業。
-
資料庫支援的每個表格資料欄數目上限和資料欄大小上限。
-
延緩的插入、延緩的間接插入、延緩的更新以及延緩的刪除。使用延緩更新可能會導致目標上受影響 SQL 的主索引鍵限制條件違規。如果發生這些錯誤,請使用 Replicat 參數
HANDLECOLLISIONS。 -
TRUNCATE TABLE(如果受影響表格的名稱在所有綱要中都是唯一的)。如果表格名稱在所有綱要中不是唯一的,請為這些表格使用IGNORETRUNCATES參數,以防止 Replicat 中止。 -
依 Extract 和 Replicat 區分的
GETTRUNCATES和IGNORETRUNCATES。 -
以系統加密密碼加密的資料。
-
初始載入期間的陣列擷取,如
FETCHBATCHSIZE參數所控制。 -
ASE 15.7 SP110 及更新版本在下列平台上的
BATCHSQLReplicat 功能:-
AIX
-
Linux x64
-
Sun Solaris SPARC
-
Sun Solaris x64
-
Windows x64
在某些情況下,
BatchSQL不支援CS_NUMERIC和CS_DECIMAL資料類型,因為 Sybase 特定「CT 程式庫」中的錯誤。Sybase 資料庫版本 157 SP110 以上的 BatchSql 模式支援 LOB 複製。這將提升 LOB 複製效能。其限制為 16384 個位元組的 LOB 資料,這表示 LOB 資料若超過 16384 個位元組,資料將不會透過BATCHSQL模式處理,而是透過切換為「一般」模式處理。 -
-
「計算的資料欄」支援的限制如下:
-
完全支援持續計算的資料欄。變更值會出現在交易日誌中,並可擷取至歷程檔。
-
您無法在資料列內的 LOB 資料欄上使用
NOT NULL限制條件。如果您需要使用NOT NULL限制條件,請只使用離線 LOB 資料欄進行。 -
具有非持續性計算資料欄的表格,但沒有擷取這些資料欄的變更資料,因為資料庫沒有將它寫入交易日誌。若要複製非保留之計算資料欄的資料,請使用
TABLE參數的FETCHCOLS或FETCHMODCOLS選項,從表格擷取資料欄資料。請記住,當資料庫中的資料欄變更,以及 Extract 擷取正在處理之交易記錄的資料時,資料值之間可能會有差異。 -
Replicat 不會將 DML 套用至任何計算的資料欄,即使該資料欄的資料位於歷程檔中,因為資料庫不允許在該資料欄類型使用 DML。來源持續計算之資料欄或擷取之非持續性資料欄的資料,可套用至不是計算之資料欄的目標資料欄。
-
在初始載入中,會直接從來源表格選取所有資料,而不是從異動日誌選取。因此,在第一次載入時,會根據使用的方法,將所有資料欄的資料值 (包括非持續性計算的資料欄) 寫入歷程檔或傳送到目標。不過,在套用變更資料時,Replicat 不會對計算的資料欄套用初始載入資料,因為資料庫不允許對該資料欄類型執行 DML。
-
不會使用在
TABLE或MAP敘述句中定義為索引鍵資料欄、索引資料欄或KEYCOLS子句之一部分的持續計算資料欄。如果唯一索引鍵或索引包含計算的資料欄,且 Oracle GoldenGate 必須使用該索引鍵,則計算的資料欄將會被忽略。此外,如果唯一索引鍵或索引包含計算的資料欄,而且是表格上唯一的唯一 ID,則除了計算的資料欄作為尋找目標資料列的 ID 之外,會使用所有資料欄。因此,如果其餘的資料欄未強制實行唯一性,索引鍵或索引中存在計算的資料欄會影響資料完整性。Sybase 不支援非永久的運算資料欄作為索引鍵的一部分,因此 Oracle GoldenGate 都不支援。 -
若要支援
TRUNCATE TABLE,所有表格名稱在資料庫內的所有綱要中都必須是唯一的。此規則適用於 Extract 和 Replicat。
-
-
「自動活動訊號表」支援的限制如下:
-
活動訊號頻率以分鐘為單位接受,而且必須是 1 到 133 之間的整數 (包括兩者)。
-
當 Replicat 在
GG_HEARTBEAT_SEED、GG_HEARTBEAT和GG_HEARTBEAT_HISTORY表格的incoming_routing_path和outgoing_routing_path中超過 1500 個字元時,就會發生資料截斷。這些表格的incoming_routing_path和outgoing_routing_path大小在 ASCII 中設為 1500 個字元,在多位元組字元中則是 500 個位元組上限。確定內送和外送路由路徑字串在指定的限制內。 -
執行 Oracle GoldenGate 活動訊號功能之前,必須先在 ASE 伺服器上設定 Sybase 工作排程器。
-
若要讓活動訊號表功能正確運作,登入使用者必須具備
replication_role、js_admin_role和js_user_role角色。
-
Sybase 的非支援作業與物件
此段落列示 Oracle GoldenGate 不支援的資料作業和資料庫物件。
-
不支援複製具體化視觀表或預先計算的結果集。因此,您無法為具體化視觀表新增 trandata。如需詳細資訊,請參閱 Sybase ASE 文件。
-
以使用者定義的密碼加密的資料。
-
擷取或複製 DDL (資料定義語言) 作業。
-
多重擷取組態。只有一個 Extract 可以保留相關資訊環境以讀取 Sybase 異動日誌。
-
由於
DYNSQL模式支援SHOWSYNTAX,因此NODYNSQL已不再使用。 -
包含資料且含有底線,後面接著部分字元的表格名稱,不支援空格 (例如
'zzz_j')。Oracle GoldenGate 無法處理包含此類型字元字串的記錄 (GGSCI、DEFGEN、EXTRACT或REPLICAT)。此外,此類型的資料無法與 Oracle GoldenGate 萬用字元 (*) 搭配使用。如果您的表格名稱中有此類型的資料,則必須從資料庫中刪除這類表格名稱,然後重新啟動應用程式來處理和遵守 Oracle GoldenGate 萬用字元。