oracle Recyclebin

每个用户都有自己的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;



回收站已清空。

 

你可能感兴趣的:(oracle)