? ? ? 在Oracle中,有時(shí)候,我們會(huì)無意中刪除真實(shí)數(shù)據(jù),怎么處理呢?
oracle從10g開始提供了flashback 技術(shù),提供誤刪除數(shù)據(jù)恢復(fù)的方法;注意,恢復(fù)是有時(shí)間限制的。
?
SQL> show parameter undo_retention
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_retention integer 900
默認(rèn)是900秒--15分鐘;
當(dāng)然,你可以延長恢復(fù)時(shí)間,但這樣會(huì)造成非常大的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.通過時(shí)間的方法來恢復(fù)
? ??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');
? 已創(chuàng)建 1 行。
?
SQL> COMMIT;
?
2.通過scn來恢復(fù)
? ? ?先查找歷史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的變化
?
從列表中找到刪除該數(shù)據(jù)的scn
SQL> ?insert into emp select * from emp as of scn 73567478;
?
SQL> COMMIT;
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
