oralce mysql 数据恢复

背景:早上报错,误删除表中的一些数据,捉急,记录一下相关的操作

oralce 查询已经删除的数据

 select * FROM table_NAME AS OF TIMESTAMP SYSDATE - 1/24 
 where COL= '' AND COL1= '181'

时间间隔:

间距 为 一个小时 SYSDATE - 1/24

后面where 是删除的条件

插入删除数据

INSERT INTO table_NAME select * FROM table_NAME AS OF TIMESTAMP 
SYSDATE - 1/24 where COL= '' AND COL1= '181'

在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!那么如何进行恢复呢,下面介绍几种恢复方法。
第一种:

1.打开Flash存储的权限
ALTER TABLE tableName ENABLE row movement ;
2.把表还原到指定时间点
flashback table tableName to timestamp to_timestamp(’‘2018-03-16 10:40:00’’,’‘yyyy-mm-dd hh24:mi:ss’’);
后面的参数为要还原的时间点

第二种:利用ORacle的快照进行查找某个时间点的数据
select * from tableName AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL ‘100’ MINUTE)

select * from tableName as of timestamp to_timestamp(‘2018-03-16 11:40:00’,‘YYYY-MM-DD HH24:MI:SS’);

扫描二维码关注公众号,回复: 11572371 查看本文章

这样可以查询到指定的时间段的数据,再把查询到的数据复制到原来的表中。

第三种:其他

删除表后,可以采用如下操作:在 查询表user_recyclebin最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。

select * from user_recyclebin;

FLASHBACK TABLE TABLE_NAME TO BEFORE DROP;

如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:

CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。

猜你喜欢

转载自blog.csdn.net/jiangwudidebaba/article/details/107174966