设置非常高的撤消保留是否可行,以允许闪回查询及时回溯数周?
自然,撤消表空间中必须有足够的可用空间来包含所需的撤消数据量。还有其他我应该注意的限制吗?
如果没有足够的撤消空间可用,会发生什么?生产是否会受到任何影响,或者只是闪回和回滚受到限制(快照太旧等)。
更新:
每个实例每天的典型撤消生成量略低于 1 GB,每个实例的撤消空间价值高达 64 GB,以 30 天的撤消保留目标运行听起来是可行的。不?
设置非常高的撤消保留是否可行,以允许闪回查询及时回溯数周?
自然,撤消表空间中必须有足够的可用空间来包含所需的撤消数据量。还有其他我应该注意的限制吗?
如果没有足够的撤消空间可用,会发生什么?生产是否会受到任何影响,或者只是闪回和回滚受到限制(快照太旧等)。
更新:
每个实例每天的典型撤消生成量略低于 1 GB,每个实例的撤消空间价值高达 64 GB,以 30 天的撤消保留目标运行听起来是可行的。不?
非常高是一个相对术语,取决于视角。您可能意味着 1 小时、1 个月、1 年等。假设您的意思介于 1 分钟到 1 个月之间,答案将取决于正在产生多少撤消以及您有多少可用存储空间。我没有看到任何超过两周的东西。
Oracle 自动管理撤消空间,并在空间限制需要时将保留时间动态降低到撤消保留设置以下。需要注意的是,撤消表空间已保证保留。
Oracle 数据库管理员指南在一页上涵盖了所有这些信息。以下是一些摘录:
虽然我没有尝试过,但我倾向于怀疑,当您
UNDO_RETENTION
超过 Oracle 维护其 SCN 到时间戳映射的时间长度时,您会遇到问题。如果有记忆,那大约是 1 周(好吧,如果有记忆,在 10g 的日子里是 1 周,我不知道在 11.2 中会有什么改变)。我倾向于怀疑 Oracle 会使用该映射来确定哪些UNDO
段足够旧,应该清除它们,并且如果超出该限制,您将开始遇到问题。例如,在我的 11.2 系统上,我可以将 7 天前转换为 SCN,然后再转换回时间戳,但不能转换为 8 天前
因此,我倾向于在我的系统上怀疑,如果我试图保留 8 天的
UNDO
那个 Oracle 通常会遇到问题。验证一种或另一种方式需要一周的时间,但如果我不得不下注,我倾向于下注尝试持有超过一周的时间UNDO
会失败。即使您可以保留
UNDO
那么长时间,制定闪回查询也将是一项重大挑战,因为您无法指定时间戳。您可以通过编写一个自动化作业来维护您自己的(更长期的)SCN 和时间戳之间的映射,该作业将每隔几秒捕获一次并一次将它们保存数周或数月,然后AS OF SCN
在您的闪回查询中指定。我倾向于期望老年人UNDO
会消失,但它可能会起作用。