この章では、Oracle Data Integratorのチェンジ・データ・キャプチャ機能を使用してデータに加えられた変更を検出し、統合フローでこれらの変更のみを処理する方法について説明します。
この章では、次の項目について説明します。
チェンジ・データ・キャプチャ(CDC)を使用すると、Oracle Data Integratorで、他のアプリケーションに起因するソース・データの変更を追跡できます。CDCによって、統合インタフェースの実行時に、変更されていないデータをフロー内で処理せずに済みます。
ソース・データ・フローを変更されたデータのみに限定することは、データ同期やレプリケーションなどの多くの状況で有用です。この作業は、統合用のイベント指向アーキテクチャを設定する場合に不可欠です。このようなアーキテクチャでは、ビジネス・プロセスの実行時に、アプリケーションによってデータに変更が加えられます(顧客の削除や新規購買注文など)。これらの変更は、Oracle Data Integratorによって取得され、情報システム全体に伝播されるイベントに変換されます。
チェンジ・データ・キャプチャは、モデルのジャーナル化によって実行されます。モデルのジャーナル化とは、そのモデルのデータストアのレコードに追加された変更(挿入、更新および削除)を取得するインフラストラクチャを設定することです。
Oracle Data Integratorでは、次の2つのジャーナル化モードがサポートされています。
簡易ジャーナル化: モデルの個別のデータストアの変更を追跡します。
一貫性セット・ジャーナル化: モデルのデータストア間の参照整合性を考慮して、そのモデルのデータストアのグループに対する変更を追跡します。このモードでジャーナル化されるデータストアのグループは、一貫性セットと呼ばれます。
ジャーナル化コンポーネントは次のとおりです。
ジャーナル: 変更が記録される場所。ジャーナルには、変更されたレコードへの参照と、その変更のタイプ(挿入、更新、削除)のみが含まれます。
取得プロセス: ジャーナル化でソース・データストアの変更を取得するには、データ表にトリガーを作成するか、データ・サーバーのログ・ファイルからログ・データを取得するデータベース固有のプログラムを使用します。使用するテクノロジで使用可能な取得プロセスの詳細は、Oracle Fusion Middleware Oracle Data Integrator接続性およびナレッジ・モジュール・ガイドを参照してください。
サブスクライバ: CDCでは、パブリッシュ/サブスクライブ・モデルを使用します。サブスクライバは、データストアまたは一貫性セットで追跡される変更を使用するエンティティ(アプリケーション、統合プロセスなど)です。これらのエンティティは、データストアまたは一貫性セットの変更を追跡するモデルのCDCをサブスクライブします。変更が取得されるのは、変更に対して少なくとも1つのサブスクライバが存在する場合のみです。取得された変更をすべてのサブスクライバが使用すると、それらの変更はジャーナルから破棄されます。
ジャーナル化ビュー: 取得された変更と変更データへのアクセスを提供します。これらのビューは、ユーザーが取得された変更を表示する場合と、統合プロセスが変更データを取得する場合に使用されます。
これらのコンポーネントは、ジャーナル化インフラストラクチャに実装されます。
簡易ジャーナル化では、1つ以上のデータストアをジャーナル化できます。ジャーナル化された各データストアは、変更の取得時に個別に処理されます。
この方法には、次の例に示すように制限があります。たとえば、ORDERデータストアとORDER_LINEデータストアの変更を処理する必要があるとします(このとき、参照整合性制約として、ORDER_LINEレコードは必ず関連するORDERレコードを保持する必要があります)。ORDER_LINEへの挿入が取得された場合、ORDER内で関連する新規レコードも取得されているかどうかは保証されません。関連するORDERレコードなしでORDER_LINEレコードを処理すると、統合プロセスで参照制約違反が発生する可能性があります。
一貫性セット・ジャーナル化では、ORDER_LINE(またはORDER)の変更が取得されたときに、関連するORDER(またはORDER_LINE)の変更も取得されていることが保証されます。一貫性セット・ジャーナル化では、取得された変更の一貫性が保証されます。一貫性が保証された使用可能な変更のセットは、一貫性ウィンドウと呼ばれます。このウィンドウ内の各変更は、パッケージ内で統合インタフェースを設計および順序付けして、正しい順序で(ORDER、ORDER_LINEの順に)処理する必要があります。
一貫性セット・ジャーナル化は強力な方法ですが、設定も複雑になります。この方法は、データ変更の取得時に参照整合性制約を保証する必要がある場合に使用してください。パフォーマンス上の理由から、多数のサブスクライバが必要な場合にも、一貫性セット・ジャーナル化を使用することをお薦めします。
一貫性セット・ジャーナル化と簡易ジャーナル化の両方を使用してモデル(またはモデル内のデータストア)をジャーナル化することはできません。
この項では、ジャーナル化インフラストラクチャを設定して開始し、適切に稼働していることを確認する方法について説明します。このインフラストラクチャのコンポーネントについても詳しく説明します。
Oracle Data Integratorデータ・モデルにCDCを設定するための基本的な手順は、次のとおりです:
データ・モデルへのCDCパラメータの設定
CDCへのデータストアの追加
一貫性セット・ジャーナル化の場合、データストアの順序の設定
サブスクライバの追加
ジャーナルの開始
CDCパラメータの設定
CDCパラメータの設定は、データ・モデルに対して実行します。この設定では、モデルに使用するジャーナル化モードおよびジャーナル化ナレッジ・モジュールを選択または変更します。
CDCパラメータを設定するには:
デザイナ・ナビゲータの「モデル」ツリーで、ジャーナル化するモデルを選択します。
そのモデルをダブルクリックし、編集します。
「ジャーナル化」タブで、使用するジャーナル化モード(「一貫性セット」または「簡易」)を選択します。
このモデルに使用するジャーナル化ナレッジ・モジュール(JKM)を選択します。リストに表示されるのは、データ・モデルのテクノロジとジャーナル化モードに適合し、事前に少なくとも1つのプロジェクトにインポートされているナレッジ・モジュールのみです。
このKMのオプションを設定します。このKMとそのオプションの詳細は、Oracle Fusion Middleware Oracle Data Integrator接続性およびナレッジ・モジュール・ガイドを参照してください。
「ファイル」メニューから「すべて保存」を選択します。
注意: モデルがすでにジャーナル化されている場合は、データ・モデルのジャーナル化パラメータを変更する前に、既存の構成によるジャーナル化を停止することをお薦めします。 |
CDCに対するデータストアの追加または削除:
ジャーナル化対象モデル内のジャーナル化するデータストアにはフラグを指定する必要があります。データストア・フラグの変更は、次回ジャーナルが開始(再開)されたときに反映されます。モデルまたはサブモデルにフラグを指定すると、そのモデルまたはサブモデルに含まれているすべてのデータストアにフラグが指定されます。
CDCに対してデータストアを追加または削除するには:
デザイナ・ナビゲータの「モデル」ツリーで、CDCに対して追加または削除するモデル、サブモデルまたはデータストアを右クリックします。
選択したデータストア、または選択したモデルまたはサブモデルのすべてのデータストアをCDCに追加する場合は、「チェンジ・データ・キャプチャ」→「CDCに追加」の順に選択し、選択したデータストア、または選択したモデルまたはサブモデルのすべてのデータストアをCDCから削除する場合は、「チェンジ・データ・キャプチャ」→「CDCから削除」の順に選択します。
CDCに追加されたデータストアにマーカー・アイコンが表示されます。ジャーナル・アイコンは小さい時計の形で表されます。アイコンの色は黄色で、ジャーナル・インフラストラクチャがまだ設定されていないことを示します。
注意: ジャーナル作成フェーズの後でもデータストアをCDCに追加できます。この場合は、ジャーナルを再開始する必要があります。ジャーナルを実行しているデータストアを簡易モードのCDCから削除する場合は、その個別のデータストアに対するジャーナルを停止する必要があります。一貫性セット・モードのCDCからデータストアを削除する場合は、モデルに対するジャーナルを再開する必要があります(他のデータストアのジャーナル化情報は維持されます)。 |
データストアの順序の設定(一貫性セット・ジャーナル化のみ):
データストアの順序を調整する必要があるのは、一貫性セット・ジャーナル化を使用する場合のみです。一貫性セットのデータストアは、変更データの使用時に参照整合性を維持する順序に調整する必要があります。たとえば、ORDER表にORDER_LINEデータストアからインポートされた参照があり(つまり、ORDER_LINEにはORDERを参照する外部キー制約が含まれます)、ORDERとORDER_LINEの両方がCDCに追加されている場合、ORDERデータストアはORDER_LINEより前の順序に設定する必要があります。PRODUCTデータストアにORDERとORDER_LINEの両方からインポートされた参照がある場合(つまり、ORDERとORDER_LINEの両方に、PRODUCT表に対する外部キー制約が含まれます)、その順序はさらに繰り下がります。
データストアの順序を設定するには:
デザイナ・ナビゲータの「モデル」ツリーで、一貫性セット・モードでジャーナル化するモデルを選択します。
そのモデルをダブルクリックし、編集します。
「ジャーナル化表」タブに移動します。
データストアが現在特定の順序に設定されていない場合は、「再編成」ボタンをクリックします。この機能によって、モデルで定義された外部キーに基づいて、ジャーナル化するデータストアの順序が推奨されます。推奨された順序を確認し、必要に応じてデータストアの順序を編集してください。
リストからデータストアを選択し、「上」および「下」ボタンを使用してリスト内を移動します。データストアの「順序」の値を直接編集することもできます。
データストアの順序が正しく設定されるまで前のステップを繰り返します。
「ファイル」メニューから「すべて保存」を選択します。
注意: データストアの順序の変更は、次回ジャーナルが開始(再開)されたときに反映されます。既存のシナリオでこのCDCセットからの変更を使用している場合は、CDCセットの新規編成を反映するようにシナリオを再生成する必要があります。 |
サブスクライバの追加または削除:
各サブスクライバは、簡易ジャーナル化の個別データストアまたは一貫性セット・ジャーナル化のモデルで発生する変更を個別のスレッドで使用します。サブスクライバの追加または削除は、各サブスクライバのために変更を捕捉できるように、CDCインフラストラクチャに登録されます。
サブスクライバを追加する手順:
デザイナ・ナビゲータの「モデル」ツリーで、一貫性セット・ジャーナル化を使用している場合はジャーナル化対象のデータ・モデルを選択し、簡易ジャーナル化を使用している場合は、データ・モデルまたは個別のデータストアを選択します。
右クリックして「チェンジ・データ・キャプチャ」→「サブスクライバ」→「サブスクライブ」の順に選択します。サブスクライバを選択するウィンドウが表示されます。
サブスクライバの名前を入力し、「サブスクライバの追加」ボタンをクリックします。追加するサブスクライバごとにこの操作を繰り返します。
注意: サブスクライバ名に一重引用符を含めることはできません。 |
「OK」をクリックします。
「実行」ウィンドウで、次の実行パラメータを選択します。
サブスクライバを登録する必要があるコンテキストを選択します。
ジャーナル化タスクを実行する論理エージェントを選択します。
「OK」をクリックします。
「セッションを開始しました」ウィンドウが表示されます。
「OK」をクリックします。
ジャーナル化タスクは、オペレータ・ナビゲータで確認できます。
サブスクライバを削除する手順もほぼ同じです。「チェンジ・データ・キャプチャ」→「サブスクライバ」の順に選択し、かわりに「サブスクライブ解除」オプションを選択します。
ジャーナルの開始後もサブスクライバを追加できます。ジャーナルの開始後に追加されたサブスクライバは、それらがサブスクライバ・リストに追加された後に発生した変更のみを取得します。
ジャーナルの開始/削除:
ジャーナルを開始するとCDCインフラストラクチャ(まだ存在していない場合)が作成されます。また、ジャーナル化対象データストアの追加、削除および順序変更が検証されます。
ジャーナルを削除すると、ジャーナル化インフラストラクチャ全体が削除されます。
注意: ジャーナルを削除すると、取得されたすべての変更とともにインフラストラクチャが削除されます。簡易ジャーナル化の場合は、さらにそのジャーナルを開始すると、ジャーナルの内容が削除されます。一貫性セットのJKMでは、データを失わずにジャーナルを再開することがサポートされています。 |
ジャーナルを開始または削除するには:
デザイナ・ナビゲータの「モデル」ツリーで、一貫性セット・ジャーナル化を使用している場合はジャーナル化対象のデータ・モデルを選択し、簡易ジャーナル化を使用している場合は、データ・モデルまたは個別のデータストアを選択します。
右クリックして「チェンジ・データ・キャプチャ」→「ジャーナルの開始」の順に選択するか(ジャーナルを開始する場合)、「チェンジ・データ・キャプチャ」→「ジャーナルの削除」の順に選択します(ジャーナルを停止する場合)。
「実行」ウィンドウで、次の実行パラメータを選択します。
ジャーナルを開始または削除する必要のあるコンテキストを選択します。
ジャーナル化タスクを実行する論理エージェントを選択します。
「OK」をクリックします。
「セッションを開始しました」ウィンドウが表示されます。
「OK」をクリックします。
ジャーナルを開始または削除するセッションが開始されます。ジャーナル化タスクは、オペレータ・ナビゲータで確認できます。
ジャーナル化設定の自動化:
ジャーナル化インフラストラクチャは、ジャーナル化KMによって物理レベルで実装されます。したがって、データ・モデルでジャーナル化が必要なコンテキストごとに、「サブスクライバの追加」および「ジャーナルの開始」操作を実行する必要があります。これらの操作は、Oracle Data Integratorパッケージを使用して自動化できます。複数のコンテキストにわたってジャーナル化インフラストラクチャをデプロイする場合は、操作を自動化することをお薦めします。
たとえば、開発者は開発環境のコンテキストでCDCを手動構成します。開発フェーズが完了すると、開発者はCDCインフラストラクチャを自動化するパッケージを提供します。CDCは、このパッケージを使用して、テスト環境のコンテキストに自動的にデプロイされます。同じパッケージを使用して本番環境のコンテキストにもCDCをデプロイします。
このようなパッケージの設計の概要を次に示します。パッケージの作成の詳細は、第10章「パッケージの使用」を参照してください。
CDC構成を自動化するには:
新規パッケージを作成します。
ジャーナル化するモデルまたはデータストアを「モデル」アコーディオンからパッケージの「ダイアグラム」タブにドラッグ・アンド・ドロップします。新規パッケージのステップが表示されます。
パッケージ・ダイアグラムのステップ・アイコンをダブルクリックします。このステップのプロパティ・インスペクタが開きます。
「タイプ」リストで、「ジャーナル化モデル」または「ジャーナル化データストア」を選択します。
「開始」ボックスを選択してジャーナルを開始します。
「サブスクライバの追加」ボックスを選択し、「サブスクライバ」グループにサブスクライバのリストを入力します。
サブスクライバ・フィールドに最初のサブスクライバを入力して「追加」ボタンをクリックし、「サブスクライバ」リストに追加します。すべてのサブスクライバに対してこの操作を繰り返します。
「ファイル」メニューから、「保存」を選択します。
このパッケージがコンテキスト内で実行されると、モデル構成に従ってジャーナルが開始され、指定したサブスクライバがこのコンテキストに作成されます。
サブスクライバとジャーナル管理は、異なるステップおよびパッケージに分割できます。サブスクライバの削除とジャーナルの停止も、同じ方法で自動化できます。
ジャーナルが開始されると、ジャーナル化インフラストラクチャが次の場所でデプロイまたは更新されます(このインフラストラクチャがまだインストールされていない場合)。
ジャーナル化ナレッジ・モジュールでトリガーを作成する場合、それらのトリガーは、ジャーナル化対象の表を保持するOracle Data Integratorの物理スキーマに対応する作業スキーマの表にインストールされます。ジャーナル化トリガーの名前の先頭には、物理スキーマの「ジャーナル化要素接頭辞」で定義された接頭辞が付きます。この接頭辞のデフォルト値は、T$です。データベース固有の取得プロセスの詳細は、Oracle Fusion Middleware Oracle Data Integrator接続性およびナレッジ・モジュール・ガイドを参照してください。
データ・サーバーのCDC共通インフラストラクチャは、そのデータ・サーバーのデフォルトとしてフラグが指定されたOracle Data Integratorの物理スキーマに対応する作業スキーマにインストールされます。この共通インフラストラクチャには、データ・サーバーでジャーナル化されるすべてのスキーマのサブスクライバや一貫性セットなどに関する情報が含まれます。この共通インフラストラクチャは、接頭辞にSNP_CDC_という名前が付いた表で構成されます。
ジャーナル表とジャーナル化ビューは、ジャーナル化対象の表を保持するOracle Data Integratorの物理スキーマに対応する作業スキーマにインストールされます。ジャーナル表とジャーナル化ビューの名前の先頭には、物理スキーマの「ジャーナル化要素接頭辞」で定義された接頭辞が付きます。デフォルト値は、ジャーナル表ではJ$
で、ジャーナル化ビューではJV$
です。
ジャーナル化インフラストラクチャのすべてのコンポーネント(トリガーを除く、統合表、エラー表、ロード表などのすべてのData Integrator一時オブジェクトなど)は、データ・サーバーのOracle Data Integratorの物理スキーマに対応する作業スキーマにインストールされます。これらの作業スキーマは、アプリケーション・データを格納するスキーマ(データ・スキーマ)とは別に維持する必要があります。
重要: ジャーナル化トリガーは、ジャーナル化対象データと同じスキーマに必要に応じてインストールされる唯一のジャーナル化用コンポーネントです。サード・パーティのソフトウェア・パッケージに含まれる表にトリガーを作成するには、その前に、この操作がソフトウェア規約やメンテナンス契約に違反しないことを確認してください。また、ソフトウェア・パッケージの一般的な動作を妨げることなく、トリガーをインストールして実行することが技術的に可能であることも確認してください。 |
モデルやインタフェースのデータストアには、デザイナの現在のコンテキストにおけるジャーナル化ステータスを示す次のアイコン・マーカーがあります。
OK: ジャーナル化は、現在のコンテキストにおいてこのデータストアに対してアクティブです。また、インフラストラクチャはこのデータストアで稼働中です。
インフラストラクチャなし: ジャーナル化はモデルでアクティブとしてマークされていますが、現在のコンテキストにおいて適切なジャーナル化インフラストラクチャが検出されていません。ジャーナルを開始する必要があります。この状態は、インフラストラクチャに実装されているジャーナル化モードがモデルに宣言されているモードと一致しない場合に発生する可能性があります。
断片: ジャーナル化はモデルで非アクティブとしてマークされていますが、コンテキストにおいてジャーナル化表などのジャーナル化インフラストラクチャの断片がこのデータストアで検出されています。この状態は、ジャーナルを停止せずにCDCから表を削除した場合に発生する可能性があります。
ジャーナル化の開始後にサブスクライバで変更を追跡すると、取得された変更データを使用できます。これらの変更データを表示または使用できるのは、ジャーナル化されたデータストアがインタフェースのソースとして使用されている場合です。
変更データを表示するには:
デザイナ・ナビゲータの「モデル」ツリーで、ジャーナル化されたデータストアを選択します。
右クリックして「チェンジ・データ・キャプチャ」→「ジャーナル・データ」の順に選択します。
現在のコンテキストのデータストアで取得された変更がグリッドに表示され、追加された次の3つの列にその詳細が示されます。
JRN_FLAG: 変更のタイプを示すフラグ。挿入または更新されたレコードには値Iが使用され、削除されたレコードには値Dが使用されます。
JRN_SUBSCRIBER: サブスクライバの名前。
JRN_DATE: 変更のタイムスタンプ。
ジャーナル化されたデータは、主に統合プロセス内で使用されます。変更データは、統合インタフェースのソースとして使用できます。その使用方法は、ジャーナル化モードに応じて異なります。
簡易ジャーナル化の変更データを使用する場合は、ジャーナル化されたデータストアをソースとして使用するインタフェースを設計します。インタフェースの作成の詳細は、第11章「統合インタフェースの使用」を参照してください。
簡易ジャーナル化を使用したインタフェースの設計
ジャーナル化されたデータストアをインタフェース・ダイアグラムに挿入すると、そのデータストアのプロパティ・パネルに「ジャーナル化されたデータのみ」チェック・ボックスが表示されます。
このボックスを選択すると、次の処理が実行されます。
ジャーナル化列(JRN_FLAG、JRN_DATEおよびJRN_SUBSCRIBER)がデータストアで使用可能になります。
ジャーナル化フィルタもこのデータストアで自動的に生成されます。このフィルタによって、取得されるソース・データの量がジャーナル化されたデータのみに削減されます。このフィルタは、常にソースで実行されます。このフィルタはカスタマイズできます(一定の時間範囲内の変更を処理する、または特定タイプの変更のみを処理するなど)。特定のサブスクライバ用にすべての変更を取得するための一般的なフィルタは、JRN_SUBSCRIBER = '<subscriber_name>'です。
簡易ジャーナル化モードでは、(ジャーナル・フィルタの適用後に)インタフェースによって反映されたすべての変更は、自動的にインタフェースの最後に使用されたとみなされ、ジャーナルから削除されます。これらの変更は、後続のインタフェースで使用できません。
ジャーナル化されたデータを処理する場合、統合ナレッジ・モジュールのSYNC_JRN_DELETEオプションは慎重に設定してください。このオプションでは、ジャーナルで削除対象(D)としてマークされ、ジャーナル化フィルタで除外されないレコードがターゲット・データストアから削除されます。このオプションを「いいえ」に設定すると、統合操作では挿入と更新のみが処理されます。
一貫性ジャーナル化での変更データの使用は、インタフェース設計に関しては簡易ジャーナル化と同様です。ただし、セット内で変更の一貫性を確保するために、インタフェースで変更データを処理する前と後に追加のステップが必要です。
これらの操作は、ジャーナル化されたモデルのコンテキスト・メニューから手動で実行することも、パッケージで自動的に実行することもできます。
変更データ使用前の操作
一貫性セット・ジャーナル化を使用する場合は、変更データの使用前に次の操作を実行する必要があります。
ウィンドウの拡張: 一貫性ウィンドウは、参照整合性に違反することなく挿入、更新および削除を実行できる、一貫性セットのすべての表における使用可能な変更の範囲です。ウィンドウの拡張操作では、前回のウィンドウの拡張操作以降に取得した新規の変更を反映するようにこのウィンドウを計算(再計算)します。この操作は、「ジャーナル化モデル」タイプのパッケージ・ステップを使用して実装します。この操作は、他のジャーナル化操作とは別にスケジュールできます。
サブスクライバのロック: ウィンドウの拡張は一貫性セット全体に適用されますが、サブスクライバは変更を個別に使用します。この操作では、一貫性ウィンドウの変更を対象に、1つ以上のサブスクライバに固有のスナップショットを実行します。このスナップショットには、サブスクライバにまだ使用されていない一貫性ウィンドウ内のすべての変更が含まれます。この操作は、「ジャーナル化モデル」タイプのパッケージ・ステップを使用して実装します。サブスクライバに取得された変更を使用する最初のインタフェースより前に、この操作を必ず実行する必要があります。
インタフェースの設計
一貫性セット・ジャーナル化の変更データも、パッケージ内で順序付けされたインタフェースを使用して処理します。
一貫性セット・ジャーナル化の使用時にインタフェースを設計する手順は、簡易ジャーナル化と同様です。ただし、次の点が異なります。
(JRN_FLAG、JRN_DATEおよびJRN_SUBSCRIBERでフィルタ処理された)インタフェースで反映される変更は、インタフェースの最後に自動的にパージされません。これらの変更は、後続のインタフェースで再利用できます。これらの変更の使用をコミットし、不要なエントリをジャーナルから削除するには、それぞれサブスクライバのロック解除操作とジャーナルのパージ操作(後続の説明を参照)が必要です。
一貫性モードでは、ジャーナル化フィルタでJRN_DATE列を使用しないでください。使用された変更をこのタイムスタンプでフィルタ処理すると、変更の一貫性が確保されない場合があります。
変更データ使用後の操作
変更データの使用後に、次の操作を実行する必要があります。
サブスクライバのロック解除: この操作では、サブスクライバのロック操作時にロックされた変更の使用をコミットします。この操作は、サブスクライバですべての変更が処理された後にのみ実行する必要があります。この操作は、「ジャーナル化モデル」タイプのパッケージ・ステップを使用して実装します。サブスクライバに取得された変更を使用する最後のインタフェースより後に、この操作を必ず実行する必要があります。変更を再度処理する必要がある場合(エラーなどの場合)、この操作は実行しないでください。
ジャーナルのパージ: サブスクライブしている変更をすべてのサブスクライバが使用した後でも、各エントリはジャーナル化表に残るため、それらを削除する必要があります。この作業は、ジャーナルのパージ操作で実行します。この操作は、「ジャーナル化モデル」タイプのパッケージ・ステップを使用して実装します。この操作は、他のジャーナル化操作とは別にスケジュールできます。
注意: ウィンドウの拡張またはジャーナルのパージは、データストアで実行できます。この操作は、同じ一貫性セットの表における変更を異なる頻度で処理します。変更の一貫性が一貫性セット・レベルで維持されなくなる可能性があるため、このオプションは慎重に使用してください。 |
一貫性セットCDC操作の自動化
一貫性セットCDCの使用を自動化するには、次の操作を実行するパッケージを使用します。
新規パッケージを作成します。
ジャーナル化対象のモデルを「モデル」ツリーからパッケージの「ダイアグラム」タブにドラッグ・アンド・ドロップします。新規パッケージのステップが表示されます。
パッケージ・ダイアグラムのステップ・アイコンをダブルクリックします。このステップのプロパティ・インスペクタが開きます。
「タイプ」リストで、「ジャーナル化モデル」または「ジャーナル化データストア」を選択します。
実行する一貫性セット操作を選択します。
「サブスクライバのロック」または「サブスクライバのロック解除」操作を選択した場合は、サブスクライバ・フィールドに最初のサブスクライバを入力して「追加」ボタンをクリックし、「サブスクライバ」リストに追加します。ロックまたはロック解除するすべてのサブスクライバに対して、この操作を繰り返します。
「ファイル」メニューから「すべて保存」を選択します。
Oracle Data Integratorには、取得された変更に関する情報をリフレッシュしたり、他のプロセスを起動するためにジャーナル化で使用できる次の一連のツールが用意されています。
OdiWaitForData: 表または一連の表の一定数の行を待機します。
OdiWaitForLogData: ジャーナル化表またはジャーナル化表のリストで一定数の変更が発生するのを待機します。このツールは、OdiRefreshJournalCountをコールして、取得された新規の変更をカウントします。
OdiWaitForTable: 表が作成され、事前定義された数の行が移入されるのを待機します。
OdiRetrieveJournalData: 指定されたジャーナル化サブスクライバの特定の表リストまたはCDCセットについて、ジャーナル化イベントを取得します。データベース固有のプロセスを使用してジャーナル化表をロードする場合は、このツールをコールする必要があります。このツールは、特定のナレッジ・モジュールとともに使用する必要があります。詳細は、ナレッジ・モジュールの説明を参照してください。
OdiRefreshJournalCount: 指定されたジャーナル化サブスクライバの特定の表リストまたはCDCセットで使用する行数をリフレッシュします。
これらの機能の詳細は、付録A「Oracle Data Integrator Toolsリファレンス」を参照してください。
ジャーナル化されたデータを使用するパッケージを設計する場合は、多くのテンプレートを使用できます。次に、一般的なテンプレートをいくつか示します。パッケージ作成の詳細は、第10章「パッケージの使用」を参照してください。
テンプレート1: 1つの単純なパッケージ(一貫性セット)
ステップ1: ウィンドウの拡張 + サブスクライバのロック
ステップ2からn-1: ジャーナル化されたデータを使用するインタフェース
ステップn: サブスクライバのロック解除 + ジャーナルのパージ
このパッケージは、すべての変更を処理するように毎分スケジュールされます。このテンプレートは、ジャーナル化表に定期的に変更が発生する場合に適しています。
テンプレート2: 1つの単純なパッケージ(簡易ジャーナル化)
ステップ1からn: ジャーナル化されたデータを使用するインタフェース
このパッケージは、すべての変更を処理するように毎分スケジュールされます。このテンプレートは、ジャーナル化表に定期的に変更が発生する場合に適しています。
テンプレート3: OdiWaitForLogDataの使用(一貫性セットまたは簡易)
ステップ1: OdiWaitForLogData。指定された間隔の経過後に新規ログ・データが検出されない場合、パッケージは終了します。
ステップ2: OdiStartScenを使用して、テンプレート1または2と同等のシナリオを実行します
このパッケージは、定期的にスケジュールされます。変更データが処理されるのは、新規の変更が検出された場合のみです。これによって、ジャーナル化表に不定期に変更が発生する場合に不要な処理を回避できます(つまり、処理するデータのないインタフェースを実行せずに済みます)。
テンプレート4: 個別のプロセス(一貫性セット)
このテンプレートでは、一貫性ウィンドウ、パージ、および(2つの異なるサブスクライバでの)変更の使用を異なるパッケージに分割します。
パッケージ1: ウィンドウの拡張
ステップ1: OdiWaitForLogData。指定された間隔の経過後に新規ログ・データが検出されない場合、パッケージは終了します。
ステップ2: ウィンドウの拡張。
このパッケージは、毎分スケジュールされます。ウィンドウの拡張によって、リソースを消費する可能性があります。この操作は新規データが発生した場合にのみ起動することをお薦めします。
パッケージ2: ジャーナルのパージ(週末)
ステップ1: ジャーナルのパージ
このパッケージは、毎週金曜日に1回スケジュールされます。週全体のジャーナルが追跡されます。
パッケージ3: サブスクライバAに対する変更の処理
ステップ1: サブスクライバAのロック
ステップ2からn-1: サブスクライバAのジャーナル化されたデータを使用するインタフェース。
ステップn: サブスクライバAのロック解除
このパッケージは、毎分スケジュールされます。このようなパッケージは、MOMでイベントを生成する場合などに使用します。
パッケージ4: サブスクライバBに対する変更の処理
ステップ1: サブスクライバBのロック
ステップ2からn-1: サブスクライバBのジャーナル化されたデータを使用するインタフェース。
ステップn: サブスクライバBのロック解除
このパッケージは、毎日スケジュールされます。このようなパッケージは、夜間に変更データをデータ・ウェアハウスにロードする場合などに使用します。