可以一次删100万。
ORA-1555最常见的问题之一。方法:增加RBS的大小等,书上有详细介绍。
或在DELETE时不要做别的操作。
停重演日志用DELETE TABLE_NAME NOLOG;

解决方案 »

  1.   


    我已将rbs 设位1G了
    请问是不是停重演日志就可以把数据清除了?
      

  2.   

    将事务细分:
    delete  from yourtab;
    commit;
    改为:
    delete from yourtab where id<1000000
    commit;
    delete from yourtab where id>=1000000
    commit;
    如果有可能每删除一条记录提交一次,不要担心速度,实际会比一次提交快,尤其数据量大时.
    另, 增加回滚段初始扩展大小,问题不在回滚段多少,而是大小.停止重做日志会对将来的恢复带来困难,建议不要.
      

  3.   

    同意楼上。
    不要停止redolog,最好的方法是分段提交。
      

  4.   

    具体情况是:本人前几天重新启动了数据库,由于一参数没设置好导致ORACLE 定时器无效,定时清理的过程没执行,事物已经在过程中细化了,再细化比较麻烦。
    表中的数据都是实时数据没有恢复的必要,我现在只是想确定停止重演日志就可以删除了?
    谢谢!
      

  5.   

    具体情况是:本人前几天重新启动了数据库,由于一参数没设置好导致ORACLE 定时器无效,定时清理的过程没执行,事物已经在过程中细化了,再细化比较麻烦。
    表中的数据都是实时数据没有恢复的必要,我现在只是想确定停止重演日志就可以删除了?
    谢谢!
      

  6.   

    没必要停止重做日志。
    你将你的RBS调大点。
      

  7.   

    使用truncate是最快的,但你的表适合这样的操作吗?
      

  8.   

    我知道,用tuncate截这种大表比较爽,但问题是表中还有一千万条数据还是有用的啊
      

  9.   

    alter table t nologging;
    delte ;
    commit;
    alter table t logging;
    我没试过,你可试一下。
    如你就用不间断运行,在nologgin和logging之间出现错误,此时加入数据不可能恢复。
      

  10.   

    今天看了一下资料,发现一般的DML语句就算用nologging数据库也会记日志,
    也就是说DML不可能NOLOG。