最近生产环境,我们的任务调度系统每天早上6点执行任务,执行存过加工数据时,好几个任务出现了ORA-01555错误,此错误是因为undo旧照过久导致。
了解到一般引起的原因有两种
1、查询时有大量更新数据操作,导致查询的数据已无法从undo查到。
2、sql查询时间太慢,以至于要查询的数据还有没查询完,数据被已被更新。
第二种原因比较好理解,如:有一张Y表有2000W数据,7:00分A查询Y表,7:01分B使用索引更新了第1500W条的数据进行了commit,此时A查询还没有传到第1500W条数据,等到A查询到第1500W条数据时,此时出现ORA-01555错误。
但第一种原因不是很理解,是因为同时执行insert into select操作过多且数据量过多,导致undo空间满了导致?
在早上调用调用存过执行insert into select操作的那个时间段没有所查询表的更新操作。但是连续三天出现此错误。因一时半会定位不到原因。所以先让DBA将undo空间加大了一倍,后续再定位原因。
此问题先记录,待定位到具体原因再补充
本文探讨了生产环境中定期任务遇到ORA-01555错误,聚焦于查询更新操作和undo空间不足的问题。作者解析了两种可能原因,并记录了DBA增大undo空间后的临时应对措施,后续将继续定位问题根源。
3833

被折叠的 条评论
为什么被折叠?



