今天在处理售后的时候,需要批量操作数据,但由于看掉了客户提出的一个条件,还提交事务了,我当时就慌了....赶紧去网上查是否有相关回滚的方法呀,还真有,流程如下:
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.youkuaiyun.com/u014388408/article/details/50778979
未授权,侵删。
本文详细介绍了在处理售后数据批量操作时遇到的问题及解决方案,通过使用Oracle自带的数据闪回机制恢复误操作的数据。包括具体SQL语句演示和还原数据的步骤,以及在还原前对备份表进行主键添加的建议。
702

被折叠的 条评论
为什么被折叠?



