问题:
今天群里有人问说sys下创建表之后删除为什么被存在recyclebin table中----不能恢复
SQL> create table a (id number(1));
表已创建。
SQL> sho recycl;
SQL> drop table a;
表已删除。
SQL> sho recycl;
原因:
Flashback Drop 用于非系统表空间和本地管理的表空间的恢复
Flashback Drop 用于非系统表空间和本地管理的表空间的恢复
而sys/system用户下的默认表空间是system表空间 所以不能进行闪回
测试:sys/system用户下删除表不会被rename到回收站
SQL> SELECT username,default_tablespace FROM DBA_USERS WHERE USERNAME IN('SYS','SYSTEM');
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SYSTEM SYSTEM
SYS SYSTEM
SQL>
SQL> create table a (id number(1));
表已创建。
SQL> select table_name,tablespace_name from user_tables w where w.table_name='A';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
A SYSTEM
SQL> sho recycl;
SQL> drop table a;
表已删除。
SQL> sho recycl;
SQL> show user;
USER 为 "SYS"
表已创建。
SQL> select table_name,tablespace_name from user_tables w where w.table_name='A';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
A SYSTEM
SQL> sho recycl;
SQL> drop table a;
表已删除。
SQL> sho recycl;
SQL> show user;
USER 为 "SYS"
SQL> conn system/oracle
已连接。
SQL> create table a (id number(1));
表已创建。
SQL> sho recycl;
SQL> drop table a;
表已删除。
SQL> sho recycl;
SQL>
SQL> sho user
USER 为 "SYSTEM"
SQL> create table a(id number(1)) tablespace sysaux;
表已创建。
SQL> select table_name,tablespace_name from user_tables w where w.table_name='A';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
A SYSAUX
SQL> drop table a;
表已删除。
SQL> sho recycl;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
A BIN$9vh/EzDYSJKDCIzGSWfsXw==$0 TABLE 2013-04-18:16:10:55
SQL> select * from a;
select * from a
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> flashback table a to before drop;
闪回完成。
SQL> select * from a;
未选定行
SQL>
测试结果:
只有在system表空间上删除表都不会rename到回收站的
祝好~
SQL> sho user
USER 为 "SYSTEM"
SQL> create table a(id number(1)) tablespace sysaux;
表已创建。
SQL> select table_name,tablespace_name from user_tables w where w.table_name='A';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
A SYSAUX
SQL> drop table a;
表已删除。
SQL> sho recycl;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
A BIN$9vh/EzDYSJKDCIzGSWfsXw==$0 TABLE 2013-04-18:16:10:55
SQL> select * from a;
select * from a
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> flashback table a to before drop;
闪回完成。
SQL> select * from a;
未选定行
SQL>
测试结果:
只有在system表空间上删除表都不会rename到回收站的
祝好~
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28602568/viewspace-758928/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28602568/viewspace-758928/