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;
會話已更改。
更多詳情見請繼續閱讀下一頁的精彩內容: