データ・モデルの検証
データ・モデルを検証する際、検証メッセージにより、データ・モデルの修正、問合せの最適化、スタック・スレッドの削減およびレポート・パフォーマンスの向上を図れます。
現在のリリースまたは以前のリリースで作成されたデータ・モデルを作成または編集した後、検証、パブリッシャをクリックした場合:
-
データセット、LOVおよびバースティング定義に使用される問合せをチェックします。
-
SQL問合せの実行計画を生成します。
-
エラーおよび警告メッセージのリストを表示します。
検証メッセージに基づいて必要なアクションを実行します。 My Oracle SupportドキュメントID 2800118.1およびMOSノートに添付されているパフォーマンス推奨ドキュメントを参照してください。
以前のリリースから「パブリッシャ」をアップグレードした場合、既存のデータ・モデルは未検証としてマークされます。
データ・モデル検証メッセージ
このトピックでは、参照するデータ・モデルの検証メッセージをリストします。
メッセージ・タイプ
-
エラー - データ・モデルを使用してレポートを実行する場合は、データ・モデル・エラーを解決する必要があります。
-
警告 - 警告メッセージに修正を提示します。 警告を無視してレポートを実行することを選択した場合、レポートのパフォーマンスが影響を受ける可能性があります。
メッセージ参照
検証タイプ | メッセージ・タイプ | メッセージ | 処理 |
---|---|---|---|
問合せ | 警告 |
SQLクエリにはSELECT *が含まれています。 '*'の使用は制限されます。 特定の列を選択します。 |
問合せの列を指定します。 |
問合せ | 警告 |
データ・モデルにはネストされたBI JDBC問合せが含まれています。 論理問合せのリンクは制限されます。 「パブリッシャ」レポートのかわりにOTBIを使用するか、OBIEEデータセット間のリンクを削除します。 |
「パブリッシャ」レポートのかわりにOracle Transactional Business Intelligenceレポートを使用するか、OBIEEデータセット間のリンクを削除します。 |
問合せ | 警告 |
SQLクエリ実行プランには、マージ直積結合が含まれています。 SQLクエリの実行プランを生成し、マージ直積結合を識別します。 必要なフィルタをSQLクエリに追加します。 |
SQL問合せの実行計画のマージ・デカルト結合を識別します。 必要なフィルタをSQLクエリに追加します。 |
ランタイム | 警告 |
1パラメータ当たりのバインド値数が、上限の{0}を超えると、パフォーマンスが低下します。 バインド値の数を減らします。 |
パラメータごとのバインド値の数を減らします。 |
問合せ | 警告 |
SELECT内の列数が上限の{0}を超えています。 必要な列のみを選択し、削除を有効にします。 SaaS環境の「パブリッシャ」ベスト・プラクティスを参照してください(ドキュメントID 2145444.1)。 |
必要な列のみを選択し、削除を有効にします。 SaaS環境の「パブリッシャ」ベスト・プラクティスを参照してください(ドキュメントID 2145444.1)。 |
問合せ | 警告 |
SQL問合せに非等号結合が含まれています。 中間行の生成によってパフォーマンスの問題が発生する可能性があります。 等価結合または外部結合で非等価結合を置き換えます。 |
非等価結合を等価結合または外部結合に置き換えます。 |
問合せ | 警告 |
選択した列名の長さが {0}の制限を超えています。 列名の長さは15文字以下にする必要があります。 列名の短縮別名を使用します。 |
列名には、15文字未満の短い別名を使用します。 |
問合せ | 警告 |
インラインまたは副問合せの数が上限の{0}を超えています。 追加のインライン選択問合せを削除します。 |
追加のインライン選択問合せを削除します。 |
問合せ | 警告 |
SQLクエリにFROM DUAL句が含まれています。 SQLクエリに多数のDUAL表が含まれています。 FROM DUAL句の使用は避けてください。 |
FROM DUAL句の使用は避けてください。 |
問合せ | 警告 |
SELECT内のLOB列数が上限の{0}を超えています。 必要な列のみを選択します。 |
必要な列のみを選択します。 |
問合せ | エラー |
問合せにDDLキーワードまたはDMLキーワードが含まれています。 DDLおよびDMLキーワードをSQLクエリから削除します。 |
DDLおよびDMLキーワードをSQLクエリから削除します。 |
構成 | 警告 |
単一のデータセットのグループ・ブレーク数が制限の {0}を超えています。 複数のグループをデータセットから削除します。 |
複数のグループをデータセットから削除します。 |
構成 | 警告 |
データ・モデルにグループ・フィルタが含まれています。 グループ・フィルタをSQLクエリのWHERE句で置き換えます。 |
グループ・フィルタをSQLクエリのWHERE句で置き換えます。 |
ランタイム | エラー |
データ・モデル・プロパティが無効であるか、無効な値が含まれています。 正しいデータ・モデル・プロパティを指定し、プロパティ値を確認してください。 |
問合せで正しいデータ・モデル・プロパティを指定し、プロパティ値を確認します。 |
問合せ | 警告 |
SQLクエリ実行プランに全表スキャンが含まれています。 SQLクエリの索引付き列に必要なフィルタを指定します。 |
SQLクエリの索引付き列に必要なフィルタを指定します。 |
問合せ | 警告 |
SQLクエリ実行プランに、高バッファ読取りが含まれています。 バッファ読取りが制限の1GBを超えています。 SQLクエリにフィルタを追加し、データのフェッチ量を削減します。 |
SQLクエリにフィルタを追加し、データのフェッチ量を削減します。 |
問合せ | 警告 |
SQLクエリ実行プランに、高CPUサイクルが含まれています。 SQLクエリに必要なフィルタを追加し、データのフェッチ量を削減します。 |
SQLクエリに必要なフィルタを追加し、データのフェッチ量を削減します。 |
問合せ | 警告 |
SQLクエリ実行プランに、フィルタ列に対する関数コールが含まれています。 索引列でSQL関数コールを使用すると、パフォーマンスが低下します。 フィルタ列で関数コールを削除します。 |
フィルタ列に対するファンクション・コールを削除します。 |
問合せ | 警告 |
WHERE句述語の関数コールが検出されました。 |
フィルタ式または結合式の列にSQLまたはPL/SQL関数を適用しないでください。 |
問合せ | 警告 |
SELECTリスト内のPL/SQL関数のコールが検出されました。このようなコールはパフォーマンスに大きく影響する可能性があります。 |
SELECT句でカスタムPL/SQL関数を使用しないでください。 |
問合せ | 警告 |
SELECTリスト内のスカラー副問合せです。 値は1つのみを返す必要があります。 ROWNUMまたはDISTINCTを使用した出力の制限は、潜在的なパフォーマンスの問題があることを意味します。 |
DISTINCTまたはROWNUMキーワードでスカラー副問合せを使用しないでください。 |
問合せ | 警告 |
IN-LISTフィルタの値が多すぎると、オプティマイザでより効率的な計画が検出されない場合があります。 |
IN-LISTフィルタの値の数を減らします。 |
ランタイム | 警告 |
データ・セキュリティ述語(DSP)は副問合せ内にラップされ、不要なネストが生成されます。 冗長副問合せを使用すると、問合せの合計解析時間が長くなります。 |
副問合せの不要なネストは避けてください。 |
問合せ | 警告 |
サポートされていないSYS_OP_MAP_NONNULL関数を使用して、BIサーバーがWITH副問合せ間で生成した結合が多すぎます。 結合述語が多すぎると、それぞれの表の結合のカーディナリティの見積りが低くなる可能性があります。 |
副問合せ間の結合が多すぎないようにしてください。 |
問合せ | 警告 |
SELECTリストに列がない問合せで外部結合表が見つかりました。 これにより、オプティマイザが未使用の結合を排除できない可能性があるため、解析時および実行時のパフォーマンス・オーバーヘッドが増加する可能性があります。 VOプルーニングが発生している場合は、OTBIコードを確認してください。 |
未使用の外部結合表は避けてください。 |
問合せ | 警告 |
スカラー副問合せはSELECTリストに存在します。 最も内側の副問合せおよびその外側の親副問合せは、採用問合せによって生成されるすべての行に対して実行されるため、スカラー副問合せ内のファクタ・リングされた副問合せは、実行中にパフォーマンスが徐々に低下します。 |
スカラー副問合せでWITH句を使用しないでください。 |
問合せ | 警告 |
問合せにリストされ、他の表に結合されているが、選択されていない表が冗長になる可能性があります。 これにより、追加の結合オーバーヘッドのためにパフォーマンスが低下します。 主キー列でこの表が他の表の外部キー列に結合されているかどうかを確認します。 |
問合せで使用されていない表を結合しないでください。 |
問合せ | 警告 |
スカラー相関副問合せとして定義される列が見つかりました。 そのような列が後でフィルタ式または結合式で使用されると、パフォーマンスが著しく低下する可能性があります。 |
SELECTリストにスカラー副問合せが含まれているインライン・ビューが重複しないようにします。 |
問合せ | 警告 |
バインド変数を使用する述語(:JCODE IS NULLまたはmcd.JCODE LIKE :JCODEなど)は、簡潔でない方法で使用しないことをお薦めします。 また、バインド値が渡されるかどうかに関係なく、選択的なフィルタ述語でのORの使用は推奨されません。このようなケースを処理するより適切なメソッドがあるためです。 |
選択的なフィルタ述語ではORを使用しないでください。 |
問合せ | 警告 |
10を超える複合式を含むCASE式(WHEN ... THEN)は、特にWHERE句で使用される場合、CPU負荷が高くなります。 |
複雑すぎると、CASE式のWHEN ... THEN式を避けます。 |
問合せ | 警告 |
副問合せでリテラル定数として定義された列は、後でメイン問合せの他の場所で結合述語で参照されました。 このようなケースを処理するには、メインSQL問合せを実行する前に、より適切なメソッドがあります。 |
定数(リテラル)として定義されている列を結合しないでください。 |
問合せ | 警告 |
10を超えるUNIONブランチを含む副問合せが見つかりました。 UNIONの各ブランチは個別に実行されるため、問合せの実行時間が大幅に増加します。 ほとんどの場合、共通分母副問合せをファクタ・リングし、機能要件に従って再利用することで、UNIONが多い問合せをより単純な問合せに再処理できます。 |
副問合せのUNIONブランチの数を減らします。 |
問合せ | 警告 |
不要な表参照の削除: この表から別の列を取得できます。 冗長な表が問合せに含まれている場合、データベース・オプティマイザは解析および最適化中にその表を削除できないことがあります。 |
不要な表参照を削除します。 |
構成 | 警告 |
XMLTYPE関数を使用したCLOBからXMLへのデータの変換が遅い。 XML文書をデータベースに格納するには、データ型XMLTYPEを使用します。 |
データをCLOBに格納し、XMLに変換するかわりに、XMLTYPEデータ型を使用してXML文書をデータベースに格納します。 |
問合せ | 警告 |
FROM句が10を超える行ソース(表、ディクショナリ・ビューまたはインライン・ビュー)で見つかりました。 行ソースが多すぎると、複数の理由でパフォーマンスが著しく低下する可能性があります。 |
FROM句の行ソース(表、ディクショナリ・ビューまたはインライン・ビュー)の数を減らします。 |
問合せ | 警告 |
インライン・ビューは、問合せの他の場所にある同じFROM句表に結合されます。 これにより、参照の使用に冗長性が作成されます(同じ表がディメンションと参照の両方として使用されます)。 |
インライン・ビューが、問合せ内の他の場所でも同じFROM句表に結合されていないことを確認します。 |
問合せ | 警告 |
参照表はディメンションとして使用され、問合せの他の場所での参照としてそれ自体に結合されました。 これにより、参照の使用に冗長性が作成されます(同じ表がディメンションと参照の両方として使用されます)。 |
参照表が問合せ内の他の場所でも同じFROM句表に結合されていないことを確認してください。 |
問合せ | 警告 |
参照表は、ディメンションとして使用されるそれ自体に結合されます。 これにより、参照の使用に冗長性が作成されます(同じ表がディメンションと参照の両方として使用されます)。 |
参照表が問合せ内の他の場所でも同じFROM句表に結合されていないことを確認してください。 |
問合せ | 警告 |
一番上の問合せブロックの表の列を使用して副問合せが見つかりました。 副問合せで冗長表を使用すると、解析時間と実行時間が長くなります。 |
親問合せおよび副問合せの表の同じ列をWHERE句とともに使用しないでください。 |
問合せ | 警告 |
同じ条件(表およびWHERE句)が親問合せブロックに存在するため、SELECT副問合せブロックは冗長です。 相関スカラー副問合せはマージ可能ではなく、それらを含む問合せによって生成された行ごとに1回実行する必要があるため、これはパフォーマンスの問題です。 |
副問合せで冗長なWHERE句条件を使用しないでください。 |
問合せ | 警告 |
SET操作(UNION、INTERSECTなど)で同一またはほぼ同一の問合せブロックを使用すると、コストが高く冗長な操作が多数発生する可能性があります |
UNIONおよびSET操作で同一の問合せを使用しないでください。 |
問合せ | 警告 |
問合せで結合が欠落すると、デカルト積が生成され、パフォーマンスに重大な問題が発生し、機能的なバグを示す場合があります。 欠落している結合が多数の行を持つ表にある場合、パフォーマンスの結果は悲惨なものになる可能性があります。 |
表間の結合を含めます。 |
問合せ | 警告 |
フィルタがない(返される行数を制限する意味のあるWHERE句の条件)と、表内のデータ量によってはパフォーマンスの問題が発生する可能性があります。 複数の表をフィルタなしで結合すると、パフォーマンスが低下します。 |
問合せにフィルタを含めて、返される行を制限します。 |
問合せ | 警告 |
GROUP BY句が20を超える列で見つかりました。 GROUP BY結果セットに多数の列があると、ソートおよびグループ化操作の実行にCPU時間がかかる場合があります。 |
GROUP BY句の列数を減らします。 |
問合せ | 警告 |
表は結合されましたが、選択されていません。一方、問合せの残りの部分に少なくとも1つの結合条件が含まれています。 冗長な表が原因で問合せ内の結合数が増加すると、この潜在的な問題によって問合せランタイムが増加します。 |
問合せ内の冗長ブリッジ表を削除します。 |
問合せ | 警告 |
場合によっては、SUBSTR関数(SUBSTR、SUBSTRB、SUBSTRC、SUBSTR2、SUBSTR4)を使用して、索引アクセス・パスの使用を容易にするためにLIKE条件に安全に置換できます。 |
問合せのSUBSTRをLIKE条件に置き換えます。 |
問合せ | 警告 |
これは、LANGUAGEフィルタを適用する必要があるOracle Business Intelligence "_TL"サフィクス表に固有の潜在的な問題です。 LANGUAGEフィルタがないと、表が必要以上に多くの行が返されます。 |
問合せの「言語」列にフィルタを含めます。 |
問合せ | 警告 |
データベースで索引パスを使用できないため、LIKE条件の先頭のワイルドカードはパフォーマンスが低下します。 |
LIKE条件で先頭のワイルドカードを使用しないでください。 |
問合せ | 警告 |
階層問合せは、再帰的な性質のために低速です。 このような構造は、ブロックをマテリアライズすることで最適化できます。 |
副問合せでの再帰問合せは避けてください。 |
問合せ | 警告 |
これは、名前にサフィクス「_VL」が付いたOracle Fusionビューに固有の潜在的な問題です。 これらのビューの表バージョンのパフォーマンスが向上します。 |
_VLビューへの外部結合を回避します。 |
問合せ | 警告 |
複数の物理表の列に対するORDER BY操作では、負荷の高いソートが発生し、CPU使用率が急増する可能性があります。 |
異なる表の列を使用してソートすることは避けてください。 |
問合せ | 警告 |
ほとんどの場合、アナリティク・インライン・ビューは、同じロジックのWHEREブロック集計よりもパフォーマンスが優れています。 WHEREブロック副問合せをアナリティク・インライン・ビューに変換します。 |
副問合せで集計するのではなく、インライン・ビューでアナリティクスを使用します。 |
問合せ | 警告 |
問合せブロック内の未使用列(SQL列プルーニング)を削除すると、実行プロセス中の関連リソース・ニーズが排除され、パフォーマンスが向上します。 プルーニングによって、SQLをより軽量化できます。 |
問合せから未使用の列および冗長属性を削除します。 |
問合せ | 警告 |
スカラー副問合せの集計関数が実行されると、メイン問合せで返されるすべての行に対して同じ関数が実行されます。 各実行は、繰り返し同じ値を戻します。 このような副問合せはリライトする必要があります。 |
スカラー副問合せで集計関数を使用しないでください。 |
問合せ | 警告 |
深くネストされたDECODE文によって、データベースによるカーディナリティの見積りが正しくなくなる可能性があります。 パフォーマンスを向上させるには、DECODE文を単純化するか、属性を事前に計算します。 |
問合せに深くネストされたデコード文を使用しないでください。 |
問合せ | 警告 |
このチェックは、遅延フィルタの理由として機能する属性を識別します。 SQL構造の遅い時点でフィルタを適用すると、最適なフィルタリングが防止され、不要な処理オーバーヘッドが発生する可能性があります。 より低いレベルでフィルタを適用すると、パフォーマンスが向上します。 |
問合せの初期レベルでフィルタを適用します。 |
問合せ | 警告 |
結合条件は、複数のEXIST句およびIN句が使用されている場合、WHERE句の同じ側に記述する必要があります。 |
問合せで多くのEXIST句およびIN句を使用する場合、WHERE句の同じ側で結合条件を使用します。 |
問合せ | 警告 |
特定の式をリライトすると、同じ機能を維持しながら、データベース・オプティマイザがより適切な計画を選択できるようになります。 式に連結がある場合、データベースのバグが発生する可能性があります。 回避方法と解決策については、Technote 2800118.1の実行計画の最適でないCONCATENATIONを参照してください。 |
式をリライトして、データベース・オプティマイザがより適切な計画を選択できるようにします。 |
問合せ | 警告 |
OTBIレポートとBIPレポートでは、相互に関連するインライン・ビューに複雑な準結合(EXISTS条件)を追加してユーザー・レベルのセキュリティを実装するFusion View Objects (VO)を使用します。 セキュリティ句の構造が非常に複雑なため、オプティマイザで非効率的な結合メソッドが選択される可能性があります。 外部表との相関関係によって、このようなセキュリティ述語が複数回実行されることもあります。 |
副問合せで複雑なEXISTS述語を使用しないでください。 |
問合せ | 警告 |
相関副問合せは、結合先の外部表から抽出される行ごとに1回実行されるため、コストが高くなります。 相関副問合せ内の集計は、フィルタ処理がないか弱いと想定されるため、コストも高くなります。 |
集計操作ではスカラー副問合せを回避します。 |
問合せ | 警告 |
IN条件内にラップされた副問合せには、集計(DISTINCTまたはGROUP BY、あるいはその両方)演算子またはソート(ORDER BY)演算子が含まれます。 これらの演算子はいずれもIN条件のセマンティクスに影響を与えません。 ただし、高価な操作が発生し、パフォーマンスに著しく影響する可能性があります。 |
副問合せのIN_CONDITIONからDISTINCT、GROUP BYまたはORDER BY句を削除します。 |
問合せ | 警告 |
FROM句のほぼ同一の副問合せは避ける必要があります。このパターンによって、実表への複数の冗長アクセス、複数の冗長結合およびフィルタ操作が発生するためです。 |
問合せおよび副問合せに類似したコンテンツおよび構造を持つ副問合せの繰返しインスタンスを削除します。 |
問合せ | 警告 |
個別値が少ない列に等価結合された2つの表によって、非常に大きな中間行ソースが生成される可能性があります。 |
問合せで適切なフィルタおよび条件を使用して、特定のデータにアクセスします。 |
問合せ | 警告 |
表のフィルタ条件は非効率であり、多数の行が生成される可能性があります。 |
問合せで適切なフィルタを使用します。 |