制限事項
自動スキーマ展開機能の使用を計画している場合は、次の制限を考慮してください。
-
Replicatは、クラシック・モードおよび調整モードでのみ自動スキーマをサポートします(パラレル・モードはサポートされていません)。
-
自動スキーマは双方向レプリケーションではサポートされていません。
-
自動スキーマは、MAPEXCEPTION句で使用される表には適用できません。ユーザーは、Replicatを起動する前に、対応する例外表を明示的に作成する必要があります。
-
自動スキーマはCOLMATCHパラメータをサポートしていません。
-
自動スキーマでは、ソースの非表示/非表示列はソースからターゲットに伝播されません。
-
自動スキーマでは、DDLSUBSTパラメータは考慮されません。
-
自動スキーマは、ソース表にあるすべての索引または制約を、対応するターゲット表に伝播しません。
-
自動スキーマでは、ソース列レベルの文字セットまたは照合順序(あるいはその両方)は考慮されません。対応する列レベルの文字セットまたは照合順序がターゲット列に関連付けられていません。
-
自動スキーマでは、表レベルの文字セットはターゲット表に関連付けられません。
-
自動スキーマでは、列レベルの文字セットまたは照合順序はターゲット列に関連付けられません。
自動スキーマを使用する場合は、ソースで使用されている文字セットと、ターゲット・システムで使用可能な文字セットを必ず確認してください。ソース文字セットが必ずしもターゲットシステムで使用できるとは限りません。これは、データベースがすべて何らかのUnicodeを使用しているわけではない場合に特に当てはまります。自動スキーマを使用するこの時点では、ターゲット・データベースが文字列に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の場合、自動スキーマはターゲット列のNULL値を正しく導出できない可能性があります。
注意:これは自動スキーマの制限ではありませんが、正しいキー情報を提供しないソースOracle Database 19cです。ソースDDLでcharセマンティクスが使用されている場合でも、Oracleソースのcharおよびvarchar2型の列は、常にバイト・セマンティクスを使用して評価されます。
-
Oracleソース表に主キーが定義されていないが、仮想列、NULL値可能列、ユーザー定義データ型、拡張された長い
varchar列またはファンクションベースの索引列のいずれかを含む一意キーのみが有効なキー列である場合、自動スキーマはターゲット表にこのような列を主キー/一意キーとして作成しません。 -
ソースがPostgreSQLデータベースであり、ソース表にキーの一部としてLOB列がある場合、ユーザーはExtractパラメータ・ファイルに
DBOPTIONS MAXLOBKEYLEN <value>を指定する必要があります。それ以外の場合、デフォルトでは(AUTOSCHEMAOPTIONS TYPEMAPなしで)、自動スキーマはターゲットに長さゼロの対応する列を作成します。 -
ソースのPostgreSQL
Arrayタイプの場合、自動スキーマはCLOBタイプ、または対応するターゲット列に対応するタイプを作成します。ソースのPostgreSQLArray列名に基づいて適切なターゲット・タイプを選択するには、AUTOSCHEMAOPTIONS TYPEMAPを指定する必要があります。 -
マルチバイト・データベース文字セットを使用するOracleソース
CLOB列の場合、デフォルトでNCLOBまたは同等のターゲット・タイプがターゲット列に対して選択されます。オーバーライドするには、TYPEMAPを使用する必要があります。 -
Db2 for z/OSの場合、UTF-16データのレプリケートにはEBCDICまたはUnicodeデータベースが必要です。その他のダブルバイトエンコーディングは明示的にサポートされていません。
-
IBM Db2 (以前のLUWの場合はDb2)データベースの場合、UTF-16データをレプリケートするにはUnicodeデータベースが必要です。その他のダブルバイトエンコーディングは明示的にサポートされていません。
-
ソースの
ENUM型の列の場合、自動スキーマはcharをターゲット・タイプとしてMySQLに適用します。必要に応じて、TYPEMAPを使用して、かわりにVARCHARを使用します。 -
AUTOSCHEMAOPTIONS TYPEMAPは、ソース・データ型名ではなく、ソース列名に基づいて、精度が8より小さいソースの数値/10進列に対して指定する必要があります。 AUTOSCHEMAOPTIONS TYPEMAPは、次のタイプのソース列のソース・データ型名ではなく、ソース列名に基づいて指定する必要があります。- 長さが4000を超える文字/Varchar型の列。
- 時間(p)
- TIME(p)タイムゾーンなし
- TIME(p)WITHTIMEZONE
- タイムスタンプ(p)
- TIMESTAMP(p)タイムゾーンなし
- TIMESTAMP(p)WITH TIME ZONE
- すべてのINTERVALバリアント
- ソースSQL Serverベクトル型の列
-
自動スキーマでは、その中に二重引用符を含む列名で
COLMAP句を使用することはできません。COLMAP句の特定の列マッピングで使用されるターゲット列名は、ソース列名にマップされ、ソース表の他の列名と同じにはできません。 -
GoldenGateが実行されているシステムのロケールが、中国語や日本語(zh_CN.UTF-8など)などのマルチバイト文字セットの場合、ASCIIで表示される自動スキーマ・エラー・メッセージはほとんどありません。
-
SQL Serverターゲットでは、小数秒を含まないソース
datetime/timestamp型に対して、対応するソース・タイプ(または列名)にAUTOSCHEMAOPTIONS TYPEMAPを指定し、指定された置換ターゲット・タイプとしてdatetime2(0)を指定する必要があります。 -
Db2 z/OSターゲットでは、自動スキーマは単一の
ALTER TABLE DDLを使用した複数の列の削除をサポートしていません。OGGエラー(Replicatレポート・ファイルから)でレポートされた失敗したDDLを再実行し、Replicatを再起動できます。 -
SQLServerターゲットでは、自動スキーマが
VARCHAR(n)からTEXTまたはVARCHAR(max)への列の変更を正しく検出/実行しません。 AUTOSCHEMAOPTIONS TYPEMAPは、ターゲット・タイプの指定では機能しません。- NUMBER (p,s)
- NUMERIC(p,s)
- DECIMAL(p,s)
- タイム・ゾーンを含むTIMESTAMP(p)
- タイムゾーンのTIME(p): 回避策は、タイムゾーンのないTIME(p)の代わりにターゲットタイプ名の指定としてTIME(p)を使用することです。両方が意味的に同等であるためです。
- タイムゾーンのないTIMESTAMP(p)回避策として、
TIMESTAMP(p)をタイムゾーンのないTIMESTAMP(p)ではなくターゲット・タイプ名の指定として使用できます。これは、両方が意味的に同等であるためです。 - Varbinary(max)
- Varchar(max): 回避策は、varchar(max)のかわりにCLOBをターゲット・タイプ名の指定として使用することです。
- Nvarchar(max): 回避策は、nvarchar(max)のかわりにNCLOBをターゲット・タイプ名の指定として使用することです。
-
SQLServerターゲットでは、型指定に
Vectorディメンションを指定することが必須です。ベース型(float16やfloat32など)の指定はオプションです。 -
DATETIME型のSQLServerソース列の場合、自動スキーマはDATETIMEとDATETIME2(3)を区別できません。したがって、明示的なTYPEMAP句を使用する場合、ソース・タイプの名前ベースの型マップではなく、ソース列の名前ベースのTYPEMAPを構成する必要があります。 -
DB2AS400ターゲット
NCHAR列の場合、自動スキーマは必要な列タイプの変更を正しく検出しません。 -
PostgreSQL (またはPostgreSQL互換)データベース上のOracle GoldenGate配信がPostgreSQLネイティブODBCドライバを使用するように構成されている場合、自動スキーマは変更表列の変更ケースを正しく検出しません。
-
IBM Db2 for iの場合、ジョブがハングし、処理が進まないように見える可能性があります。たとえば、リクエストされた操作によってデータの切捨ての問題が発生する可能性がある場合に、自動スキーマが使用される場合に、Replicatでこの可能性が高くなります。IBM iシステムの構成方法に応じて、Replicatジョブをメッセージ待機(MSGW)状態にし、特定の問題を解決するためにジョブが実行するアクションをユーザーが提供するのをシステムが待機している場合があります。現在、GoldenGateがこれに直接対処する方法はなく、IBM i側で対処する必要があります。
-
ソース・スノーフレーク列タイプが
TIMESTAMP_NTZ(p)、TIMESTAMP_LTZ(p)またはTIMESTAMP_TZ(p)の場合、自動スキーマはそれらを対応するタイムスタンプ列にマップしますが、日時精度は0です。小数秒のデータ切捨てを回避するには、AUTOSCHEMAOPTIONS TYPEMAPを使用してターゲットで必要なタイプを選択する必要があります。 -
自動スキーマでは、PostgreSQLソースの
JSON列タイプとJSONB列タイプが区別されません。PostgreSQLソースJSONBタイプの列タイプではなく、ソース列名に基づいてAUTOSCHEMAOPTIONS TYPEMAPを使用する必要があります。 -
自動スキーマは、PostgreSQLソースの無制限の数値列(精度とスケールなしの数値)とPostgreSQLソースの数値(1000、100)の型を区別しません。PostgreSQLソースの数値(1000,100)型の列には、列タイプではなくソース列名に基づいて
AUTOSCHEMAOPTIONS TYPEMAPを使用する必要があります。 -
ARRAY、GEOGRAPHYおよびGEOMETRYのスノーフレーク・ソース列タイプの場合、自動スキーマはターゲットでJSON型(サポートされている場合)またはCLOB型にマップされます。ターゲットで別のタイプを選択するには、ユーザーはAUTOSCHEMAOPTIONS TYPEMAPを使用する必要があります。 AUTOSCHEMAOPTIONS TYPEMAPのソース列名に基づく指定部分を含む情報メッセージが正しく表示されません。