5.2.2.1 比較ペアの詳細

「グループと比較ペア」ページの「比較ペアの詳細」セクションには、選択した比較ペアの次の詳細がリストされます。次の比較ペアの詳細を表示するには、比較ペアをクリックします:
  • ソース表: ソース表またはデータベース。
  • ソース・スキーマ: 比較するソース・データベース・オブジェクトの所有者。
  • 比較ペア名: デフォルトの名前形式の<source>=<target>またはユーザー定義の名前です。いずれの場合も、比較ペア名の上にマウス・カーソルを置くと、実際のソースおよびターゲットのオブジェクト名が表示されます。
  • プロファイル: 実行プロファイルが比較ペアに存在する場合は、ここに表示されます。それ以外の場合、このフィールドは空白になり、デフォルトのプロファイルが比較中に使用されます。
  • ターゲット表: ターゲット表またはデータベース。
  • ターゲット・スキーマ: 比較するターゲット・データベース・オブジェクトの所有者。
  • 検証ステータス: 実行された前の検証の結果に基づいて、ソースおよびターゲット・オブジェクトの列が比較対象として適切かどうかを表示します。
「ソース表」「ソース・スキーマ」「ターゲット表」「ターゲット・スキーマ」を変更して比較ペアの「プロファイル」を更新し、「保存」をクリックして比較ペアの詳細に保存できます。

全画面に比較ペアの詳細を表示するには、「全画面」をクリックします。デフォルト・ビューに戻るには、「一部画面」をクリックします。

「比較ペア・リストに戻る」をクリックして、「グループと比較ペア」ページの「比較ペア」セクションに戻ります。

選択した比較ペアの場合は、「比較ペアの詳細」セクションから次の操作を実行することもできます:

5.2.2.1.1 列マッピング

列マッピングを作成または変更するには、「列マッピング」タブを使用します。

列マッピングを作成または編集するには、管理者ロールまたはスーパーユーザー・ロールを持っている必要があります。

「列マッピング」タブには、次の比較ペアの詳細がリストされます:
  • すべて: 指定したデータソースに格納されているすべての表またはファイルをリストします。この比較ペアに別の名前を付けてください。
  • マップ済: 以前にマッピングされた列のみがリストされます。
  • 未マップ: 比較ペアの他の列とマッピングされていない列のみをリストします。
  • ソース: ソース表の詳細(インクルード、名前、データ型など)。
  • ターゲット: ターゲット表の詳細(名前、データ型、書式、キーなど)。

5.2.2.1.1.1 列マッピングの検証

検証とは、ソースおよびターゲットの表構造が互換性があるかどうか、および一致する主キーまたは一意キー列が両方の表構造にあるかどうかを確認する準備テストです。手動での検証はいつでも実行できます。Oracle GoldenGate Veridataでは、実行時に常に検証を実行します。

列マッピングを検証するには、「グループと比較ペア」ページ>「比較ペア」セクションで比較ペアを選択し、「その他のアクション」をクリックして、「列マッピングの検証」を選択します。デフォルトでは、「検証ステータス」は「未検証」です。

選択した比較ペアが検証され、「比較ペアは正常に検証されました」というメッセージが表示されます。

5.2.2.1.1.2 キー・マッピング方法

キー列および比較列のマッピングには、次の2つの方法があります。

  • システム生成: 列マッピングは、現在のオブジェクト・メタデータに基づいて、実行時にOracle GoldenGate Veridataによって自動的に構成されます。

  • ユーザー定義: 列のマッピングは、管理者ロールまたはスーパーユーザー・ロールを持つOracle GoldenGate Veridataユーザーによって手動で構成されます。

新しいすべての比較ペアは、キー列および比較列の「システム生成」にデフォルト設定されます。異なるマッピング方法にいつでも変更できます。

これらの方法をキーに適用する方法

  • システム生成: 主キーまたは一意索引の両方を含む比較ペアにオブジェクトがあることがわかっている場合は、キー・マッピング方法をデフォルトの「システム生成」に設定したままにできます。キー列は自動的にマップされます。キーをマップするために、Oracle GoldenGate Veridataでは、ソースおよびターゲット・オブジェクトのすべての索引を検索し、索引ごとに主キーの検索を試みます。主キーが見つからない場合、Oracle GoldenGate Veridataは、最小の索引(列の最小数)を使用し、同じ名前および比較形式の列をマップします。一致できない列は構成から除外されます。

  • ユーザー定義: オブジェクトに主キーまたは一意索引のいずれも含まれない場合、「ユーザー定義」の方法を使用して、キー列を手動で1つずつマップできます。ユーザー定義の方法を使用して、既存のキーまたは索引を上書きすることもできますが、キーとして使用するように選択した列は、行の一意性を確保する必要があります。また、精度レベルが異なる、または行選択の精度を下げる可能性のあるその他の特性が含まれるソースおよびターゲット索引については、特に異種環境では使用しないでください。

これらの方法を比較列に適用する方法

  • システム生成: ソースおよびターゲット比較列の名前および比較形式が同じ場合は、比較列のマッピング方法をデフォルトの「システム生成」に設定したままにできます。Oracle GoldenGate Veridataでは、これらの列を実行時に自動的にマップします。一致しない列は構成から除外されます。デフォルトでは、この方法では比較にすべての列が含まれます。この方法は、ハッシュ比較方法にデフォルトで設定されます。比較方法は、比較ペアを編集して後で変更できます。

  • ユーザー定義: この方法は、ソースおよびターゲット列を手動でマップして比較方法を制御する場合に使用します。

これらの方法を組み合せて、マッピング・プロセスを高速化できます。ほとんどの列名でシステム生成のマッピングがサポートされている場合は、それを使用してユーザー定義の方法に切り替えることで、残りの列をマップしたり、比較対象から列を除外できます。たとえば、列の値が変更されないことが確認できる場合、またはそれらの値が非同期になると予想される場合は、それらの列を除外できます。

5.2.2.1.2 デルタ処理

このトピックでは、Oracle GoldenGate Veridataでサポートされているすべてのデータベースで使用可能なデルタ処理機能についての一般的な質問への回答を示します。

Oracle GoldenGate Veridataでは、ソース表とターゲット表は比較ペアを使用して構成され、この比較ペアをグループ化してジョブに追加して比較を実行します。

比較ジョブの後続の実行時には、前のジョブ実行から表のどの部分が変更されているかに基づいて、表の比較を実行できます。これらのジョブはデルタ処理ジョブです。

  • サポート対象のすべてのデータベースについて、サーバー側ソートを使用する場合、デルタ処理機能を使用できます。
  • NonStopプラットフォームの場合、Oracle GoldenGate Veridataでは、最後の比較以降に変更されたボリューム・シーケンス番号(VSN)を検出して、変更されたブロックを検索します。
  • すべてのプラットフォームで、デルタ比較列の値は、行変更のたびに変更され、常に増加し続ける必要があります。たとえば、TIMESTAMPNUMBERなどです。Oracleデータベースの場合、ROW_SCNはデフォルトのデルタ列であり、デルタ実行のたびに増加し続けます。

  • 表の比較は、比較ジョブの後続の実行中に変更された内容に基づいて実行できます。

デルタ処理を有効にすると、Oracle GoldenGate Veridataは2つの連続するジョブの差異を比較します。

デルタ処理を有効にするには:
  1. 「グループと比較ペア」ページで、「比較ペアの詳細」セクションの下の「デルタ処理」タブをクリックします。
  2. 列名が「ソース・デルタ列の使用」および「ターゲット・デルタ列の使用」に移入されていることを確認します。ソース問合せとターゲット問合せは編集できないことに注意してください。
  3. グループ比較ペアの編集ページから、特定の比較ペアを選択し、ドロップダウン・オプションを選択してデルタ処理を有効にすることで、デルタ処理を有効にすることもできます。

5.2.2.1.2.1 デルタ処理とは

NonStopプラットフォーム上での動作方法

Oracle GoldenGate Veridataでは、最後の比較以降に変更されたボリューム・シーケンス番号(VSN)を検出して、変更されたブロックを検索します。VSNは、データで実行されるデータベース操作ごとに順次増分するディスク固有の変更番号です。行が変更されるたびに、行のあるディスク・ブロックのVSNが変更されます。

ディスクのファイルのVSNと別のディスクのVSNの間には関係はありません。Oracle GoldenGate Veridataは、ソースおよびターゲット・ディスクで、パーティション単位でVSNを追跡し、独自の相関を維持して、正確なデルタ比較を実行します。デルタ処理を有効にすると、再度無効にするまで後続のすべての実行に使用されます。

ノート:

比較ペアを最初に実行すると、ソースおよびターゲット・オブジェクトのすべての行が常に比較され、以降の実行でデルタを評価するための初期VSN状態が確立されます。

他のすべてのプラットフォーム上での動作方法

Oracle GoldenGate Veridataでは、ソース・データベース表とターゲット・データベース表を比較します。ソース表とターゲット表は比較ペアを使用して構成され、この比較ペアをグループ化し、ジョブに追加して比較を実行します(「比較ペア」を参照)。表内のすべての行を比較する場合は、完全比較ジョブです。

比較ジョブの次回以降の実行時に、前回のジョブ実行から表のどの部分が変更されているかに基づいて表の比較を実行でき、このようなジョブはデルタ処理ジョブです。デルタ処理は通常、多数の行が含まれている表に対して実行され、つまり、このような表にデルタ処理の対象となる列が存在するものと考えられます。デルタ比較列の値は、行変更のたびに変更され、常に増加していく必要があります。この要件を満たすすべてのデータ型がサポートされます。デフォルトでは、数値またはタイムスタンプの比較形式にマップされている表列がサポートされます。たとえば、TIMESTAMPTIMESTAMP_TZNUMBERなどです。

デルタ・ベースとは、デルタ比較を実行する際の基準となるデルタ列の値です。比較を実行すると毎回、デルタ・ベース値が取得されます。実行されたデルタ比較ジョブの数によって複数のデルタ・ベース値が存在する可能性があるため、比較ペアのデルタ・ベース値のリストが生成されます。たとえば、完全比較を初めて実行すると、デルタ列の最大値がデルタ・ベースDeltaBase-1になります。2回目のデルタ処理ジョブがDeltaBase-1を基準に実行されると、デルタ列の最大値としてDeltaBase-2が再度取得されます。3回目の実行では、DeltaBase-1またはDeltaBase-2のどちらかを使用して比較することもできれば、完全比較ジョブを実行することもできます。

デルタ処理を使用するタイミング

デルタ処理は、処理に非常に時間がかかる非常に大きいEnscribeファイルおよびSQL表での使用に最適です。これは、追加のオーバーヘッドを消費するため、小さいデータのセットでの使用は実用的ではありません。最初は、デルタ処理なしで比較テストを実行するようにしてください。比較ペアの処理に時間が非常にかかると思われる場合は、デルタ処理を有効にしてから再度実行してみてください。デルタを有効にした実行が最初のテストよりも大幅に時間を短縮できる場合は、その使用を続けます。わずかな改善しかない場合は、オーバーヘッドの増加を回避するために、デルタ処理を無効にすることをお薦めします。デルタ処理によるパフォーマンスの向上は、実行の初回比較ステップで確認できます。デルタ処理では、異なるデータ・ブロックでソースおよびターゲット行が終了する場合に、確認ステップが長くなる可能性があります。

デルタ処理を実行するプロセス

デルタ処理は、Oracle GoldenGate Veridataエージェントによって実行されます。

NonStopプラットフォームの場合、VSN情報は、vsnservという名前の権限プロセスによって取得されます。NonStopプラットフォームでOracle GoldenGate Veridataエージェントをインストールすると、この目的でファイル・ラベルを読み取ることができるように、インストール中にPROGIDvsnservプログラムに使用され、SUPER.SUPERとして実行されます。

他のすべてのプラットフォームの場合、デルタ処理では比較ペアの問合せを行ってソース表とターゲット表の両方のデルタ・ベース値を取得し、列マッピングが作成されます。

デルタ処理で使用可能なソート方法

デルタ処理を使用するには、ソートの実行時に、比較ペアに関連付けられているプロファイルまたはジョブに関連付けられているプロファイル内のサーバーにソート方法を設定して、サーバー側のソートを有効にする必要があります。

ノート:

常にデルタ比較を使用する場合は、デフォルトのOracle GoldenGate Veridataプロファイル内のサーバーにソート方法を設定することを検討してください。これにより、ジョブの実行時に正しいプロファイルを忘れずに選択できます。

デルタ処理の使用時に確認すべき重要事項

非同期の削除が、ブロックで変更された唯一のソース行であり、その削除がターゲットに伝搬されなかった場合、デルタ処理メカニズムでは、非同期削除の検出に失敗することがあります。このような場合は、関連する行を含むターゲットのブロックは変更されないため、デルタ処理中にターゲットのVeridataエージェントによってスキップされます。

列マッピングUIのデルタ値フィールドは、デルタ値を取得する問合せに基づいて、事前移入されています。

サポートに関する考慮事項

次の表に、サポートされているデルタ列の型を示します。デルタ構成UIで使用可能なデルタ列のリストは、ソース表とターゲット表の対応する列ペアの比較形式を確認することにより特定されます。

Veridataの比較形式 デルタ列にできるか

STRING

不可

STRING_EN

不可

TIMESTAMP

TIMESTAMP_TZ

可*

DATETIME

SMALLDATETIME

不可

DATE

不可

TIME

不可

NUMBER

FLOAT

不可

BINARY

可*

BLOB

不可

CLOB

不可

INTERVAL

不可

DEC_FLOAT

不可

BINARY_TIMESTAMP

可*

SYBTIME

不可

CLOB_NFC

不可

STRING_NFC

不可

ノート:

*は、Hiveでデルタ列がサポートされないことを示します。Hiveでサポートされるデータ型は、NUMBER、TIMESTAMPおよびDATETIMEです。

Oracle Databaseの場合、ORA_ROWSCN疑似デルタ列がサポートされており、表に対してROWDEPENDENCISが有効な場合にデフォルトで選択されます。

DB2 for i, z/OSおよびLUWの場合、GENERATED FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP句を持つ列がデフォルトで選択されます。

サポートされているすべてのデータベースでは、先頭にTIMESTAMP列、その後にNUMERIC列が表示されます。

デルタ処理でサポートされるのは1列のみで、次のようになります。

SELECT column-names from table name where delta_column delta_condition supplied_delta_value

たとえば:

select * from TableA where startdate >= '12-01-2012 21:24:00' 

デルタ処理を有効または無効にする方法

データベース比較ペアのデルタ処理は、「比較ペア構成」ページのデルタ処理タブおよび「既存の比較ペア」タブから有効化または無効化できます。また、「実行構成」ページの「デルタ処理有効」チェック・ボックスを使用して、この機能を切り替えることもできます。

デルタ処理を構成する方法

「列マッピング構成」ページで「デルタ処理」タブをクリックします。デフォルトで、オプションが自動的に移入され、「デルタ処理の有効化」チェック・ボックスが選択されます。この機能を無効化するには、チェック・ボックスをクリアします(これにより他のオプションがすべて非アクティブになります)。

デフォルト値を使用することも、次を変更することも可能です。

  • 処理対象のソース列またはターゲット列、

  • ソース問合せを使用するかターゲット問合せを使用するか

  • ソースまたはターゲット・データベース問合せ

比較ペアのデルタ処理を構成したら、「保存」をクリックして変更を適用します。

使用中のデルタ処理の確認方法

比較ペアがデルタ処理に構成されている場合、「Delta Enabled」というテキストがグループの編集ページおよび比較ペアの構成ページの比較ペア表に表示されます。

ジョブの実行時にデルタ処理をオーバーライドできるか

デルタ処理を使用中の表またはファイルでメンテナンスを実行するとどうなるか。

デルタ処理を有効にした比較ペアでオブジェクトのメンテナンスを実行する場合は、Oracle GoldenGate Veridataですべての行が比較されるように、次回の実行でデルタ処理を無効にすることをお薦めします。デルタ処理は、比較ペア・レベルまたはジョブの上書きとして無効にできます。完全比較から再開することで、新しいデルタ・ベースの状態の確立が可能になり、後続のデルタ比較が高速になります。そうしないと、すべての行の比較を完了するよりも、デルタ処理の時間が実際長くなります。

たとえば、'FUP RELOAD'がターゲットではなくソースで実行されると、最新のデルタ状態に基づいて、デルタ処理でターゲットよりもソースから返される行数がはるかに多くなる場合があります。返されるソース行は、実際に変更されなかった行になります。これが発生するのは、FUPがレコードを移動してブロックを結合するが、データが変更されないためです。ただし、影響を受けるブロックのVSNは変更されます。Oracle GoldenGate Veridataでは、最新のデルタ状態以降にリロードが実行されたことを検出できません。このため、ブロックのVSNが次に変更されると、そのブロックのすべての行が返されます。

反対に、ターゲットでは、対応するデータでVSNは変更されないため(リロードが実行されないため)、これらの行はデルタ処理で返されません。この異常は確認ステップで解決されますが、このステップは初回比較ステップよりも遅いため、全体の比較プロセスが遅くなります。

5.2.2.1.3 行パーティション

SQL述部文またはEnscribeパーティションを指定することで、比較対象に含める行と含めない行を指定できます。

Oracle GoldenGate Veridataでは、行パーティション化(SQL述語文)または「自動行パーティション」による比較のために、行のサブセットを選択することをサポートしています。

パーティションを使用すると、構造が同じで行数が異なるソース表およびターゲット表またはファイルを比較できます。たとえば、履歴データにより、多くの行が含まれる可能性のあるデータ・ウェアハウス表と本番表を比較できます。パーティションを使用すると、負荷を複数の処理ストリームに分散して、スループットも高速化されます。

  1. 「ソース・パーティション」領域のプラス(+)アイコンをクリックします。「ソース・パーティション」ボタンは、デフォルトでオンに切り替えられます。
  2. 「名前」ボックスに、empなど、このパーティションの名前を入力します。使用する語は1つの語にし、アンダースコア、ハイフン、および標準キーボードのその他の特殊文字を含めることができます。
  3. 「SQL述語」を入力します。たとえば、where emp_salary>1000です。SQL述語文は条件式であり、WHERE句を使用して、trueまたはfalseのいずれかのブール値に評価します。その横にある鉛筆アイコンまたは「削除」アイコンをクリックして、SQL述語を編集または削除することもできます。
  4. 同様に、「ターゲット・パーティション」を有効にし、「ソースからコピー」をクリックして、ソースからSQL述語文の詳細をコピーします。

5.2.2.1.4 比較ペアの削除

比較ペアを削除するには、「比較ペア構成」ページを使用します。

比較ペアを削除するには、管理者ロールまたはスーパーユーザー・ロールを持っている必要があります。
  1. 比較ペアを削除するには、「グループと比較ペア」ページ>「比較ペア」セクションで比較ペアを選択し、「その他のアクション」をクリックして、「削除」を選択します。
  2. 確認ダイアログ・ボックスで「削除」をクリックして、削除を確認します。