有誰知道是否有方法檢查數據庫中當前正在運行的作業的狀態或實際執行了多少%的狀態。檢查狀態SQL查詢或百分比
我正在運行一項工作,但工作需要很長時間,所以我想檢查查詢中執行了多少%。我在Oracle中運行查詢sqldeveloper
有誰知道是否有方法檢查數據庫中當前正在運行的作業的狀態或實際執行了多少%的狀態。檢查狀態SQL查詢或百分比
我正在運行一項工作,但工作需要很長時間,所以我想檢查查詢中執行了多少%。我在Oracle中運行查詢sqldeveloper
由於SQL和數據庫處理的基於集合的本質,您不能真正得到查詢的「%完成」,因爲oracle引擎並不確定知道。您可以嘗試查看v $ session_longops視圖來查看SQL部分已經走了多遠(大型散列連接或全表掃描可能會顯示在此處)。請參閱this Ask Tom瞭解更多信息。
如果您的工作有多個SQL語句,並且您試圖追蹤每條語句後的距離,則可以添加一些代碼以在每條語句之後在控制表上插入狀態更新。
如果您的查詢不在v$session_longops
中,則此查詢中的output_rows
列可能會有用。問題是你不知道總輸出行是多少。
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
than 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語句 - OP是否清楚是否這是她希望跟蹤的一個陳述或一個小組 - 她只是說「在數據庫中工作」 - 而且我不會建議使用longops來跟蹤業務邏輯,更好地建立一個持久性商店來管理您自己,以便您可以回去看看。 –