Oracle Warehouse Builderを使用すると、マッピングを使用してフラット・ファイルおよびSAPなどの異なるシステムからデータを抽出できます。コード・テンプレート(CT)マッピングはオープン接続に役立ち、データの移動方法をカスタマイズできます。
この章では、SAPおよびCTマッピングの作成に使用する手順を説明します。ここには、SAPシステムおよびその他の異機種データベースに対するETLの実行例も含まれています。
この章の内容は次のとおりです。
マッピングでフラット・ファイル演算子を使用して、データをフラット・ファイルから抽出およびフラット・ファイルにデータをロードします。フラット・ファイル演算子はソースまたはターゲットとして使用できますが、両方の組合せは使用できません。
「フラット・ファイルからのデータの抽出」の説明に従って、フラット・ファイルからデータを抽出するマッピングを定義します。
「フラット・ファイルへのデータのロード」の説明に従って、フラット・ファイルにデータをロードするマッピングを定義します。
後続の手順
マッピングを設計してマッピングのコードを生成した後、プロセス・フローを作成するか、直接配布を続行して実行できます。
プロセス・フローを使用して、マッピングを相互に関連付けます。たとえば、あるマッピングが完了すると電子メール通知がトリガーされて別のマッピングが開始されるようなプロセス・フローを設計できます。詳細は、第8章「プロセス・フローの設計」を参照してください。
マッピングおよび作成した関連プロセス・フローを配布し、第12章「ターゲット・スキーマへの配布およびETLロジックの実行」の説明に従って、マッピングを実行します。
フラット・ファイルからデータを抽出するには、マッピングのソースとしてフラット・ファイル演算子を使用します。
または、フラット・ファイル定義に基づき外部表を定義し、ソースとして外部表演算子を使用できます。大量のデータをロードする場合、フラット・ファイルからロードすることにより、DIRECT PATH SQL*Loaderオプションを使用できるようになり、パフォーマンスが向上します。大量のデータをロードしない場合、外部表を使用中に使用できる多くのリレーショナル変換を利用できます。
関連項目: 外部表とフラット・ファイルの比較の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。 |
ソースとして使用する場合、フラット・ファイル演算子は、SQL*Loaderユーティリティを使用してフラット・ファイルからデータを読み取る行セット・ジェネレータとして機能します。フラット・ファイル・マッピングのターゲットは表などのリレーショナル・オブジェクトにできます。外部表演算子は外部表が読取り専用であるためターゲットにはできません。
フラット・ファイル・ソース演算子を使用してマッピングを設計する場合は、次の演算子を使用できます。
注意: 順序、式または変換演算子を使用する場合、SQL*Loaderの直接ロード設定は構成パラメータとして使用できません。 |
フラット・ファイルをソースとして使用する場合、フラット・ファイル・ソースからリレーショナル・ターゲットへのコネクタを必ず作成してください。コネクタを作成しないと、マッピングが正常に配布されません。
フラット・ファイルからデータを抽出するマッピングの定義
フラット・ファイルのメタデータをOracle Warehouse Builderワークスペースにインポートします。
関連項目: フラット・ファイルのメタデータのインポートの詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。 |
プロジェクト・ナビゲータで、「マッピングの定義手順」の説明に従ってマッピングを作成します。
プロジェクト・ナビゲータから、フラット・ファイルをデータの抽出元からマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
マッピング・エディタのキャンバス上で、ターゲット・オブジェクトを表す演算子をフラット・ファイルから抽出したデータをロードするデータに追加します。また、ソース・データの変換に必要な変換演算子を追加します。
マッピング・エディタのキャンバス上で、ソース、変換およびターゲット演算子間のデータ・フローを作成します。
「ファイル」メニューから 検証」を選択してマッピングを検証します。検証エラーがある場合は修正します。
フラット・ファイルにデータをロードするには、マッピングでフラット・ファイル演算子をターゲットとして使用します。
フラット・ファイル・ターゲットを使用したマッピングでは、データを表の行にロードするのではなく、データをフラット・ファイルにロードするPL/SQLパッケージが生成されます。
注意: 1つのマッピングは、最大50のフラット・ファイル・ターゲット演算子を含むことができます。 |
既存のフラット・ファイルは、レコード・タイプが単一でも複数でも使用できます。複数のレコード・タイプのフラット・ファイルをターゲットとして使用する場合は、1つのレコード・タイプに対してのみマップできます。同じソースからフラット・ファイルのすべてのレコード・タイプをロードする場合、同じフラット・ファイルをターゲットとしてマッピングに再ドロップし、別のレコード・タイプにマップできます。この使用例は、「SQL*Loaderマッピングでの参照整合性を確認するためのダイレクト・パス・ロードの使用」を参照してください。または、ロードするレコード・タイプごとに異なるマッピングを作成してください。
フラット・ファイル・ターゲットの作成
次のいずれかの方法で、フラット・ファイルのターゲット演算子を作成します。
既存のフラット・ファイル定義をリポジトリにインポートし、このフラット・ファイルをマッピングのターゲットとして使用します。
フラット・ファイルの作成ウィザードを使用してフラット・ファイルを定義し、マッピングのターゲットとして使用します。
「新規フラット・ファイル・ターゲットの作成」の説明に従って、新規フラット・ファイルを作成します。
データをフラット・ファイルにロードするマッピングの定義
次の手順で、データをフラット・ファイルにロードするマッピングを定義します。
ターゲット・モジュールで、「フラット・ファイル・ターゲットの作成」で説明する方法のいずれかを使用して、データをロードするフラット・ファイルを定義します。
プロジェクト・ナビゲータで、「マッピングの定義手順」の説明に従ってマッピングを作成します。
プロジェクト・ナビゲータから、データのロード先のフラット・ファイルをマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
マッピング・エディタのキャンバス上で、データのロード元のソース・オブジェクトを表す演算子をフラット・ファイルにロードします。また、ソース・データの変換に使用する変換演算子を追加します。
マッピング・エディタのキャンバス上で、ソース、変換およびターゲット演算子間のデータ・フローを作成します。
「ファイル」メニューから 検証」を選択してマッピングを検証します。検証エラーがある場合は修正します。
フラット・ファイル・モジュールを作成していない場合は、ここで作成します。
フラット・ファイル・モジュールは、後述されている手順で物理フラット・ファイルを作成する際に必要です。
「マッピングの定義」の説明に従って、マッピングを定義します。
フラット・ファイル演算子をキャンバスにドラッグ・アンド・ドロップします。
「フラット・ファイル演算子の追加」ダイアログ・ボックスで、「バインドされていない演算子を属性なしで作成」を選択し、新しいターゲット演算子に名前を割り当てます。
「演算子の編集」の説明に従って、新しい演算子を編集します。
この時点で、フラット・ファイルを表す演算子は定義しましたが、実際のフラット・ファイル・ターゲットは作成していません。
データベースにフラット・ファイルを作成するには、演算子を右クリックして「作成とバインド」を選択します。
フラット・ファイル・モジュールの選択を要求するダイアログ・ボックスが表示され、選択するとフラット・ファイルに一意名を割り当てることができます。「OK」をクリックすると、Oracle Warehouse Builderでは指定したモジュールのファイル・ノードに新規ターゲットが表示されます。
「マッピングを使用した抽出、変換およびロード(ETL)の実行手順」の説明に従って、マッピングの定義を続行します。
SAP表からメタデータをインポートした後に、抽出マッピングを定義してSAPシステムからデータを取得する必要があります。
マッピング・エディタを使用して、SAP表を含むマッピングを作成します。SAP表のマッピングの作成は、その他のデータベース・オブジェクトのマッピングの作成と同様です。ただし、マッピングで使用できる演算子には制約があります。SAP表を含むマッピングでは、使用できるマッピング演算子は表、フィルタ、ジョイナおよびマッピング入力パラメータのみです。
一般的なSAP抽出マッピングは、1つ以上のSAPソース表(透過、クラスタまたはプール)、1つ以上のフィルタまたはジョイナ演算子、取得データを格納するSAP以外のターゲット表(通常はOracle Database表)で構成されます。
注意: マッピングにSAPソース表とSAP以外(Oracle Database)のソース表の両方を持つことはできません。ただし、Oracle Database表はステージング表として使用できます。 |
図7-1は、SAPソースからデータを抽出するマッピングを示したものです。
この例では、入力パラメータが日付値を取り、BKPF
表のデータはこの日付に基づいてフィルタされます。ジョイナ演算子を使用すると、複数の表のデータを結合でき、結合されたデータ・セットはステージング表に格納されます。
この項の内容は次のとおりです。
マッピングへのSAP表の追加手順:
マッピング・エディタで、必要なSAP表をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
マッピング・キャンバスに、SAP表を表す表演算子が表示されます。
プロパティ・インスペクタを使用して、マッピングの表のSQL*Loaderプロパティを設定します。
SAPソース表のロード・タイプの設定手順:
マッピング・エディタで、SAPソース表を選択します。プロパティ・インスペクタにSAP表のプロパティが表示されます。
ロード・タイプ・リストからロード・タイプを選択します。マッピング言語としてABAPコードを指定すると、表7-1に示すSQL*Loaderコードが生成されます。
次の手順を実行し、SAP表を含むマッピングを構成します。
「構成」タブを使用して、「言語パラメータの設定」で説明するコード生成言語を定義します。
「ランタイム・パラメータの設定」で説明するように、「構成」タブで、ABAP固有のパラメータ、ディレクトリおよび初期化ファイルの設定を設定します。
言語パラメータを使用すると、マッピング用に生成するコードのタイプを選択できます。SAPソース表を含むマッピングの場合、Oracle Warehouse Builderでは言語パラメータは自動的にABAPに設定されます。このパラメータがABAPに設定されていることを確認します。
言語をABAPに設定し、「構成」タブで「ランタイム・パラメータ」ノードを開き、ABAPコード生成に固有の設定を表示します。
一部の設定には、コード生成を最適化するプロパティが事前に設定されています。これらの設定を変更すると、コード生成プロセスが低速になる場合があるため、そのままにしておくことをお薦めします。
SAPマッピングには、次のランタイム・パラメータを使用できます。
バックグラウンド・ジョブ: ABAPレポートをSAPシステムでバックグラウンド・ジョブとして実行する場合は、このオプションを選択します。長時間実行されるジョブには、このオプションを有効にします。SAPでは、長時間実行されるフォアグラウンド・バッチ・ジョブは、一定時間を経過するとハングしたものとみなされます。そのため、そのような抽出にはバックグラウンド・ジョブを実行することが望ましいです。
データファイル名: マッピング用のABAPコードをSAPシステムで実行する際に生成されるデータファイルの名前を指定します。
SQL結合失敗: 可能な場合は、ABAPコードを生成するための次のヒントを指定します。
SELECT < > INTO < > FROM (T1 as T1 inner join T2 as T2) ON <condition >
デフォルト設定は「TRUE」です。
結合用の主外部キー: 結合に使用する主キーを指定します。
ABAPレポート名: マッピング用に生成されたABAPコード・ファイルの名前を指定します。これは、ABAPコードを実行するためにカスタム・ファンクション・モジュールを実行する場合のみ必要になります。
SAPシステム・バージョン: ABAPコードを配布するSAPシステムのバージョン番号を指定します。MySAP ERPおよびその他のすべてのバージョンの場合は、SAP R/3 4.7を選択します。4.7よりも前のバージョンでは、別のABAPコードが必要になります。
ステージング・ファイル・ディレクトリ: ABAPコードにより生成されたデータファイルが格納されるディレクトリのロケーションを指定します。
SAPのロケーション: データの抽出元のSAPインスタンスのロケーションを指定します。
このパラメータは、マッピングにジョイナ演算子が含まれており、明示的に駆動表を指定する場合にのみ設定する必要があります。SQLとは異なり、ABAPコードの生成はルール・ベースです。そのため、表が正しい順序でロードされるように、マッピングを設計する必要があります。または、表を結合する順序を明示的に指定することもできます。「構成」タブで「表演算子」を開き、各表に対して「結合ランク」を指定します。駆動表の「結合ランク」の値は1に設定する必要があり、後続の表にはそれに続く値を設定します。
駆動表およびその他の表の結合順序をOracle Warehouse Builderで決定することもできます。その場合は、「結合ランク」に値を入力しないでください。
抽出マッピングの設計後には、Oracle Warehouse Builderのすべてのマッピングと同様に、マッピングを検証、生成、配布する必要があります。
SAPマッピング用のスクリプトの生成手順:
SAPマッピングを右クリックして「生成」を選択します。
スクリプト・ノードの「ログ」ウィンドウに生成結果が表示されます。
スクリプト・ノードを開いてスクリプト名を選択し、「ログ」ウィンドウのツールバーの「スクリプトの表示」をクリックします。
生成済コードが「コード・ビューア」に表示されます。
コード・エディタを使用してファイルを編集、印刷または保存できます。コード・ビューアを閉じてデザイン・センターに戻ります。
スクリプトを保存するには、スクリプトを右クリックし、「ログ」ウィンドウのツールバーの「スクリプトを別名で保存」をクリックします。
SAPマッピングを生成した後、それを配布してターゲット・ロケーションに論理オブジェクトを作成する必要があります。SAPマッピングを配布するには、そのマッピングを右クリックして「配布」を選択します。また、コントロール・センター・マネージャからマッピングを配布することもできます。
配布の詳細は、第12章 「ターゲット・スキーマへの配布およびETLロジックの実行」を参照してください。
SAPマッピングを配布すると、ABAPマッピングが作成され、Oracle Warehouse Builderランタイム・スキーマに格納されます。また、OWB_HOME
\owb\deployed_files
ディレクトリにABAP
ファイルが保存されます。OWB_HOME
は、Oracle Warehouse BuilderインストールのOracle Databaseホーム・ディレクトリの場所です。Oracle Databaseに付属するOracle Warehouse Builderインストールを使用している場合、これはデータベース・ホームと同じです。
SAPシステムからのデータの取得が完全自動、半自動、手動であるかによって、後続のタスクを実行する必要があります。この項の内容は次のとおりです。
完全自動化システムの場合、Oracle Warehouse BuilderユーザーはSAPシステム内の定義済ファンクション・モジュールにアクセスできます。これにより、ユーザーはSAP管理者に依存することなく、すべてのABAPコードを実行してSAPシステムから直接データを取得できます。
図7-2は、自動データ取得システムを図解したものです。
依存性がないため、ABAPコードをSAPシステムに送信し、SAPシステムからデータファイルを取得するプロセスを自動化できます。Oracle Warehouse Builderでは、FTPを使用してOracle Warehouse Builderシステムにデータ・ファイルを転送し、SQL*Loaderを使用して取得データが含まれるターゲット・ファイルをロードします。
自動システムは次のように機能します。
抽出マッピングを設計し、このマッピング用のABAPコードを生成します。
マッピングを配布する前に、マッピングについて次の構成パラメータが設定されていることを確認します。
ABAPレポート名: マッピング用に生成されたABAPコードを格納するファイル。
SAPのロケーション: データの取得元になるSAPシステムのロケーション。
データファイル名: ABAPコードの実行によって生成されたデータを格納するデータファイル名。
また、SAPロケーションに関する次の追加の接続詳細が指定されていることも確認します。
実行ファンクション・モジュール: 事前定義済のSAPファンクション・モジュールの名前を指定します。このファンクション・モジュールは、実行時にパラメータとしてABAPレポート名を受け取り、ABAPコードを実行します。
FTPディレクトリ: Oracle Warehouse Builderシステム上のディレクトリ。ファンクション・モジュールの実行により生成されたデータ・ファイルは、FTPを使用してこのディレクトリに送信されます。
FTPディレクトリの書込み権限を持つユーザー名も指定します。
次に、マッピングを開始します。これにより、次のタスクが自動的に実行されます。
Oracle Warehouse Builderは、ABAPを配布し、RFC_ABAP_INSTALL_AND_RUNを使用してABAPのロードとSAPでの実行を行います。
リモート・ファンクション・コール(RFC)を使用して、ABAPコードがSAPシステムに送信されます。
SAPシステムでは、コードによりソース表からデータが取得され、データ・ファイルが作成されます。
このデータ・ファイルは、ランタイム・パラメータ「ステージング・ファイル・ディレクトリ」で指定したロケーションに格納されます。
Oracle Warehouse Builderは、FTPを使用してこのデータ・ファイルをOracle Warehouse Builderシステムに戻します。
ファイルは、「FTPディレクトリ」フィールドで指定したロケーションに格納されます。
SQL*Loaderを使用して、マッピングのターゲット表がデータ・ファイルのデータとともにロードされます。
このシステムの利点は、完全に自動化されたエンドツーエンドのソリューションを作成してSAPデータを取得できることです。ユーザーが抽出マッピングを作成し、Oracle Warehouse Builderからマッピングを実行するだけで、ABAPコードが作成されてSAPシステムに送信され、結果のデータ・ファイルが取得され、取得したデータがターゲット表にロードされます。
半自動システムでは、Oracle Warehouse Builderユーザーには事前定義済のファンクション・モジュールに対するアクセス権限がないため、このファンクション・モジュールを使用してABAPコードを実行できません。ユーザーは抽出マッピングを作成して配布し、ABAPコードをSAP管理者に送信します。SAP管理者はSAPシステム上で実行できるようにコードの検証を行います。
図7-3は、半自動システムを図解したものです。
半自動システムは次のように機能します。
抽出マッピングを設計し、このマッピング用のABAPコードを生成します。
次に、ABAPコードをテスト環境に転送し、コードをテストします。
次に、ABAPコードをSAP管理者に送信します。SAP管理者はコードをSAPリポジトリにロードします。
SAP管理者が新しいABAPレポート名を作成します。
次に、このABAPレポート名をコールして、本番環境でABAPコードを実行できます。
SAPシステムでマッピングを実行する前に、マッピングについて次の構成パラメータを設定していることを確認します。
ABAPレポート名: SAP管理者は、ABAPコードを確認した後、レポート名を提供します。このABAPファイルを実行します。
SAPのロケーション: データの取得元になるSAPシステムのロケーション。
データファイル名: ABAPコードの実行中に生成されたデータを格納するデータファイル名。
また、SAPロケーションに関する次の追加の接続詳細が指定されていることも確認します。
実行ファンクション・モジュール: SAP管理者が作成したカスタム・ファンクション・モジュールの名前を指定します。このファンクション・モジュールは、実行時にパラメータとしてABAPレポート名を受け取り、ABAPコードを実行します。SAP管理者からファンクション・モジュール名を入手する必要があります。
FTPディレクトリ: Oracle Warehouse Builderシステム上のディレクトリ。ABAPコードの実行によって生成されたデータ・ファイルは、FTPを使用してこのディレクトリに送信されます。
FTPディレクトリの書込み権限を持つユーザー名も指定します。
ユーザーが本番環境でマッピングを実行すると、ABAPコードが生成され、リモート・ファンクション・コール(RFC)を使用してSAPシステムに送信されます。
SAPシステム内で、カスタマイズしたファンクション・モジュールを使用してABAPコードが実行され、データ・ファイルが生成されます。
このデータ・ファイルは、ランタイム・パラメータ「ステージング・ファイル・ディレクトリ」で指定したロケーションに格納されます。
Oracle Warehouse Builderは、FTPを使用してこのデータ・ファイルをOracle Warehouse Builderシステムに戻します。
ファイルは、「FTPディレクトリ」フィールドで指定したロケーションに格納されます。
Oracle Warehouse Builderでは、SQL*Loaderを使用して、ターゲット表がデータ・ファイルのデータとともにロードされます。
手動システムの場合、Oracle Warehouse Builderユーザーの役割は、マッピング用のABAPコードの生成およびABAPコードのSAP管理者への送信に限定されます。このシステムでのタスクは次のとおりです。
抽出マッピングを作成し、マッピング用のABAPコードを生成します。
マッピングを設計する際に、データ・ファイルを格納するデータ・ファイル名を必ず指定してください。
SAP管理者にABAPコードを送信します。
SAP管理者は、SAPシステムでABAPコードを実行します。
コードの実行により、データ・ファイルが生成されます。
Oracle Warehouse Builder側で、ユーザーはデータ・ファイルを取得するプロセス・フローを作成できます。プロセス・フローには次のアクティビティを含める必要があります。
ファイルが存在アクティビティにより、データファイルの有無が確認されます。
ファイルが存在する場合、FTPアクティビティがファイルをOracle Warehouse Builderシステムに転送します。
ファイルが存在しない場合は、ファイルが提供されるまで待機してからFTPを実行します。
SQL*Loaderを使用して、ターゲット表がデータ・ファイルのデータとともにロードされます。
図7-4は、データ・ファイルを取得するプロセス・フローを示したものです。
環境によっては、SAP管理者がどのユーザーにもSAPシステムへのアクセスを許可しない場合があります。そのような場合には、手動システムの実装が唯一使用できるオプションになります。
コード・テンプレートを作成またはインポートして配布すると、特定のプラットフォーム上で特定のタスクを実行するテンプレートをワークスペースで使用できます。このテンプレートを使用してデータをロードまたは変換するには、このコード・テンプレートを使用するマッピングを作成する必要があります。
コード・テンプレートを使用して実行できるタスクの一部は、次のとおりです。
これらのデータベースからデータを抽出することでDB2またはSQL Serverなどの異機種データベースとの統合
現在のコード・テンプレート・ライブラリの機能の拡張。たとえば、データ・ポンプなどのOracle Database機能を使用する新規のコード・テンプレートを構成して、Oracleシステム間でデータを高速に移動できます。
PL/SQLマッピングに生成されたコードがアプリケーションの要件に一致しない場合に、コード・テンプレートを使用することもできます。
コード・テンプレートとの関連を含むマッピングをコード・テンプレート(CT)マッピングといいます。一般的に、IBM DB2およびMicrosoft SQL ServerなどのOracle以外のデータベースからデータを抽出またはロード(変換あり、変換なしの両方)する場合に使用されます。Oracle Gatewaysを使用してOracle以外のシステムから抽出、Oracle以外のシステムへ書込みすることもできます。
Oracle Databaseからデータを抽出して別のOracle Databaseに変換およびロードする場合は、コード・テンプレート・マッピングを使用、またはOracleターゲット・モジュールのマッピング・ノードでマッピングを作成できます。
コード・テンプレート・マッピングを使用して、コード・テンプレートを使用するOracleおよびOracle以外のデータベースからデータを抽出、変換またはOracleおよびOracle以外のデータベースにロードします。
Oracleデータベース間でデータを移動する場合にCTマッピングを使用する主な理由は、データベース・リンク以外の技術を使用したデータ移動です。コード・テンプレートを使用すると、データ・ポンプなどの機能に基づいてバルク・データ移動を実装することができます。
コード・テンプレート・マッピングの定義場所
コード・テンプレート・マッピングを作成する場合は、プロジェクト・マネージャのプロジェクトのテンプレート・マッピング・ノードを使用します。このノードはOracle以外のマッピング(PL/SQL、SQL*LoaderまたはABAP以外)を含める場合に使用します。
CTマッピングを作成する場合、マッピング・エディタには「論理ビュー」および「実行ビュー」の2つのタブがあります。論理ビューは、マッピング演算子を追加および演算子間のフローを作成してマッピングを定義する場合に使用します。「実行ビュー」を使用して、マッピングの実行方法を指定する実行ユニットを定義します。実行ユニットの詳細は、「実行ユニットの定義」を参照してください。
コード・テンプレート・マッピングに使用できる演算子
CTマッピングでは、「OracleターゲットCT実行ユニットでのみサポートされているマッピング演算子」にリストされているもの以外の、すべてのマッピング演算子を使用できます。
CTマッピングではプラッガブル・マッピングも使用できます。ただし、プラッガブル・マッピングには「OracleターゲットCT実行ユニットでのみサポートされているマッピング演算子」にリストされている演算子は含まれません。
Oracle Warehouse Builderのコード・テンプレートは、次のカテゴリに分類されます。
ロード・コード・テンプレート(ロードCT)
統合コード・テンプレート(統合CT)
コントロール・コード・テンプレート(コントロールCT)
変更データ・キャプチャ・コード・テンプレート(CDC CT)
Oracleターゲット・コード・テンプレート(OracleターゲットCT)
ファンクション・コード・テンプレート(ファンクションCT)
コード・テンプレートのタイプの詳細は、第29章「Oracle Warehouse Builderコード・テンプレート・ツールおよび置換メソッド」を参照してください。
Oracle Warehouse Builderには、データ変換を実行するためにCTマッピングで使用できる事前作成されたコード・テンプレートが含まれています。指定したソースまたはターゲット上で特定のETLタスクを実行するために定義されたこれらのコード・テンプレートは、グローバル・ナビゲータのパブリック・コード・テンプレート・ノードのBUILT_IN_CTノードで使用できます。
表7-2は、Oracle Warehouse Builderによって提供されるコード・テンプレートの簡単な説明およびその使用に際しての制約の詳細を示したものです。パフォーマンスが最適化されるため、可能な場合はターゲット・ステージングには常に特定のロードCTを使用します。たとえば、Oracleデータベースにロードする場合は、かわりにLCT_FILE_TO_ORACLE_SQLLDRまたはLCT_FILE_TO_ORACLE_EXTER_TABLEを使用します。
これらのコード・テンプレートの詳細は、Oracle Data Integrator(ODI)ドキュメント・セットを参照してください。ODIでは、コード・テンプレートはナレッジ・モジュールと呼ばれます。
表7-2 Oracle Warehouse Builderによって提供される事前作成されたコード・テンプレート
コード・テンプレート名 | コード・テンプレート・タイプ | 説明 |
---|---|---|
LCT_FILE_TO_ORACLE_EXTER_TABLE |
ロードCT |
EXTERNAL TABLE SQLコマンドを使用して、ファイルからOracle Databaseのステージング領域にデータをロードします。 大量のデータを処理する場合は、このCTはLCT_FILE_TO_SQLより効率的です。ただし、ロードされたファイルへはOracle Databaseコンピュータからアクセスできる必要があります。 |
LCT_FILE_TO_ORACLE_SQLLDR |
ロードCT |
固有のSQL*LOADERコマンドライン・ユーティリティを使用して、ファイルからOracle Databaseのステージング領域にデータをロードします。SQL*LOADERを使用するため、大量のデータを処理する場合はこのCTはLCT_FILE_TO_SQLより効率的です。 |
LCT_FILE_TO_SQL |
ロードCT |
ASCIIまたはEBCDICファイルからステージング領域として使用する任意のSQL準拠データベースにデータをロードします。ソース・データ・ストアの1つがASCIIまたはEBCDICファイルの場合は、このロードCTを使用することを検討してください。 |
LCT_ORACLE_TO_ORACLE_DBLINK |
ロードCT |
固有のデータベース・リンク機能を使用して、OracleデータベースからOracleステージング領域のデータベースにデータをロードします。 |
LCT_SQL_TO_ORACLE |
ロードCT |
汎用SQLソース・データベースからOracleステージング領域にデータをロードします。このロードCTは、追加のOracle Databaseパラメータを指定できる点を除き、標準LCT_SQL_TO_SQLと似ています。 |
LCT_SQL_TO_SQL |
ロードCT |
SQL準拠のデータベースからSQL準拠のステージング領域にデータをロードします。 |
LCT_SQL_TO_SQL_ROW_BY_ROW |
ロードCT |
SQL準拠のデータベースからSQL準拠のステージング領域にデータをロードします。このCTはJythonスクリプトを使用して、ソース・データベースから選択したデータを読込み、結果を動的に作成されたステージング一時表に書込みます。 |
ICT_ORACLE_INCR_UPD |
統合CT |
増分更新モードで、Oracleターゲット表をロードし、欠落したレコードを挿入して既存のレコードを更新します。 挿入および更新はバルク・セット・ベースの処理で行われ、パフォーマンスが最大化されます。コントロールCTを呼出してデータ整合性チェックを実行することもできます。 注意: この統合CTを使用する場合は、次の制約が適用されます。
|
ICT_ORACLE_INCR_UPD_MERGE |
統合CT |
増分更新モードで、Oracleターゲット表をロードし、欠落したレコードを挿入して既存のレコードを更新します。 パフォーマンスを最大化するため、挿入および更新はセットベースの 注意: この統合CTを使用する場合は、次の制約が適用されます。
|
ICT_ORACLE_INCR_UPD_PL_SQL |
統合CT |
Oracleターゲット表をロードし、欠落したレコードを挿入して既存のレコードを更新します。 レコードにLongまたはBinary Long Object (BLOB)データ型が含まれる場合は、このCTを使用します。挿入および更新は行別PL/SQL処理で実行されるため、大量データのロードにはこのCTの使用は避けます。 注意: この統合CTを使用する場合は、次の制約が適用されます。
|
ICT_ORACLE_SCD |
統合CT |
タイプ2の緩やかに変化するディメンションをロードします。 このCTはターゲット表では緩やかに変化するディメンジョンのメタデータ・セットに依存し、新規バージョンとして挿入するレコードまたは既存バージョンとして更新するレコードを決定します。 |
ICT_SQL_CONTROL_APPEND |
統合CT |
Loads your SQL準拠のターゲット表を、データ整合性チェックありまたはなしで置換/追加モードでロードします。 コントロールCTを使用してフロー・データをチェックする必要がある場合は、このCTは一時ステージング表を作成してからコントロールCTを呼出します。 |
ICT_SQL_INCR_UPD |
統合CT |
増分更新モードで、SQL準拠のターゲット表をロードし、欠落したレコードを挿入して既存のレコードを更新します。 コントロールCTを呼出してデータ整合性チェックを実行することもできます。すべてのデータベースが同じバルク更新構文をサポートしていないため、更新は行別に行われます。 注意: この統合CTを使用する場合は、次の制約が適用されます。
|
ICT_SQL_TO_FILE_APPEND |
統合CT |
SQL準拠のステージング領域からのターゲット・ファイルにデータを置換モードで統合します。 |
ICT_SQL_TO_SQL_APPEND |
統合CT |
ターゲットとは異なるステージング領域を使用できます。SQL準拠のステージング領域から、SQL準拠のターゲット表にデータを置換モードで統合します。 |
CCT_Oracle |
コントロールCT |
Oracle表で定義された制約に対するデータ整合性をチェックします。動的に作成されたエラー表の無効レコードは拒否します。静的制御およびフロー制御に使用できます。 |
CCT_SQL |
コントロールCT |
SQL準拠データベースで定義された制約に対するデータ整合性をチェックします。 動的に作成されたエラー表の無効レコードは拒否します。静的制御およびフロー制御に使用できます。 |
JCT_DB2_UDB_CONSISTENT |
CDC CT |
トリガーを使用して、IBM DB2 UDB表の一貫性のある変更データ・キャプチャに必要なインフラストラクチャを作成します。 |
JCT_DB2_UDB_SIMPLE |
CDC CT |
トリガーを使用して、IBM DB2 UDB表の単純な変更データ・キャプチャに必要なインフラストラクチャを作成します。 |
JCT_MSSQL_CONSISTENT |
CDC CT |
トリガーを使用して、Microsoft SQL Server表の一貫した仕訳用の仕訳インフラストラクチャを作成します。 Microsoft SQL Serverの一貫した変更データ・キャプチャを有効化します。 |
JCT_MSSQL_SIMPLE |
CDC CT |
トリガーを使用して、Microsoft SQL Server表の単純仕訳用の仕訳インフラストラクチャを作成します。 Microsoft SQL Serverの単純変更データ・キャプチャを有効化します。 |
JCT_ORACLE_10G_CONSISTEN_MINER |
CDC CT |
Oracle表の一貫した変更データ・キャプチャを有効化します。Oracle 10g表の一貫仕訳用の仕訳インフラストラクチャを作成します。変更済データはOracle 10g LogMiner固有のユーティリティによってキャプチャされます。 |
JCT_ORACLE_11G_CONSISTEN_MINER |
CDC CT |
Oracle表の一貫した変更データ・キャプチャを有効化します。Oracle 11g表の一貫仕訳用の仕訳インフラストラクチャを作成します。変更済データはOracle 11g LogMiner固有のユーティリティによってキャプチャされます。 |
JCT_ORACLE_9I_CONSISTENT_MINER |
CDC CT |
Oracle表の一貫した変更データ・キャプチャを有効化します。Oracle 9i表の一貫仕訳用の仕訳インフラストラクチャを作成します。変更済データはOracle 9i LogMiner固有のユーティリティによってキャプチャされます。 |
JCT_ORACLE_CONSISTENT |
CDC CT |
Oracle表の一貫した変更データ・キャプチャを有効化します。トリガーを使用して、Oracle表の一貫した変更データ・キャプチャ用の仕訳インフラストラクチャを作成します。 |
JCT_ORACLE_CONSISTENT_UPD_DATE |
CDC CT |
Oracle表の一貫した変更データ・キャプチャを有効化します。最終更新日を示すソース表列を使用して、Oracle表の一貫した変更データ・キャプチャのインフラストラクチャを作成します。 |
JCT_ORACLE_SIMPLE |
CDC CT |
Oracle表の単純変更データ・キャプチャを有効化します。トリガーを使用して、Oracle表の単純変更データ・キャプチャ用の仕訳インフラストラクチャを作成します。 |
ICT_ORACLE_INCR_UPD_MERGEを使用する場合、順序はサポートされていません。
マッピングでICT_SQL_CONTROL_APPENDを使用する場合、このCTに関連付けられたORDER BY句は機能しません。このCTを含むCTマッピングを実行中は、エラー・メッセージは表示されません。ただし、行はORDER BYプロパティで指定された順序にはなりません。
増分更新統合CTを使用する場合、ターゲット表演算子のロード・タイプのプロパティは、INSERT_UPDATEまたはUPDATE_INSERTに設定する必要があります。また、ターゲット表演算子には、一意キーまたは主キーを定義する必要があります。
ICT_SQL_TO_SQL_APPENDでは、2つの資格証明(ロケーションに定義されたソース・スキーマの資格証明とターゲット・スキーマの資格証明)を使用してロードされます。この結果、権限の問題を生じることなく、マップを正しく実行できます。
ICT_SQL_CONTROL_APPENDでは、1つの資格証明(ターゲット・スキーマに接続するための資格証明)を使用してロードされます。つまり、セキュリティ動作は既存のOracle Warehouse Builder PL/SQLマッピングと似ています。その結果、ターゲット・スキーマにソース・スキーマへアクセスする権限が付与されていない場合は、「権限不十分」エラーがレポートされます。
一般的に、KMで「複数接続」プロパティがtrueに設定されたOracle Data Integrator Knowledge Modules(KM)は、上で説明した最初のカテゴリに属します。詳細は、Oracle Data Integratorのドキュメントを参照してください。
特定の変換演算子はOracle Databaseで提供されている機能を利用するように設計されています。この機能はその他の異機種データベースでは使用できません。したがって、これらの演算子を含む実行ユニットをロードCTまたは統合CTに直接割り当てることはできません。これらの演算子は、OracleターゲットCTが割り当てられている実行ユニットに演算子を追加する場合のみサポートされます。
これらの演算子を含む実行ユニットが統合CTまたはロードCTに関連付けられている場合に、CTマッピングで直接使用できない演算子のリストは、次のとおりです。
Anydataキャスト
オブジェクトの構成
キューブ
ディメンション
オブジェクトの拡張
LCRキャスト
LCRスプリッタ
検索
入力パラメータのマッピング
出力パラメータのマッピング
Match-Merge
名前とアドレス
ピボット
マッピング後プロセス
マッピング前プロセス
キュー
集合演算
ソーター
スプリッタ
テーブル・ファンクション
アンピボット
可変長配列イテレータ
コード・テンプレート・マッピングでの制限マッピング演算子の使用
OracleターゲットCTに関連付けられている実行ユニットを使用すると、CTマッピングで制限マッピング演算子を使用できます。これらの演算子を含む実行ユニットがOracleターゲットCTに関連付けられている場合は、「OracleターゲットCT実行ユニットでのみサポートされているマッピング演算子」にリストされている演算子を実行ユニットに使用できます。OracleターゲットCTの使用によってサポートされているパワフルな変換機能に加え、ロード・コード・テンプレートを使用するフレキシブルな統合機能を利用するハイブリッド・マッピングを構成できます。
CTマッピングを使用して実行できない特定の演算は、PL/SQLパッケージとして配布されている従来のOracle Warehouse Builderマッピングを使用して実行できます。そのようなマッピングは個別実行ユニットとして実行できます。
CTマッピングを使用したETLの実行手順は、次のとおりです。
(オプション)テンプレート・マッピング・モジュールの作成
マッピング・モジュールを作成していない場合は、マップを含めるマッピング・モジュールを作成します。
CTマッピングを実行すると、「コード・テンプレート・マッピングの実行結果の表示」で説明するように実行結果を表示できます。
「コード・テンプレート・マッピングの実行の監査」で説明するようにCTマッピング実行中に発生したエラーも監査できます。
テンプレート・マッピング・モジュールは、コード・テンプレートを使用するマッピングのコンテナです。コード・テンプレートを含むマッピングは、デザイン・センターのテンプレート・マッピング・ノードからのみ作成できます。Oracle Warehouse Builderの他のモジュールと同じように、各テンプレート・マッピング・モジュールは、このモジュールのマッピングをどこに配布するかを指定するロケーションに関連付けられています。コード・テンプレートを含むマッピングは、Oracle Warehouse Builderのコントロール・センター・エージェントに配布されます。
テンプレート・マッピング・モジュールの作成手順:
プロジェクト・ナビゲータで、テンプレート・マッピング・モジュールを作成するプロジェクト・ノードを開きます。
「テンプレート・マッピング」ノードを右クリックして「新規マッピング・モジュール」を選択します。
モジュールの作成ウィザードが表示されます。
ようこそページで「次へ」をクリックします。
名前と説明ページで、次のフィールドに値を入力し、 「次へ」をクリックします。
名前: テンプレート・マッピング・モジュール名を入力します。この名前は、Oracle Warehouse Builderのネーミング規則に準拠する必要があります。
説明: テンプレート・マッピング・モジュールの説明(オプション)を入力します。
モジュール・ステータスの選択: 開発、品質保証、生産のステータスを選択します。
接続情報ページで、CTマッピングの配布先のコントロール・センター・エージェント(CCA)をポイントするロケーションの詳細を指定します。「次へ」をクリックします。
コントロール・センター・エージェントに対応するロケーションを前に作成している場合は、「ロケーション」リストを使用してこのロケーションを選択します。Oracle Warehouse Builderによって作成されるCCA、DEFAULT_AGENTに対応するデフォルト・ロケーションを使用することもできます。
ロケーションを作成するには、コントロール・センター・エージェントの次の詳細を入力します。
ユーザー名: CCAへの配布に使用するOC4Jユーザーのユーザー名。Oracle Warehouse Builderと一緒にインストールされるコントロール・センター・エージェントに配布する場合は、ユーザー名としてoc4jadminを使用します。
パスワード: CCAへの配布に使用するOC4Jユーザーのパスワード。
ホスト: コントロール・センター・エージェントがインストールされているコンピュータのホスト名。
ポート: OC4Jサーバーが使用するRMIポートの値。
ポート・タイプ: Oracle Warehouse Builderと一緒にインストールされているCCAと関連づけられたエージェント・ロケーションに配布する場合は、ポート・タイプとしてRMIを使用します。
ポート・タイプとして選択できるその他のオプションは、OPMNおよびRMISです。
インスタンス: CCAに対応するOC4Jインスタンス名。Oracle Warehouse BuilderにインストールされたデフォルトCCAに配布する場合、このフィールドは空白のままにします。
アプリケーション名: CTマッピングに配布する必要があるアプリケーション名。Oracle Warehouse BuilderにインストールされたデフォルトCCAに配布する場合、アプリケーション名にjrtを使用します。
サマリー・ページで、ウィザードに入力した情報を確認します。「終了」をクリックし、テンプレート・マッピング・モジュールを作成します。入力した値を変更するには、「戻る」をクリックします。
テンプレート・マッピング・モジュールが作成され、プロジェクトのナビゲータ・ツリーに追加します。
環境のコード・テンプレートで定義された機能を使用するには、コード・テンプレート(CT)マッピングを作成します。CTマッピングを作成するプロセスは、実行ユニットを定義してコード・テンプレートに関連付ける追加手順を除き、通常のPL/SQLマッピングと似ています。
各CTマッピングはマッピング・モジュールに属する必要があります。
注意: 結合を2つ以上の表で実行する場合は、CTマッピングをジョイナ入力ロールと一緒に使用しないでください。 |
CTマッピングの作成手順:
プロジェクト・ナビゲータで、プロジェクト・ノードを開いてから、CTマッピングを作成するテンプレート・マッピング・ノードを開きます。
CTマッピングを作成するマッピング・モジュールを右クリックし、「新規マッピング」を選択します。
「マッピングの作成」ダイアログ・ボックスが表示されます。
CTマッピングの名前と説明(オプション)を入力し、「OK」をクリックします。
CTマッピングのマッピング・エディタが表示されます。
「論理ビュー」タブで、 必要な演算子を追加し、必要なデータ変換を実行するデータ・フローを設定します。
演算子の追加および演算子間のデータ・フローの設定方法の詳細は、第5章「PL/SQLマッピングの作成」を参照してください。
マッピング・エディタの実行ビュー・タブを使用すると、実行ユニットを定義できます。マッピング実行を小さな関連単位に分割し、マッピングの一部をコード・テンプレートに関連付ける実行ユニットを使用します。Oracle Warehouse Builderでは、定義する各実行ユニットのコードが個別に生成されます。
マッピング・エディタの「実行ビュー」タブでは、論理ビューからの演算子とデータ・フローがアイコン化された形式で表示されます。実行ビューで演算子を編集またはデータ・フローを作成することはできません。これらの演算は論理ビューを使用して実行する必要があります。「実行ユニットの作成」の定義に従って、実行ユニットを作成します。
注意: コード・テンプレートを実行ユニットに明示的に割り当てないと、Oracle Warehouse Builderによってデフォルト・コード・テンプレートが実行ユニットに割り当てられます。デフォルト・コード・テンプレートの詳細は、「実行ユニットのデフォルト・コード・テンプレート」を参照してください。 |
「実行ビュー」を選択すると、デザイン・センターに「実行および実行ツールバー」という追加メニューが表示されます。これらのツールバーは、次に使用します。
実行ユニットの作成および削除
デフォルト実行ユニットの定義
コード・テンプレートと実行ユニットの関連付け
特定のコード・テンプレートでコード生成と実行を制御する演算子グループの実行ユニットを作成します。
実行ユニットの作成手順:
マッピングの「実行ビュー」で、実行ユニットにグループ化する演算子を選択します。
演算子の周りに四角形を描いてグループ化します。最初の演算子の上部でマウス・ボタンを押しながら必要な演算子を囲むようにマウスをドラッグしてから、マウス・ボタンを放します。または、[Ctrl]キーを押しながら、実行ユニットに含めるすべての演算子のヘッダーをクリックします。
「実行」メニューから「実行ユニットの作成」を選択します。または、実行ビュー・ツールバーの「実行ユニットの作成」をクリックします。
Oracle Warehouse Builderによって選択した演算子の実行ユニットが作成され、デフォルト名が割り当てられます。実行ユニットの名前を変更するには、名前を右クリックし、「詳細を開く」を選択します。「実行ユニットの編集」ダイアログ・ボックスに、実行ユニットの新しい名前を入力します。
コード・テンプレートと実行ユニットの関連付け手順:
コード・テンプレート・パネルが表示されない場合は、表示メニューから「コード・テンプレート」を選択します。
「ログ」ウィンドウ・パネルに、「コード・テンプレート」タブが表示されます。
マッピング・エディタの「実行ビュー」タブで、コード・テンプレートに関連付ける実行ユニットを選択します。
「コード・テンプレート」タブで、選択した実行ユニットを関連付ける必要があるコード・テンプレートをリストから選択します。
リストに表示されるコード・テンプレートは、選択した実行ユニットの演算子のソース・プラットフォームおよびターゲット・プラットフォームによって異なります。実行ユニットの本質にも依存します。たとえば、ロードCTをデータ・オブジェクトにバインドされた演算子を含まない実行ユニットと関連付けできます。統合CTをリポジトリ・データ・オブジェクトにバインドされたターゲット演算子を1つ含む実行ユニットと関連付けできます。
実行ユニットへの演算子の追加手順:
マッピング・エディタの「実行ビュー」で、実行ユニットと実行ユニットに追加する演算子をどちらも選択します。
オブジェクトの選択時に、[Ctrl]キーを押し続けると複数のオブジェクトを選択できます。
「実行」メニューから「実行ユニットへの演算子の追加」を選択します。または、実行ビュー・ツールバーの「実行ユニットへの演算子の追加」をクリックします。
演算子は、ある実行ユニットのターゲットと別の実行ユニットのソースなど、複数の実行ユニットに表示される場合があります。
たとえば、実行ユニットCUST_EXEC_UNIT
に表演算子cust_tab
があるとします。cust_tab
とEX_UNIT_2
の両方を選択してから、「演算子を実行ユニットに追加」を選択し、cust_tab
を別の実行ユニットEX_UNIT_2
(既存の実行ユニット)にコピーできます。cust_tab
のコピーがEX_UNIT_2
に追加されます。
実行ユニットCUST_EXEC_UNIT
のターゲットである表演算子cust_tab
を検討します。cust_tab
を選択してから「実行ユニットの作成」をクリックし、cust_tab
のコピーを含む実行ユニットを作成します。このコピーのラベルは<cust_tab>になります。この場合、演算子が複数の実行ユニットで使用されることを視覚的に示すために山カッコが使用されます。
実行ユニットからの演算子の削除手順:
マッピング・エディタの「実行ビュー」で、実行ユニットから削除する演算子(複数も可)を選択します。
「実行」メニューから「実行ユニットからの演算子の削除」を選択します。または、マッピング・エディタ・ツールバーの「実行ユニットからの演算子の削除」をクリックします。
選択した演算子が実行ユニットから削除され、実行ビューに個別に表示されます。
注意: 実行ユニットに表示される演算子が1つのみの場合は、実行ユニットから演算子を削除することはできません。 |
既存の実行ユニットを削除すると、実行ユニットの一部であった演算子は実行ユニットには関連付けされません。これらの演算子は、必要に応じて他の実行ユニットに関連付ける必要があります。
実行ユニットを削除する場合、マッピングのために更新したコードを再生成して配布するまで、変更が反映されません。
実行ユニットの削除手順:
マッピング・エディタの「実行ビュー」で、削除する実行ユニットを選択します。
「実行」メニューから「実行ユニットの削除」を選択します。または、実行ビュー・ツールバーの「実行ユニットの削除」をクリックします。
実行ユニットが削除されます。この実行ユニットに含まれていた演算子は、実行ユニット・グループ別ではなく個別に表示されます。
実行メニューの「デフォルト実行ユニット」をクリック、または「デフォルト実行ユニット」を選択して、実行ユニットのデフォルト・セットを作成できます。Oracle Warehouse Builderでは、最初にすべての既存の実行ユニットが削除されてから、新しい実行ユニットセットが作成されます。これにより、すべての演算子が一部の実行ユニットに割り当てられます。
演算子はロケーションなどの要因に基づき実行ユニットに割り当てられます。異なるロケーションにある演算子は、異なる実行ユニットに割り当てられます。すべての演算子が同じロケーションにある場合は、デフォルトはすべての演算子を含む1つの実行ユニットで構成できます。
デフォルト実行ユニットの名前は、実行ユニットで演算子に関連付けられたロケーションがわかっているかどうかによって異なります。実行ユニットのロケーション(実行ユニット内の演算子に関連付けられたロケーション)がわかっている場合、デフォルトの実行ユニットの名前は、ロケーション名の末尾に"_EU"を付けて設定されます。実行ユニットに関連付けられたロケーションがわからない場合、実行ユニット名は「MAP_EX_UNIT_」で始まります。
コード・テンプレートを実行ユニットに明示的に関連付けていない場合は、コード生成中にOracle Warehouse Builderによってデフォルト・コード・テンプレートが割り当てられます。デフォルト・コード・テンプレートはターゲット演算子のプラットフォームによって異なります。各プラットフォームにデフォルト・コード・テンプレートを定義できます。
たとえば、Oracle Databaseプラットフォーム用のデフォルトのロードCT、統合CTおよびOracleターゲットCTを定義できます。Oracle Databaseオブジェクトを参照する演算子を含む実行ユニットにコード・テンプレートを割り当てないと、Oracle Warehouse Builderコード・ジェネレータによって次の手順が実行されます。
特定の実行ユニットに使用する必要があるコード・テンプレートのタイプの識別
実行ユニットが関連付けられたロケーションのプラットフォームを使用して実行ユニットに割り当てる必要があるデフォルト・コード・テンプレートの取得
実行ユニットへの取得済コード・テンプレートの割当て
注意: OMB*Plusのみを使用するプラットフォームにデフォルト・コード・テンプレートを定義できます。OMB*Plusの詳細は、『Oracle Warehouse Builder APIおよびスクリプト・リファレンス』を参照してください。 |
特定のプラットフォームにデフォルト・コード・テンプレートが定義されていない場合は、使用可能なコード・テンプレートから1つのコード・テンプレートが選択されて、実行ユニットに割り当てられます。次に、プラットフォーム定義が更新され、選択されたコード・テンプレートが、そのプラットフォームのデフォルト・コード・テンプレート定義として割り当てられます。
デフォルト・コード・テンプレートを実行ユニットに割り当てることができるのは、コード・テンプレートを含むCTマッピングとデフォルト・コード・テンプレートが同じプロジェクトに属する場合のみです。
CTと実行ユニットを関連付けると、UIリストに表示されるCTはソースおよびターゲット・プラットフォーム別にフィルタ処理されます。たとえば、ソース表を含む実行ユニットがOracleデータベースの場合、この実行ユニットに選択できるCTはOracleソースに使用できるCTです。
特定の単純マッピングでは、ソースおよびターゲット演算子を含む実行ユニットを1つ作成できます。この場合、使用可能な統合CTのリストは、次によって制限されます。
ソース・プラットフォーム
プラットフォーム
CTの複数接続プロパティの値セット
コントロール・センター・エージェントとは、コード・テンプレートをOC4Jサーバーで実行するエージェントです。コントロール・センター・エージェントを起動してから、コード・テンプレートまたはCTマッピングを配布する必要があります。
Windowsの場合、コントロール・センター・エージェントを起動するには、OWB_HOME
/owb/bin/win32
ディレクトリにあるccastart.bat
スクリプトを実行します。
UNIXの場合は、OWB_HOME
/owb/bin/unix
ディレクトリにあるccastart
ファイルを実行してコントロール・センター・エージェントを起動します。
注意: 複数のCCAインスタンスを起動するためにccastart.bat またはccastart を複数回実行することはお薦めしません。複数のCCAインスタンスを実行してから、アプリケーション・サーバーにCCAをインストールするための必要なインストール手順を使用して、アプリケーション・サーバーに個別にCCAインスタンスをインストールする必要があります。 |
Windowsの場合、コントロール・センター・エージェントを停止するには、OWB_HOME
/owb/bin/win32
ディレクトリにあるccashut.bat
スクリプトを実行します。このスクリプトは入力パラメータとしてoc4jadminユーザーのパスワードを取ります。
UNIXの場合は、OWB_HOME
/owb/bin/unix
ディレクトリにあるccashut
ファイルを実行してコントロール・センター・エージェントを停止します。このスクリプトは入力パラメータとしてoc4jadminユーザーのパスワードを取ります。
コード・テンプレート(CT)マッピングの検証では、メタデータ定義および構成パラメータが確認され、Oracle Warehouse Builderによって定義されたルールに応じてこれらが有効であるかどうかが確認されます。Oracle Warehouse Builderは検証の一部として、実行ユニットへの演算子の割当てを確認します。検証では、CTマッピングに定義済のETLタスク実行のためのコードを正しく生成できるかどうかも確認されます。
検証では、Oracle Warehouse Builderによって次のルールがチェックされます。
演算子は異なる実行ユニットの2つ以上のダウンストリーム演算子に接続することはできません。
実行ユニットにはOracle以外のソースまたはターゲット演算子およびその他の制限マッピング演算子を含めることはできません。
OracleターゲットCTのみを制限演算子で実行ユニットに割り当てることができます。
複数の受信接続を含む変換またはデータ・ターゲット演算子は、複数の実行ユニットに存在することはできません。
実行ユニットには複数の実行ユニットへの送信接続を含めることはできません。
コード・テンプレート(CT)マッピングの生成では、Oracle Warehouse BuilderワークスペースでETLタスクの実行に必要なスクリプトが作成されます。CTマッピングの場合は、Tclスクリプトが生成されます。
CTマッピングを生成すると、Oracle Warehouse Builderでは最初にそれが検証されます。検証が正常に終了すると、CTマッピングが生成されます。生成により、.ear
ファイルの一部である次のスクリプトが生成されます。
変数スクリプト、var.tcl
このスクリプトには、コード・テンプレート・スクリプトの置換メソッド・コールで置き換える必要のある変数が含まれます。スクリプトにより、すべての定義済マッピング変数が名前から値へのマップを含む1つのTcl変数に収集されます。
このスクリプトには、マッピングによって記述されるすべてのメタデータが格納されます。このメタデータは、(置換メソッドを介して)コード・テンプレートによって使用されます。CTマッピング実行時には、コード・テンプレートの置換メソッドはコントロール・センター・エージェントで実行され、その戻り値は変数スクリプト内の適切なメタデータから計算されます。メタデータ変数名は、置換メソッドで定義された名前またはパターンと直接は一致しません。この変換は置換メソッドによって実行されます。
ドライバ・スクリプト、driver.tcl
ドライバ・スクリプトは最初に変数スクリプトを呼出し、メタデータ変数値をコントロール・センター・エージェントのJaclインタプリタにロードします。次に、各実行ユニットに対して、その実行ユニットに関連付けられたコード・テンプレートのメイン・メソッドを呼出します。
コード・テンプレートの実行順序は、実行ビューのマッピングのトポロジから自動的に導出されます。
生成中にエラーが発生する場合は、マッピング・エディタを使用してエラーを修正してからCTマッピングを再生成します。
生成結果の表示
生成結果はログ・ウィンドウの結果タブに表示されます。結果タブには生成が成功したかどうかを示す親ノードが表示されます。このノードの下にあるのは、生成したCTマッピングと同じ名前を使用するものです。このノードには、検証ノードの下に検証結果とスクリプト・ノードの下に生成済スクリプトが含まれます。表示する結果が含まれるノードを開きます。
生成済コードの表示
生成結果の下のスクリプトには、CTマッピングを作成するために生成されたコードを含むvar.tcl
およびdriver.tcl
スクリプトが含まれます。
生成済コードを表示するには、スクリプト・ノードを開きます。var.tcl
またはdriver.tcl
を右クリックし、「スクリプトの表示」をクリックします。または、.tcl
ファイルをダブルクリックし、マッピング・エディタの新規タブにコンテンツを表示します。
注意: あるCTマッピング用の生成済コードが含まれるタブがマッピング・エディタに表示されている場合、このタブを閉じてから別のCTマッピング用の生成済コードを表示してください。前に生成されたコードを含むタブを閉じないと、生成済コードに対して結果が競合する場合があります。 |
次はコード・テンプレートおよび置換を示すその関連メタデータ・スクリプトのコード例です。次のコード・ブロックは一時フロー表を作成するコード・テンプレートのプロシージャ型手順を示したものです。
proc 3_CREATE_FLOW_TABLE_I__main { } { # Input Flow Parameters variable SRC_LOCATION variable TGT_LOCATION variable KM_PARAMS variable LOG_LEVEL variable INSERT variable UPDATE variable COMMIT variable SYNC_JRN_DELETE variable FLOW_CONTROL variable RECYCLE_ERRORS variable STATIC_CONTROL variable TRUNCATE variable DELETE_ALL variable CREATE_TARG_TABLE variable FLOW_TABLE_OPTIONS variable ANALYZE_TARGET variable OPTIMIZER_HINT # Output parameters variable EXIT_CODE variable RETURN_VALUE {} # Global variables global errorInfo global g_iud set g_iud "" set tgt_stmt [process "create table <%=snpRef.getTable(\"L\", \"INT_NAME\", \"W\")%>\n(\n<%=snpRef.getColList(\"\", \"\\t\[COL_NAME\]\\t\[DEST_WRI_DT\] NULL\", \",\\n\", \"\", \"\")%>,\n\tIND_UPDATE \tchar(1)\n)\n<%=snpRef.getUserExit(\"FLOW_TABLE_OPTIONS\")%>"] puts $tgt_stmt execjdbc $tgt_stmt "TGT_AC" "$TGT_LOCATION" "" "true" "false" "false" }
ターゲットのSQL文である変数tgt_stmt
には実際のSQL文が割り当てられ、このSQL文はexecjdbc
プロシージャ・コールを使用して実行されていることに注意してください。execjdbc
TCLプロシージャは、JDBCを介して文を実行するJavaコールを実行します。ターゲット文は、process
プロシージャによって生成される文字列です。<%...%>デリミタには、必要なコンポーネントをSQL文字列に置き換えるための特別な処理が必要です。snpRef
タグは、置換メソッド・コールアウトの接頭辞です。snpRef.getTable
は、実際の表名によって置き換えられます。snpRef.getColList
は、DMLに関与する表列のリストを取得するための別のユニバーサル・メソッドです。snpRef
に加え、odiRef
がサポートされます(Oracle Data Integrator 10.2と同様)。
置換メソッド(snpRef
)・コールは、メタデータ・スクリプトの変数から関連データを抽出するOracle Warehouse Builder TCLモジュールによって実行されます。次は、表名と列リストを示すメタデータ・スクリプト・セクションの例です。
set M1_params { {CKM_CALL ""} {COLUMN_GENERIC_DATATYPE "NUMERIC VARCHAR"} {COLUMN_LIST "EMPLOYEES.EMPLOYEE_ID EMPLOYEES.LAST_NAME"} {COLUMN_LIST_ALIAS "EMPLOYEE_ID LAST_NAME"} {COLUMN_LIST_DATATYPE "NUMBER(6) VARCHAR2(25)"} {EXECUTION_UNIT_NAME "EX_UNIT_2"} {FROM_LIST "EMPLOYEES"} {FROM_LIST_ALIAS "EMPLOYEES"} {HAS_JRN "0"} {INSERT_COLUMN_LIST "EMPID ENAME"} {IS_DISTINCT "FALSE"} {JOURNAL_IN_CURRENT_SCHEMA "false"} {JOURNAL_IN_SOURCE_SCHEMA "false"} {JOURNAL_IN_STAGING_AREA "false"} {JRN_FILTER ""} {JRN_METHOD "NONE"} {JRN_TABLE "."} {KM_NAME "KM_IKM_ORACLE_INCREMENTAL_UPD"} {MAP_NAME "MAPPING_2"} {SELECT_STATEMENT "SELECT EMPLOYEES.EMPLOYEE_ID EMPLOYEE_ID, EMPLOYEES.LAST_NAME LAST_NAME FROM EMPLOYEES EMPLOYEES"} {SQL_STATEMENT "INSERT INTO TGT(EMPID, ENAME) (SELECT EMPLOYEES.EMPLOYEE_ID EMPLOYEE_ID,EMPLOYEES.LAST_NAME LAST_NAME FROM EMPLOYEES EMPLOYEES ) ;"} {TARGET_COLUMN_DATATYPE "NUMBER(15) VARCHAR2(100)"} {TARGET_COLUMN_LIST "EMPID ENAME"} {TARGET_GENERIC_DATATYPE "NUMERIC VARCHAR"} {TARGET_NAME "TGT"} }
コード・テンプレート(CT)マッピングを配布するには、コントロール・センター・マネージャを使用します。コントロール・センター・マネージャ・ツリーには、CTマッピングを含むマッピング・モジュールに関連付けられたエージェント・ロケーションにCTマッピングがリストされます。
CTマッピングを配布すると、生成されたスクリプトがCCAにコピーされます。
CTマッピングを配布する前に、すべてのコード・テンプレートが関連付けられていることを確認します。
コード・テンプレート・マッピングの配布手順:
デザイン・センターで、「ツール」メニューから「コントロール・センター・マネージャ」を選択し、コントロール・センターを開きます。
コントロール・センターのナビゲーション・ツリーで、CTマッピングを作成したプロジェクト・ノードを開きます。次に、CTマッピングを含むマッピング・モジュールに関連付けられたロケーション・ノードを開きます。
CTマッピングを含むマッピング・モジュール・ノードを開きます。
配布するCTマッピングを選択し、「オブジェクトの詳細」パネルで、配布アクションとして「作成」を選択します。
「配布」をクリックします。
「コントロール・センター・ジョブ」パネルには配布済CTマッピングに対応する配布ジョブへの新規エントリが含まれます。配布が正常に終了すると、ステータスに成功メッセージが表示されます。配布に失敗した場合は、エラー・メッセージをダブルクリックするとエラーの詳細を表示できます。
コード・テンプレート(CT)マッピングを実行する際は、コード・テンプレートを使用してCTマッピングで定義したデータ統合タスクを実行します。CTマッピングを実行する前に、「コード・テンプレート・マッピングの配布」の説明に従ってCTマッピングが配布済であることを確認してください。
CTマッピングを実行するには、コントロール・センター・マネージャで、CTマッピングを選択し、「開始」をクリックします。
または、プロジェクト・ナビゲータで、CTマッピングを右クリックし、「開始」を選択します。
CTマッピングが実行され、CTマッピングで定義されたETLが実行されます。
CCA(コントロール・センター・エージェント)と呼ばれるJ2EEランタイム環境によって、CTマッピングの実行が制御されます。CCAはランタイム・プラットフォームとは分離されています。CCAではTcl/Java(Jacl)スクリプトを実行して実行されます。実行はすべてCCAによって実行されるため、サービス指向アーキテクチャ(SOA)インタフェースとは別に呼出しできます。
注意: 実行に1日以上を要する複雑なCTマッピングを実行する際は、小さなジョブに分割することをお薦めします。OC4Jのデフォルトのトランザクション・タイムアウトは1日に設定されています。ジョブの実行時間が1日を超えると、その実行はタイムアウトとなり、予期しないエラーが発生する場合があります。 |
結果タブまたは情報の監査パネルを使用して、コード・テンプレート(CT)マッピングの実行結果を表示できます。
注意: 選択した行数はCTマッピング実行中は監査されません。したがって、実行結果には選択した行数は含まれません。 |
デザイン・センターを使用してCTマッピングを実行すると、「ログ」ウィンドウにCTマッピングの実行結果を表示する新しい「結果」タブが作成されます。結果タブには実行結果を含む実行というノードが含まれます。これには、CTマッピング実行中に挿入、更新および削除された行数の詳細が表示されます。
監査情報パネルを使用すると、CTマッピング実行に関する追加詳細を表示できます。CTマッピングの前の実行結果を表示することもできます。監査情報パネルを表示するには、「表示」メニューから「監査情報」を選択します。
CTマッピングの配布先のロケーション・ノードを開き、このCTマッピングのジョブを表示します。CTマッピングは複数回実行できるため、各実行はジョブ別に表示されます。各ジョブには実行ユニットのノードが含まれ、手順のノードが順番に含まれます。挿入、更新、削除および選択済行数などの詳細が表示されます。文の実行タブを使用して、手順の実行に使用した文を表示します。
CTマッピングまたはチェンジ・データ・キャプチャ・プロセスの実行中、「監査情報」パネルには、実行中のジョブとその子ノード(実行ユニット(CTマッピングの場合のみ)、タスク、手順など)が表示されます。各ジョブのステータスも表示されます。ステータス(スキップ済、警告など)に基づき監査情報パネルでジョブのタスクをフィルタ処理することができます。デフォルトは「フィルタなし」に設定され、フィルタ処理は実行されません。ジョブはタイムスタンプ別にソートすることもできます。
メッセージ・タブを使用して、JDBCタスク実行中のJDBCドライバからの例外など、手順実行中にメッセージを表示します。
監査情報パネルの操作モード
監査情報パネルには、次のモードの監査情報を表示できます。
プロジェクト・ナビゲータでCTマッピングを選択すると、そのCTマッピングの実行監査のみが表示されます。
プロジェクト・ナビゲータでファンクションCTを選択すると、選択したCTの実行監査情報のみが表示されます。
プロジェクト・ナビゲータでCDC表を含むモジュールを選択すると、CDCの監査情報が表示されます。
ロケーション・ナビゲータでエージェントを選択すると、そのエージェントで実行したすべてのジョブの実行監査(CTマッピング、CDC実行およびCTファンクション配布を含む)が表示されます。
CTマッピングでコード・テンプレートを使用する場合は、コード・テンプレートに設定できるオプションはコード・テンプレートのタイプによって異なります。
Oracle Warehouse Builderは、個々のプラットフォームまたはデータベースで機能するオプションについては認識しません。したがって、CTマッピングの検証および生成によって、設定するオプションをコード・テンプレートに関連付けられたプラットフォームまたはデータベースで使用できるかどうかが自動的に検証されるわけではありません。たとえば、TeradataではTRUNCATE文はサポートされていません。したがって、「切捨て」プロパティをTeradataソースまたはターゲットに関連付けられたコード・テンプレートに対してtrueに設定すると、CTマッピング実行中にエラーが発生します。
表7-3は、CTマッピングで各コード・テンプレートのタイプに設定できるオプションの説明です。コード・テンプレートに新しいオプションを追加し、CTマッピングで使用できます。
表7-3 コード・テンプレート・マッピングでのコード・テンプレートのオプション
オプション名 | 説明 | コード・テンプレート・タイプに適用できるオプション |
---|---|---|
ICT後 |
ターゲットでICT統合完了後に作業表をクリーンアップする場合は、Trueに設定します。このプロパティを使用すると、マッピング完了後に作業表を保持するかどうかを決定できます(主にデバッグ用)。 |
ロードCT |
コミット |
統合タスク完了後にコミットを実行する必要があることを示す場合は、Trueに設定します。 |
統合CT |
Create_targ_table |
ターゲット表を作成する場合は、Trueに設定します。表が存在する場合は、Falseに設定します。 |
統合CT |
Delete_all |
ターゲット表からすべての行を削除する場合は、Trueに設定します。 |
統合CT |
Delete_temporary_objects |
統合CT実行中に作成された一時オブジェクトを削除する場合は、Trueに設定します(一時オブジェクトがある場合)。 |
統合CT ロードCT |
Drop_check_table |
チェック表を削除する場合は、Trueに設定します。チェック表には見つかったエラーについての統計が含まれます。 |
コントロールCT |
Drop_error_table |
検出された特定のエラーに関する情報が含まれる表を削除する場合は、Trueに設定します。 |
コントロールCT |
Flow_Control |
フロー・コントロールをアクティブ化する場合は、Trueに設定します。フロー・コントロールではデータをターゲット表に挿入する前にエラーが検出されます。 |
統合CT コントロールCT |
Flow_table_options |
フロー表作成用のオプションを指定します。 |
統合CT |
挿入 |
コード・テンプレートがターゲット表に新規行を挿入できることを示す場合は、Trueに設定します。 |
統合CT |
Deploy_files |
CTが常に関連PL/SQLコードを配布するかどうかを示します。 Falseに設定すると、マッピングがデータベースに存在しないか、またはマッピングが配布済マッピングと異なるバージョンである場合は、PL/SQLコードのみが配布されます。前のコード・テンプレートがこのマッピングの表を作成中の場合は、Trueに設定します。通常は、Falseに設定する必要があります。 |
OracleターゲットCT |
Log_level |
コード・テンプレートが実行されたときのレポートのログ・レベルを示します。有効値は0から5で、5は最も詳細なロギングを示します。 |
統合CT ロードCT CDC CT OracleターゲットCT |
Static_control |
統合後のコントロールに使用します。統合完了後のターゲット表のエラーを検出します。 |
統合CT |
Target_location |
PL/SQLマッピング配布先のOracleロケーションを表します。 |
OracleターゲットCT |
切捨て |
データをロードする前にターゲット表を切捨てる場合は、Trueに設定します。 |
統合CT |
更新 |
コード・テンプレートがターゲット表の行を更新できることを示す場合は、Trueに設定します。 |
統合CT |
データ・オブジェクトにバインドされるCTマッピングでの演算子の場合、演算子属性にプロパティを設定できます。これらの属性は、CTマッピングを実行する際の置換メソッドで使用されます。
CTマッピングでは、データ・オブジェクトにバインドされる演算子には、次の追加プロパティがあります。これらの演算子は、プロパティ・インスペクタのコード・テンプレート・メタデータ・タグのノードにリストされます。
SCD
緩やかに変化するディメンジョンのコード・テンプレートを使用する際、属性が実行するロールを指定する場合はSCDプロパティを使用します。このプロパティに設定できる値は、次のとおりです。
サロゲート・キー: ターゲット表の一意レコード識別子(主キー)として使用されます。この属性への順序をマップする必要があります。
自然キー: ソース表の一意レコード識別子(レコードのビジネス・キー)からマップされます。
現行レコード・フラグ: 現在アクティブなレコードの識別に使用します。現行レコードのフラグは1に設定され、旧レコードのフラグは0に設定されます。属性は数値である必要があり、自動的にロードされます(マップはしないでください)。
変更時に行を更新: この属性に新規値がロードされると、同じ自然キーのレコードの対応する列の値が上書きされます。
変更時に行を追加: この属性に新規値がロードされると、サロゲート・キーは新規で自然キーは同じ行がターゲット表に挿入されます。挿入されたレコードには現行とマーク付けされます。
開始タイムスタンプ: レコードが現行である期間の開始時間。新規行が挿入されると、新規レコードの開始タイムスタンプと旧レコードの終了タイムスタンプはSYSDATE
に設定されます。
終了タイムスタンプ: レコードが現行である期間の終了時間。現行レコードの場合、通常、終了タイムスタンプ列の値は01-01-2400です。
UD1
UD1タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。
UD2
UD2タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。
UD3
UD3タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。
UD4
UD4タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。
UD5
UD5タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。
UPD
このプロパティは、ICT_SQL_ INCR_UPDまたはICT_ORACLE_INCR_UPD_MERGEなどのコード・テンプレートの更新を使用するときに更新する列を制御します。
照合に使用する制約を指定するには、ターゲット演算子の制約による一致プロパティを使用します。UPDプロパティが設定されていない場合は、演算子の制約による一致キーが使用されます。
CTマッピングで使用する演算子に特定の構成プロパティを設定することができます。この項では、構成プロパティについて説明します。
CTマッピングに使用するフラット・ファイル演算子のソース・ファイル演算子の構成プロパティを設定できます。このプロパティでは、データ・ファイルが関連付けされるフラット・ファイル演算子が識別されます。
複数のフラット・ファイル演算子を含むCTマッピングの場合は、ソース・ファイル演算子プロパティを設定する必要があります。CTマッピングにフラット・ファイル演算子が1つのみ含まれる場合、このプロパティの設定はオプションです。
次の手順で、ソース・ファイル演算子の構成プロパティを設定します。
フラット・ファイル演算子を含むCTマッピングを右クリックし、「構成」を選択します。
CTマッピングの「構成」タブが表示されます。
SQL Loaderデータ・ファイル・プロパティの省略記号ボタンをクリックします。
「SQL Loaderデータ・ファイル」ダイアログ・ボックスが表示されます。
ダイアログ・ボックス左のファイル名を選択し、右にソース・ファイル演算子プロパティを設定します。
デザイン・センターの「監査情報」パネルには、CTマッピング実行の一環として実行した各タスクの詳細情報が表示されます。この情報を使用して、CTマッピング実行中に発生したエラーを監査できます。
ただし、実行詳細を表示する監査情報パネルの場合は、「コード・テンプレート・マッピングを監査する際の前提条件」の説明に従って特定のプロパティを設定する必要があります。
図7-5は、CTマッピング実行用の監査情報パネルを示したものです。
「監査情報」パネルには、CTマッピング実行の一環として実行される各手順が表示されます。各手順に表示された詳細には、タスク名、挿入、更新または削除済行数およびそのステータスが含まれます。
CTマッピング内の手順に関する詳細情報が表示されます。各手順のエラー・メッセージを表示できます(ある場合)。また、各タスクで実行された文も表示できます。各タスクを表すノードを開き、タスク実行の詳細を表示します。
監査情報パネルにはすべてのタスクがリストされるわけではありません。タスクの設定で監査が除外されている場合、タスクは表示されません。監査にコード・テンプレート・タスクを含める際の詳細は、「コード・テンプレート・マッピングを監査する際の前提条件」を参照してください。
たとえば、図7-5に示す監査情報パネルでは、CTマッピングにCREATE_TARGET_TABLE、TRUNCATE_TARGET_TABLE、DELETE_TARGET_TABLE、INSERT_NEW_ROWS、COMMITおよびPOST_INTEGRATION_CONTROLの各タスクが含まれます。INSERT_NEW_ROWSタスクの一環として実行された文は右のパネルに表示されます。タスク4は監査情報パネルにはリストされません。これは、このタスクの設定で監査から除外されているためです。
Oracle Warehouse BuilderでCTマッピング実行の詳細情報を提供するには、次のプロパティを設定する必要があります。
ログ監査レベル
コード・テンプレートの各タスクにはログ監査レベルというプロパティが含まれます。このプロパティには0から5の値を設定できます。値を0に設定すると、このタスクの詳細が監査に含まれていないことを示します。このプロパティの値を1から5に設定すると、このタスク実行の詳細が監査ログに含まれます。
ログ・レベル
CTマッピングの各実行ユニットにはログ・レベルというプロパティが含まれます。このプロパティは実行ユニットに対して実行されたロギング・レベルを表します。このプロパティには0から5の値を設定できます。値を0に設定すると、この実行ユニットはログから除外されます。このプロパティの値を1から5に設定すると、この実行ユニットの実行ログに使用する詳細レベルを指定できます。
標準的なデータ・ウェアハウス環境では、データをソース・システムから抽出し、変換してから、データ・ウェアハウスにロードします。ただし、ソース・システムのデータが変更されると、データ・ウェアハウスをこれらの変更で更新する必要があります。変更データ・キャプチャ(CDC)では、変更データのみが迅速に識別および処理され、この変更済データを使用できるようにします。Oracle Warehouse Builderを使用すると、CDC CTを使用してCDCを実行できます。
Oracle Warehouse Builderでは、次のタイプのCDCを実行できます。
一貫
一貫変更データ・キャプチャではキャプチャしたデータの一貫性が確保されます。たとえば、表ORDER
とORDER_LINE
(ORDER_LINE
レコードには関連ORDER
レコードが必要であるため、参照整合性制約付き)があります。ORDER_LINE
の変更がキャプチャされると、関連ORDER
変更もキャプチャされ、逆の場合もそうなります。
一貫性が保証された使用可能変更セットを一貫性ウィンドウと言います。複数の統合インタフェースをパッケージとして設計および順序付けして、このウィンドウ内の変更を正しい順序で処理する必要があります(ORDER
の後でORDER_LINE
)。一貫性のある変更データ・キャプチャはより強力ですが、設定はより困難です。データ変更をキャプチャ中に参照整合性制約を確認する必要がある場合は、この方法を使用します。パフォーマンス上の理由により、大勢のサブスクライバが必要な場合は、一貫性のある変更データ・キャプチャもお薦めします。
注意: 一貫セットおよび単純仕分けの両方を使用してモデル(または、モデル内のデータ・ストア)を仕分けすることはできません。
単純
単純変更データ・キャプチャを使用すると、1つ以上のデータ・ストアを仕分けできます。変更をキャプチャする際、各仕分データ・ストアは個別に処理されます。
この方法には、次の例に示すように制限があります。たとえば、ORDER
表とORDER_LINE
表の変更を処理する必要があるとします(ORDER_LINE
レコードには関連ORDER
レコードが必要であるため、参照整合性制約付き)。ORDER_LINE
への挿入がキャプチャされた場合、ORDERS
内の関連付けられた新規レコードもまたキャプチャされているという保証はありません。関連付けられたORDER
レコードを伴わずにORDER_LINE
レコードを処理した場合、統合プロセスで参照の整合性違反が発生する可能性があります。
一貫変更データ・キャプチャでは、「開始」、「削除」、「サブスクライブ」、「サブスクライブ解除」、「ウィンドウの拡張」、「サブスクライバのロック」、「サブスクライバのロック解除」および「データのパージ」の各モジュール・コマンドが使用されます。
単純変更データ・キャプチャには、モジュールおよび表に「開始」、「削除」、「サブスクライブ」および「サブスクライブ解除」の各コマンドが用意されています。「サブスクライバのロック」および「サブスクライバのロック解除」の各コマンドは使用可能ですが、使用されません。
開始
変更データ・キャプチャ・インフラストラクチャを設定します。
削除
変更データ・キャプチャ・インフラストラクチャを削除します。
サブスクライブ
この変更データ・キャプチャにサブスクライバを追加します。
サブスクライブ解除
この変更データ・キャプチャからサブスクライバを削除します。
ウィンドウ拡張
一貫性ウィンドウとは、参照整合性に違反することなく挿入/更新/削除できる一貫性セットのすべての表で使用可能な変更です。「ウィンドウの拡張」操作では、最後の「ウィンドウの拡張」操作以降キャプチャされた新規変更を反映するようにこのウィンドウが計算されます。
サブスクライバのロック
拡張ウィンドウはすべての一貫性セットに適用されますが、サブスクライバが変更を個別に使用します。サブスクライバのロック操作では、一貫性ウィンドウの変更のサブスクライバ固有のスナップショットが実行されます。このスナップショットには、サブスクライバが使用していない一貫性ウィンドウ内のすべての変更が含まれます。
サブスクライバのロック解除
サブスクライバに対するサブスクライバのロック操作中にロックされた変更の使用をコミットします。この操作はサブスクライバのすべての変更が処理されてからのみ処理する必要があります。
データのパージ
すべてのサブスクライバがサブスクライブしている変更を使用後もエントリはキャプチャ表に残るため、削除する必要があります。この削除はデータのパージ・コマンドによって実行されます。
変更データ・キャプチャの実行シナリオ
ソース・スキーマSRC
のORDERS
表には、受注詳細が格納されます。この表のデータは、データ・ウェアハウスのターゲット・スキーマWH_TGT
のWH_ORDERS
表にロードされます。ORDERS
表のデータは、受注ステータスまたはディスパッチ日が更新されると変更されます。データ・ウェアハウスのデータはソース・データの変更に基づき更新する必要があります。
変更データ・キャプチャはCDC CTを使用して設定でき、変更済データのみをデータ・ウェアハウスのターゲット表にロードできます。
コード・テンプレートを使用できるソースまたはターゲットの変更データ・キャプチャを実行できます。CDCの実行の最初の手順は、変更をキャプチャするオブジェクトの識別および選択です。
データ変更をキャプチャする必要があるオブジェクトの指定手順:
まだ作成していない場合は、モジュールを作成し、データ変更をキャプチャするソース・オブジェクトをインポートします。
この例では、ソース・スキーマSRC
には変更をキャプチャするORDERS
表が含まれます。ロケーションがSRC
スキーマをポイントし、ORDERS
表をこのモジュールにインポートするSRC_MOD
というOracleモジュールを作成します。
SRC_MOD
モジュールをダブルクリックし、「モジュールの編集」ダイアログ・ボックスを表示します。
左のパネルの、「CDCコード・テンプレート」をクリックします。CDCコード・テンプレート・ページのコード・テンプレート・リストから、変更データ・キャプチャを実行するためにインポートしたコード・テンプレートを選択します。
この例では、PUBLIC_PROJECT/BUILT_IN_CT/JCT_ORACLE_SIMPLEを選択します。
左のパネルの、「CDC表」をクリックします。CDC表ページで、ボタンを使用して変更を使用可能セクションから選択済セクションにキャプチャする必要がある表を移動します。
この例では、ORDERS
表を使用可能リストから選択済リストに移動します。
これで、ORDERS
表が変更データ・キャプチャに設定されました。
次の手順で、変更をロードするCTマッピングを作成します。
まだの場合は、変更データ・キャプチャを実行するCTマッピングを含めるテンプレート・マッピング・モジュールを作成します。
このテンプレート・マッピング・モジュールのロケーションがCTマッピングを配布する必要があるエージェントに関連付けられていることを確認します。
この例では、CDC_MAP_MOD
というテンプレート・マッピング・モジュールはDEFAULT_AGENTのロケーションに関連付けられます。このロケーションは、Oracle Warehouse BuilderとともにインストールされているOC4Jサーバーを表します。
手順1で作成したテンプレート・マッピング・モジュールに、CDCを実行するETLロジックを含むCTマッピングを作成します。
この例で作成したマッピングはCDC_LOAD_ORDERS_MAP
です。
変更をキャプチャするソース・オブジェクトをドラッグ・アンド・ドロップします。
この例では、ORDERS
表をSRC_MOD
モジュールからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
ソース・オブジェクトを表す演算子を選択します。プロパティ・インスペクタの変更データ・キャプチャ・ノードで、「有効化」を選択します。
ORDERS
表には、JRN_SUBSCRIBER
、JRN_FLAG
およびJRN_DATE
の3つの追加属性が含まれます。
プロパティ・インスペクタの変更データ・キャプチャ・ノードに、変更データ・キャプチャ・フィルタ・プロパティを設定し、特定のサブズクライバの変更済データの選択に使用する条件を定義します。
変更済データをキャンバスに格納する表をドラッグ・アンド・ドロップします。
この例では、SRC_MOD
モジュールのORDERS_CHANGE
表にORDERS
表の変更が格納されます。
変更をキャプチャする属性を、ソース表から変更済データを格納するターゲット表の対応する属性にマップします。
この例では、order_Id
、order_status
、order_mode
およびJRN_DATE
の各属性を、ORDERS
表からORDERS_CHANGE
表のorder_id
、order_status
、order_mode
およびchange_date
の各属性にマップします。
CTマッピングの「実行ビュー」で、コード・テンプレートと関連付ける実行ユニットを作成します。
この例では、ORDERS
およびORDERS_CHANGE
演算子を選択し、実行ビュー・ツールバーの「実行ユニットの作成」 をクリックします。
または、ORDERS
およびORDERS_CHANGE
を選択し、実行メニューから「実行ユニットの作成」を選択します。
コード・テンプレート・パネルがログ・ウィンドウに表示されない場合は、表示メニューから「コード・テンプレート」を選択します。
「コード・テンプレート」パネルの「統合/ロード・コード・テンプレート」タブを選択します。
EX_UNIT1フィールドの「コード・テンプレート」で、使用するコード・テンプレートを選択します。
この例では、ETLの実行に使用するコード・テンプレートとしてJCT_ORACLE_SIMPLEを選択します。
マッピングを検証し、エラーがある場合は修正します。
変更データ・キャプチャの表を設定し、ソース表から変更をロードするCTマッピングを作成したら、次の手順で変更データ・キャプチャ・ソリューションを配布します。
起動していない場合は、「コントロール・センター・エージェント(CCA)の起動」の説明に従って、コントロール・センター・エージェントを起動します。
変更済データを格納するターゲット表を配布します。
この例では、デザイン・センターまたはコントロール・センター・マネージャのいずれかを使用してORDERS_CHANGE
表を配布します。
デザイン・センターまたはコントロール・センター・マネージャを使用して、変更済データをターゲット表にロードするCTマッピングを配布します。
アプリケーションが存在するというエラーが表示される場合は、コントロール・センター・マネージャに移動し、配布オプションとして「置換」を選択し、マッピングを配布します。
この例では、デザイン・センターまたはコントロール・センター・マネージャを使用してCDC_ORDERS_LOAD_MAP
マッピングを配布します。
変更データ・キャプチャ・プロセスを開始すると、Oracle Warehouse Builderによって変更をキャプチャするソース表とターゲット表にトリガーが作成されます。CTマッピングを正常に実行するには、CDCを実行するユーザーにソース・スキーマに関する必要な権限が付与されていることを確認します。
キャプチャ・プロセスを開始するには、プロジェクト・ナビゲータで変更をキャプチャするソース表を含むモジュールを右クリックし、「変更データ・キャプチャ」を選択してから「開始」を選択します。
この例では、SRC_MOD
を右クリックして「変更データ・キャプチャ」を選択してから、 「開始」を選択します。
CDC操作に関するメッセージが含まれる「メッセージ・ログ」が新しいタブに表示されます。このプロセス中に、Oracle Warehouse Builderによってソース表にトリガーを作成するDDLスクリプトが生成され、DDLスクリプトが配布されます。
変更データ・キャプチャ・プロセスを開始後は、キャプチャ・システムにサブスクライバを追加する必要があります。サブスクライバは変更データ・キャプチャ・プロセスによって生成された変更を使用します。
サブスクライバの追加手順:
プロジェクト・ナビゲータでソース表を含むモジュールを右クリックし、 「変更データ・キャプチャ」 、「サブスクライブ」の順に選択します。
現在のサブスクライバのリストが含まれる「サブスクライバの追加」ダイアログ・ボックスが表示されます。
この例では、SRC_MOD
を右クリックして「変更データ・キャプチャ」を選択してから、 「サブスクライブ」を選択します。
セクションを追加するサブスクライバの「サブスクライバ名」列に、サブスクライバ名を入力します。
この例では、「サブスクライバ名」列にOrd_subscriber
と入力します。
「OK」をクリックして、「サブスクライバの追加」ダイアログ・ボックスを閉じます。
ログ・ウィンドウにサブスクライブ・アクションに対して実行中のアクションとアクションの結果をリストするサブスクライブ・アクションの新規パネルが表示されます。このログにエラーが表示される場合は、エラーを修正してからサブスクライバを追加する手順を実行します。
変更データ・キャプチャ・プロセスを設定すると、オプションでこのシステムをテストして、ソースの変更がキャプチャされ、サブスクラバが使用可能であることを検証できます。
変更データ・キャプチャ・システムのテスト手順:
SQL*Plusで、変更をキャプチャするソース表が含まれるスキーマにログインします。
この例では、SRC
スキーマにログインします。
ソース表に行を挿入します。
この例では、ORDERS
表に行を挿入します。
コントロール・センター・マネージャで、変更データ・キャプチャを実行するCTマッピングを選択し、「開始」をクリックします。
この例では、CDC_LOAD_ORDERS_MAP
マッピングを開始します。
追加した行はターゲット表に挿入する必要があります。
「ジョブ詳細」パネルには、CTマッピングで実行中の各操作の詳細が表示されます。
変更データ・キャプチャ・ソリューションを設定したら、事前定義済アクションを使用して変更キャプチャ・プロセスを管理します。WebサービスとしてのCDCトラッキングがあるモジュールまたは表を公開すると、これらのオブジェクトで定義されたアクションは生成済Webサービスに含まれます。
これらのアクションを実行するには、CDCトラッキングがあるモジュールまたは表を右クリックして「変更データ・キャプチャ」を選択し、開始、削除、サブスクライブ、サブスクライブ解除、ウィンドウ拡張、データのパージ、サブスクライバのロック、サブスクライバのロック解除の使用可能アクションを使用します。この項では、実行できるCDCアクションを説明します。
適用可能アクションは、実行中の変更データ・キャプチャのタイプによって異なります。
変更データ・キャプチャの開始
変更データ・キャプチャのソース・オブジェクトを設定後、オブジェクトを右クリックしてから「開始」を選択して変更済データのキャプチャを開始します。詳細は、「変更データ・キャプチャ・プロセスの開始」を参照してください。
変更データ・キャプチャ・システムの停止
「削除」アクションにより、変更データ・キャプチャ・プロセスが停止され、キャプチャ・オブジェクトが削除されます。
変更データ・キャプチャ・プロセスを停止するには、プロジェクト・ナビゲータでデータ・オブジェクトまたはモジュールを右クリックし、「変更データ・キャプチャ」を選択してから、「削除」を選択します。Oracle Warehouse Builderでは、キャプチャを停止してキャプチャ・オブジェクトを削除するかどうかを尋ねるプロンプトが表示されます。「はい」をクリックします。
変更データ・キャプチャ・システムのサブスクライブ
「サブスクライブ」アクションを実行すると、サブスクライバを変更データ・キャプチャ・システムに追加できます。サブスクライバの追加の詳細は、「変更データ・キャプチャ・プロセスへのサブスクライバの追加」を参照してください。
変更データ・キャプチャ・システムからのサブスクライバの削除
「サブスクライブ解除」アクションを実行すると、サブスクライバを変更データ・キャプチャ・システムから削除できます。サブスクライバを削除すると、サブスクライバはキャプチャ中の変更データを使用できなくなります。
サブスクライバの削除手順:
プロジェクト・ナビゲータで、サブスクライバを削除するデータ・オブジェクトまたはモジュールを右クリックし、変更データ・キャプチャ・メニューから 「サブスクライブ解除」を選択します。
「サブスクライバの削除」ダイアログ・ボックスが表示されます。現在のサブスクライバ・セクションには、変更データ・キャプチャ・システムの現在のサブスクライバのリストが含まれます。
現在のサブスクライバ・セクションから削除するサブスクライバを選択し、ボタンを使用してサブスクライバをサブスクライバ・セクションに移動して削除します。
「OK」をクリックします。
ログ・ウィンドウに実行中のアクションの詳細が表示されます。このログをチェックして、サブスクライブの解除アクションが完了したことを確認します。
変更データ・キャプチャ・ウィンドウの拡張
「ウィンドウの拡張」アクションを使用して、変更データの新規セットを受信するサブスクリプション・ウィンドウを拡張します。ウィンドウを拡張して最新の変更済データを受信するには、プロジェクト・マネージャでモジュールまたは表を右クリックし、「変更データ・キャプチャ」、「ウィンドウ拡張」の順に選択します。Oracle Warehouse Builderに、ウィンドウを拡張するかどうかを尋ねるプロンプトが表示されます。「はい」をクリックします。
キャプチャ・データのパージ
サブスクライバがサブスクライブ中の変更データを使用したら、「データのパージ」アクションを使用してキャプチャ表から変更データを削除します。キャプチャ・データをパージするには、プロジェクト・ナビゲータでモジュールまたは表を右クリックし、「変更データ・キャプチャ」、「データのパージ」の順に選択します。Oracle Warehouse Builderに、すべてのキャプチャ・データをパージするかどうかを尋ねるプロンプトが表示されます。「はい」をクリックします。
サブスクライバのロック
「サブスクライバのロック」操作を使用すると、一貫性ウィンドウ内のサブスクライバ固有の変更のスナップショットを取得できるようにサブスクライバをロックできます。スナップショットには、サブスクライバが使用していない一貫性ウィンドウ内のすべての変更が含まれます。
サブスクライバのロック手順:
プロジェクト・マネージャで、サブスクライバをロックするデータ・オブジェクトまたはモジュールを右クリックし、「変更データ・キャプチャ」、「サブスクライバのロック」の順に選択します。
「サブスクライバのロック」ダイアログ・ボックスが表示されます。現在のサブスクライバ・セクションには、変更データ・キャプチャ・システムの現在のサブスクライバのリストが含まれます。
現在のサブスクライバ・セクションからロックするサブスクライバを選択し、ボタンを使用してサブスクライバをサブスクライバ・セクションに移動してロックします。
「OK」をクリックします。
ログ・ウィンドウに実行中のアクションの詳細が表示されます。このログをチェックして、サブスクライブのロック・アクションが完了したことを確認します。
サブスクライバのロック解除
「サブスクライバのロック解除」アクションを使用して、サブスクライバに対するサブスクライバのロック操作中にロックされた変更をコミットします。
サブスクライバのロック解除手順:
プロジェクト・マネージャで、サブスクライバのロックを解除するデータ・オブジェクトまたはモジュールを右クリックし、「変更データ・キャプチャ」、「サブスクライバのロック」の順に選択します。
「サブスクライバのロック解除」ダイアログ・ボックスが表示されます。現在のサブスクライバ・セクションには、変更データ・キャプチャ・システムの現在のサブスクライバのリストが含まれます。
現在のサブスクライバ・セクションからロックを解除するサブスクライバを選択し、ボタンを使用してサブスクライバをサブスクライバ・セクションに移動してロックします。
「OK」をクリックします。
ログ・ウィンドウに実行中のアクションの詳細が表示されます。このログをチェックして、サブスクライブのロック解除アクションが完了したことを確認します。
コントロール・コード・テンプレート(コントロールCT)を使用すると、データ・オブジェクト内のレコードが定義済制約と一致しているかどうかをチェックすることでデータ整合性を維持することができます。データ・オブジェクトに指定された制約に違反するデータがデータ・オブジェクトにロードされていないことを確認する場合は、コントロールCTを使用します。
コントロールCTによってチェックされる制約は、チェック制約、主キー、代替キーおよびNOT NULLです。
コントロールCTを使用して、次をチェックします。
既存データの整合性
STATIC_CONTROLプロパティをTrueに設定し、現在データ・オブジェクト内にあるデータをチェックします。
レコードをターゲットにロードする前の受信データの整合性。
Set the FLOW_CONTROLプロパティをTrueに設定します。コントロールCTは、ターゲットに書き込む前に結果フロー上のターゲット・データ・オブジェクトの制約をシミュレートします。
コントロールCTでは、統合CTによって作成された既存表または一時表をチェックできます。
コントロールCTの機能方法
コントロールCTは、一連の制約とチェック対象の表名を受け入れます。コントロールCTは、拒否されたすべてのレコードを書き込むエラー表を作成するか、チェックした結果セットからエラーのあるレコードを削除します。
どちらの場合も、コントロールCTでは、通常、次のタスクが実行されます。
エラー表が作成されます。エラー表にはターゲット表と同じ列と、エラー・メッセージを追跡、元をチェック、日付けをチェックする追加列が含まれます。
チェックする必要がある主キー、代替キー、外部キー、条件、必須列ごとにエラー表でエラーのあるレコードを分離します。
必要に応じて、エラーのあるレコードをチェック済表から削除します。
コントロールCTの操作モード
コントロールCTは、次のモードで操作できます。
STATIC_CONTROL
コントロールCTによって表の制約が読み込まれ、表のデータに対してチェックされます。制約に一致しないレコードがエラー表に書込まれます。
FLOW_CONTROL
コントロールCTによってターゲット表の制約が読み込まれ、これらの制約がステージング領域の"I$"フロー表に含まれるデータとチェックされます。これらの制約に違反するレコードがエラー表に書込まれます。
シナリオ
従業員データはEMP.dat
というファイルに格納されています。このデータをターゲット表EMP_TGT
にロードする必要があります。ロード中に、ターゲット表で定義された制約に違反するレコードはターゲット表に関連付けられたエラー表に書込まれます。
ターゲット表は、WH_TGT
というOracleモジュールに存在します。
ソースはフラット・ファイルであるため、デザイン・センターにフラット・ファイル・モジュールを作成し、フラット・ファイルをこのモジュールにインポートします。
ソース・モジュールの作成およびソース・フラット・ファイルのインポート手順:
プロジェクト・ナビゲータで、ファイル・ノードを右クリックし、「新規フラット・ファイル・モジュール」を選択します。
モジュールの作成ウィザードが表示されます。このウィザードを使用して、フラット・ファイル・モジュールを作成します。
フラット・ファイル・モジュール作成の詳細は、『Oacle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。
作成したフラット・ファイル・モジュールを右クリックし、「新規ファイル」を選択します。
「フラット・ファイルの作成」ウィザードが表示されます。このウィザードを使用して、ソース・フラット・ファイルを定義およびサンプリングします。
フラット・ファイルの作成およびサンプリングの詳細は、『Oacle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。
まだの場合は、データ整合性チェックを実行するCTマッピングを含めるテンプレート・マッピング・モジュールを作成します。
このマッピング・モジュールのロケーション詳細を、マッピングを配布する必要があるエージェントに設定します。
この例では、DEFAULT_AGENTロケーションに関連付けられたCKM_MAP_MOD
というマッピング・モジュールを使用します。このロケーションは、Oracle Warehouse BuilderとともにインストールされるOC4Jサーバーを指し示しています。
データの抽出、チェックおよびロードのロジックを含むCTマッピングを作成します。
この例では、EMP_LOAD_CKM_MAP
というCTマッピングを作成します。
ソース・ファイルをソース・ファイルのソース・モジュールからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
この例では、ファイルEMP.datをファイル・モジュールからキャンバスにドラッグ・アンド・ドロップします。
ターゲット表をキャンバスにドラッグ・アンド・ドロップします。
この例では、EMP_TGT
演算子をキャンバスにドラッグ・アンド・ドロップします。
プロパティ・インスペクタの表演算子プロパティには、コントロールCTというノードが含まれます。すべての既存の制約とデータ・ルールが、このセクションの下のプロパティに表示されます。このグループのプロパティを使用して、データ・ルールと整合性制約の適用方法を定義します。
ソース属性を対応するターゲット属性にマップします。
マッピングの実行ビューで、次のタスクを実行します。
フラット・ファイル演算子の実行ユニットを作成し、この実行ユニットをLCT_FILE_TO_ORACLE_EXTER_TABLEコード・テンプレートに関連付けます。
ターゲット表を含む実行ユニットを作成します。この実行ユニットをCCT_ORACLEコード・テンプレートに関連付けます。
CTマッピングを検証および生成します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「生成」を選択します。
CTマッピングを配布します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「配布」を選択します。
CTマッピングを実行します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「開始」を選択します。
EMP_TGT
表で定義された制約に違反するレコードはターゲットにロードされません。これらのレコードはターゲット表に関連付けられたエラー表に書込まれます。
OracleターゲットCTには、Oracle Warehouse Builder PL/SQLマッピングでのみサポートされている演算子を使用する方法が用意されています。これらの演算子を使用すると、データ変換を定義、これらの変換演算子を含む実行ユニットを作成、実行ユニットをOracleターゲットCTに関連付けることができます。
シナリオ
2つの異なるソースで使用できるソース・データを集計し、ターゲット表にロードするとします。最初のソースは、ソース表CUSTOMERS
、TIMES
およびSALES
を含むOracleモジュールです。もう1つのソースは、表CHANNEL
およびCOUNTRY
を含むXMLモジュールです。
ソース・データで必要な変換は、すべてのソース表からのデータの結合、集計およびターゲット表SUMMARY_SALES
への集計データのロードです。ジョイナ演算子を使用して、ソース表からのデータを結合します。集計はOracle Database SQLファンクションCUBE
を利用するアグリゲータ演算子を使用して実行します。要約データはターゲット表にロードされます。
OracleターゲットCTを使用したソース・データの変換手順
OracleターゲットCTSを使用したソース・データの変換タスクは、次のとおりです。
プロジェクト・ナビゲータで、ソース・モジュールとその関連ロケーションを作成します。ソース・オブジェクトをこのモジュールにインポートします。
この例では、XMLソース・データを表すXMLモジュールを作成し、CHANNEL
表およびCOUNTRY
表をインポートします。このXMLモジュールに関連付けられたロケーションはXMLソースをポイントする必要があります。ロケーションがOracle DatabaseのSH
サンプル・スキーマをポイントするOracleモジュールを作成します。CUSTOMERS
、TIMES
およびSALES
表をこのモジュールにインポートします。
モジュール作成の詳細は、『Oacle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。
作成していない場合は、Oracleモジュールを作成してターゲット表を格納します。
このOracleモジュールに、変換済データを格納するターゲット表を作成します。表ノードを右クリックしてから「新規表」を選択し、表エディタを使用して表を定義します。
表名を右クリックおよび「生成」を選択してターゲット表を生成します。生成エラーがある場合は修正します。
表名を右クリックおよび「配布」を選択してターゲット表を配布します。
この例では、モジュールWH_TGT
にはターゲット表SUMMARY_SALES
が含まれます。
まだの場合は、必要なデータ変換を実行するCTマッピングを含めるテンプレート・マッピング・モジュールを作成します。
このマッピング・モジュールのロケーション詳細を、マッピングを配布する必要があるエージェントに設定します。
この例では、ETL_MAP_MOD
というマッピング・モジュールはDEFAULT_AGENT
のロケーションに関連付けられます。このロケーションは、Oracle Warehouse BuilderとともにインストールされるOC4Jサーバーを指し示しています。
データの抽出、変換およびロードに必要なETLロジックを含むCTマッピングを作成します。
この例では、LOAD_SUMMARY_SALES_MAP
というマッピングを作成します。
ソース表をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
この例では、CHANNEL
表およびCOUNTRY
表をXMLソース・モジュールから、CUSTOMERS
、TIMES
およびSALES
表をOracleモジュールからドラッグ・アンド・ドロップします。
必要なデータ変換の実行に使用する必要がある演算子をドラッグ・アンド・ドロップします。演算子属性を接続します。
この例では、次の演算子を追加します。
ソース表でデータを結合するジョイナ演算子。ジョイナ演算子の結合条件プロパティを設定し、ソース表を結合する方法を定義します。この例では、これらの表からのデータを結合する表ペア間で共通の列を使用します。
ジョイナ演算子の出力を集計するアグリゲータ演算子。データはCHANNEL_DESC
属性およびCOUNTRY_ISO_CODE
属性に基づき集計され、SQLファンクションCUBE
を使用して集計が実行されます。
したがって、アグリゲータ演算子のGroup by句で、次のように指定します。
CUBE(INGRP1.CHANNEL_DESC,INGRP1.COUNTRY_ISO_CODE)
ターゲット表をキャンバスにドラッグ・アンド・ドロップします。
この例では、SUMMARY_SALES
表をキャンバスにドラッグ・アンド・ドロップします。
ソース演算子と変換演算子間のデータ・フローを作成します。変換済出力をターゲット表にマップします。
この例では、表CHANNEL
、CUSTOMERS
、COUNTRY
、TIMES
およびSALES
がジョイナ演算子の入力グループにマップされます。ジョイナ演算子の出力グループはアグリゲータ演算子にマップされます。アグリゲータ演算子の出力は、ターゲット表SUMMARY_SALES
にマップされます。
CTマッピングの実行ビューで、データ変換の実行に必要な実行ユニットを作成します。
CTマッピングは図7-6にようになるはずです。
この例では、次を実行します。
CHANNEL
表の実行ユニットを作成します。この実行ユニットをLCT_SQL_TO_SQLコード・テンプレートに関連付けます。
COUNTRY
表の実行ユニットを作成します。この実行ユニットをLCT_SQL_TO_SQLコード・テンプレートに関連付けます。
表CUSTOMERS
、SALES
およびTIMES
、ジョイナ演算子、アグリゲータ演算子およびSUMMARY_SALES
表を含む実行ユニットを作成します。この実行ユニットをOracleターゲットCT DEFAULT_ORACLE_TARGET_CTに関連付けます。
CTマッピングを検証および生成します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「生成」を選択します。
CTマッピングを配布します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「配布」を選択します。
CTマッピングを実行してデータをXMLおよびOracleソースから抽出、変換し、Oracleターゲット表にロードします。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「開始」を選択します。
図7-6は、OracleターゲットCTを使用して必要なデータ変換を実行できるCTマッピングの実行ビューを示したものです。
コード・テンプレートを使用して、SQL Server、DB2およびTeradataなどの異機種データベースからデータを抽出できます。データ転送の実行に使用するコード・テンプレートは、ソースおよびターゲット・データベースによって異なります。
Oracle Warehouse Builderには、異なるデータベース間のデータ転送に使用できるコード・テンプレートのセットが用意されています。これらのコード・テンプレートは、グローバル・ナビゲータのパブリック・コード・テンプレート・ノードにあるBUILT_IN_CTノードに格納されています。各コード・テンプレートによって、特定のプラット・フォーム上で特定のタスク・セットが実行されます。
データ抽出のシナリオ
表ORDERS
およびORDER_DETAILS
はIBM DB2データベースに格納されます。これらの2つの表からデータを抽出してから変換し、OracleデータベースのORDERS_AGG_CUST
という表に格納する必要があります。変換ではこれらの2つの表のデータが結合され、各顧客のデータが集計されます。
IBM DB2からデータを抽出する前に
IBM DB2データベースへのアクセスに必要なドライブがあることを確認します。必要なファイルはdb2jcc.jar
およびdb2jcc_license_cu.jar
です。これらのファイルをOWB_HOME
/owb/lib/ext
ディレクトリにコピーします。
CCAを起動するスクリプトに、DB2ドライバに必要なライブラリをロードする文を追加します。
UNIXの場合は、次の文をOWB_HOME
/owb/bin/unix/ccastart
に追加します。
-Dapi.ext.dirs=$OWB_HOME/owb/lib/ext
Windowsの場合は、次の文をOWB_HOME
/owb/bin/win32/ccastart.bat
に追加します。
-Dapi.ext.dirs=%OWB_HOME%\owb\lib\ext
関連項目: CCA起動スクリプトの変更の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。 |
プロジェクト・ナビゲータで、ソース・データを表すDB2モジュールを作成します。このモジュールに関連付けられたロケーションは、ソース・オブジェクトを含むDB2データベースをポイントする必要があります。
この例では、ロケーションがORDERS
表およびORDER_DETAILS
表を含むDB2データベースをポイントするDB2モジュールを作成します。
DB2モジュール作成の詳細は、『Oacle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。
次の手順を使用して、ターゲット・モジュールおよびターゲット表を作成します。
作成していない場合は、Oracleモジュールを作成してターゲット表を格納します。
このOracleモジュールに、変換済データを格納するターゲット表を作成します。表ノードを右クリックしてから「新規表」を選択し、表エディタを使用して表を定義します。
表名を右クリックおよび「生成」を選択してターゲット表を生成します。生成エラーがある場合は修正します。
表名を右クリックおよび「配布」を選択してターゲット表を配布します。
この例では、モジュールWH_TGT
にはターゲット表ORDERS_AGG_CUST
が含まれます。
次の手順を使用して、DB2表からデータを抽出するCTマッピングを作成し、変換し、Oracle Database表にロードします。
まだの場合は、必要なETLを実行するCTマッピングを含めるテンプレート・マッピング・モジュールを作成します。
このマッピング・モジュールのロケーション詳細を、マッピングを配布する必要があるエージェントに設定します。
この例では、ETL_MAP_MOD
というマッピング・モジュールはDEFAULT_AGENTロケーションに関連付けられます。このロケーションは、Oracle Warehouse BuilderとともにインストールされるOC4Jサーバーを指し示しています。
データの抽出、変換およびロードに必要なETLロジックを含むマッピングを作成します。
この例では、LOAD_DB2_TO_ORACLE_MAP
というマッピングを作成します。
ソース表をDB2ソース・モジュールからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
この例では、ORDERS
表とORDER_DETAILS
表をDB2モジュールのソース・モジュールからドラッグ・アンド・ドロップします。
必要なデータ変換の実行に使用する必要がある演算子をドラッグ・アンド・ドロップします。演算子属性を接続します。
この例では、次の演算子を追加します。
ORDERS
表およびORDER_DETAILS
表でデータを結合するジョイナ演算子。ジョイナ演算子の結合条件プロパティを設定します。
ジョイナ演算子の出力を集計するアグリゲータ演算子。CUSTOMER_ID
属性に基づきデータを集計します。
ターゲット表をキャンバスにドラッグ・アンド・ドロップします。
この例では、ORDERS_TGT
演算子をキャンバスにドラッグ・アンド・ドロップします。
変換済出力をターゲット表にマップします。
マッピングの実行ビューで、次を実行します。
ORDERS
演算子およびORDER_DETAILS
演算子の実行ユニットを作成します。この実行ユニットをLCT_SQL_TO_ORACLEコード・テンプレートに関連付けます。
ジョイナ、アグリゲータおよびORDERS_AGG_CUST
表を含む実行ユニットを作成します。この実行ユニットをICT_ORACLE_INCR_UPDコード・テンプレートに関連付けます。
CTマッピングを検証および生成します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「生成」を選択します。
CTマッピングを配布します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「配布」を選択します。
CTマッピングを実行してデータをソースDB2表から抽出し、変換し、Oracleターゲット表にロードします。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「開始」を選択します。
図7-7は、マッピングLOAD_DB2_TO_ORACLE_MAPの実行ビューを示しています。
図7-7 IBM DB2からデータを抽出、データを変換およびOracle Databaseにロードするマッピング