使用 Oracle,如何恢复我不小心删除的 table?

With Oracle, how can I restore a table that I dropped accidentally?

实际上,我在 Oracle SQL 中删除了 table 而不是删除了 table。

Drop table emp;

有什么办法找回吗?

实际上有一种方法可以找回丢失的 table。请找到以下步骤。当您删除 table 时,数据库不会立即删除与 table 关联的 space。相反,table 被重命名,并与任何关联的对象一起放入数据库的回收站中。闪回删除操作从回收站中恢复 table。

另外请检查您是否也在使用oracle 10g及以上版本。

SQL> drop table vimal;

 Table dropped.

SQL> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
VIMAL            BIN$c9/MeUSERvCmafRSweHlWQ==[=10=] TABLE        2017-01-   06:16:57:29

SQL> flashback table "BIN$c9/MeUSERvCmafRSweHlWQ==[=10=]" to before drop;

Flashback complete.

SQL> select * from vimal;

NAME               ID
---------- ----------
f                   1

我请求您阅读 oracle 文档以获得进一步的说明。请仔细阅读。

参考可以取自:https://docs.oracle.com/cd/B19306_01/backup.102/b14192/flashptr004.htm

在 Oracle 中恢复删除的 table 很容易,前提是 table 不是使用 PURGE 选项删除的。如果 table 被丢弃并且 table 占用的 space 被释放并且 table 没有被移入回收站。但是如果 table 在没有 PURGE 选项的情况下被删除,Oracle 有这个非常巧妙的功能——回收站,类似于 Windows 中的回收站。 Oracle中有两个回收站视图:USER_RECYCLEBIN和DBA_RECYCLEBIN,同义词RECYCLEBIN指向你的USER_RECYCLEBIN。

http://elena-sqldba.blogspot.in/2013/01/how-to-retrieve-dropped-table-in-oracle.html

http://www.dba-oracle.com/t_recover_dropped_table.htm

使用这个:

select object_name, original_name, type from recyclebin;

尽管删除的 table 已重命名,但它保留了其数据,您可以使用 flashback.

轻松地 "undrop" table
flashback table yourTableName to before drop;