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