大数据量的删除过程查看

删除一个大表里面的部分数据,如用以下语句:

  delete from 目标表 a where exists (select 'x' from 关联表 where 关联字段=a.关联字段);

删除过程会很久(如在几亿数据的表中删除70368181记录用28946秒),如果要查看当前删除了多少条记录,可以用如下语句:

select trunc(sum(USED_UREC)/3) from v$transaction
where addr in (select taddr from v$session where audsid in (207541))

其中207541是删除语句的会话的AUDSID,而SUM后除以3是因为目标表里面有2个索引,删除记录的同时也在删除索引,所以需要除以3,类似的:如果目标表有N个索引就要除以N+1。

 

 


posted @ 2008-08-23 22:01  Enli  阅读(621)  评论(0编辑  收藏  举报