3

Oracle データベースでビュー オブジェクトを実行しようとすると、異常な問題が発生します。クエリ自体は、Toad for Oracle を使用して 10 秒以内に実行されますが、ビュー オブジェクトで同じクエリを実行するには 1 分以上かかります。JDeveloper 10.1.3.3.0.4157 を ADF とともに使用しており、10g Oracle データベースに接続しています。

私が見つけたのは、実行が行われている間、データベース サーバーが 128 バイトのデータで常に「ping」されていることです (これは Wireshark を使用して行いました)。これにより、接続が妨げられ、データがアプリケーションに到達するまでに時間がかかります。この理論をセッション トレースでテストしたところ、クエリ自体が Toad のクエリと同じ時間枠で実行されることがわかりました。

問題はデータベース ドライバーのどこかにあると思いますが、デバッグできないため手ぶらで済みます。

どんな提案でもいただければ幸いです!

より詳しい情報:

問題のクエリはやや大きいです。これも実行時に組み込まれ、可変です (ただし、属性の数、名前、およびタイプは一定です)。興味深い点は、クエリが小さい (小さい) 場合、実行時間が Toad の実行に存在する時間まで低下することです。

同様の「ping」効果が、同じアプリケーション モジュールに属する別のビューで検出されましたが、テストの結果、これは AM 構成の問題ではなく、他のすべてのものと同じであり、正常に動作しているためです。さらに、問題のクエリと同じ AM の他のビューには、同じ問題の兆候は見られません。

ビューのチューニング設定で遊んでいますが、実行時間に違いはありません。

4

1 に答える 1

1

ビュー クエリをデータベース ビューとして作成してみてください。次に、そのビューにビュー オブジェクトを作成し、ビュー基準を使用してデータを形成します。単純な select * from complex_view のみが ViewObject になります。また、そのデータベース ビューを具体化して、パフォーマンスを向上させることもできます。

于 2012-11-08T12:57:09.527 に答える