1

当我运行工作流超过 5 小时时,我经常收到“快照太旧错误”。我的源是 oracle,目标是 Teradata。请帮助解决这个问题。在此先感谢

4

2 回答 2

2

快照太旧错误或多或少直接与查询的运行时间相关(通常是 FOR 循环的游标)。所以最好的解决方案是优化你的查询,让它们运行得更快。

作为一个短期解决方案,您可以尝试增加 UNDO 日志的大小。

更新:

UNDO 日志在更新之前存储记录的先前版本。它用于回滚事务并检索旧版本的记录以获得一致的数据快照以进行长时间运行的查询。

如果您想通过增加 UNDO 日志来解决它,您可能需要深入研究 Oracle DB 管理。基本上你做(作为SYSDBA):

 ALTER SYSTEM SET UNDO_RETENTION = 21600;

21600 是以秒为单位的 6 小时。

但是,如果 UNDO 日志文件足够大,Oracle 只会保留 6 小时的旧数据,这取决于回滚段的大小和在数据库上执行的更新量。

因此,除了更改撤消保留时间之外,您还应该确保在作业运行时执行的并发更新很少。特别是,应尽量减少对您的工作正在读取的数据的更新。

如果一切都失败了,增加 UNDO 日志。

于 2012-08-15T16:19:50.420 回答
2

我读过的 ORA-01555 快照太旧错误的最佳解释是在这个 AskTom 线程中找到

问候。

于 2012-08-16T15:36:09.747 回答