Oracle 针对表的误删除

    Flashback是ORACLE9i开始新特性,但9I只支持FlashQuery,即根据回滚段读取表某个时间点的数据。到了10G,Oracle通过Recyle bin(回改站)与FlashArea(闪回区)实现快速恢复删除表((Flashback Table)和数据库时间点恢复((Flashback Database)(不需要全备份哦)。
从Oracle10g开始,有一个被称为回收站的虚拟容器,用于存放所有被删除的对象。
闪回技术
    当一个表被删除时,他并不是真正的删除而只是将它放在回收站里,主要这表还在回收站里,他就可以恢复,该回收站放在表所在的表空间里,
oracle 并不保证所有删除的表都能闪回成功。因为当用户在某一个表空间上创建一个新表时,oracle首先使用空闲的磁盘空间,当磁盘空间不
足时,采用回收站的空间。因此在创建表空间时,最好留足够的磁盘空间以方便日后进行恢复工作。


使用范围:仅仅使用于delete,drop情况,如果是用truncate或drop table tttttt purge删除的话,就只有查看日志文件了。
制造故障:
delete from sales where prod_id>100;
解决
1.针对delete的情况
开启表的行移动功能。
alter table sales enable row movement;
闪回数据:
flashback table sales to timestamp to_timestamp('20110805 HH24:mi:ss');


oracle 版本为Oracle11gR1
1.登录系统
conn sys/ticket as sysdba
查看回收站是否为on表示打开
show parameter bin
如果没有打开,修改数据库
alter system set recyclebin=on scope=spfile;
关闭数据库从其服务
shutdown immediate;
startup ;
确认回收站打开
show parameter bin
conn scott/tiger;
查看被删除的表的信息
show recyclebin;
当回收站中回收表信息太多时候,采用purge清除
purge table  表名


创建测试案例
创建测试表
create table test(value varchar(1));
插入数据
insert into test  values('1');
查看回收站信息
show recyclebin;
删除表
drop table test;
查看回收站信息
show recyclebin;
闪回数据
flashback table test to before drop;
测试
select * from test;


当采用如下清除删除语句,不能恢复
drop table test purge;

 

你可能感兴趣的:(oracle)