场景一: 删除了表数据,没有commit 处理方法: 直接使用sqlplus或者,toad,pl/sql工具进行回滚(rollback) 即可恢复
场景二: 如果删除的数据,已经提交commit 处理方法:使用闪回技术(flash back)
闪回概念及具体使用方法: (1). 闪回(flashback):实现从回滚段中读取表一定时间内操作过的数据,可用来进行数据比对,或者恢复意外提交造成的错误数据。 (2). 回滚段:回滚段用于存放数据修改之前的值 (3). Oracle delete数据或者drop表时,并不是直接删除,而是像windows系统一样,把数据放到回收站 使用SELECT * FROM user_recyclebin,可以查看被删除的表或索引等 (4). 限制: 1.表的结构未改动;如果在删除后表结构发生改动则不能使用闪回; 2.用户必须有足够的权限 (5). 恢复数据使用实例:
1. alter table test1 enable row movement;
//在闪回前必须 启动行移动功能 否则会报错误:ORA-08189: 因为未启用行移动功能, 不能闪回表
2. FLASHBACK TABLE test1 TO TIMESTAMP to_timestamp('2013-06-03 15:35:00','yyyy-mm-dd hh24:mi:ss');
//注意:恢复时间点必须是在删除数据之前 这里是2013-06-03 15:35:57 之前就可以
回滚完成
(6). 恢复表使用实例:
flashback table test1 to before drop;
(7). 当然flashback还可以把整个数据库恢复到一定的时间点
(8). 注意: 1. 对 drop table test1 purge; 2. TRUNCATE TABLE test1; 的数据是不能使用flashback恢复的,因为这drop table tableName purge 和truncat操作都不会把数据放到回收站,会直接删除。