Mou*_*diz 1 oracle ddl rollback
当我想更新,删除,插入我需要提交.这在大多数情况下是有用的,我可能会更新错误的信息或错误地删除某些内容,我可以撤消它.
删除列时,我不需要提交.有没有像回滚(不闪回),这使我能够快速撤消我的更改?即使经过长时间的分析,丢弃色谱柱也可能会对表造成损坏(pk,fk).
为什么Oracle提供DML提交但不提供DDL提交?
为什么Oracle提供DML提交但不提供DDL提交?
当您发出DDL语句时,基本上是针对Oracle数据字典启动事务,并且为了消除任何开销,此事务必须尽可能短并尽快生效.因此,DDL语句在DDL语句之前进行双重提交,然后在语句之后立即(或者回滚,如果出现错误).此行为使Oracle的DDL不是事务性DDL,您无法显式提交或回滚它.这就是它的方式.
话虽如此,如果你放弃了一个表,然后从10g开始,你就可以使用flashback table技术将其恢复到一个语句中,因为Oracle在你发表drop table声明之后不会丢弃它,而是把它放在回收站中:
flashback table <<table_name>> to before drop
Run Code Online (Sandbox Code Playgroud)
遗憾的是,您不能使用闪回表来恢复表的删除列,只是因为丢弃的列不会放在回收站中.您必须执行完整数据库或单个表空间的时间点恢复,或者如果存在逻辑备份(*.dmp文件),则使用imp或impdp实用程序从中恢复表.