oracle对数据做操作后回滚

今天批量修改用户的数据,由于忘了加where条件导致把全部数据修改了,瞬间觉得把自己坑了,于是赶紧回滚数据

SELECT * FROM 表名 as of TIMESTAMP "TO_TIMESTAMP"('2018-05-29 17:58:00', 'yyyy-MM-dd HH24:mi:ss') WHERE USERID IN (SELECT b."UID" FROM TS_APP_USERS_B b)  ;

上面的sql是查询修改之前的数据版本的,oracle会做一个快照存储以前的数据,这个日期就是我修改的日期。

然后创建新表存储之前正确的数据

CREATE TABLE 新表名 as SELECT * FROM 表名 as of TIMESTAMP "TO_TIMESTAMP"('2018-05-29 17:58:00', 'yyyy-MM-dd HH24:mi:ss') WHERE USERID IN (SELECT b."UID" FROM TS_APP_USERS_B b)  ;

接下来就可以随便你怎么恢复了。

至于mysql好像需要开启了binlog,感觉比oracle麻烦,貌似没开启就恢复不了,坑的很。

以后运行sql之前还是慎重吧 ,大哭

猜你喜欢

转载自blog.csdn.net/WYA1993/article/details/80500569