oracle中有一个表,让我用pl/sql误删除了,就是drop掉了,怎么样才能恢复阿

解决方案 »

  1.   

    ORACLE是多少版本?
    Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的。这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了。oracle10g大大的增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力,这是通过引入一种新的flashback log实现的。flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log则将数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复区(Flashback recovery area)的新特性,可以将所有恢复相关的文件,比如flashback log,archive log,backup set等,放到这个区域集中管理。闪回恢复区的内容
    所有和恢复相关的文件都可以存放到闪回恢复区
    SQL>select file_type from v$flash_recovery_area_usage;
    FILE_TYPE
    ------------------------
    CONTROLFILE
    ONLINELOG
    ARCHIVELOG
    BACKUPPIECE
    IMAGECOPY
    FLASHBACKLOG
    已选择6行。
    上面的视图中可以看出,包括controfile,online redo logfile,archive logfile,rman backup
    piece,rman image copy, flashback log等,都可以利用闪回恢复区来存放、管理。
      

  2.   

    Flashback Drop 
    Oracle Flashback Drop特性提供一个类似回收站的功能,用来恢复不小心被删除的表。当删除表时,Oracle 10g并不立刻释放被删除的表所占用的空间,而是将这个被删除的表进行自动重命名(为了避免同类对象名称的重复)并放进回收站中。所谓的回收站类似于Windows系统中的回收站,是一个虚拟的容器,用于存放所有被删除的对象,在回收站中被删除的对象将占用创建时的同样的空间。如果这个被删除的表需要进行恢复,就可利用Flashback Drop功能。 
    例:进行一个删除表后恢复的简单测试 
    (1)显示回收站信息 
    SQL>show recyclebin;
     可以看到,回收站中是没有任何结果的,表示没有任何表在回收站中。 
    (2)创建一个表,并删除,再次显示回收站信息 SQL>create table test_drop(name varchar2(10));
    SQL>drop table test_drop;
    SQL>show recyclebin;
    ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
    TEST_DROP BIN$b+XkkO1RS5K10uKo9BfmuA==$0 TABLE 2005-05-07:14:30:47
     (3)对被删除的表进行恢复 
    SQL>flashback table test_drop to before drop;或
    SQL>flashback table "BIN$b+XkkO1RS5K10uKo9BfmuA==$0" to before drop;