【发布时间】:2012-08-11 23:10:01
【问题描述】:
当我运行工作流超过 5 小时时,我经常收到“快照太旧错误”。我的源是 oracle,目标是 Teradata。请帮助解决这个问题。在此先感谢
【问题讨论】:
标签: oracle teradata informatica
当我运行工作流超过 5 小时时,我经常收到“快照太旧错误”。我的源是 oracle,目标是 Teradata。请帮助解决这个问题。在此先感谢
【问题讨论】:
标签: oracle teradata informatica
我读过的关于 ORA-01555 snapshot too old 错误的最佳解释见this AskTom thread
问候。
【讨论】:
snapshot too old 错误或多或少与查询的运行时间直接相关(通常是 FOR 循环的游标)。因此,最好的解决方案是优化您的查询,使它们运行得更快。
作为一个短期解决方案,您可以尝试增加 UNDO 日志的大小。
更新:
UNDO 日志存储记录更新之前的先前版本。它用于回滚事务并检索旧版本的记录,以便为长时间运行的查询提供一致的数据快照。
如果您想通过增加 UNDO 日志来解决这个问题,您可能需要深入研究 Oracle DB 管理。基本上你会(作为 SYSDBA):
ALTER SYSTEM SET UNDO_RETENTION = 21600;
21600 是以秒为单位的 6 小时。
但是,如果 UNDO 日志文件足够大,Oracle 只会保留 6 小时的旧数据,这取决于回滚段的大小和在数据库上执行的更新量。
因此,除了更改撤消保留时间之外,您还应该确保在作业运行时执行的并发更新很少。特别是,应尽量减少更新您的工作正在读取的数据。
如果一切都失败了,增加UNDO日志。
【讨论】: