检查状态sql查询或百分比

时间:2012-01-25 16:00:30

标签: sql oracle oracle-sqldeveloper

有没有人知道是否有办法检查当前在数据库中运行的作业的状态,或者实际执行了多少%的状态。

我正在经营一份工作,但这项工作花了很长时间,所以我想查看从查询中执行了多少%的工作。我在Oracle sqldeveloper中运行查询

3 个答案:

答案 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)/总工作量作为百分比完成

会给你百分比。