有没有人知道是否有办法检查当前在数据库中运行的作业的状态,或者实际执行了多少%的状态。
我正在经营一份工作,但这项工作花了很长时间,所以我想查看从查询中执行了多少%的工作。我在Oracle sqldeveloper中运行查询
答案 0 :(得分:3)
由于SQL和数据库处理的基于集合的特性,您无法真正获得查询的“完成百分比”,因为oracle引擎确实不知道。您可以尝试查看视图v $ session_longops以查看SQL的各个部分已经走了多远(可以在此处显示大型散列连接或全表扫描)。有关详细信息,请查看this Ask Tom。
如果您的作业有多个SQL语句,并且您尝试跟踪每个语句之后的距离,则可以添加一些代码以在每个语句之后在控制表上插入状态更新。
答案 1 :(得分:1)
如果您的查询不在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
答案 2 :(得分:0)
您可以检查gv $ session_longops,其中time_remaining> 0;
从gv $ session_longops中选择sid,target_desc,(Sofar * 100)/总工作量作为百分比完成
会给你百分比。