程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle 10G 中的回收站

Oracle 10G 中的回收站

編輯:Oracle數據庫基礎

在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_NAME
-------------------- --------------------
RB$$41888$TABLE$0 FOO

SQL> DESC RB$$41888$TABLE$0
名稱 是否為空? 類型
----------------------------------------

DUMMY VARCHAR2(1)

當一個表被刪除並移動到"回收站"中,它的名字要進行一些轉換.這樣的目的顯而易見是為了避免同類對象名稱的重復.(Windows上,經過了特殊的處理,回收站裡的操作系統文件可以重名.)

轉換後的名字格式如下:

RB$$objn$object_type$version

其中的RB,代表Recycle Bin. objn為表的目錄對象號. object_type表示對象類型. version表示版本號.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved