今天在某客户的服务器上搞事情的时候,忘记做表的备份,直接给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中的条件进行查找更改的数据,然后再按条更新进去。

