Database ORACLE 11g中的闪回功能

Database ORACLE 11g中的闪回功能,database,oracle,oracle10g,oracle11g,Database,Oracle,Oracle10g,Oracle11g,我正在使用oracle 11g r1。作为项目的一部分,我必须通过禁用几个约束(触发器和检查约束)来执行多个更新语句。这将导致数据库损坏 当数据库损坏时,我必须重新导入整个数据库。这将是一项耗时的额外任务 我对oracle闪回功能知之甚少。是倒叙将帮助我避免这些不必要的进口。这样我就可以设置一些稳定点,在出现任何问题时切换回那个点 如果它符合我的要求,我会努力学习。请帮帮我 请简要介绍一下此功能?听起来您希望(很有可能是一个有保证的恢复点)实现您想要测试的任何更改,然后 差不多 CREATE R

我正在使用oracle 11g r1。作为项目的一部分,我必须通过禁用几个约束(触发器和检查约束)来执行多个更新语句。这将导致数据库损坏

当数据库损坏时,我必须重新导入整个数据库。这将是一项耗时的额外任务

我对oracle闪回功能知之甚少。是倒叙将帮助我避免这些不必要的进口。这样我就可以设置一些稳定点,在出现任何问题时切换回那个点

如果它符合我的要求,我会努力学习。请帮帮我


请简要介绍一下此功能?

听起来您希望(很有可能是一个有保证的恢复点)实现您想要测试的任何更改,然后

差不多

CREATE RESTORE POINT some_name GUARANTEE FLASHBACK DATABASE;
然后做你想做的任何改变。如果要恢复到创建还原点时数据库的状态,请执行以下操作:

FLASHBACK DATABASE TO RESTORE POINT 'some_name'
当您使用完恢复点,不再希望能够回想起它时

DROP RESTORE POINT some_name

然而,实际上还不清楚这是否真的是你想要的。如果您的问题只是在做了一系列更改后约束无法验证,那么将约束创建为可延迟约束、在进行更改之前延迟约束、将更改作为单个事务的一部分进行更改以及在约束无法验证时回滚更改将更有意义(可能还需要记录无法验证的行,以便更有效地调试脚本).

简要概述:你不应该首先禁用约束。你认为你为什么需要这样做?@a_horse_,在我的项目中没有名字,我正在使用现有的脚本。他们遵循禁用所有约束的方法。我应该遵循它们。(至少要满足最后期限)你真的应该重新考虑这种方法。使用Justin建议的延迟约束可能是一个更好的解决方案(而且可能比闪回解决方案更快实施——这会带来额外的许可成本!)@a_horse_,没有名字,以我目前1年多的经验,我不能建议其他方法:),非常感谢您的建议另一种选择(延迟约束除外)可能是在执行更新/插入时使用“将错误记录到”选项记录有问题的行