正在进行的SQL语句的已处理行数



我们从一个Oracle数据库中复制大表,并将它们合并到另一个数据库中。因此,我们有非常长的插入语句。

我想知道是否已经处理了许多行。我知道Oracle可以做到这一点,因为PL/SQL Developer可以在HTML报告中显示统计数据。

我尝试了以下SQL:

-- currently executing SQLs
select sm.SID, sm.SQL_ID, sm.STATUS, sm.SQL_TEXT, sm.LAST_REFRESH_TIME, sm.FIRST_REFRESH_TIME, 
       sp.OPERATION, sp.TIMESTAMP, sp.CARDINALITY as EST_ROWS,
       sp.OBJECT_OWNER, sp.OBJECT_NAME, sp.OBJECT_TYPE, sp.COST, sp.BYTES, sp.CPU_COST
  from V$SQL_MONITOR sm 
  inner join V$SQL_PLAN sp
    on sm.SQL_ID = sp.SQL_ID
 where sm.STATUS = 'EXECUTING'
 order by sm.LAST_REFRESH_TIME desc, sp.DEPTH;

我已经尝试过字段V$SQLSTATS.ROWS_PROCESSEDV$SESSTAT.VALUE(STATISTIC#=308),但没有显示当前处理的行数。

有人知道在Oracle11g中如何确定特定SQL语句当前处理的行数吗?

提前谢谢。

请参阅上面的评论,这里有一个来自www.dba-oracle.com的示例,显示了迄今为止完成的工作量:

select
   sid,
   message
from
   v$session_longops
where
   sid = 13
order by
   start_time;

下面是一个输出示例,显示了长时间运行的CREATEINDEX语句的进度。

SID MESSAGE
--- -------------------------------------------------------------------
 11 Table Scan:  CUST.PK_IDX: 732 out of 243260 Blocks done

相关内容

  • 没有找到相关文章

最新更新