Oracle数据库 ORA-01555 快照过旧

Oracle数据库 ORA-01555 快照过旧
最新回答
山河霜白

2023-05-30 05:30:38

缓存空间被占用完了 要把修改的数据提交这样缓存就有空间了所以当你每次修改数据后都要提交一次。
花若怜

2022-01-03 19:09:15

与你分享 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(切换)
收起 1条折叠回答