Oracle 10g开始提供了类似windows系统的回收站功能,用户在删除表的时候会不是直接删除,而是移动到回收站中,如果需要从回收站中取回原来的表,可以使用闪回删除表的特性,迅速的找回被删除的表,而不需要从备份中导入原有的表!但这个回收站功能也是有前提的,不是在任何情况下都可以使用闪回删除表特性,总结下,在10g中,下面几种场景表不能flashback删除,至于11g是否有改进,感兴趣的朋友可以参照本文的方法进行测试下!顺带说下,回收站采取fifo,先进先出的机制!例如在回收站有两张同样名称的表,闪回删除的时候根据删除时间的先后顺序来觉得先闪回哪张表,因而闪回删除表命令提供了rename to选项;
1:回收站功能未开启(这个就不用测试了)
2:表的存储表空间不能为system
3: 表被删除的时候不能带purge参数
4:存在空间压力的时候
5:表上面启用了细粒度审计
6:表启用了VPD
一:测试表空间存储为system的闪回删除
1.1 创建测试用户,并赋予相应的权限,开启数据库的回收站功能
[oracle@dg53 ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Feb 16 16:48:44 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> create user test identified by "123456" default tablespace users account unlock;
User created.
SQL> grant resource,connect to test;
Grant succeeded.
SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
1.2 使用test用户新建2张表,一张存储在system表空间
Connected.
SQL> create table drop_1 (a number) tablespace system;
Table created.
SQL> insert into drop_1 values (1);
1 row created.
SQL> commit;
Commit complete.
SQL> create table drop_2 as select * from drop_1;
Table created.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DROP_1 TABLE
DROP_2 TABLE
1.3 分别删除2张表,不带purge参数,查看回收站只存在drop_2表,该表的存储表空间为users,由此证明表空间存储为system的表是不可以被闪回删除的
SQL> drop table drop_1;
Table dropped.
SQL> drop table drop_2;
Table dropped.
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
DROP_2 BIN$uRD2vL3ZVNjgQKjANQEaNg==$0 TABLE 2012-02-16:16:53:36
SQL> select object_name,original_name from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
------------------------------ --------------------------------
BIN$uRD2vL3ZVNjgQKjANQEaNg==$0 DROP_2
SQL> flashback table drop_2 to before drop;
Flashback complete.
1.4 测试使用sys用户删除drop_2表,是否可以成功闪回删除
SQL> conn /as sysdba
Connected.
SQL> show user;
USER is "SYS"
SQL> drop table test.drop_2;
Table dropped.
SQL> conn test/123456
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BIN$uRImQA9UYD7gQKjANQEdrg==$0 TABLE
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
DROP_2 BIN$uRImQA9UYD7gQKjANQEdrg==$0 TABLE 2012-02-16:17:06:54
SQL> flashback table drop_2 to before drop;
Flashback complete
- 大小: 44.2 KB
分享到:
相关推荐
oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回oracle 闪回
文档中详细介绍oracle 闪回删除的表,供大家参考!一起进步
为了使 Oracle 数据库从任何逻辑误操作中迅速地恢复...进行了全面扩展,提供了闪回数据库、闪回删除、闪回表、闪回事物及闪回版本查询等功能,本 文将重点说闪回删除、闪回表的使用。(本文使用oracle 版本10.2.0.3.0)
oracle 闪回技术 数据恢复
浅谈Oracle11g的闪回技术.pdf
完整的描述了ORACLE闪回的整个过程,参数和配置开关以及部分注意事项.包含ORACLE中:闪回表、闪回删除、闪回数据库等操作。
可以有效的解决初学者遇到的删除问题。详细介绍了oracle中删除的问题
浅谈ORACLE数据库的性能优化.pdf
详细描述Oracle闪回技术原理,并详细列举语法及实际使用方法。
利用oracle闪回技术恢复数据,在因误操作导致删除数据时,可以进行数据恢复。
讲解oracle闪回数据库,采用闪回技术备份还原数据库
浅谈Oracle数据库表的设计技巧.pdf
Oracle从回收站恢复删除的表的数据,以及其他sql优化语句
浅谈Oracle优化排序的操作,ORACLE 参数调整影响
oracle定时删除表空间的数据并释放表空间(oracle编程高手总结编写)
浅谈Oracle常见错误处理,Oracle公司工程师列举的常见错误及处理方法。
oracle闪回操作,闪回表,闪回删除,闪回版本,闪回事务几种类型都介绍到了
Oracle 的表删除后,或表数据删除后,数据找回的方法一览。
获取某一点的前的ORACLE数据,可以恢复误删数据