ヘッダーをスキップ
Oracle Warehouse Builderユーザーズ・ガイド
11gリリース1(11.1)
E05734-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

28 ETL設計のトラブルシューティングとエラー処理

この章では、エラー・ログの情報とWarehouse BuilderでのDMLエラー・ロギングの使用方法を説明します。この章は次のセクションから構成されます。

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

シナリオ

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

解決策

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

事例

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

検証エラー

Warehouse Builderでは、コンソール・ツリーからオブジェクトを選択し、次に「オブジェクト」メニューから「検証」を選択することにより、すべてのオブジェクトを検証できます。図28-1に示すように、検証が完了すると検証結果ウィンドウに検証メッセージが表示されます。

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

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

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

検証結果ウィンドウの「検証」タブで、「オブジェクト」列内のオブジェクト名をダブルクリックすると、そのオブジェクト用のエディタが表示されます。このエディタでエラーを修正できます。「メッセージ」列内のメッセージをダブルクリックすると、メッセージ・エディタ・ウィンドウ内にエラー・メッセージの詳細が表示されます。ローカル・システムにメッセージを保存するには、メニュー・バー内の「コード」を選択し、次に「ファイルとして保存」を選択します。

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

生成エラー

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

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

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

配布および実行エラー

実行または配布エラーおよび警告メッセージのログをローカル・システム上の指定した場所に保存できます。「ツール」メニューから「プリファレンス」を選択します。「プリファレンス」ダイアログ・ボックスで、オブジェクト・ツリーの左側の「ロギング」オプションをクリックします。右側のリスト・ボックスで、ログ・ファイルのパス、ファイル名および最大ファイル・サイズを設定できます。また、保存するログのタイプも選択できます。

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

ランタイム監査ブラウザ

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

Name and Addressサーバー・エラー

Warehouse Builderで提供される名前とアドレスのクレンジング・サービスを使用している場合は、関連エラーが発生します。

Name and addressサーバーの開始および実行エラーのログは次の場所にあります。

OWB_ORACLE_HOME¥owb¥bin¥admin¥NASver.log

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

OWB_ORACLE_HOME¥owb¥bin¥admin¥NameAddr.properties:TraceLevel=1

ログ・ファイルNASvrTrace.logが生成されます。

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

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

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

エラー表について

エラー表にはエラーの詳細が記載されています。表、ビューおよびマテリアライズド・ビューにのみ、エラー表を定義できます。

エラー表は次の目的で使用されます。

  • DMLエラー・ロギング(物理エラーを含む)

  • 表、ビューまたはマテリアライズド・ビューへのデータ・ルールの適用時の論理エラーの取得

エラー表が生成され、実表、ビューまたはマテリアライズド・ビューとともに配布されます。データ・オブジェクトを削除する場合、データ・オブジェクトに関連付けられているシャドウ表は自動的に削除されます。

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

データ・オブジェクトのシャドウ表名のプロパティを設定してDMLエラー・ロギングをそのオブジェクトに対して有効にした場合、そのエラー表には次の項目が含まれます。

  • DMLエラー列。表28-1を参照。

  • シャドウ表が関連付けられているデータ・オブジェクトのすべての列。

表28-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列です。


ソース・データ・オブジェクトのスカラー・データ型で、データ・オブジェクトに適用するデータ・ルールがない場合、エラー表の列はデータ型VARCHAR2(4000)です。これにより、ORA-12899などの物理データ・エラー(列に対して値が非常に大きいというエラー)を検出できます。データ・ルールを適用する場合、エラー表の列は、「ソース」列と同じデータ型です。

たとえば、表TESTには、C1(データ型はNUMBER)とC2(データ型はVARCHAR2(10))の2列があります。TESTに生成されたエラー表には、DMLエラーのある列、C1およびC2があります。TESTにどのデータ・ルールも適用されていない場合、C1C2の両方のデータ型はVARCHAR2(4000)です。TESTにデータ・ルールが適用されている場合、C1のデータ型はNUMBERで、C2VARCHAR2(10)です。

エラー表およびデータ・ルール

1つのデータ・オブジェクトに対して、データ・ルールが1つまたは複数定義されている場合、このデータ・オブジェクトのエラー表には次の列があります。

  • データ・オブジェクトの列

    これらの列は、データ・オブジェクト内のデータ型および精度と同じです。

  • DMLエラー列。表28-1を参照。

  • 「データ・ルール」列

    「データ・ルール」列には、データ・ルール違反を引き起こす演算子、エラーの原因、重大度および監査の実行の詳細などが表示されます。

DMLエラー・ロギングおよびデータ・ルールに対するエラー表の使用

DMLエラー・ロギングが有効なデータ・オブジェクトにデータ・ルールを定義する場合、Warehouse Builderによって生成されたエラー表にはデータ・オブジェクトの列、「データ・ルール」列およびDMLエラーのある列があります。データ・オブジェクトの列のデータ型および精度は、ベース・データ・オブジェクトと同じです。これは、DML操作時にエラーが発生した場合、エラー表への挿入に失敗することがあります。たとえば、非常に小さな値を挿入する場合、表への挿入に失敗するエラーが発生する場合があります。

したがって、データ・ルールが適用されたデータ・オブジェクトに対してDMLエラー・ロギングを実行する場合、独自のエラー表を作成することをお薦めします。作成するエラー表には、データ・ルールに必要な列およびDMLエラー・ロギングの列を含めてください。

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

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

  • エラー表名のプロパティが表演算子、ビュー演算子またはマテリアライズド・ビュー演算子に設定されています。

  • マッピングが含まれるモジュールのPL/SQLの生成モードの構成プロパティが「Oracle 10gR2」、「Oracle 11gR1」または「デフォルト」に設定されています。

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

データ・オブジェクトのエラー・ロギングを有効にする手順は、次のとおりです。

  1. プロジェクト・エクスプローラで、有効にするDMLエラー・ロギングのデータ・オブジェクトを右クリックして、「エディタを開く」を選択します。

    データ・オブジェクトに対するデータ・オブジェクト・エディタが表示されます。

  2. キャンバスで、データ・オブジェクトを選択します。

  3. 「プロパティ」パネルで、シャドウ表名のプロパティの値を指定します。

データ・オブジェクトにシャドウ表名を指定しない場合、DMLエラー・ロギングはそのオブジェクトに対して有効にはなりません。ただし、データ・オブジェクトに、関連付けられているデータ・ルールがあり、そのオブジェクトに対してエラー表を指定しない場合は、デフォルト名を使用してWarehouse Builderでエラー表が作成されます。たとえば、データ・ルールを指定した表の名前がEMPの場合、エラー表はEMP_ERRになります。

マッピングでデータ・オブジェクトを使用する場合、このデータ・オブジェクトのエラー表名のプロパティは、データ・オブジェクトのシャドウ表名のプロパティから導出されます。


注意:

(シャドウ表名のプロパティを使用して)データ・オブジェクトのエラー表名を変更する場合、このデータ・オブジェクトにバインドされるすべての演算子を同期化する必要があります。

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

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

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

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

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

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

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

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

表演算子、ビュー演算子、またはマテリアライズド・ビュー演算子のエラー表名および「エラー表の切り捨て」のプロパティは、行ベース・コードには使用されません。

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

DMLエラー・ロギングには特定の制限があります。DMLエラー・ロギングは、非スカラーのデータ型には対応していません。また、各DML文には特定の制限があり、各文に関連するドキュメントにリストされています。


関連項目:

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

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

データ・オブジェクトに定義したエラー表がある場合、コントロール・センター・マネージャの「アップグレード」オプションを使用してデータ・オブジェクトをアップグレードすることはできません。データ・オブジェクトを配布した後にシャドウ表名のプロパティを変更する場合、最初にデータ・オブジェクトを削除してから、それを再配布する必要があります。このデータ・オブジェクトをマッピングで使用した場合、マッピング演算子をデータ・オブジェクトと同期化し、データ・オブジェクトを削除して、データ・オブジェクトとマッピングを再配布します。

マッピングでの擬似列ROWIDおよびROWNUMの使用

マッピング内で疑似列ROWIDおよびROWNUMを使用できます。ROWNUM疑似列は、表から行を選択した順序を示す数値を戻します。ROWID疑似列は、データベース表内の行のrowid(バイナリ・アドレス)を戻します。

マッピング内の表、ビューおよびマテリアライズド・ビュー演算子でROWIDおよびROWNUM疑似列を使用できます。これらの演算子には、COLUMN USAGEという追加の列が含まれており、ROWIDまたはROWNUMとして使用する属性の識別に使用されます。標準の属性の場合、この列のデフォルト値はTABLE USAGEとなります。ROWIDまたはROWNUM値の属性を使用するには、COLUMN USAGEをそれぞれROWIDまたはROWNUMに設定します。

データ型ROWIDUROWIDまたはVARCHAR2の属性にROWID列をマッピングできます。ROWNUM列は、データ型NUMBER、またはNUMBERからの暗黙的な変換が許可されているデータ型の属性にマッピングできます。

ROWIDおよびROWNUM擬似列は実際の列ではないため、データ・オブジェクト・エディタには表示されません。