ORA-01555: snapshot too old: rollback segment number 36 with name “_SYSSMU36_2323805826$” too small
导出EXPDP导出数据提示如下报错:
ORA-31693: Table data object "PHIS_EMR"."EMR_RECORD_TEXT" failed to load/unload and is being skipped due to error: ORA-02354: error in exporting/importing data ORA-01555: snapshot too old: rollback segment number 36 with name "_SYSSMU36_2323805826$" too small
原因分析:
在执行导出或查询某张表的时候,又有其它用户对该表进行了行修改。修改提交后,通常UNDO中会保留这些旧的资料,用来保证数据一致性读。如果UNDO保留时间到了,并且UNDO中无足够空间,这些在UNDO中的旧资料就会被覆盖。那些依靠这些数据的操作就无法获得一致性读,从而报错。
解决方法:
修改undo_retention、undo tablespace size到合适的大小,或者选择数据库空闲时间段执行expdp作业。
`SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 1800
undo_tablespace string UNDOTBS1
`
修改语句:
SQL> alter system set undo_retention=36000 scope=both; System altered.
