IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    oracle闪回查询因ORA-01555快照过久错误而失败

    PDSERVICE发表于 2020-03-12 10:52:44
    love 0

    在误删除或误更新数据的情况下,oracle 10g以后可以使用flashback query闪回查询来恢复数据,但如果对应的undo数据被部分覆盖了,则闪回查询会因为ORA-01555错误而失败。

     

    针对这种场景 诗檀软件提供了基于闪回的更好的恢复机制,该机制可以帮助用户基于undo和磁盘上的残留信息尽可能恢复数据。

     

    SQL> l
      1  declare
      2  cursor c is select * from testt2 as of scn 5385449;
      3  begin
      4  for i in c loop
      5  null;
      6  end loop;
      7* end;
    SQL> /
    declare
    *
    ERROR at line 1:
    ORA-01555: snapshot too old: rollback segment number  with name "" too small
    ORA-06512: at line 4

     

     

    SQL> set serveroutput on;

    SQL> exec better_flashback_table_save('TEST2','TESTT2',2843925,'MYTVSAVE3');
    table TEST2.TESTT2 @ scn 2843925 find   5568 rows , copied to  TEST2.MYTVSAVE3
     
    PL/SQL procedure successfully completed.
     
     
    以上我们通过 better_flashback_table_save将原表中被删除的数据转移到了新表中,虽然因为undo数据的不足,这样可能丢失部分数据,但是仍可以恢复部分数据。
     
    具体可以恢复多少数据,我们可以通过better_flashback_table_save  存储过程获得。
     
    此外我们还可以利用prm dul的undelete功能恢复删除的数据 , 可以参考该视频 https://zcdn.parnassusdata.com/prm%20dul%20recover%20oracle%20deleted%20...
     


沪ICP备19023445号-2号
友情链接