系统配置:rh8.0+oracle9i
在使用exp时出错:
EXP-00056: ORACLE error 1555 encountered
ORA-01555: snapshot too old: rollback segment number with name "" too small
ORA-22924: snapshot too old
此时生成expdata.dmp文件6个G左右,主要为数据库中一表中的大对象。
问题: 在oracle 9i中rollback segment的管理默认的都是采用的AUTO方式,正常情况下应该不会出现回滚段太小的情况。
后来将管理方式改为了MANUAL方式,但不论是采用Enterprise manager还是使用SQL命令创建的rollback segment的MIN_EXTENTS均只有2,INITAL为112k,NEXT为0。
sql命令:
CREATE ROLLBACK SEGMENT rbs01
TABLESPACE rbs
STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 10
MAXEXTENTS 500 OPTIMAL 1000K);
请问一下为什么会出现上面这个问题,在AUTO和MANUAL模式下怎样去解决?!
Any help is appreciate!
回滚段的问题及解决方法
问题一:事务要求的回滚段空间不够,表现为表空间用满,回滚 段扩展到达参数MAXEXTENTS的值。
解决方法:向回滚段表空间添加文件或使已有的文件变大;增加MAXEXTENTS的值。
问题二:读一致性错误
解决方法:增加MINEXTENTS的值,增加区段(EXTENT)的大小,设置一个高的OPTIMAL 值。
1 处理这样大的一个事务当然要定义一个相当大的Rollback才行,不要使用系统默认的Rollback。
你需要修改你的init。ora文件的参数!!!
不然的话你的rollback是建不好的!
我使用AUTO方式,把UNDO表空间建的非常大。
如果我的数据表空间是16G,我的UNDO表空间是24G。
另外当UNDO表空间被占得差不多得时候。可以这样清空UNDO表空间
alter system set undo_tablespace = ;
删除UNDO表空间,连文件一块儿删除。
新建UNDO表空间。
alter system set undo_tablespace = UNDOTBS1;