代码之家  ›  专栏  ›  技术社区  ›  Prema kumari

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

  •  8
  • Prema kumari  · 技术社区  · 7 年前

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

    Drop table emp;
    

    有没有办法找回它?

    3 回复  |  直到 7 年前
        1
  •  9
  •   Vimal Bhaskar    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

        2
  •  2
  •   StackUseR    7 年前

    使用此选项:

    select object_name, original_name, type from recyclebin;
    

    虽然已删除的表已重命名,但它保留其数据,您可以使用 flashback .

    flashback table yourTableName to before drop;
    
        3
  •  1
  •   ChrisF PerfectlyRock    7 年前

    在Oracle中恢复删除的表很容易,前提是该表不是使用清除选项删除的。如果表被丢弃,表占用的空间被释放,并且表不会移动到回收站中。但如果在没有清除选项的情况下删除表,Oracle有一个非常简洁的功能-回收站,类似于Windows中的回收站。Oracle中有两个recyle bin视图:USER_RECYCLEBIN和DBA_ReccycleBin,同义词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