oracle的flashback技术可以让数据库去检索查询历史数据。
要使用flashback首先数据库要处于归档模式,
然后需要在mount阶段用命令:
alter database flashback on;
打开flashback。

一闪回表到以前的状态

FLASHBACK TABLE employee TO TIMESTAMP
TO_TIMESTAMP(’2003-04-04 09:30:00’, ‘YYYY-MM-DD HH24:MI:SS’); 
注意:truncate掉的表不能用flashback

二闪回删除
oracle中删除表并没有物理上删除,而是进了回收站。
drop table employee
SELECT  * FROM recyclebin;  --查看回收站 
FLASHBACK TABLE HR.EMPLOYEE_DEMO TO BEFORE DROP;
三 闪回数据库
查看FLASHBACK_DATABASE_LOG 表,看最早能恢复到的时间点和SCN
SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME
FROM V$FLASHBACK_DATABASE_LOG;
关闭数据库
shutdown immediate;
启动到mount阶段
startup mount;
用RMAN连接到数据库,执行flashback database命令
FLASHBACK DATABASE TO TIME  "TO_DATE('20130329 10:00:00','YYYYMMDD HH24:MI:SS') ";
恢复完数据库用read only模式打开数据库,检查数据是否正确。
ALTER DATABASE OPEN READ ONLY;
关闭数据库。。接下来有两种选择:
1.以RESETLOGS模式打开数据库,数据库重置状态到flashback时间
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE OPEN RESETLOGS;
2.导出要处理的表,然后恢复数据库到当前状态。
RECOVER DATABASE;