Oracle回收站介紹

zhenghaishu發表於2014-09-19

Oracle回收站介紹

 

Oracle 10g開始,Oracle資料庫引入了一個回收站(Recycle Bin)的資料庫物件。回收站(Recycle Bin)從原理上來說就是一個資料字典表,放置使用者刪除(drop)掉的資料庫物件資訊。使用者進行刪除操作的物件並沒有被資料庫刪除,仍然會佔用空間。除非是由於使用者手工進行purge或者因為儲存空間不夠而被資料庫清掉。

 

可以使用下面的查詢語句來檢視回收站的當前狀態:

select value from v$parameter where name='recyclebin';
如果返回值為“on”表明回收站是啟動的,“off”表明是關閉的。預設是啟動的。

可以手動啟動/關閉系統或會話中的回收站:

ALTER SYSTEM SET recyclebin = ON;
ALTER SESSION SET recyclebin = ON;
ALTER SYSTEM SET recyclebin = OFF;
ALTER SESSION SET recyclebin = OFF;


可以使用下面的任意一個語句來獲得回收站中的物件

SELECT * FROM RECYCLEBIN;
SELECT * FROM USER_RECYCLEBIN;
SELECT * FROM DBA_RECYCLEBIN;

 

試驗一:

1 建立表

SQL> create table t(id int);

表已建立。

 

2 插入資料

SQL> insert into t values(10);

已建立 1 行。

 

3 刪除表

SQL> drop table t;

表已刪除。

 

4 從回收站中查詢被刪除的表的資訊

SQL> select * from user_recyclebin;

OBJECT_NAME                    ORIGINAL_NAM OPERATION TYPE  TS_NAME  CREATETIME          DROPTIME             DROPSCN PARTITION_NAME  CAN CAN  RELATED BASE_OBJECT PURGE_OBJECT SPACE

------------------------------ ------------ --------- ----- -------- ------------------- ------------------- -------- --------------- --- --- -------- ----------- ------------ -----

BIN$A2N1R4Z09T/gUKjAhfUUwg==$0 T            DROP      TABLE USERS    2014-09-19:11:11:13 2014-09-19:11:11:32  1095550                 YES YES    73435       73435        73435     8

 

5 從回收站中恢復表

SQL> flashback table t to before drop;

閃回完成。

 

6 查詢表中的資料,看是否和未刪除前的資料一致

SQL> select * from t;

        ID

----------

        10

 

7 刪除表並把從回收站中清空該表

SQL> drop table t purge;

表已刪除。

 

8 從回收站中查詢是否還有該表的資訊

SQL> select * from user_recyclebin;

未選定行

 

試驗二:

1 建立兩個表

SQL> create table t1(id number);

表已建立。

SQL> commit;

提交完成。

 

SQL> create table t2(id number);

表已建立。

SQL> commit;

表已建立。

 

2 刪除表

SQL> drop table t1;

表已刪除。

 

SQL> drop table t2;

表已刪除。

 

3 從回收站中查詢被刪除表的資訊

SQL> select * from recyclebin;

OBJECT_NAME                    ORIGINAL_NAME   OPERATION TYPE  TS_NAME  CREATETIME          DROPTIME               DROPSCN PARTITION_NAME  CAN CAN  RELATED BASE_OBJECT PURGE_OBJECT  SPACE

------------------------------ --------------- --------- ----- -------- ------------------- ------------------- ---------- --------------- --- --- -------- ----------- ------------ ------

BIN$A2bmhJLBbL7gUKjAhfUscg==$0 T1              DROP      TABLE USERS    2014-09-19:15:18:44 2014-09-19:15:19:18    1103864                 YES YES    73446       73446        73446      0

BIN$A2bmhJLCbL7gUKjAhfUscg==$0 T2              DROP      TABLE USERS    2014-09-19:15:19:10 2014-09-19:15:19:26    1103878                 YES YES    73447       73447        73447      0

 

4 清空回收站

SQL> purge recyclebin;

回收站已清空。

 

5 驗證回收站是否為空

SQL> select * from recyclebin;

未選定行

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29485627/viewspace-1274281/,如需轉載,請註明出處,否則將追究法律責任。

相關文章