25 Sybaseのサポート対象の理解
この章では、SybaseのためのOracle GoldenGateでサポートされているデータベースと表の機能について説明します。
内容は次のとおりです。
親トピック: SybaseでのOracle GoldenGateの使用
サポートされるSybaseデータ型
この項では、Oracle GoldenGateでサポートされる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 157 GAリリースでは、次のデータ型はレプリケートできません。
-
BIGINT
(キー列として) -
BIGDATETIME
-
BIGTIME
-
-
TINYINT
をレプリケートする際にExtractがReplicatと同じバージョンでない場合、同一のSybaseバージョン間でレプリケートする場合でも、sourcedef
またはtargetdef
ファイル(あるいはその両方)を作成する必要があります。 -
「サポートされないSybaseデータ型」も参照してください。
親トピック: サポートされているSybaseデータ型
浮動小数点数
-
DOUBLE
-
FLOAT
-
REAL
サポートの制限事項
浮動小数点数の範囲および精度のサポートは、ホスト・マシンによって異なります。通常は有効桁数が16桁の精度ですが、データベースのドキュメントで想定されている近似について確認してください。Oracle GoldenGateでは、サポートされる精度を超える値は丸められるか切り捨てられます。
親トピック: サポートされているSybaseデータ型
文字データ
-
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リリースを使用する場合に発生します。
親トピック: サポートされているSybaseデータ型
日付とタイムスタンプ
-
BIGDATETIME
-
BIGTIME
-
DATE
-
DATETIME
-
SMALLDATETIME
-
TIME
サポートの制限事項
-
Oracle GoldenGateでは、0001/01/03:00:00:00から9999/12/31:23:59:59のタイムスタンプ・データをサポートしています。タイムスタンプがGMTからローカル時間に変換されると、これらの制限も変換後のタイムスタンプに適用されます。タイムゾーンに応じて、変換により時間が追加または引かれる場合があり、これにより、タイムスタンプがサポートされている上限を超えたり、下回ったりすることがあります。
-
Oracle GoldenGateでは、マイナスの日付はサポートされていません。
親トピック: サポートされているSybaseデータ型
ラージ・オブジェクト
-
BINARY
-
IMAGE
-
TEXT
-
UNITEXT
-
VARBINARY
サポートの制限事項
-
TEXT
、UNITEXT
およびIMAGE
は、最大2GBの長さまでサポートされます。 -
他のデータベースからレプリケートされるラージ・オブジェクト(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サポートにお問い合せください。
親トピック: サポートされているSybaseデータ型
通貨型
-
MONEY
-
SMALLMONEY
サポートの制限事項
通貨データ型は、計算や変換を行わずに同じデータ型のターゲット列にデータを移動する場合にサポートされ、完全性が保持されます。計算や変換を実行する必要がある場合、Oracle GoldenGateは符号付きの長整数 (32ビット)の最大値をサポートします。
親トピック: サポートされているSybaseデータ型
text、imageおよびunitextデータ型
Sybase 15.7バージョンでは、LOB text、imageおよびunitextデータ型がBATCHSQL
モードでサポートされるようになりました。LOBのデータ長は4Kに制限されています。LOB列を含みサイズが4Kを超えるレコードは、バッチから除外され、一度に1つずつ実行されます。現在LOB列はバインドされていますが、以前のSybaseバージョン(15.5または15.0)ではバインドされていませんでした。DBPOTIONS LEGACYLOBREPLICATION
パラメータを使用すると、以前の動作を使用できます。このサポートは、Sybaseバージョン15.7以降で実行されているReplicatにのみ適用されます。
親トピック: サポートされているSybaseデータ型
サポートされないSybaseデータ型
この項では、Oracle GoldenGateでサポートされないSybaseデータ型を示します。
-
TIMESTAMP
データはサポートされていません。タイムスタンプ列のデータはキャプチャされますが、データベース制限により、そのデータはSybaseのタイムスタンプ列には適用できません。データベースでは、対応する行が挿入または更新されると、この列が自動的に移入されます。タイムスタンプ列がOracle GoldenGateにキャプチャされないようにするには、TABLE
パラメータのCOLSEXCEPT
オプションを使用します。システムによってタイプスタンプが作成されるため、ソース値とターゲット値が異なります。 -
Java
rowobject
データ型はサポートされていません。
親トピック: Sybaseのサポート対象の理解
Sybaseに対してサポートされる操作とオブジェクト
この項では、Oracle GoldenGateでサポートされているデータ操作およびデータベース・オブジェクトをリストします。
-
最大長512KBの行を含む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に適用されます。
-
-
自動ハートビート表のサポートに関する制限事項は次のとおりです。
-
ハートビート頻度は60で割り切れる整数にする必要があります。Oracle GoldenGateのハートビート・パラメータの頻度は、秒単位で使用することもできますが、分単位で使用します。Sybaseのジョブ・スケジューラで使用される分単位は小数ではなく整数なので、頻度を分単位で設定するために最も近い設定可能な値に内部変換されます。たとえば、この値を65秒に設定すると、頻度は1分に設定されます。140秒の値は2分に設定されます。
-
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のサポート対象の理解
Sybaseに対してサポートされない操作とオブジェクト
この項では、Oracle GoldenGateでサポートされないデータ操作およびデータベース・オブジェクトを示します。
-
ユーザー定義パスワードを使って暗号化されたデータ。
-
DDL (データ定義言語)操作の抽出またはレプリケーション。
-
マルチExtract構成。Sybaseトランザクション・ログの読取りのためのコンテキストを保持できるのは、1つのExtractのみです。
-
SHOWSYNTAX
はDYNSQL
モードでサポートされるため、NODYNSQL
は非推奨です。 -
アンダースコアの後に文字、その後に空白(たとえば、
'zzz_j'
)のあるデータが含まれる表名は、サポートされていません。Oracle GoldenGateでは、GGSCI、DEFGEN
、EXTRACT
またはREPLICAT
を含む、この型の文字列を含むレコードを処理できません。また、この型のデータをOracle GoldenGateワイルドカード(*)と一緒に使用することはできません。この型のデータを表名に使用する場合は、この種類の表名をデータベースから削除する必要があります(アプリケーションが再起動され、Oracle GoldenGateワイルドカードが処理および適用されます)。
親トピック: Sybaseのサポート対象の理解