【问题标题】:Snapshot too old error快照太旧错误
【发布时间】:2012-08-11 23:10:01
【问题描述】:

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

【问题讨论】:

标签: oracle teradata informatica


【解决方案1】:

我读过的关于 ORA-01555 snapshot too old 错误的最佳解释见this AskTom thread

问候。

【讨论】:

【解决方案2】:

snapshot too old 错误或多或少与查询的运行时间直接相关(通常是 FOR 循环的游标)。因此,最好的解决方案是优化您的查询,使它们运行得更快。

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

更新:

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

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

 ALTER SYSTEM SET UNDO_RETENTION = 21600;

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

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

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

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

【讨论】:

  • 谢谢。查询非常简单,但它获取更多记录,但它需要更长的时间。我正在使用 Tpump 将 for 加载到 Target(非 stagged 模式)。什么是 UNDO 日志?你能说清楚吗?并告诉我其他可能的方法来克服这个错误..
  • 快照太旧意味着撤消保留时间太短,因此就像 codo 告诉您的那样,您需要更改它。然后到快照太小;这一次与撤消表空间的大小相关联,该表空间存储在满足撤消保留时必须完成的回滚。所以往往第一个影响第二个。希望这可以澄清。问候。
  • 感谢大家的回答
猜你喜欢
  • 2020-07-05
  • 2015-07-27
  • 2010-12-13
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多