Flashback query与误删除数据恢复

系统 1783 0

      在Oracle中,有时候,我们会无意中删除真实数据,怎么处理呢?

oracle从10g开始提供了flashback 技术,提供误删除数据恢复的方法;注意,恢复是有时间限制的。

 

SQL> show parameter undo_retention

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_retention integer 900


默认是900秒--15分钟;

当然,你可以延长恢复时间,但这样会造成非常大的undo表空间等不确定因素。

 

下面说说具体操作:

SQL> desc emp;
Name Null? Type
----------------------------------------- --
EMPNO      NUMBER
SAL          NUMBER

 

SQL> insert into emp values(20,30000);

1 row created.

SQL> commit;

Commit complete.

 

SQL> delete from emp;

1 row deleted.

SQL> commit
2 ;

Commit complete.

SQL> select count(*) from emp;

COUNT(*)
----------
0

 

1.通过时间的方法来恢复

    SQL> select * from emp as of timestamp  to_timestamp(sysdate,'yyyy-mm-dd hh24:mi:ss'); 

 

   SQL>Insert into emp select * from emp as of timestamp to_timestamp('2013-05-26 12:00:16','YYYY-MM-DD hh24:mi:ss');

  已创建 1 行。

 

SQL> COMMIT;

 

2.通过scn来恢复

     先查找历史scn:

select
versions_xid,versions_startscn,versions_endscn,
empno,sal
from emp
versions between timestamp (systimestamp - interval '15' minute)
and maxvalue
where empno=20     ------最近15分钟该表scn的变化

 

从列表中找到删除该数据的scn

SQL>  insert into emp select * from emp as of scn 73567478;

 

SQL> COMMIT;

 

Flashback query与误删除数据恢复


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论