Oracle误删表内数据,如何恢复

实际操作中,有时候会误删数据,下面是一些恢复数据的方法

/*1.FLASHBACK QUERY*/

/*这里只是查出被删之前的数据,如果要恢复,则把查询出来的数据导出为sql,然后找到原表,重新导入数据即可*/

--闪回到15分钟前
select * from orders as of timestamp (systimestamp - interval '15' minute) where ......
--这里可以使用DAY、SECOND、MONTH替换minute,例如:
SELECT * FROM orders AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '2' DAY)

--闪回到某个时间点
select * from orders as of timestamp to_timestamp ('01-Sep-04 16:18:57.845993', 'DD-Mon-RR HH24:MI:SS.FF') where ...

--闪回到两天前
select * from orders as of timestamp (sysdate - 2) where.........


/*2.FLASHBACK DROP*/

1.flashback table orders to before drop;

--2.如果源表已经重建,可以使用rename to子句:
flashback table order to before drop rename to order_old_version;

/*3.FLASHBACK TABLE*/

--1.首先要启用行迁移:
alter table order enable row movement;
--2.闪回表到15分钟前:
flashback table order to timestamp systimestamp - interval '15' minute;
--闪回到某个时间点:
FLASHBACK TABLE order TO TIMESTAMP TO_TIMESTAMP('2007-09-12 01:15:25 PM','YYYY-MM-DD HH:MI:SS AM') 

猜你喜欢

转载自blog.csdn.net/loveLifeLoveCoding/article/details/81093855