将回滚段SHRINK至最小值。不用删除数据。

解决方案 »

  1.   

    问题的原因是事务所使用的回滚段达到了maxextents,无法继续扩展,解决办法如下:1、在system用户下执行如下sql语句,得到segment_name
       select segment_name from dba_rollback_segs where segment_id=3;2、执行如下命令:
       alter rollback segment SEGMENT_NAME storage(maxextents 300);
       其中300为maxextents的值。3、在执行事务前,发出如下命令,
       set transaction use rollback segment ROLLBACK_SEGMENT_NAME;
       其中ROLLBACK_SEGMENT_NAME为步骤2的SEGMENT_NAME,意思是本事务指定要使用的回滚段。
       注意,上面的命令可以用如下命令替代:
        EXECUTE dbms_transaction.use_rollback_segment('ROLLBACK_SEGMENT_NAME');4、重新执行事务。