Email: service@parnassusdata.com 7 x 24 online support!

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

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

在误删除或误更新数据的情况下,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...