7 SQL Serverのサポート対象の理解
この章では、SQL ServerのためのOracle GoldenGateでサポートされているデータベースと表の機能について説明します。
内容は次のとおりです。
7.1 SQL Serverについてサポートされているオブジェクトおよび操作
次のオブジェクトと操作がサポートされています。
-
Oracle GoldenGateは、ユーザー表からのトランザクションDMLのキャプチャ、ユーザー表および書込み可能ビューへの配信をサポートしています。
-
TEXT、NTEXT、IMAGE、VARBINARY、VARBINARY (MAX)、VARCHAR (MAX)
、およびNVARCHAR (MAX)
列が、フル・サイズでサポートされています。 -
Oracle GoldenGateは、SQL Serverチェンジ・データ・キャプチャで有効な表に許可される最大の行サイズをサポートします。
-
Oracle GoldenGateでは、
PAGE
およびROW
圧縮が有効な表からのキャプチャをサポートします。圧縮を使用するパーティション化された表では、すべてのパーティションで同じ圧縮タイプを有効化する必要があります。 -
すべてのパーティションで物理レイアウトが同じ場合、Oracle GoldenGateでパーティション表からのキャプチャがサポートされます。
-
キャプチャ元の表のすべての列の長さの合計は、その表に対するチェンジ・データ・キャプチャを有効にするためにSQL Serverで許容される長さを超えることはできません。すべての列の長さの合計がSQL Serverプロシージャ
sys.sp.cdc_enable_table
で許容される長さを超えると、その表にはADD TRANDATA
を追加できなくなります。最大許容レコード長は列数が増加すると減少するため、最大レコード長と表の列数には反比例関係があります。
親トピック: SQL Serverのサポート対象の理解
7.2 SQL Serverについてサポートされていないオブジェクトおよび操作
次のオブジェクトと操作はサポートされていません。
-
パラレルReplicatは、Oracle GoldenGate for SQL Serverでサポートされています。
-
ソース・データベースの場合に、SQL Serverチェンジ・データ・キャプチャではサポートされない操作(
TRUNCATE
文など)。SQL Serverチェンジ・データ・キャプチャを有効にすることで制限される操作の完全なリストは、Microsoft SQL Serverのドキュメントを参照してください。 -
SQL ServerのためのOracle GoldenGateは、SQL ServerのDDLの変更のキャプチャと配信をサポートしていません。また、ソースおよびターゲットでOracle GoldenGateのプロセスが表レベルDDLの変更を処理するには、表の索引の再構成操作を含め、追加のステップが必要になります。「表レベルDDLの変更の要件」を参照してください。
-
ビューはサポートされていません。
-
TextCopy
ユーティリティ、WRITETEXT
文およびUPDATETEXT
文による操作。これらの機能は、データベースによってログに記録されない操作か、一部のみログに記録される操作を実行するため、Extractプロセスではサポートできません。 -
パーティションの物理レイアウトが複数あるパーティション表
-
ソース表に対するパーティション・スイッチ。SQL Serverチェンジ・データ・キャプチャでは、パーティション・スイッチがDDL操作として扱われ、パーティション間で移動したデータはCDC表に記録されないため、表のサプリメンタル・ロギングを有効化している場合は、「表レベルDDLの変更の要件」の手順に従って手動でパーティション・スイッチを実装する必要があります。
-
SQL Serverのチェンジ・データ・キャプチャの制限により、データベース照合と列レベル照合が異なっていると、文字データのCDC表に誤ったデータが書き込まれることがあり、ExtractはCDC表に書き込まれたときのデータをキャプチャするようになります。ASCII以外のデータを含む列に
NVARCHAR
、NCHAR
またはNTEXT
データ型を使用するか、データベースと同じ表列の照合を使用することをお薦めします。詳細は、About Change Data Capture (SQL Server)を参照してください。 -
SQL Serverのチェンジ・データ・キャプチャの制限により、SQL Serverチェンジ・データ・キャプチャ・エージェントでは
NOOPUPDATES
がキャプチャされないため、no-op更新操作についてExtractがキャプチャするレコードはありません。
7.2.1 表レベルDDLの変更の要件
SQL ServerのためのOracle GoldenGateは、表の索引の再構築操作を含め、SQL ServerのDDLの変更のキャプチャおよび配信をサポートしていません。ソースおよびターゲットでOracle GoldenGateのプロセスが表レベルDDLの変更を処理するには追加のステップが必要になります。
表レベルDDLの変更とみなされる操作には、ALTER TABLE
、TRUNCATE
、索引の再構築、パーティション・スイッチなどがあります。
表レベルDDLの変更によるデータの不整合を回避するには、次のステップを実行する必要があります。
- ソース: 変更される1つ以上の表へのアプリケーション・データを一時停止または停止します。
- ソース: 変更される表に対するオープン・トランザクションが存在しないことを確認します。
- ソース: 変更される表に対する残りのすべてのトランザクションをSQL Server CDCキャプチャ・ジョブが処理していることを確認します。
- ソース: DDLの変更前に、変更される表のすべてのトランザクションをExtractが処理していることを確認します。
- ターゲット: DDLの変更前に、変更される表のすべてのトランザクションをReplicatが処理していることを確認します。
- オプションで、イベント・マーカー表の実装を使用して、変更される表の残りのすべてのトランザクションが処理されたタイミングを判断すると、ExtractおよびReplicatを正しく停止するタイミングの調整を処理できます。
- ソース: Extractプロセスを停止します。
- ターゲット: Replicatプロセスを停止します。
- ソース:
DELETE TRANDATA
を実行して、変更される表のサプリメンタル・ロギングを無効にします。 - ソース: ソース表に対して表DDLの変更を実施します。
- ターゲット: ターゲット表に対して表DDLの変更を実施します。
- ソース: 変更の実行後、表に対して
ADD TRANDATA
を実行することで、サプリメンタル・ロギングを再有効化します。 - ソース: Extractプロセスを開始します。
- ターゲット: Replicatプロセスを開始します。
- ソース: 変更された1つ以上の表へのアプリケーション・データを再開します。
7.3 サポートされているSQL Serverデータ型
次にあげた制限事項に特に記載がないかぎり、キャプチャと配信で次のデータ型がサポートされます。
-
バイナリ・データ型
-
(binary、varbinary、varbinary (max))
-
(varbinary (max)
withFILESTREAM)
-
-
文字データ型
-
(char、nchar、nvarchar、nvarchar (max)、varchar、varchar (max))
-
-
日付および時間データ型
-
(date、datetime2、datetime、datetimeoffset、smalldatetime、time)
-
-
数値データ型
-
(bigint、bit、decimal、float、int、money、numeric、real、smallint、smallmoney、tinyint)
-
-
LOB
-
(image、ntext、text)
-
-
その他のデータ型
-
(timestamp、uniqueidentifier、hierarchyid、geography、geometry、sql_variant (配信のみ)、XML)
-
-
SQL ServerのためのOracle GoldenGateでは、
SPARSE
設定が含まれている列データをレプリケートできます。
制限事項:
-
Oracle GoldenGateでは、4KBより大きいラージ・オブジェクトのフィルタリング、列マッピングまたは操作はサポートされません。Oracle GoldenGateのすべての機能が、最大4KBのオブジェクトに使用できます。
-
XMLが行に格納されない場合にSQL Serverが行う処理と同様に、Oracle GoldenGateは、XMLデータをラージ・オブジェクト(LOB)として処理します。SQL Server拡張XMLの拡張機能(lax検証、
DATETIME
、union機能など)はサポートされていません。 -
システムによって割り当てられる
TIMESTAMP
列や、非マテリアライズ計算結果列は、キーの一部にすることはできません。TIMESTAMP
列が含まれている表には、キーが必要です。キーには、主キー、一意性制約、あるいはTABLE
文またはMAP
文のKEYCOLS
句で指定された代替キーを使用できます。詳細は、「割当て行識別子」を参照してください。 -
Oracle GoldenGateは、マルチバイト文字データ型と文字列に格納されているマルチバイト・データをサポートしています。マルチバイト・データは、同類のSQL Server構成でのみサポートされます。変換、フィルタリング、およびその他の種類の操作は、マルチバイト文字のデータに対してはサポートされていません。
-
TEXT
、NTEXT
、IMAGE
、VARCHAR (MAX)
、NVARCHAR(MAX)
およびVARBINARY(MAX)
列のデータのキャプチャが、max text repl size
オプションで設定されるSQL Serverのデフォルト・サイズを超える場合は、サイズを拡張します。sp_configure
を使用して、max text repl size
の現在の値を表示し、必要に応じてオプションを調整します。 -
Oracle GoldenGateは、最大サイズが2GBのUDTおよびUDAデータをサポートします。SQL_Variant以外のすべてのUDTがサポートされます。
-
SQL Server組込みCLRデータ型(geometry、geography、hierarchyidなど)を含む共通言語ランタイム(CLR)がサポートされます。CLRデータ型は、同類のSQL Server構成でのみサポートされます。変換、フィルタリング、およびその他の種類の操作は、CLRデータに対してはサポートされていません。
-
FILESTREAM
属性付きのVARBINARY (MAX)
列は、4GBまでのサイズがサポートされます。Extractは、標準のWin32
ファイル関数を使用してFILESTREAM
ファイルを読み取ります。 -
浮動小数点数の範囲および精度は、ホスト・マシンによって異なります。通常は有効桁数が16桁の精度ですが、データベースのドキュメントで想定されている近似について確認してください。Oracle GoldenGateでは、サポートされる精度を超える値は丸められるか切り捨てられます。
-
Oracle GoldenGateでは、0001/01/03:00:00:00から9999/12/31:23:59:59のタイム・スタンプ・データをサポートしています。タイム・スタンプがGMTからローカル時間に変換されると、これらの制限も変換後のタイム・スタンプに適用されます。タイムゾーンに応じて、変換により時間が追加または引かれる場合があり、これにより、タイム・スタンプがサポートされている上限を超えたり、下回ったりすることがあります。
計算結果列に関する制限事項:
-
計算結果列(永続化と非永続化のどちらも)は、Microsoftのチェンジ・データ・キャプチャではサポートされていません。したがって、計算された列を含む列の証跡にデータは書き込まれません。非永続化計算結果列のデータをレプリケートするには、
TABLE
パラメータのFETCHCOLS
またはFETCHMODCOLS
オプションを使用して表から列データをフェッチします。列がデータ・ベースで変更された時刻と処理されるトランザクション・レコードに対するデータをExtractでフェッチする時刻でデータ値が異なることで、不整合が生じることがあることに注意してください。 -
その列のデータが証跡にあった場合でも、ReplicatはDMLを計算結果列に適用しません。データベースがこの種の列のDMLを許可しないためです。ソース永続化計算結果列またはフェッチされた非永続化列のデータは、計算結果列ではないターゲット列に適用できます。
-
初期ロードでは、データはすべて、トランザクション・ログからではなくソース表から直接選択されます。したがって、初期ロードで、非永続化計算結果列も含め、すべての列のデータ値が証跡に書き込まれるか、またはターゲットに送信されます。どちらになるかは、使用されるメソッドによって決まります。ただし、変更データの適用時に、Replicatは初期ロード・データを計算結果列に適用しません。データベースがこの種の列のDMLを許可しないためです。
-
Oracle GoldenGateは、非永続化計算結果列が
TABLE
文またはMAP
文のKEYCOLS
句で使用されることを許可しません。 -
一意キーに非永続化計算結果列が含まれていて、Oracle GoldenGateがそのキーを使用する必要がある場合は、非永続化計算結果列は無視されます。これによって、残りの列が一意性を強制しない場合には、データ整合性が影響を受けることがあります。
-
一意索引は、非永続化計算結果列に定義されると、使用されません。
-
一意キーまたは一意索引に非永続化計算結果列が含まれていて、表の唯一の一意識別子である場合、Oracle GoldenGateは、ターゲット行を見つけるための識別子としてすべての列を使用する必要があります。非永続化計算結果列はこの識別子として使用できないため、Replicatは、この識別子を含む操作を間違ったターゲット行に適用する場合があります。
親トピック: SQL Serverのサポート対象の理解
7.4 サポートされていないSQL Serverのデータ型および機能
-
SQL_Variant
データ型はキャプチャではサポートされません。 -
サポートされないデータ型を含む表が原因で、Extractが異常終了する場合があります。回避策として、これらの表から
TRANDATA
を削除し、さらにExtractのTABLE
文から表を削除するか、表に対してExtractのTABLEEXCLUDE
パラメータを使用してください。
親トピック: SQL Serverのサポート対象の理解
7.5 SQL Serverのシステム・スキーマ
次のスキーマまたはオブジェクトは、ワイルドカードなしで明示的に指定した場合を除いて、Oracle GoldenGateによる自動レプリケートは実施されません。
-
"sys"
-
"cdc"
-
"INFORMATION_SCHEMA"
-
"guest"
親トピック: SQL Serverのサポート対象の理解