Oracle パブリッシャーのデータ型マッピング

適用対象:SQL Server

Oracle のデータ型と Microsoft SQL Server のデータ型は、正確に一致するとは限りません。 Oracle のテーブルをパブリッシュするときは、可能な限り、一致するデータ型が自動的に選択されます。 単一のデータ型マッピングが明らかでない場合は、代替のデータ型マッピングが提供されます。 代替マッピングの選択方法の詳細については、以下の「代替データ型マッピングの指定」を参照してください。

次の表に、Oracle パブリッシャーから SQL Server ディストリビューターにデータを移動したときに、Oracle と SQL Server の間で、データ型が既定でどのようにマッピングされるかを示します。 「代替」列は、代替マッピングが使用可能かどうかを示しています。

Oracle データ型 SQL Server のデータ型 代替
BFILE VARBINARY(MAX) はい
BLOB VARBINARY(MAX) はい
CHAR([1-2000]) CHAR([1-2000]) はい
CLOB VARCHAR(MAX) はい
DATE DATETIME はい
FLOAT FLOAT いいえ
FLOAT([1-53]) FLOAT([1-53]) いいえ
FLOAT([54-126]) FLOAT いいえ
INT NUMERIC(38) はい
INTERVAL DATETIME はい
LONG VARCHAR(MAX) はい
LONG RAW イメージ はい
NCHAR([1-1000]) NCHAR([1-1000]) いいえ
NCLOB NVARCHAR(MAX) はい
NUMBER FLOAT はい
NUMBER([1-38]) NUMERIC([1-38]) いいえ
NUMBER([0-38],[1-38]) NUMERIC([0-38],[1-38]) はい
NVARCHAR2([1-2000]) NVARCHAR([1-2000]) いいえ
RAW([1-2000]) VARBINARY([1-2000]) いいえ
real FLOAT いいえ
ROWID CHAR(18) いいえ
timestamp DATETIME はい
TIMESTAMP(0-7) DATETIME はい
TIMESTAMP(8-9) DATETIME はい
TIMESTAMP(0-7) WITH TIME ZONE VARCHAR(37) はい
TIMESTAMP(8-9) WITH TIME ZONE VARCHAR(37) いいえ
TIMESTAMP(0-7) WITH LOCAL TIME ZONE VARCHAR(37) はい
TIMESTAMP(8-9) WITH LOCAL TIME ZONE VARCHAR(37) いいえ
UROWID CHAR(18) いいえ
VARCHAR2([1-4000]) VARCHAR([1-4000]) はい

データ型マッピングに関する注意点

Oracle データベースからデータをレプリケートするときは、データ型に関する次の問題に注意してください。

サポートされていないデータ型

次のデータ型はサポートされていません。これらの型の列はレプリケートできません。

  • オブジェクトの型

  • XML 型

  • Varray 型

  • 入れ子になったテーブル

  • REF を使用する列

DATE データ型

SQL Serverの日付の範囲は 1753 A.D. から 9999 A.D.ですが、Oracle の日付の範囲は 4712 B.C. から 4712 A.D です。DATE 型の列に、SQL Serverの範囲外の値が含まれている場合は、列の代替データ型 (VARCHAR(19) ) を選択します。

FLOAT 型と NUMBER 型

FLOAT データ型と NUMBER データ型のマッピング時に指定される小数点以下桁数および有効桁数は、列に対して Oracle データベースのデータ型を使って指定された小数点以下桁数および有効桁数で決まります。 precision は、数値全体の桁数です。 scale は、数値の中で小数点より右側の桁数です。 たとえば、123.45 という値の場合、precision は 5 で、scale は 2 になります。

Oracle では、NUMBER(4,5) のように、有効桁数よりも大きな小数点以下桁数の数値を定義できます。しかし、 SQL Server では、有効桁数を小数点以下桁数と同じか、それ以上にする必要があります。 確実にデータの切り捨てが発生しないようにするため、Oracle パブリッシャーで小数点以下桁数が有効桁数よりも大きい場合は、データ型をマップするときに、有効桁数が小数点以下桁数と同じ値に設定されます。つまり、NUMBER(4,5) は NUMERIC(5,5) としてマップされます。

Note

NUMBER の小数点以下桁数および有効桁数を指定しない場合、 SQL Server の既定値には、最大の小数点以下桁数 (8) および有効桁数 (38) が使用されます。 データをレプリケートするときは、使用領域とパフォーマンスを向上させるために、Oracle で特定の小数点以下桁数と有効桁数を設定することをお勧めします。

Large Object 型

Oracle は最大 4 ギガバイト (GB) のデータをサポートします。一方、SQL Server は最大 2 GB のデータをサポートします。 2 GB を超えてレプリケートされたデータは、切り捨てられます。

Oracle のテーブルに BFILE 列が含まれている場合、この列のデータはファイル システムに格納されます。 レプリケーション管理ユーザー アカウントには、次の構文を使用して、このデータが格納されているディレクトリへのアクセスを許可する必要があります。

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

Large Object 型に関する詳細については、「Oracle パブリッシャーの設計上の注意点および制限」の「Large Object の注意点」を参照してください。

代替データ型マッピングの指定

通常、既定のデータ型マッピングは適切な設定です。しかし、多くの Oracle データ型に対して、既定のマッピングを使用しないで一連の代替マッピングからデータ型マッピングを選択することができます。 代替マッピングを指定する方法は 2 つあります。

  • ストアド プロシージャまたはパブリケーションの新規作成ウィザードを使用して、アーティクルごとに既定値をオーバーライドします。

  • ストアド プロシージャを使用して、以降のすべてのアーティクルの既定値をグローバルに変更します (既存のアーティクルの既定値は変更されません)。

代替データ型マッピングを指定するには、「Oracle パブリッシャーのデータ型マッピングの指定」を参照してください。

参照

Oracle パブリッシャーの構成
Oracle パブリッシャーの設計上の注意点および制限
Oracle パブリッシングの概要