2012-01-25 6 views
3

データベース内で現在実行されているジョブのステータスまたは実際に実行されたステータスの数を確認する方法があるかどうかは知りません。ステータスSQLクエリまたはパーセンテージを確認する

私はジョブを実行していますが、ジョブが長時間かかるので、クエリから実行された%がいくつ確認されています。 Oracle sqldeveloperでクエリを実行しています

答えて

2

SQLとデータベース処理のセット・ベースの性質のため、oracleエンジンは実際にはわからないため、実際にはクエリの「%完了」を取得できません。 v $ session_longopsのビューを見て、SQLの部分がどのくらい離れているかを調べることができます(大きなハッシュ結合または完全なテーブルスキャンがここに表示されることがあります)。詳細はthis Ask Tomをご覧ください。

ジョブに複数のSQL文があり、それぞれのSQL文の後ろにどれだけ近づいているのかを追跡しようとしている場合は、各文の後に制御表に状態更新を挿入するコードを追加できます。

+0

thanx v $ session_longopsは完璧でした – Eve

+1

余分な「制御テーブル」は必要ありません。 'DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS'を使用して、自分のコードからv $ session_longopsに"フック "することができます。 http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_appinf.htm#i996999 –

+0

私は、ストアド・プロシージャで実行されている一連のSQL文を追跡することについて述べていました。彼女はちょうど「データベースの仕事」と言いましたが、私はあなたのビジネスロジックを追跡するためにlongopsを使うことをアドバイスしませんでした。戻って見ることができます。 –

0

このクエリのoutput_rowsの列は、クエリがv$session_longopsにない場合に便利です。問題は、出力行の総数がわからないことです。

select plan_operation, plan_options, plan_object_name, plan_object_type, plan_bytes, plan_time, plan_cpu_cost, plan_io_cost, output_rows, workarea_mem 
from v$sql_plan_monitor 
where sid = 2646 
and status = 'EXECUTING' 
order by plan_line_id 
関連する問題