Oracle基础教程:恢复当天删除的数据


我误删了数据库,老大很不爽,命我再30分钟之内恢复,情急之下,写了一个存储过程,适用于恢复当天删除了表而没有记住表的名称。

只需要传入当天的时间,调用一下就ok了。

  1. 存储过程如下:   
  2.   create or replace procedure proc_databack (deletetime in varchar2)   
  3.   as  
  4.   --把当天已经删除的信息查询出来放入游标   
  5.   cursor mycursor is(select  object_name   from recyclebin  where droptime like deletetime);   
  6.   temp_emp    varchar2(2000);   
  7.   vflash_back   varchar2(2000);   
  8.   begin  
  9.     open mycursor;   
  10.     loop   
  11.     fetch mycursor  into temp_emp;   
  12.     exit when mycursor%notfound;   
  13.    --构建恢复语句   
  14.     vflash_back:='flashback table "'||temp_emp||'"  to  before drop';   
  15.      --循环恢复被删除的表,直到全部恢复完成   
  16.     execute immediate vflash_back;   
  17.     end loop;   
  18.     close mycursor;   
  19. end;   
  20.   
  21. --调用存储过程   
  22. --比如今天是2011-12-02,那么写法如下:   
  23. /*   
  24. declare  
  25. time varchar2(20);   
  26. begin  
  27. time:='2011-12-02%';   
  28. proc_databack (time);   
  29. end;   
  30. */  

相关内容