2017-06-03 158 views
0

我是新来的此Oracle数据库。今天我跑了DROP TABLE table1;并试图将其反转。但脚本输出返回此:已删除的表已被永久删除

闪回表table1 TO BEFORE DROP
错误报告 -
ORA-38305:对象未在回收站
38305. 00000 - “回收站对象不是”
*原因:尝试闪回删除不在RecycleBin中的对象。
*操作:只有RecycleBin中的对象可以被闪回丢弃。

我认为回收站被禁用了。于是我打开另一个连接并输入这个命令:

ALTER SESSION SET recyclebin = ON; 

并重复该过程,结果仍然相同。当我跑SELECT * FROM RECYCLEBIN;

我在回收站里没有任何东西我无意间搞砸了什么?

+0

你重复了哪个过程? – miracle173

+0

您是否在开启回收站后再次创建'table1'? – APC

回答

0

你没有搞错命令ALTER SESSION SET recyclebin = ON;的任何内容,但是调用该命令的时间已晚。我认为你的问题是由于你的默认表空间为SYSTEM

0

Oracle Flashback Drop颠倒了DROP TABLE操作的影响。它可以用来在意外掉落桌子后恢复。闪回丢失比其他可用于此情况的恢复机制(如时间点恢复)快得多,并且不会导致最近事务或宕机时间的任何损失。

表及其依赖对象将保留在回收站中,直到它们从回收站中清除。你可以明确地清除从回收站桌子或其他物体的命令:

DROP TABLE some_table PURGE; 

删除的对象保存在回收站中,直到时间没有新盘可在表空间分配给对象所属而不增加表空间。这种情况被称为空间压力。由于为特定表空间定义的用户配额,也可能会产生空间压力。表空间可能有空闲空间,但用户可能已经耗尽了他或她的配额。

当空间压力升高时,数据库选择要从回收站自动清除的对象。选择对象以先进先出为基础进行清除,即首先删除的对象是首先选择进行清除的对象。

没有为回收站预先分配的固定数量的空间。因此,在丢弃的对象将保留在回收站中的最短时间内没有保证。

要仅查看回收站中的对象,请使用USER_RECYCLEBINDBA_RECYCLEBIN视图。