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

Pre*_*ari 5 sql oracle ddl

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

Drop table emp;
Run Code Online (Sandbox Code Playgroud)

有没有办法找回来?

Vim*_*kar 8

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

另外请检查您是否使用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
Run Code Online (Sandbox Code Playgroud)

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

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


Sta*_*seR 5

用这个:

select object_name, original_name, type from recyclebin;
Run Code Online (Sandbox Code Playgroud)

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

flashback table yourTableName to before drop;
Run Code Online (Sandbox Code Playgroud)