ORA-01555: Snapshot too old: rollback segment number too small(快照过旧:回滚段编号过小)
Oracle含义
长时间运行的查询无法访问构建其开始时刻读一致性映像所需的旧 undo 数据,因为这些 undo 信息已被覆盖。
原因
undo 表空间过小、UNDO_RETENTION 过短、在并发 DML 非常繁重时运行长查询,或在查询内部对同一张表循环提交(fetch across commit)。
解决方法
增大 UNDO_RETENTION 并扩大 undo 表空间;尽可能交由自动管理(AUTOEXTEND on)。将长查询拆分为更小的部分或在非高峰时段运行。考虑 RETENTION GUARANTEE:ALTER TABLESPACE undotbs1 RETENTION GUARANTEE。修正在循环内提交的应用逻辑。
同一数据库的其他条目
- ORA-00054Resource busy and acquire with NOWAIT specified or timeout expired(资源正忙,且指定了 NOWAIT 或等待超时)
- ORA-00060Deadlock detected while waiting for resource(等待资源时检测到死锁)
- ORA-01017Invalid username/password; logon denied(用户名/密码无效;登录被拒绝)
- ORA-01652Unable to extend temp segment by N in tablespace(无法在表空间中将临时段扩展 N)
- ORA-04031Unable to allocate N bytes of shared memory(无法分配 N 字节共享内存)
- ORA-12154TNS: could not resolve the connect identifier specified(TNS:无法解析指定的连接标识符)
- ORA-12514TNS: listener does not currently know of service requested in connect descriptor(TNS:监听程序当前无法识别连接描述符中请求的服务)