每个用户都有自己的Recycle Bin。
删除的对象不会永久存储在Recycle Bin中,Oracle会按照一定的规则自动清除里面的内容,如没有足够的空间。
执行show recyclebin时只列出基表,被删除的表关联对象不会显示。
1、回收站基本信息查询:
SQL> desc 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 SQL> show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- DEPARTMENT2 BIN$UQLtz4UuTiaVLzvCeKAcCA==$0 TABLE 2014-12-10:17:25:14 DEPT3 BIN$146E+wFfS6KWzzOKLcLIOA==$0 TABLE 2014-12-10:17:24:38 E2 BIN$fBBG2kejQ2Oug6a2XXj4hQ==$0 TABLE 2014-12-10:17:24:19 EMP2 BIN$xSzIQ4jVThe3dAWcIdusgA==$0 TABLE 2014-12-10:17:24:23 EMP2 BIN$bOKmVS+vRi2zPWaLvgJQwg==$0 TABLE 2014-12-10:00:16:43 EMP2 BIN$kbE5yqUMTdqHIojB5bNnyA==$0 TABLE 2014-11-30:11:53:02 …… 回收站中可能存在多个original name相同的对象,flashback时,先闪回最近时间删除的那个。 SQL> select * from recyclebin; --查询详细的recycle bin中的内容 SQL> select * from "BIN$UQLtz4UuTiaVLzvCeKAcCA==$0"; --查询recycle bin中对象的内容
2、Recycle bin的禁用或启用
SQL> show parameter recyclebin; --默认情况下,该参数为on NAME TYPE VALUE ------------------------------------ ----------- ------------------- recyclebin string on SQL> alter session set recyclebin=off; --针对当前会话关闭回收站 SQL> alter system set recyclebin=off; --对整个实例关闭回收站
3、Recycle bin对象清除
强制删除对象,不放入recyclebin: SQL> drop table emp purge; --使用purge参数来强制删除对象 清除Recycle Bin中的现有对象: SQL> show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- DEPARTMENT2 BIN$UQLtz4UuTiaVLzvCeKAcCA==$0 TABLE 2014-12-10:17:25:14 DEPT3 BIN$146E+wFfS6KWzzOKLcLIOA==$0 TABLE 2014-12-10:17:24:38 E2 BIN$fBBG2kejQ2Oug6a2XXj4hQ==$0 TABLE 2014-12-10:17:24:19 EMP2 BIN$xSzIQ4jVThe3dAWcIdusgA==$0 TABLE 2014-12-10:17:24:23 EMP2 BIN$bOKmVS+vRi2zPWaLvgJQwg==$0 TABLE 2014-12-10:00:16:43 EMP2 BIN$kbE5yqUMTdqHIojB5bNnyA==$0 TABLE 2014-11-30:11:53:02 …… SQL> purge table EMP2; --当有多个对象时,删除最先进入回收站的对象(先进先出原则) 表已清除。 SQL> show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- DEPARTMENT2 BIN$UQLtz4UuTiaVLzvCeKAcCA==$0 TABLE 2014-12-10:17:25:14 DEPT3 BIN$146E+wFfS6KWzzOKLcLIOA==$0 TABLE 2014-12-10:17:24:38 E2 BIN$fBBG2kejQ2Oug6a2XXj4hQ==$0 TABLE 2014-12-10:17:24:19 EMP2 BIN$xSzIQ4jVThe3dAWcIdusgA==$0 TABLE 2014-12-10:17:24:23 EMP2 BIN$bOKmVS+vRi2zPWaLvgJQwg==$0 TABLE 2014-12-10:00:16:43 …… 或者是: SQL> purge table "BIN$xSzIQ4jVThe3dAWcIdusgA==$0"; 表已清除。 ------------- 用purge 指定表空间进行清空: SQL> purge tablespace tablespace_name; 清空recyclebin所有内容: SQL> purge recyclebin; 回收站已清空。