Oracle データベースの 1 つに、実行に時間がかかりすぎるビューがあります。ステートメントが実行されると、停止しないようです。
このビューのパフォーマンスを確認できる方法や、ステートメント セッションが「ハング」しているかどうかを確認する方法はありますか?
ありがとう、N2EE
アップデート
ビュー内の基になるクエリに問題があることに気付きました。自動トレースの修正をしてくれた Edwin に感謝します。
既存のビューの作成または置換(つまり、CREATE OR REPLACE VIEW ...ステートメントの実行)またはビューからの選択について話しているのですか。
前者の場合、セッションによってロックされている可能性があります。たとえば、誰かがビューを介して更新または削除している場合、それを置き換えることはできません。バージョンによっては、v$sessionの「BLOCKING_SESSION」列をチェックすることでブロッカーを確認できる場合があります。
後者の場合、遅いビューではなく、クエリです。ビューはほとんど無関係です。Explain計画をチェックし(できれば、v $ sqlからのsql_idでDBMS_XPLAN.DISPLAY_CURSORを使用して)、それが何をしているのかを確認します。v$session_longopsはポインタを与える場合があります。
ビューを構成するクエリのパフォーマンスを確認する必要があります。これを行う最善の方法は、ビューが使用する sql ステートメントで実行計画を実行することです。これは、テーブル全体のスキャンを行っているか、それとも最適ではない動作を行っているかを示します。クエリを調整すると、ビューの動作が大幅に改善されます。
問題が基になるクエリであると仮定すると、パフォーマンスの問題は、使用されているテーブルが分析されていないことが原因である可能性があります。DBMS_STATS
パッケージを
使用して、テーブルに関する Oracle の情報を更新し、クエリの速度が向上するかどうかを確認できます。
スナップショット ID に基づいて AWR レポートを生成する
AWR レポートを作成する 2 つの SQL スクリプトがあります。1. awrrpt.sql Oracle データベースが 1 つしかない場合は、awrrpt.sql SQL スクリプトを実行します。
AWR レポート SQL スクリプトの場所 $ORACLE_HOME/rdbms/admin