今天在操作update语句的时候,忘记在后面加上where语句了,等到我commit之后,才发现表中的数据全部改了。
能不能把这次的操作作废呢?网上查了下资料,果然是有的,在这里记一下。
首先要开启ROW MOVEMENT功能
SQL>ALTER TABLE YOUR_TAB ENABLE ROW MOVEMENT;
THEN
SQL>flashback table your_tab to timestamp to_timestamp('2010-2-27 14:00:00','yyyy-mm-dd hh24:mi:ss');
假设要回到今天14点的状态。
特地做了几次试验,update和insert语句可以返回到以前的状态。
delete没测出来,返回不去,不知是指定的恢复时间间隔太短了,还是delete语句不能恢复。