昨天晚上8点左右不小心删除了几张表的数据(有外码关系),总共也就不到700条。在误删除之前没有对数据库进行备份,也没有修改关于闪回的相关参数。现在用闪回技术进行恢复,总是报01555:快照过旧 的错,其中只有一张表还可以闪回100条记录(该表被删除了310条记录),在做闪回查询时,超过100条就报01555的错。在网上查了很多相关内容,有人说只要出现01555这个错误就表示已经被覆盖了,不能被闪回。我去看了undo表空间,发现只是用了1%的空间,昨天晚上到现在也没有对其他数据做删除操作。难道700条记录就已经被覆盖了?不应该吧。NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1我现在已经将undo_retention 设置为10800了,依然不行。难道我就无法恢复了吗?Oracle的恢复机制就那么脆弱啊,这才还不到一天的时间,700条数据就无法恢复了?如果闪回不行,还能不能用其他方法呢?我查了oracle的不完全恢复技术,发现其前提是在误操作以前要对数据库进行备份,我没有预料到这个误操作,因此没有备份数据库。在这个现状下,是否能将数据恢复回来,请高手指教!!!!

解决方案 »

  1.   


    --看下有没有你的表,若有则可以直接恢复到指定时间前的数据
    select table_name from dba_flashback_archive_tables;
    --没有可使用备份恢复,但你说了没备份,呵呵,那没办法了
      

  2.   

    说是没有dba_flashback_archive_tables 这张表呢
      

  3.   

    对了,我在4月份的时候做过一次热备份,用emp,有用不?就是将User1下的所有对象备份出来了。
    盼解答,急!!!
      

  4.   

    试试oacle时间点恢复,时间算好,不过这种恢复,联机文件和归档文件以前的就没用了SQL> recover database until time '2012-07-14 11:10:00';
    完成介质恢复。
    SQL> alter database open resetlogs;数据库已更改。
      

  5.   

    忘了说,必须在munt状态下恢复
      

  6.   

     
    Aquarius_Uranus:你能不能将所有的步骤语句写一下给我,我怕又误操作。谢谢啊,盼回复
      

  7.   

    archive log list;数据库日志模式   非存档模式
    自动存档    禁用
    最早的联机日志序列  5798
    当前日志序列  5800
    我没有设置过这些,是不是这样的环境就不能用 recover 恢复了??
      

  8.   

    第一:你是delete还是drop或者truncate操作
    第二:你的库是否做过备份和备份之后的归档日志是否还存在
      

  9.   


    有些东西,无论是谁都解决不了的。lz说的清楚点  还有你的exp出来对象是什么情况?
      

  10.   

    闪回是有闪回空间限制。你查询下你的闪回设置吧
     SQL>SHOW parameter db_recovery_file_dest
      

  11.   

    个人认为是恢复不了了。 
    oracle说过, 只有开启归档日志才能够基于时间的恢复。 
    同时 你的undo内容已经覆盖了原先的内容,所以 flashback也帮不了你了。
      

  12.   

    我是删除 Delete操作,将某几张表中的部分数据删除了,不是全表删除。
    真的就无法恢复了吗?我上哪儿去哭去啊几百条记录为什么瞬间就被覆盖了呢,为什么用flashback可以恢复其中一张表的100条记录呢,难道就这一百条记录没有背覆盖?再说我在删除后也没有做什么其他操作啊,是什么数据将其覆盖了呢一百个问号。当然错在自己太不小心了。我只对该用户做过EXP导出,并且是4月份的事了,估计没用了吧。
      

  13.   

    SQL>SHOW parameter db_recovery_file_dest
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest  string    e:\oracle\product\10.2.0/flash_recovery_area
    db_recovery_file_dest_size    big integer 2G
      

  14.   

    原则上可以通过4月份的exp找出一部分数据想从现在的数据库中找出,我看有一定的难度(挖文件,找出来改了不大),甚至是不可能了。做好备份很重要的