oracle中经常碰到误删除数据的情况,之前都是通过as of timestamp 进行查询,然后进行update等反操作,今天发现可以直接flashbak table to 误操作之前的一个时间点,但是需要开始行迁移即:

1
alter table[schema.]table_name enable row movement;

语法:flashback table [schema.]table_name[,…n] to {[scn] [timestamp] [[enable disable] triggers]}

https://docs.oracle.com/cd/B28359\_01/server.111/b28286/statements\_9012.htm

当然这样的话就直接还原到误删除 的时间点了,有时候不确定是什么时候的误删除,可以通过as of timestamp 查询一下数据是否符合要求,如果符合要求就可以使用

1
2
SQL> FLASHBACK TABLE scott.dept TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '11' minute);
Flashback complete.

既可。

原文作者: liups.com

原文链接: http://liups.com/posts/e3a72c01/

许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议