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之前还是慎重吧 ,大哭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值