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
データをバイナリとして扱います。この場合、次のことが必要です。-
TABLE
文またはMAP
文のCOLMAP
句を使用して、BIT
列を対応するソース列またはターゲット列にマップする必要があります。
-
-
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
レプリケーション結果をフェッチすると、データ整合性の問題が発生する場合があります。これは、Adaptive Server Enterprise 15.5 for Windows x64プラットフォームEBF 21262: 15.5 ESD #5.3より前の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
など)は、SybaseのCHAR
列、VARCHAR
列、BINARY
列およびVARBINARY
列にマップできます。レプリケートされたラージ・オブジェクトがターゲット列のサイズより大きい場合にReplicatの異常終了を回避するため、Replicatパラメータ・ファイルでDBOPTIONS
パラメータをALLOWLOBDATATRUNCATE
オプションとともに使用します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。 -
空の
LOB
列が許可されているソース・データベースから、Sybaseのターゲットにデータを移動する場合は、Replicatパラメータ・ファイルでDBOPTIONS
パラメータをEMPTYLOBSTRING
オプションとともに使用します。このパラメータは文字列値を受け入れ、Replicatによってターゲット列がNULL
(Sybaseで許可されていない値)に設定されないようにします。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。 -
ソース表に同一の行が複数含まれていると、ターゲット表内で
LOB
の不整合が生じる可能性があります。これは、ソース表に主キーまたは他の一意の行識別子がない場合に発生します。これらの列は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
データ型は単一方向のレプリケーションにサポートされますが、双方向の構成にはサポートされません。
text、imageおよびunitextデータ型
Sybase 15.7バージョンでは、LOBのtext、imageおよびunitextデータ型がBATCHSQL
モードでサポートされるようになりました。LOBのデータ長は4Kに制限されています。LOB列を含み、サイズが4Kを超えるレコードは、バッチから除外され、一度に1つずつ実行されます。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以降の
BATCHSQL
Replicat機能。-
AIX
-
Linux x64
-
Sun Solaris SPARC
-
Sun Solaris x64
-
Windows x64
特定のシナリオで、
CS_NUMERIC
およびCS_DECIMAL
データ型は、Sybase固有のCTライブラリのバグにより、BatchSQL
でサポートされていません。LOBレプリケーションは、Sybaseデータベース・バージョン157 SP110以降のBatchSqlモードでサポートされています。これによりLOBレプリケーションのパフォーマンスが向上します。これは16384バイトのLOBデータに制限されています。つまり、LOBデータが16384バイトを超える場合、データはBATCHSQL
モードでは処理されず、Normalモードに切り替わります。 -
-
計算結果列のサポートに関する制限事項は次のとおりです。
-
永続化計算結果列を完全にサポートします。変更値はトランザクション・ログに格納され、証跡に取得できます。
-
行内LOB列には、
NOT NULL
制約を使用できません。NOT NULL
制約を使用する必要がある場合は、行外LOB列のみで使用します。 -
非永続化計算結果列がある表。ただし、これらの列の変更データはトランザクション・ログに書き込まれないため、変更データは取得されません。非永続化計算結果列のデータをレプリケートするには、
TABLE
パラメータのFETCHCOLS
またはFETCHMODCOLS
オプションを使用して表から列データをフェッチします。列がデータベースで変更された時点と処理されるトランザクション・レコードのデータをExtractでフェッチする時点でデータ値が異なることにより、不整合が生じる可能性があることに注意してください。 -
その列のデータが証跡にあった場合でも、ReplicatはDMLを計算結果列に適用しません。データベースがこの種の列のDMLを許可しないためです。ソース永続化計算結果列またはフェッチされた非永続化列のデータは、計算結果列ではないターゲット列に適用できます。
-
初期ロードでは、データはすべて、トランザクション・ログからではなくソース表から直接選択されます。したがって、初期ロードでは、非永続化計算結果列も含めてすべての列のデータ値が証跡に書き込まれるか、ターゲットに送信されます。どちらになるかは、使用されるメソッドによって決まります。ただし、変更データの適用時に、Replicatは初期ロード・データを計算結果列に適用しません。データベースがこの種の列のDMLを許可しないためです。
-
キー列、索引列として定義されているか、
TABLE
文またはMAP
文のKEYCOLS
句に含まれている永続化計算結果列は使用されません。一意キーまたは索引に計算結果列が含まれていて、Oracle GoldenGateがそのキーを使用する必要がある場合、計算結果列は無視されます。また、一意キーまたは一意索引に計算結果列が含まれていて、表の唯一の一意識別子である場合は、計算結果列以外のすべての列がターゲット行を検索するための識別子として使用されます。したがって、キーまたは索引に計算結果列が含まれ、残りの列に一意性がない場合は、データの整合性に影響します。Sybaseでは、非永続化計算結果列はキーの一部としてサポートされず、Oracle GoldenGateでもサポートされません。 -
TRUNCATE TABLE
をサポートするには、すべての表名がデータベース内のすべてのスキーマで一意である必要があります。このルールは、ExtractとReplicatに適用されます。
-
-
自動ハートビート表のサポートに関する制限事項は次のとおりです。
-
ハートビート頻度は分単位で指定でき、1から133 (両方を含む)までの整数にする必要があります。
-
GG_HEARTBEAT_SEED
表、GG_HEARTBEAT
表およびGG_HEARTBEAT_HISTORY
表のincoming_routing_path
とoutgoing_routing_path
のデータが1500文字を超える場合にReplicatが異常終了すると、データの切捨てが発生します。これらの表のincoming_routing_path
およびoutgoing_routing_path
のサイズは、ASCIIで1500文字に設定され、マルチバイト文字では最大500バイトです。受信および送信ルーティング・パスの文字列が指定の制限以内であることを確認してください。 -
Sybaseジョブ・スケジューラは、Oracle GoldenGateハートビート機能を実行する前にASEサーバーで構成する必要があります。
-
ハートビート表の機能が正常に動作するためには、ログイン・ユーザーに
replication_role
、js_admin_role
、js_user_role
の各ロールが必要です。
-
Sybaseに対してサポートされていないオブジェクトおよび操作
この項では、Oracle GoldenGateでサポートされないデータ操作およびデータベース・オブジェクトを示します。
-
ユーザー定義パスワードを使用して暗号化されたデータ。
-
DDL (データ定義言語)操作の抽出またはレプリケーション。
-
マルチExtract構成。Sybaseトランザクション・ログの読取りのためのコンテキストを保持できるのは、1つのExtractのみです。
-
SHOWSYNTAX
はDYNSQL
モードでサポートされるため、NODYNSQL
は非推奨です。 -
アンダースコアの後に文字、その後に空白(たとえば、
'zzz_j'
)のあるデータが含まれる表名は、サポートされていません。Oracle GoldenGateでは、GGSCI、DEFGEN
、EXTRACT
またはREPLICAT
を含む、この型の文字列を含むレコードを処理できません。また、この型のデータをOracle GoldenGateワイルドカード(*)と一緒に使用することはできません。この型のデータを表名に使用する場合は、この種類の表名をデータベースから削除する必要があります(アプリケーションが再起動され、Oracle GoldenGateワイルドカードが処理および適用されます)。