当我运行工作流程超过5小时时,我经常收到“快照太旧错误”。我的源代码是oracle,目标是Teradata。请帮忙解决这个问题。谢谢提前
答案 0 :(得分:2)
快照太旧错误或多或少与查询的运行时间直接相关(通常是FOR循环的游标)。因此,最佳解决方案是优化查询,以便它们运行得更快。
作为短期解决方案,您可以尝试增加UNDO日志的大小。
<强>更新强>
UNDO日志在更新之前存储先前版本的记录。它用于回滚事务并检索旧版本的记录,以便为长时间运行的查询提供一致的数据快照。
如果您想通过增加UNDO日志来解决问题,您可能需要深入了解Oracle数据库管理。基本上你做(作为SYSDBA):
ALTER SYSTEM SET UNDO_RETENTION = 21600;
21600秒是6小时。
但是,如果UNDO日志文件足够大,Oracle将只保留6小时的旧数据,这取决于回滚段的大小和数据库上执行的更新量。
因此,除了更改撤消保留时间外,还应确保在作业运行时执行少量并发更新。特别是,应尽量减少您的工作正在阅读的数据更新。
如果一切都失败了,请增加UNDO日志。
答案 1 :(得分:2)
问候。