2011-06-27 9 views
3

実行に時間がかかります(別個の操作)。しかし、そのクエリはv $ session_longopsにリストされていません。クエリをv $ session_longopsに強制するにはどうすればよいですか?

答えて

4

残念ながら、単一のSQLクエリについて言えば、おそらくそれをV$SESSION_LONGOPSに表示することはできません。 1つのステップが6秒以上かかると、Oracleは問合せをV$SESSION_LONGOPSに書き込みます。しかし、多くの非常に短い手順で構成された、非常に長時間実行されるクエリを持つことができます。内部クエリと外部クエリの両方で索引を使用してデータをフェッチするネストループ・ジョインは、長時間実行できますが、個々の操作にはわずかな時間がかかります。この場合、一般に、オプティマイザの推定カーディナリティと実際のカーディナリティを比較する価値があります。 Oracleは、操作の様々なステップの基数を過小評価しているため、Oracleは多数の短い操作を実行している可能性があります。オプティマイザの見積もりをより正確にすると、より効率的なクエリプランとより長い操作が両方ともV$SESSION_LONGOPSで追跡される可能性があります。

1つ以上のSQL問合せを発行するPL/SQLプロセスについて説明している場合は、Rajeshのコメントに注目してください。 DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS methodを使用すると、PL/SQLプロセスの進行状況をV$SESSION_LONGOPSに追跡できます。

関連する問題