Sybase: サポートされているデータ型、オブジェクトおよび操作

この項では、Oracle GoldenGate for Sybaseでサポートされているデータ型、オブジェクトおよび操作について説明します。

サポートされているSybaseデータ型

整数

  • BIGINT

  • BIT

  • DECIMAL

  • INT (符号付きおよび符号なし)

  • TINYINT (符号付きおよび符号なし)

  • NUMERIC

  • SMALLINT (符号付きおよび符号なし)

サポートの制限事項

  • NUMERICDECIMAL (固定小数点)は、計算や変換を伴わずに同じデータ型のターゲット列にデータを移動する場合にサポートされ、整合性が保持されます。計算や変換を実行する必要がある場合、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

サポートの制限事項

  • TEXTUNITEXTおよび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_pathoutgoing_routing_pathのデータが1500文字を超える場合にReplicatが異常終了すると、データの切捨てが発生します。これらの表のincoming_routing_pathおよびoutgoing_routing_pathのサイズは、ASCIIで1500文字に設定され、マルチバイト文字では最大500バイトです。受信および送信ルーティング・パスの文字列が指定の制限以内であることを確認してください。

    • Sybaseジョブ・スケジューラは、Oracle GoldenGateハートビート機能を実行する前にASEサーバーで構成する必要があります。

    • ハートビート表の機能が正常に動作するためには、ログイン・ユーザーにreplication_rolejs_admin_rolejs_user_roleの各ロールが必要です。

Sybaseに対してサポートされていないオブジェクトおよび操作

この項では、Oracle GoldenGateでサポートされないデータ操作およびデータベース・オブジェクトを示します。

  • ユーザー定義パスワードを使用して暗号化されたデータ。

  • DDL (データ定義言語)操作の抽出またはレプリケーション。

  • マルチExtract構成。Sybaseトランザクション・ログの読取りのためのコンテキストを保持できるのは、1つのExtractのみです。

  • SHOWSYNTAXDYNSQLモードでサポートされるため、NODYNSQLは非推奨です。

  • アンダースコアの後に文字、その後に空白(たとえば、'zzz_j')のあるデータが含まれる表名は、サポートされていません。Oracle GoldenGateでは、GGSCI、DEFGENEXTRACTまたはREPLICATを含む、この型の文字列を含むレコードを処理できません。また、この型のデータをOracle GoldenGateワイルドカード(*)と一緒に使用することはできません。この型のデータを表名に使用する場合は、この種類の表名をデータベースから削除する必要があります(アプリケーションが再起動され、Oracle GoldenGateワイルドカードが処理および適用されます)。