淺談Oracle閃回刪除表限制

來源:互聯網
上載者:User

Oracle 10g開始提供了類似windows系統的資源回收筒功能,使用者在刪除表的時候會不是直接刪除,而是移動到資源回收筒中,如果需要從資源回收筒中取回原來的表,可以使用閃回刪除表的特性,迅速的找回被刪除的表,而不需要從備份中匯入原有的表!但這個資源回收筒功能也是有前提的,不是在任何情況下都可以使用閃回刪除表特性,總結下,在10g中,下面幾種情境表不能flashback刪除,至於11g是否有改進,感興趣的朋友可以參照本文的方法進行測試下!順帶說下,資源回收筒採取fifo,先進先出的機制!例如在資源回收筒有兩張同樣名稱的表,閃回刪除的時候根據刪除時間的先後順序來覺得先閃回哪張表,因而閃回刪除表命令提供了rename to選項;

1:資源回收筒功能未開啟(這個就不用測試了)
2:表的儲存資料表空間不能為system
3: 表被刪除的時候不能帶purge參數
4:存在空間壓力的時候
5:表上面啟用了細粒度審計
6:表啟用了VPD

一:測試資料表空間儲存為system的閃回刪除
1.1 建立測試使用者,並賦予相應的許可權,開啟資料庫的資源回收筒功能

 
  1. [oracle@dg53 ~]$ sqlplus /nolog  
  2. SQL*Plus: Release 10.2.0.1.0 - Production on Thu Feb 16 16:48:44 2012  
  3. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  4.  
  5. SQL> conn /as sysdba  
  6. Connected.  
  7.  
  8. SQL> create user test identified by "123456" default tablespace users account unlock;  
  9. User created.  
  10.  
  11. SQL> grant resource,connect to test;  
  12. Grant succeeded.  
  13.  
  14. SQL> show parameter recyclebin;  
  15.  
  16. NAME                                 TYPE        VALUE  
  17. ------------------------------------ ----------- ------------------------------  
  18. recyclebin                           string      on 

1.2 使用test使用者建立2張表,一張儲存在system資料表空間

 
  1. Connected.  
  2. SQL> create table drop_1 (a number) tablespace system;  
  3. Table created.  
  4.  
  5. SQL> insert into drop_1 values (1);  
  6. 1 row created.  
  7.  
  8. SQL> commit;  
  9. Commit complete.  
  10.  
  11. SQL> create table drop_2 as select * from drop_1;  
  12. Table created.  
  13.  
  14. SQL> select * from tab;  
  15.  
  16. TNAME                          TABTYPE  CLUSTERID  
  17. ------------------------------ ------- ----------  
  18. DROP_1                         TABLE 
  19. DROP_2                         TABLE 

1.3 分別刪除2張表,不帶purge參數,查看資源回收筒只存在drop_2表,該表的儲存資料表空間為users,由此證明資料表空間儲存為system的表是不可以被閃回刪除的

 
  1. SQL> drop table drop_1;  
  2. Table dropped.  
  3.  
  4. SQL> drop table drop_2;  
  5. Table dropped.  
  6.  
  7. SQL> show recyclebin;  
  8. ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME 
  9. ---------------- ------------------------------ ------------ -------------------  
  10. DROP_2           BIN$uRD2vL3ZVNjgQKjANQEaNg==$0 TABLE        2012-02-16:16:53:36  
  11.  
  12. SQL> select object_name,original_name from user_recyclebin;  
  13.  
  14. OBJECT_NAME                    ORIGINAL_NAME  
  15. ------------------------------ --------------------------------  
  16. BIN$uRD2vL3ZVNjgQKjANQEaNg==$0 DROP_2  
  17.  
  18. SQL> flashback table drop_2 to before drop;  
  19. Flashback complete. 

1.4 測試使用sys使用者刪除drop_2表,是否可以成功閃回刪除

 
  1. SQL> conn /as sysdba  
  2. Connected.  
  3. SQL> show user;  
  4. USER is "SYS" 
  5. SQL> drop table test.drop_2;  
  6. Table dropped.  
  7.  
  8. SQL> conn test/123456  
  9. Connected.  
  10. SQL> select * from tab;  
  11.  
  12. TNAME                          TABTYPE  CLUSTERID  
  13. ------------------------------ ------- ----------  
  14. BIN$uRImQA9UYD7gQKjANQEdrg==$0 TABLE 
  15.  
  16. SQL> show recyclebin;  
  17. ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME 
  18. ---------------- ------------------------------ ------------ -------------------  
  19. DROP_2           BIN$uRImQA9UYD7gQKjANQEdrg==$0 TABLE        2012-02-16:17:06:54  
  20.  
  21. SQL> flashback table drop_2 to before drop;  
  22. Flashback complete 
  • 1
  • 2
  • 3
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.