在Oracle 10G中,引入了一個回收站(Recycle Bin)的概念.
回收站,從原理上來說就是一個數據字典表,放置用戶Drop掉的數據庫對象信息.用戶進行Drop操作的對象,並沒有被數據庫刪除,仍然會占用空間.除非是由於用戶手工進行Purge或者因為存儲空間不夠而被數據庫清掉.數據庫有了這樣的功能,能夠減少很多不必要的麻煩.常常看到開發人員誤把表刪除,急急忙忙找DBA來想辦法的情況,相信,隨著10G的大范圍應用,這種情形應該比較少見了.
DBA管理上的相關信息可以從USER_recyclebin(DBA_recyclebin)中獲取.從現在的Beta版本來看,手冊上所說的通過SQL*Plus的show recycle bin 命令查看還不可用.
為了便於測試,我們創建了一個表空間Foo,大小為1M,創建了一個用戶Foo,默認的表空間為Foo.
SQL>; CONNECT foo/foo
已連接。
SQL>; SELECT table_name FROM user_tables;
未選定行
SQL>; DESC user_recyclebin
名稱 是否為空? 類型
user_recyclebin大多是自解釋的,涵義比較容易理解.
SQL>; SELECT object_name FROM user_recyclebin;
未選定行
SQL>; CREATE TABLE foo AS SELECT * FROM DUAL;
表已創建。
SQL>; SELECT table_name FROM user_tables;
TABLE_NAME
-----------------------------
FOO
SQL>; DROP TABLE foo;
表已丟棄。
SQL>; SELECT table_name FROM user_tables;
TABLE_NAME
------------------------------
RB$$41888$TABLE$0
SQL>;
SQL>; SELECT object_name, original_name FROM user_recyclebin;
OBJECT_NAME ORIGINAL