今天批量修改用户的数据,由于忘了加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之前还是慎重吧 ,