Oracle 資源回收筒recyclebin

來源:互聯網
上載者:User

Oracle 資源回收筒recyclebin

racle10g Recycle Bin資源回收筒

1>什麼是Recycle Bin

實際上,Recycle Bin只是一個儲存被drop的對象的一個資料字典表。所以,可以通過如下語句查詢資源回收筒中的資訊:
 select * from recyclebin

除非擁有sysdba許可權,每個使用者只能看到屬於自己的對象。所以,對於使用者來說,好像每個人都擁有自己的資源回收筒。即使使用者有刪除其他schema對象的許可權,也只能在recyclebin中看到屬於自己的對象。

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2
 

做個小實驗:
 SQL> conn ning/ning
 已串連。
 SQL> drop table test;
 

表已刪除。
 

SQL> drop table test.test;
 表已刪除。
 

SQL> select object_name,original_name from recyclebin;
 

OBJECT_NAME ORIGINAL_NAME
 ------------------------------ --------------------------------
 BIN$xJlIkIFVR/yau1Qb8ocxxQ==$0 TEST
 

SQL> con test/test
 已串連。
 

SQL> select object_name,original_name from recyclebin;
 

OBJECT_NAME ORIGINAL_NAME
 ------------------------------ --------------------------------
 BIN$1PKEiRExRN2g3tqEEWLfyw==$0 TEST
 

以下幾種drop不會將相關對象放進RecycleBin:
 

drop tablespace:會將RecycleBin中所有屬於該tablespace的對象清除
 drop user:會將RecycleBin中所有屬於該使用者的對象清除
 drop cluster:會將RecycleBin中所有屬於該cluster的成員對象清除
 drop type:會將RecycleBin中所有依賴該type的對象清除
 RecycleBin中的對象會被系統自動按照規則重新命名,這是為了防止命名衝突。命名格式為:BIN$unique_id$version
 

其中unique_id是26個字元的對象唯一識別碼,version則是對象在資料庫中的版本號碼。
 

SQL> create table t(id int);
 

表已建立。
 

SQL> drop table t;
 

表已刪除。
 SQL> select object_name,original_name from recyclebin;
 

OBJECT_NAME ORIGINAL_NAME
 ------------------------------ --------------------------------
 BIN$+7J5MgT2RbCX+tka+zjpgA==$0 T
 

SQL> create table t(id int);
 

表已建立。
 

SQL> drop table t;
 

表已刪除。
 

SQL> select object_name,original_name from recyclebin;
 

OBJECT_NAME ORIGINAL_NAME
 ------------------------------ --------------------------------
 BIN$+7J5MgT2RbCX+tka+zjpgA==$0 T
 BIN$pc+kkUM7QjuQeCDGtwlzgQ==$0 T
 

可以看到,刪除table t後,重建一個名為t的table,再次刪除,其unique_id是不一樣的。
 

這時,做一個還原看看:
 

SQL> select object_name,original_name from recyclebin;
 

OBJECT_NAME ORIGINAL_NAME
 ------------------------------ --------------------------------
 BIN$+7J5MgT2RbCX+tka+zjpgA==$0 T
 

這裡,Oracle選擇了最後一次刪除的T表還原。
 

再次刪除:
 SQL> drop table t;
 

表已刪除。
 SQL> select object_name,original_name from recyclebin;
 

OBJECT_NAME ORIGINAL_NAME
 ------------------------------ --------------------------------
 BIN$4bNgZiMGTA63iwA5xflh5A==$0 T
 BIN$+7J5MgT2RbCX+tka+zjpgA==$0 T
 

可以看到unique_id又變了。所以,通過這種命名方式,避免了對於刪除table後又重建了同名table的情況可能造成的命名衝突。
 

2.如何啟用/禁用RecycleBin
 

通過設定初始化參數recyclebin,可以控制是否啟用資源回收筒功能,預設是開啟的。
 SQL> alter system set recyclebin=off;
 

系統已更改。
 

SQL> alter system set recyclebin=on;
 

系統已更改。
 

SQL> alter session set recyclebin=off;
 

會話已更改。
 

SQL> alter session set recyclebin=on;
 

會話已更改。

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

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.