<救命>oracle做了update的误操作,怎么恢复之前数据
今天中午做了一个update的误操作,数据全错了,怎么恢复到昨天晚上的。各位大哥大姐帮帮我啊,救命啊!!!

解决方案 »

  1.   

    如果设置了闪回机制且retention is enough那么就用闪回查询并恢复。
    否者只能做一次不完全恢复。
      

  2.   

    用闪回 报错
     snashot too old: rollback segment number 10 with name 'SYSSMU10$' too small貌似什么空间太小 怎么增大回滚段大小呢?
      

  3.   

    snashot too old: rollback segment number 10 with name 'SYSSMU10$' too small
    这个快照太旧是因为已近被覆盖了,应该是无法用闪回的,看数据库是否运行在归档模式下,考虑利用归档日志恢复,仅供参考
      

  4.   

    如果是archive log下可以恢复。
      

  5.   

    你这样做看看:
    第一步:在v$sqlarea 这视图里面找到你操作那条SQL的时间;
    select r.FIRST_LOAD_TIME,r.* from v$sqlarea r order by r.FIRST_LOAD_TIME desc ;
    第二步:
    create table t_table_recove --新表
    as
    select * from t_table--你操作的那张表 
    as of timestamp to_timestamp('2010-06-02 11:36:53','yyyy-mm-dd hh24:mi:ss');操作成功后你看看新表里面是不是你之前的数据.如果是的话再把新表数据弄到原表就好了.
      

  6.   

    你闪回查询到昨天晚上报snapshot too old说明已经被覆盖若是归档模式,只能通过备份和归档日志回复
      

  7.   

    默认情况下,闪回操作是临时存储器。如果在归档日志模式下,可以通过时间点进行闪回。ps:楼主没有备份数据的习惯呢,做DBA很危险。