问题是这样的:
我这有个表,数据量6亿条左右,先需要删除旧数据,删除后的数据剩余量1亿条左右,请问我用那种删除数据的方法?
如果用delete的话,会产生回滚,对系统的影响有多大?
用truncate的话,我现在还有数据不断的写进去,该怎么办,停掉应用吗(只有这一种方法?)?如果不用上面所说的方法,还有别的方法吗,请您告诉我,谢谢您。

解决方案 »

  1.   

    1. 重新建个表A, 将现在表(假设B)中最后的1亿条数据插进去。  然后删除现在的表B。 在将A重命名为B。
       delete 那么多数据的话会有高水位的问题,空间得不到释放。2. 用带用带 query 的exp命令,将最后1一条导出。  在新建张表, 将数据导进去。 在切换表。 删除数据过多。高水位占用空间太多了。 要不重建表,要不shrink表。Oracle Shrink Table 
    http://blog.csdn.net/tianlesoftware/archive/2009/11/04/4764254.aspx------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  2.   

    呵呵,那多慢啊,用delete一部分一部分的删除就不会产生高水位问题了吗
      

  3.   

    这么多数据delete 不光是高水位的问题
    还会产生大量的UNDO
    可能会影响到其他事务的运行
      

  4.   

    http://topic.csdn.net/u/20091128/09/6f646546-a648-4850-9e60-e11a3f2c0aeb.html前两天刚有人问过,在线重定义