ヘッダーをスキップ
Oracle® Warehouse Builderデータ・モデリング、ETLおよびデータ・クオリティ・ガイド
11gリリース2 (11.2)
B61350-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

15 ETL設計のトラブルシューティングおよびエラー処理

この章では、ETLのトラブルシューティングおよびOracle Warehouse Builderのエラー・ログについて説明します。また、DMLエラーのロギングなど、ETLのエラー処理方法についても説明します。

この章の内容は次のとおりです。

Oracle Warehouse Builderでのエラー・ログの調査

Oracle Warehouse Builderを使用する間、設計者はログ・ファイルにアクセスして様々な種類のエラーについて調査する必要があります。この項では、Oracle Warehouse Builderでログに記録されるすべてのタイプのエラー・メッセージについて概略を示し、そのアクセス方法について説明します。

Oracle Warehouse Builderでは、各種操作を実行する場合、次のようなエラーが記録されます。

この項では、Oracle Warehouse Builderで各種操作を実行した後にエラー・ログを取得する方法を示します。

検証エラーのトラブルシューティング

Oracle Warehouse Builderでは、プロジェクト・ナビゲータからオブジェクトを選択し、次に「ファイル」メニューから「検証」を選択することにより、すべてのオブジェクトを検証できます。検証が完了すると、「ログ」ウィンドウに検証メッセージが表示されます。

図15-1に、「メッセージ・ログ」ウィンドウの新しいタブの検証メッセージを示します。

図15-1 検証エラー・メッセージ

図15-1の説明が続きます。
「図15-1 検証エラー・メッセージ」の説明

また、「マッピング」を選択し、次に「検証」を選択すると、マッピング・エディタからマッピングを検証できます。「検証結果」ウィンドウに検証メッセージおよびエラーが表示されます。

検証結果では、オブジェクト名を表示するノード、検証ノードの順に開きます。検証エラーがある場合は、表示されます。検証メッセージをダブルクリックすると、「メッセージ・エディタ」ウィンドウ内にエラー・メッセージの詳細が表示されます。

Oracle Warehouse Builderでは、各検証済オブジェクトに対する最新の検証メッセージが保存されます。プロジェクト・ナビゲータ内のコンソール・ツリーからオブジェクトを選択し、メニュー・バーから「表示」を選択し、次に「検証メッセージ」をクリックすることによりこれらのメッセージにいつでもアクセスできます。「検証結果」ウィンドウにメッセージが表示されます。

生成エラーのトラブルシューティング

Oracle Warehouse Builderのオブジェクト用のスクリプトを生成した後、「ログ」ウィンドウに生成結果およびエラーが表示されます。「ログ」ウィンドウのエラー・メッセージをダブルクリックすると、メッセージ・エディタが表示され、ローカル・システムにエラーを保存できます。

図15-2に「生成結果」ウィンドウを表示します。

図15-2 生成結果ウィンドウ

図15-2の説明が続きます。
「図15-2 生成結果ウィンドウ」の説明

デプロイメント・エラーおよび実行エラーのトラブルシューティング

実行またはデプロイメントンエラーおよび警告メッセージのログをローカル・システム上の指定した場所に保存できます。プロジェクト・ナビゲータで、プロジェクトを選択します。「ツール」メニューから「プリファレンス」を選択します。「プリファレンス」ダイアログ・ボックスの左側にあるオブジェクト・ツリーで、「Oracle Warehouse Builder」ノードを展開し、「ロギング」オプションをクリックします。右側に表示されるプロパティを使用して、ログ・ファイルのパス、ファイル名および最大ファイル・サイズを設定します。保存するログのタイプを選択することもできます。

メニュー・バーから「表示」を選択し、次に「ログ」を選択することにより、Oracle Warehouse Builderコンソールからデプロイメント・メッセージおよびエラー・メッセージのログを参照できます。この「メッセージ・ログ」パネルは読取り専用です。

ランタイム監査ブラウザ

データの転送またはロード中にエラーが発生した場合、監査ルーチンは、ランタイム表にエラーを報告します。ランタイム監査ブラウザを使用して、これらのエラー・レポートに簡単にアクセスできます。ランタイム監査ブラウザは、過去のデプロイメントおよび実行に関する詳細情報を提供します。これらのレポートはランタイム・リポジトリ内に格納されたデータから生成されます。実行レポートの「実行」タブをクリックしてエラー・メッセージおよび監査詳細を表示します。

マッピングでエラーを発生した演算子の特定

マッピングのデプロイ時にエラーが発生した場合は、エラー・メッセージで指定された行番号を使用して、エラーの発生箇所を特定します。生成済コードにはマッピングの各演算子のコメントが含まれています。これにより、マッピング内のどの演算子がエラーを発生させているかを特定できます。

次の例に、セット・ベース・モードで生成されたフィルタ演算子用のコードを表示します。/*および*/で囲まれているコメントは、文の特定の部分を実行する演算子を示します。

INSERT INTO "FLTR_TGT"
      ("CHANNEL_ID", "CHANNEL_DESC")
      (SELECT
/*+ NO_MERGE */
/* CHANNELS.INOUTGRP1, FILTER.INOUTGRP1 */
  "CHANNELS"."CHANNEL_ID" "CHANNEL_ID",
  "CHANNELS"."CHANNEL_DESC" "CHANNEL_DESC"
FROM
  "SH"."CHANNELS"@"ORA11@SH_SRC_LOCATION"  "CHANNELS"
  WHERE 
  ( "CHANNELS"."CHANNEL_ID"  < 5/* OPERATOR FILTER: FILTER CONDITION */ ) 
      )
    ;

Name and Addressサーバー・エラーのトラブルシューティング

Oracle Warehouse Builderで提供されるName and Addressのクレンジング・サービスを使用する場合は、それに関連したエラーが表示されることがあります。

Name and Addressサーバーの起動および実行エラーは、次の場所に保存されます。

OWB_HOME/owb/bin/admin/NASvr.log

Name and Addressサーバーが次の場所で有効になっている場合、

OWB_HOME/owb/bin/admin/NameAddr.properties:TraceLevel=1,

ログ・ファイルNASvrTrace.logが同じディレクトリに生成されます。

DMLエラー・ロギングの使用

エラー・ロギングにより、文の実行中にエラーが発生してもDML文の処理を続行できます。エラー・コードおよび関連するエラー・メッセージなどのエラーの詳細は、エラー表に格納されています。DML操作が完了すると、エラー表をチェックして、エラーのある行を修正できます。DMLエラー・ロギングは、INSERTUPDATEMERGEなどのSQL文および複数表挿入に対応しています。これは、長時間かかるバルクDML文を実行する場合に有効です。

Oracle Warehouse Builderでは、セット・ベースのPL/SQLマッピングで使用するデータ・オブジェクトである表、ビュー、マテリアライズド・ビュー、ディメンションおよびキューブに対してエラー・ロギングを実行できます。DMLエラー・ロギングは、Oracle Database 10g リリース2以降で作成されたターゲット・スキーマのみに対応しています。

DMLエラー表について

DMLエラー表には、マッピングを使用してDML操作を実行したときに発生したエラーの詳細が記載されています。表、ビューおよびマテリアライズド・ビューにのみ、エラー表を定義できます。

DMLエラー表名プロパティを使用して、特定のデータ・オブジェクトのDMLエラーを記録します。データ・オブジェクトをターゲットとして使用するマッピングでは、ターゲット・オブジェクトにバインドされている演算子の「DMLエラー表名」プロパティを、DMLエラーが格納されるDMLエラー表の名前に設定します。

DMLエラーを格納する独自の表を作成したり、Oracle Warehouse BuilderによりDMLエラー表を生成できます。ターゲット演算子に「DMLエラー表名」プロパティが設定されているマッピングをデプロイするときに、「DMLエラー表名」プロパティで指定した名前を持つ表がターゲット・スキーマにまだない場合は、作成されます。

DMLエラー表がマッピングとともに作成される場合は、マッピングの削除によりDMLエラー表も削除されます。

ソース・ターゲット・オブジェクト列に加えて、DMLエラー表には表15-1に示す列が含まれています。DMLエラーのログに独自の表を使用している場合、表にこれらの列が含まれていることを確認します。

表15-1 エラー表のDMLエラーのある列

列名 説明

ORA_ERR_NUMBER$

Oracleエラー番号。

ORA_ERR_MESG$

Oracleエラー・メッセージ・テキスト。

ORA_ERR_ROWID$

(更新および削除)エラーのある行の行ID。

ORA_ERR_OPTYPE$

操作のタイプ: 挿入(I)、更新(U)、削除(D)

ORA_ERR_TAG$

ランタイム監査データの手順または詳細な監査ID。これはランタイム・ビューALL_RT_AUDIT_STEP_RUNSSTEP_ID列です。


DMLエラー・ロギングの有効化

DMLエラー・ロギングがセット・ベースのPL/SQLマッピングに生成されるとき、次の条件を満たしています。

  • 表、ビュー、マテリアライズド・ビュー、ディメンションまたはキューブをロードするマッピングでは、ターゲット・オブジェクトを表す演算子に対してDMLエラー表名プロパティが設定されます。

  • マッピングを含むモジュールの「PL/SQL生成モード」構成パラメータは、「Oracle10g」、Oracle Database 11gまたは「デフォルト」に設定されます。

    その値が「デフォルト」に設定されている場合、このモジュールに関連付けられているロケーションのVersionプロパティが「10.2」、「11.1」または「11.2」に設定されています。

DMLエラー・ロギングおよびETL

DMLエラー・ロギングが有効なデータ・オブジェクトが含まれるマッピングの実行は、次のいずれかの条件で失敗します。

  • 生成されたエラーの数が、指定したマッピングのエラーの最大数を超えています。

    マッピングのエラー最大数のデフォルト・セットは50です。マッピングのエラーの構成パラメータの最大数を設定して、この値を変更できます。プロジェクト・ナビゲータで、マッピングを右クリックして「構成」を選択します。エラー構成パラメータの最大数で、マッピングの実行が終了する前に生成される可能性のあるエラーの最大数を指定します。

  • サポートされていない機能があると、エラーが発生します。

    「DMLエラー・ロギングの制限」を参照してください。

DMLエラー表を切り捨て、以前のロード中に生成されたエラーの詳細を削除できます。これは、エラー表の維持管理に便利です。マッピングが実行される前に、エラー表を切り捨てるには、DMLエラー・ロギングが有効なデータ・オブジェクトにバインドされている演算子の「エラー表の切り捨て」プロパティを選択します。

プロパティ「ロールアップ・エラー」および「このプロパティからのエラーのみを選択」は、DMLエラー・ロギングには使用されません。

DMLエラー・ロギングの制限

  • DMLエラー・ロギングは、非スカラー・データ型ではサポートされません。

  • 各DML文には特定の制限があります。これは、その文に関連するマニュアルに記載されています。


    関連項目:

    各DML文のDMLエラー・ロギングの制限については、Oracle Database SQL言語リファレンスを参照してください。

  • データ・オブジェクトに定義したDMLエラー表がある場合、コントロール・センター・マネージャの「アップグレード」オプションを使用してデータ・オブジェクトをアップグレードすることはできません。

  • エラー・ロギングの必要性に応じて、マッピングに表演算子を構成し、APPENDまたはNOAPPENDヒントを使用できます。たとえば、ダイレクト・パス・インサートは、一意キー違反のエラー・ロギングには対応していません。一意キー違反を記録するには、NOAPPENDヒントを使用します。

ETLプロセスのトラブルシューティング

この項では、ETLの実行中に発生するエラーのトラブルシューティングのヒントを説明します。

ハイブリッド・マップの実行時のORA-04063

PL/SQL OracleターゲットCTを含むハイブリッド・マッピングの実行時に次のエラーが発生する場合があります。

ORA-04063: package body "DEMO.ORACLE_SQL_POWER_MTI" has errors

これは、マッピングを実装するために生成されたPL/SQLパッケージであるORACLE_SQL_POWER_MTIにコンパイル・エラーがあることを示しています。

このエラーの原因を特定するには、SQL*Plusを起動して、ターゲット・ユーザーとして接続し、次のコマンドを実行します。

ALTER PACKAGE ORACLE_SQL_POWER_MTI COMPILE BODY;
SHOW ERRORS;

たとえば、ソース表またはビューに対する権限がターゲット・ユーザーに付与されていない場合は、表が見つからないというエラーが発生する可能性があります。すべてのエラーを解決して、パッケージを再コンパイルし、ハイブリッド・マッピングを実行します。

エージェント・ログ・ファイル

エージェント・ログ・ファイルを使用すると、コード・テンプレート・マッピングのデプロイメント・エラーおよび実行エラーをデバッグできます。Windowsでは、デザイン・センター・コンソールにエージェント・ログが表示されます。

次は、UNIXのエージェント・ログです。

  • OWB_HOME/owb/bin/adminにあるjrt.logファイルには、エージェント・プロセスおよび監査設定エラーからの出力が格納されます。

  • コード・テンプレート・マッピングの実行ログは、OWB_HOME/owb/jrt/log/owbフォルダに保存されます。それぞれのジョブ実行は、ジョブ実行の監査証跡を使用してXMLログ・ファイルを含む別のディレクトリで表されます。

コントロール・センター・エージェント(CCA)の起動時に発生するエラー

コントロール・センター・エージェントの起動時に次のエラーが発生する場合があります。

Error initializing server: Application: system is in failed state as initialization failed.

このエラーを解決するには、フォルダOWB_HOME/owb/jrt/applicationsのサブディレクトリをすべて削除してからコントロール・センター・エージェントを起動します。

セキュアWebサイトからのWebサービス実行時のエラー

セキュアなWebサイトからWebサービスを実行するときに、次のエラーが発生する場合があります。

SSLエラー: 要求されたターゲットへの有効な認証パスが見つかりません。

このエラーを解消するには、次の手順を実行します。

  1. OC4JサーバーからSSLチャンネルに使用する証明書をエクスポートします。これは、$J2EE_HOME/configディレクトリにあります。

    $JAVA_HOME/bin/keytool -export -storepass welcome -file server.cer -keystore OWB_HOME.owb/jrt/config/serverkeystore.jks

    server.cerは証明書のエクスポート先となるファイル、serverkeystore.jksはOracle Warehouse Builderの組込みOC4Jサーバーで使用されるキーストアです。Oracle Warehouse Builderの組込みサーバー以外のOC4Jインスタンスを使用する場合、serverkeystore.jksは、OC4JでSSLを設定したときに作成したキーストア・ファイルです。

  2. 手順1でエクスポートしたserver.cerを、OC4Jサーバー側の$JAVA_HOME/jre/lib/securityディレクトリにコピーします。

  3. OC4Jサーバー側のjava信頼済認証ストアに証明書をインポートします。

    $JAVA_HOME/bin/keytool -import -v -trustcacerts -file

    $JAVA_HOME/jre/lib/security/server.cer -keystore

    $JAVA_HOME/jre/lib/security/cacerts

    ここで、cacertsは信頼できる証明書の格納に使用するファイルで、server.cerは手順2でコピーしたファイルです。

    cacertsのパスワードの入力を求められます。

ターゲット・スキーマへのマッピングのデプロイ時のREP-01012

ターゲット・スキーマへのマッピングのデプロイ時に、次のエラーが発生する場合があります。

REP-01012: Cannot deploy PL/SQL maps to the target schema because it is not owned by the Control Center

原因 

このエラーは、他のコントロール・センターを使用して以前オブジェクトをデプロイしたターゲット・スキーマにマッピングをデプロイしようとする場合に発生します。

ターゲット・スキーマに関連付けることができるのは1つのコントロール・センターのみです。このターゲット・スキーマへのデプロイメントに関する監査データはコントロール・センター・リポジトリの監査表に書き込まれます。コントロール・センターでは、監査データの書き込み先のコントロール・センターに関する情報を提供するターゲット・スキーマに様々なオブジェクト(主にシノニム)を作成します。他のコントロール・センターを使用して同一のターゲット・スキーマにマッピングをデプロイしようとする場合、REP-01012エラーが発生します。


注意:

ローカル・コントロール・センターを使用して、表、ビュー、ディメンションなどのデータ・オブジェクトをリモート・ターゲットにデプロイできます。これは、Oracle Warehouse Builderがこれらのオブジェクトの監査情報を管理しないためです。

ただし、Oracle Warehouse Builderでは、1つのターゲット・スキーマに複数のマッピングをデプロイできます。

通常、デプロイメントのためにコントロール・センターを使用する場合、ターゲット・スキーマを含むデータベースにインストールされているコントロール・センターを使用してターゲット・スキーマにマッピングをデプロイします。ターゲット・スキーマを含むデータベース以外のデータベースにインストールされているコントロール・センターを使用してターゲット・スキーマにマッピングをデプロイできます。ロケーション・ナビゲータで、ターゲット・スキーマを含むリモート・ホストにインストールされるコントロール・センターを指し示すコントロール・センターを作成します。このため、リモート・コントロール・センターにマッピングをデプロイできます。

解決策 

  1. 元のコントロール・センターを使用してターゲット・スキーマにデプロイされたマッピングを削除します。

  2. 元のコントロール・センターからロケーションの登録を解除します。

  3. ターゲット・スキーマとターゲット・スキーマのコントロール・センターとの間の関連付けを提供するシノニムを削除します。

  4. 新しいコントロール・センターを使用してロケーションを登録します。

  5. 新しいコントロール・センターを使用してマッピングをデプロイします。

ロケーションを削除できない

ロケーションを削除する前に、次の操作を実行します。

  • 他のロケーションを使用するロケーションを使用するすべてのモジュールを再構成します。

    モジュールを編集して、モジュールの可能性のあるデータ・ロケーションのセットからロケーションを削除します。

  • ロケーションを登録解除します。

OWBSYSユーザーとしてログインし、次の問合せを実行して、ロケーションがコントロール・センターにまだ関連付けられているかどうかを判定します。

SELECT s.name owner, r.name referenced, c.name connector, 
       c.REGISTERED, c.STRONGTYPENAME
FROM cmplogicalconnector_v c, cmplocation_v s, cmplocation_v r
WHERE c.owninglocation = s.elementid AND c.referencedlocation = r.elementid;