ORACLE資料恢複方法(提交事務也可以)

來源:互聯網
上載者:User

標籤:ber   ane   儲存   而且   讀取   快照   刪掉   是的   啟動   

今天在操作資料庫的時候,探索資料操作錯誤,想要恢複,但是沒有用事務,按理說,設定成不預設提交事務,此時所做的各種操作都沒有反應到資料庫中。這時,你可以rollback事務,撤銷所有未提交的修改。不過,一旦commit了的話,就真沒辦法撤銷了。好在oracle還有時間戳記方法。

第一種方法:

1.開啟Flash儲存的許可權
ALTER TABLE tablename ENABLE row movement ;
2.把表還原到指定時間點
flashback table tablename to timestamp to_timestamp(‘‘2011-02-28 10:40:00‘‘,‘‘yyyy-mm-dd hh24:mi:ss‘‘);
後面的參數為要還原的時間點

 

第二種:利用ORacle的快照進行尋找某個時間點的資料
select * from tablename AS OF TIMESTAMP  (SYSTIMESTAMP - INTERVAL ‘100‘ MINUTE)

or

select * from tablename as of timestamp to_timestamp(2011-05-21 11:40:00‘,‘YYYY-MM-DD HH24:MI:SS‘);

這樣可以查詢到指定的時間段的資料,再把查詢到的資料複製到原來的表中。

例:

如果我們在前5分鐘誤刪除了表emp中的資料,我們可以進行如下操作:

找回未經處理資料

Select * from emp as of timestamp sysdate  -  6/1440

刪除原來的表   刪掉後建立一個備份表

Create table emp as (select * from emp as of timestamp sysdate - 6/1440);

可以做差,找到刪除的記錄=6分鐘前的未經處理資料—現在表中的記錄 再插入原來的表中提交

Insert into emp 

Select * From

(

select * From emp as of timestamp sysdate - 6/1440 Minus Select * from emp)

 

--timestamp(ags) 方法

--interval(時間間隔)類型用來儲存兩個時間戳記之間的時間間隔

--當要回複被刪除的資料的時候

 

--查詢500分鐘之前的資料

select * from emp as of timestamp(systimestamp - interval ‘500‘ minute)

--查詢600秒之前的資料

select * from emp as of timestamp(systimestamp - interval ‘600‘ second)

--查詢5小時之前的資料

select * from emp as of timestamp(systimestamp - interval ‘5‘ hour)

--查詢一天之前的資料

select * from emp as of timestamp(systimestamp - interval ‘1‘ day)

--查詢1分鐘前的資料 (1天=1440分鐘) date-number=date

select * from emp as of timestamp sysdate - 1/1440

--查詢5小時前的資料

select * from emp as of timestamp sysdate - 5/24

--查詢 5小時內資料=內前刪除的5小時前表中的資料-現在表中的資料

--minus減去

select * from

(select * from emp as of timestamp sysdate -5000/1440 minus select * from emp)

從9i開始,oracle提供了閃回(flashback)功能。使用flashback table語句從撤銷段中(undo segmeng)讀取改表的過去映像,同時利用oracle9i中引入的回閃查詢功能重建表行。Undo_retention給出了回閃支援的最小時間。也就是說flashback最少可以支援undo_retention給出的時間,如果系統比較閑,則可以回閃更長的時間。如果系統處於忙時,有可能重用還沒有達到undo_retention時間吸納是的資料空間。注意:使用閃回的一個前提是表不能進行ddl操作,不但不能對ddl操作進行回閃,而且,無法閃回到ddl操作以前的資料了。

注意:不啟動行移動功能,不能閃回表

Alter table emp enable row movement;

這個命令的作用就是允許ORACLE修改分配給行的rowid。在ORACLE中,插入一行時就會為它分配一個rowid,而且這一行永遠擁有這個rowid。閃回表處理時會對EMP表完成DELETE 操作,並且重新插入行,這樣就會為這些行分配一個新的rowid。要支援閃回功能就必須允許ORACLE執行這個操作。

 

原文:http://blog.csdn.net/jiajane/article/details/49280277

ORACLE資料恢複方法(提交事務也可以)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.