与你分享 ORA-01555 错误的几种解决方案,一般来说可以采用 下面的方法: 适当地设置参数 UNDO_RETENTION (要大于执行运行时间最长的事务所需的时间)。可以用V$UNDOSTAT 来确定长时间运行的查询的持续时间。另外,要确保磁盘上已经预留了足够的空间 ,使 undo 段能根据所请求的 UNDO_RETENTION 增大。 使用手动 undo 管理时加大或增加更多的回滚段。这样在长时间运行的查询执行期间,覆 盖undo 数据的可能性就能降低。 减少查询的运行时间(调优)。如果可能的话,这绝对是一个好办法,所以应该首先尝试 这种方法。这样就能降低对 undo 段的需求,不需求太大的 undo 段。这种方法可以解决上述的所有 3 个问题。 收集相关对象的统计信息。这有助于避免生成大的undo。由于大批量的 UPDATE 或INSERT 会导致块清除( block cleanout ),所以需要在大批量 UPDATE 或大量加载之后以某种方式收集统计信息。 还有一个就是重新设置大一点的undocreate undo tablespace undo_bigdatafile size 2g(让后用数据文件加到足够大)autoextend off alter system set undo_tablespace = undo_big(切换)