【问题标题】:With Oracle, how can I restore a table that I dropped accidentally?使用 Oracle,如何恢复意外删除的表?
【发布时间】:2017-01-06 11:31:27
【问题描述】:

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

Drop table emp;

有什么办法找回来吗?

【问题讨论】:

  • 你有备份吗?
  • 如果你很幸运并且它还在回收站中,你可以在连接树上的 SQL Developer 中看到它们并右键单击以恢复它们...否则,你将不得不请您的 DBA 从备份中恢复它
  • 通过sqlplus完成。

标签: sql oracle ddl


【解决方案1】:

实际上有一种方法可以取回已删除的表。请找到以下步骤。删除表时,数据库不会立即删除与表关联的空间。相反,该表被重命名,并与任何关联的对象一起被放置在数据库的回收站中。 Flashback Drop 操作从回收站中恢复表。

另外请检查您是否也在使用 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

【解决方案2】:

使用这个:

select object_name, original_name, type from recyclebin;

虽然删除的表被重命名,但它保留了它的数据,您可以使用flashback轻松“取消删除”该表。

flashback table yourTableName to before drop;

【讨论】:

    【解决方案3】:

    在 Oracle 中恢复删除的表很容易,前提是该表没有使用 PURGE 选项删除。如果 table 被删除并且 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

    【讨论】:

    • 它是否有 Oracle 版本(根据操作的问题)?
    • 赞一个,因为您给出了正确的参考并更改了答案。
    猜你喜欢
    • 2019-09-12
    • 2011-10-28
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多