使用Oracle,如何恢复意外丢弃的表?

时间:2017-01-06 11:31:27

标签: sql oracle ddl

我实际上已删除而不是删除Oracle SQL中的表。

Drop table emp;

有没有办法找回来?

3 个答案:

答案 0 :(得分:7)

实际上存在一种检索已删除表的方法。请找到以下步骤。删除表时,数据库不会立即删除与表关联的空间。而是重命名该表,并将其与任何关联的对象一起放在数据库的回收站中。闪回删除操作从回收站恢复表。

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

SQL> drop table vimal;

 Table dropped.

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

SQL> flashback table "BIN$c9/MeUSERvCmafRSweHlWQ==$0" 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

答案 1 :(得分:1)

在Oracle中,只要没有使用PURGE选项删除表,就可以轻松恢复丢弃的表。如果表被删除并且表占用的空间被释放并且表没有被移动到回收站中。但是如果在没有PURGE选项的情况下删除表,Oracle就会有这个非常简洁的功能 - 回收站,类似于Windows中的回收站。 Oracle中有两个recyle bin视图: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

答案 2 :(得分:0)

使用此:

select object_name, original_name, type from recyclebin;

虽然已删除的表已重命名,但它会保留其数据,您可以使用flashback轻松地“取消”表格。“/ p>

flashback table yourTableName to before drop;