回收站概念 从ORACLE 10g开始,引入了一个叫回收站(Recycle Bin)的概念。它的全称叫Tablespace Recycle Bin。回收站实际是一个逻辑容器(逻辑区域),原理有点类似于WINDOW系统的回收站。它以表空间中现有已经分配的空间为基础,而不是从表空间上物理划出一个固定区域用作回收站。这意味着回收站和表空间中的对象共用存储区域、系统没有给回收站预留空间。因此,当表被DROP后,如果可用空间充足,并且没有对回收站进行清理,那么被DROP掉的对象会一直存在回收站中,但是如果可用空间紧张的情况下,数据库会根据先进先出的顺序覆盖Recycle Bin中的对象。所以回收站机制也不是百分百的保险机制。另外从原理上来说它就是一个数据字典表,放置用户Drop掉的数据库对象信息。用户进行Drop操作的对象并没有真正被数据库删除,仍然会占用空间。除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉。数据库有了这样的功能,能够减少很多不必要的麻烦。当用户、开发人员、甚至DBA误操作删除了表,那么我们不必还原整个数据库或表空间,直接使用ORACLE 10g的闪回(FLASHBACK,闪回)功能来还原被删除的表。这样我们就能避免大量的人工误操作。这是一个对DBA相当有用的功能。 回收站功能 回收站这个特性主要的好处就是在误删除一个表时有一个恢复机制,不必通过数据库还原来实现。避免大量的人工误操作。以及数据库还原等复杂的操作。让数据库的管理、维护更加简单、方便。如果是SQL SERVER数据库,就必须还原整个数据库来找到被DROP掉的表。可见回收站功能确实是一个开创性的功能。 管理回收站 开启、关闭回收站 首先你可以通过命令查看数据库是否开启了回收站机制, 如下所示 VALUE= ON表示开启了回收站机制。OFF则表示回收站机制关闭。 - SQL> SHOW PARAMETER RECYCLEBIN;
-
- NAME TYPE VALUE
- -------- ----------- ----------
- recyclebin string ON
-
- 或
-
- SQL> SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='recyclebin';
-
- NAME VALUE
- ----------------- --------------------
- recyclebin on
复制代码可以通过设置初始化参数recyclebin启用或禁用回收站功能。当然也可以用命令关闭回收站 - SQL> ALTER SYSTEM SET RECYCLEBIN=OFF;
-
- System altered.
-
- SQL> ALTER SESSION SET RECYCLEBIN=OFF;
-
- Session altered.
-
- SQL> SHOW PARAMETER RECYCLEBIN;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- recyclebin string OFF
复制代码可以用命令开启回收站 - SQL> ALTER SYSTEM SET RECYCLEBIN=ON;
-
- System altered.
-
- SQL> ALTER SESSION SET RECYCLEBIN =ON;
-
- Session altered.
-
- SQL> SHOW PARAMETER RECYCLEBIN;
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- recyclebin string ON
-
复制代码
|