今天在处理售后的时候,需要批量操作数据,但由于看掉了客户提出的一个条件,还提交事务了,我当时就慌了....赶紧去网上查是否有相关回滚的方法呀,还真有,流程如下:
Oracle自带数据闪回机制。
SELECT * FROM tableName AS OF TIMESTAMP TO_TIMESTAMP('20180822 11:00:00','YYYYMMDD HH24:MI:SS');
这里'20180822 11:00:00'就是你想恢复数据到哪个时间状态 tab是数据库的表名 这样查询到的数据就是执行更新操作之前的数据
create table tableName_back as SELECT * FROM tab AS OF TIMESTAMP TO_TIMESTAMP('20180822 11:00:00','YYYYMMDD HH24:MI:SS');
这样就把这个时间段的数据放到了 tab_bak(备份表)表中了。
之后就简单了,备份表都有了,利用备份表还原就行了,不过我提醒一下最好在还原之前给备份表加上主键,不然利用SQL还原的时候慢得你伤心。
之后还原即可。
示例:
update tableName tn
set tn.name =
(select tnb.name from tableName_back tnb where tnb.id = tn.id);
原文地址:https://blog.csdn.net/u014388408/article/details/50778979
未授权,侵删。