检查状态sql查询或百分比



是否有人知道是否有方法可以检查数据库中当前运行的作业的状态或实际执行了多少%的状态。

我正在运行一个作业,但该作业需要很长时间,所以我想检查从查询中执行了多少%。我正在Oracle sqldeveloper 中运行查询

由于SQL和数据库处理的基于集合的特性,您无法真正获得查询的"%完整",因为oracle引擎并不能真正确定。您可以尝试查看视图v$session_longops,看看SQL的某些部分已经走了多远(此处可能会显示一个大的哈希联接或完整的表扫描)。看看这个向汤姆询问更多信息。

如果您的作业有多个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

您可以检查gv$session_longops,其中time_remaining>0;

从gv$session_longops 中选择sid、target_desc、(Sofar*100)/totalwork作为percentage_complete

会给你百分比。

最新更新