☆误删除数据后快速恢复☆

--可能很多人有误操作数据库的情况。那么如果遇到误删除数据表想恢复数据或者数据表怎么办???

下面给一个简单的案例就可以解决上面提的问题

--oracle10g以及以上版本对删除数据的恢复方案

--测试表tbtest

CREATE TABLE tbtest(TID NUMBER PRIMARY KEY ,TNAME VARCHAR2(22) );

INSERT INTO TBTEST VALUES (1,'A1');
INSERT INTO TBTEST VALUES (2,'B1');
INSERT INTO TBTEST VALUES (3,'C1');
COMMIT;
 

--如果删除表里的数据,恢复数据的方法

DELETE FROM tbtest;

COMMIT;

--查询当前快照时间

select current_scn from v$database; --351626638
 

--351624577 将此时间往前推找到先前的数据

SELECT * FROM tbtest as of SCN 351624577 ;
 

--找到先前的数据后将数据以SQL FILE的格式导出,然后copy到PL/SQL DEVELOPER或者直接通过CMD去执行脚本,

--我选取的前者,直接copy到PL/SQLDEVELOPER,如下

INSERT INTO TBTEST VALUES (1,'A1');
INSERT INTO TBTEST VALUES (2,'B1');
INSERT INTO TBTEST VALUES (3,'C1');
COMMIT;
 

--执行后查询是否是先前的数据

SELECT * FROM TBTEST;
 

--如果drop表,恢复此表操作方法

DROP TABLE TBTEST;
COMMIT;
 

--如果删除时间不长的话,可以用闪回功能中的flashback drop

select * from user_recyclebin WHERE original_name ='TBTEST';

FLASHBACK TABLE TBTEST TO BEFORE DROP;
 

--PS:尽量在15分钟内将数据恢复掉,对数据库过多的操作会将数据库存储的快照造成过期

--同一个数据库如果有多个用户,并且同时删除了多个用户下的同一张表,那么需要将不同用户下的同一表数据都取出后再分别恢复

猜你喜欢

转载自j2eemylove.iteye.com/blog/1579679