DBMS_SCHEDULER によって実行される PL/SQL ブロックがあります。先週から開始されており、今頃には完了しているはずですが、まだ完了していません。問題を特定しようとしていますが、これをデバッグし続ける方法についてアドバイスが必要です。ここに事実があります。
1) オラクル 11g
2) PL/SQL コードがログ テーブルに出力され、問題が発生している一般的な領域を取得できます。これがハングを発見した方法です。どこで詰まっているのか、行番号がわかりません。方法がわかりません。
3) V$SESSION_LONGOPS テーブルは、ユーザー/スキーマがまだ実行中であることを示していますが、日付はすべて過去数日です。それ以来、それは動揺していません。
4) V$SESSION_LONGOPS の OPNAME は、一連の異なるテーブルの「テーブルのインデックス統計の収集」と「テーブル スキャン」に分割されます (最初のテーブルは 8、2 番目のテーブルは 8)。彼らは幅広いテーブルに見えます。各行で、SOFAR と TOTAL の値は互いに等しくなります。「Gather...」行はすべてゼロですが、「Table Scan」行はゼロではありませんが等しいです。
5) V$SESSION に対してクエリを実行すると、私のジョブは ACTIVE になります。
6) 処理中のテーブルにロックがありますが、自分のスキーマで他のセッションが再生されていません。
7) CPU 使用率がかなり低い。
実行中のPL/SQLブロックをさらに詳しく調べることはできますか? 渡された生のブロックを示す V$SQL で完全な SQL を見つけることができます。呼び出されたコンパイル済みのカスタム プロシージャ (行番号など) を詳しく調べたいと思います。
ロックに関しては、私のテーブルに割り当てられた V$LOCKED_OBJECTS にロックが表示されます。ロックでブロックされているプロセスを表示するテーブルはありますか? デッドロックがあれば見つけたい。
どんな提案でも大歓迎です、
mj