小码农 猫的一生在打哈欠中度过

ORACLE 误操作 恢复更新前的数据

今天在某客户的服务器上搞事情的时候,忘记做表的备份,直接给UPDATE了,这个UPDATE必须明天执行,今天不能执行,震惊之余,整个人都清醒过来。

开始恢复之旅,

一、 备份当前表:

CREATE TABLE TABLE_20180111
AS
SELECT * FROM TABLE;

这里注意,速度一定要快!!!!以最快的速度备份当前表!!!!

二、取得操作时间

参考网上的方法,首先找到执行UPDATE语句的时间点,因为我是刚更新的,而这张表这个时间点,没有业务发生,所以我采用了模糊的方式来进行回滚。(建议精确的时间点)

SELECT FIRST_LOAD_TIME,LAST_ACTIVE_TIME  FROM V$SQL WHERE SQL_FULLTEXT LIKE '%UPDATE TABLEXXXXXX%' --怕有问题的,直接查找表名

总之,尽量找到靠近的时间

三、创建恢复表

CREATE TABLE TABLE_RECOVE
AS
SELECT * FROM TABLE
AS OF TIMESTAMP TO_TIMESTAMP('2018-01-11 15:14:03','yyyy-mm-dd hh24:mi:ss');

四、整合数据,回滚对应的记录

这个只能自己写脚本了,使用UPDATE中的条件进行查找更改的数据,然后再按条更新进去。

赏
支付宝赞赏码
支付宝
微信赞赏码
微信
分享 微博 QQ 空间 豆瓣 Twitter

本文最后更新于 2022 年 06 月 23 日,距今日已 1603 天。

本文出自 小码农,转载请注明出处。

此篇已闭评。

卷首