Oracle sys/system使用者下刪除表為什麼沒有被rename 到 recyclebin table(回收站)

maohaiqing0304發表於2013-04-20
 問題:
今天群裡有人問說sys下建立表之後刪除為什麼被存在recyclebin table中----不能恢復
原因:
Flashback Drop 用於非系統表空間和本地管理的表空間的恢復
而sys/system使用者下的預設表空間是system表空間 所以不能進行閃回
測試:sys/system使用者下刪除表不會被rename到回收站
SQL> SELECT username,default_tablespace FROM DBA_USERS WHERE USERNAME IN('SYS','SYSTEM');

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> 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到回收站的


祝好~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28602568/viewspace-758928/,如需轉載,請註明出處,否則將追究法律責任。

相關文章