データベース内で現在実行されているジョブのステータスまたは実際に実行されたステータスの数を確認する方法があるかどうかは知りません。ステータスSQLクエリまたはパーセンテージを確認する
私はジョブを実行していますが、ジョブが長時間かかるので、クエリから実行された%がいくつ確認されています。 Oracle sqldeveloperでクエリを実行しています
データベース内で現在実行されているジョブのステータスまたは実際に実行されたステータスの数を確認する方法があるかどうかは知りません。ステータスSQLクエリまたはパーセンテージを確認する
私はジョブを実行していますが、ジョブが長時間かかるので、クエリから実行された%がいくつ確認されています。 Oracle sqldeveloperでクエリを実行しています
SQLとデータベース処理のセット・ベースの性質のため、oracleエンジンは実際にはわからないため、実際にはクエリの「%完了」を取得できません。 v $ session_longopsのビューを見て、SQLの部分がどのくらい離れているかを調べることができます(大きなハッシュ結合または完全なテーブルスキャンがここに表示されることがあります)。詳細はthis Ask Tomをご覧ください。
ジョブに複数のSQL文があり、それぞれのSQL文の後ろにどれだけ近づいているのかを追跡しようとしている場合は、各文の後に制御表に状態更新を挿入するコードを追加できます。
このクエリの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
thanx v $ session_longopsは完璧でした – Eve
余分な「制御テーブル」は必要ありません。 'DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS'を使用して、自分のコードからv $ session_longopsに"フック "することができます。 http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_appinf.htm#i996999 –
私は、ストアド・プロシージャで実行されている一連のSQL文を追跡することについて述べていました。彼女はちょうど「データベースの仕事」と言いましたが、私はあなたのビジネスロジックを追跡するためにlongopsを使うことをアドバイスしませんでした。戻って見ることができます。 –