Oracle的回收站也要定期維護,否則隨着時間的增長,有可能會佔用你很大的磁盤空間。管理回收站主要包括:啓用和禁用回收站、查看回收站中的信息和清除回收站中的對象。
1、啓用和禁用回收站
oracle系統默認啓用回收站。如果要手工控制回收站是否啓用,可以通過修改RECYCLEBIN參數。首先通過SHOW PARAMETER RECYCLEBIN命令檢查(注意也必須是管理員用戶纔可以)當前回收站是否啓用。
SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
Value值是on說名回收站是啓用狀態;
關閉回收站:
SQL> alter session set recyclebin=off;
會話已更改。
2、查看回收站中的信息
兩種:1、dba通過數據字典dba_recyclebin來查看2、普通用戶通過show recyclebin來查看
SQL> desc user_recyclebin;
名稱 是否爲空? 類型
----------------------------------------- -------- ----------------------------
OBJECT_NAME NOT NULL VARCHAR2(30)
ORIGINAL_NAME VARCHAR2(32)
OPERATION VARCHAR2(9)
TYPE VARCHAR2(25)
TS_NAME VARCHAR2(30)
CREATETIME VARCHAR2(19)
DROPTIME VARCHAR2(19)
DROPSCN NUMBER
PARTITION_NAME VARCHAR2(32)
CAN_UNDROP VARCHAR2(3)
CAN_PURGE VARCHAR2(3)
RELATED NOT NULL NUMBER
BASE_OBJECT NOT NULL NUMBER
PURGE_OBJECT NOT NULL NUMBER
SPACE NUMBER
3、恢復相依對象
SQL> create table tb_index_test(id number,content varchar2(30));
表已創建。
SQL> create index index_id on tb_index_test(id);
索引已創建。
SQL> drop table tb_index_test;
表已刪除。
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TB_INDEX_TEST BIN$gf1yHCeHQYaV7metr4X4kg==$0 TABLE 2013-01-27:09:59:14
可見沒有與索引相關的信息,下面我們用一條sql來查看刪除的表和索引信息,而上面的語句只能查詢到表的信息。
SQL> select original_name,object_name,type,droptime from user_recyclebin;
ORIGINAL_NAME OBJECT_NAME
-------------------------------- ------------------------------
TYPE DROPTIME
------------------------- -------------------
TB_INDEX_TEST BIN$gf1yHCeHQYaV7metr4X4kg==$0
TABLE 2013-01-27:09:59:14
INDEX_ID BIN$MSHanVPZRluFmcNkmb/FYw==$0
INDEX 2013-01-27:09:59:14