Oracle 資料恢復

2021-06-28 11:51:49 字數 3006 閱讀 5876

一、恢復drop刪除的表

flashback table tb_e_wear to before drop

二、恢復delete刪除的資料

1.flashback query

基於回滾段的閃回查詢(flashback query)功能

--閃回到某個時間點

select * from t_co_area as of timestamp to_timestamp (''2015-01-08 16:18:57'', ''yyyy-mm-dd hh24:mi:ss'') where ...

2.flashback table

flashback table不等於flashback query,flashbackquery僅僅是查詢以前的乙個快照點而已,並不改變當前表的狀態,而flashback table將改變當前表及附屬物件一起回到以前的時間點

注意:如果需要閃回乙個表,需要以下條件:

·需要有flashback any table的系統許可權或者是該錶的flashback物件許可權;

·需要有該錶的select,insert,delete,alter許可權;

必須保證該錶row movement。

比如:恢復線別資訊表中2015-01-06

17:00:00前刪除的資料

alter

table

t_co_area  enable row movement;  

flashback table

t_co_area 

totimestamp

to_timestamp(

'2015-01-06 17:00:00'

,'yyyy-mm-dd hh24:mi:ss'

);//恢復到特定時間

flashback 

table

t_co_area 

totimestamp

systimestamp - interval '30' minute;//恢復到30分鐘前

3.flashback drop

oracle flashback drop特性提供乙個類似**站的功能,用來恢復不小心被刪除的表。當刪除表時,oracle 10g並不立刻釋放被刪除的表所占用的空間,而是將這個被刪除的表進行自動重新命名(為了避免同類物件名稱的重複)並放進**站中。所謂的**站類似於windows系統中

的**站,是乙個虛擬的容器,用於存放所有被刪除的物件,在**站中被刪除的物件將占用建立時的同樣的空間。如果這個被刪除的表需要

進行恢復,就可利用flashback drop功能。

例:進行乙個刪除表後恢復的簡單測試。

(1)顯示**站資訊

sql>show recyclebin;

可以看到,**站中是沒有任何結果的,表示沒有任何表在**站中。

(2)建立乙個表,並刪除,再次顯示**站資訊

sql>create table test_drop(name varchar2(10));

sql>drop table test_drop;

sql>drop table test_drop purge;--刪除乙個表且不放到**站中不能進行恢復,在drop語句中可以利用purge選項。

sql>show recyclebin;

(3)對被刪除的表進行恢復

sql>flashback table test_drop to before drop;

4.flashback version query

例如:在test表中,時間1插入一條記錄,時間2刪除了這條記錄,對於時間3執行select * from test當然查詢不到這條記錄,只能看到該錶最後的提交記錄。這時如果利用flash table或者是flash query,只能看到過去的某一時間點的乙個快照,而利flashback version query

,能夠把時間1、時間2的操作給記錄下來,並詳細的查詢出對表進行的任何操作。

select versions_starttime,

versions_endtime,

versions_xid,

versions_operation

from t_co_area versions between timestamp minvalue and maxvalue

在上述查詢中,列 versions_starttime、versions_endtime、versions_xid、versions_operation是偽列,還有一些偽列,如versions_startscn和versions_endscn顯示了該時刻的系統更改號。列versions_xid顯示了更改該行的事務識別符號

5.flashback transaction query

oracle flashback transaction query特性確保檢查資料庫的任何改變在乙個事務級別,可以利用此功能進行診斷問題、效能分析和審計事務。它其實是flashback version query查詢的乙個擴充,flashback version query說明了可以審計一段時間內錶的所有改變,但是也僅僅

是能發現問題,對於錯誤的事務,沒有好的處理辦法。而flashback transaction query提供了從flashback_transaction_query檢視中獲得事

務的歷史以及undo_sql(回滾事務對應的sql語句),也就是說審計乙個事務到底做了什麼,甚至可以回滾乙個已經提交的事務。

sql>select * from flashback_transaction_query
--查詢

create table 表名 as select語句--把查詢的結果根據結果集中的表結構和資料形成一張新錶。

如果只複製表結構,只需使查詢的條件不成立(比如where 1=2),就不會查詢從出任何資料,從而複製乙個表結構。

Oracle資料恢復

恢復delete掉的資料 恢復5分鐘之前的資料 insert into flow task 20130115 select from flow task 20130115 as of timestamp sysdate 5 1440 恢復時間點的資料。insert into flow task 20...

oracle資料恢復

分為兩種方法 scn和時間戳兩種方法恢復。一 通過scn恢復刪除且已提交的資料 1 獲得當前資料庫的scn號 select current scn from v database 切換到sys使用者或system使用者查詢 查詢到的scn號為 1499223 2 查詢當前scn號之前的scn sel...

Oracle資料恢復

昨天工作的時候執行了一套更改表資料的sql語句,但是忘了加限制條件,結果把一張表的一列值全都改了。今天在恢復的過程 先把測試庫和版本庫的這張表的資料匯出來,然後用版本庫的資料去覆蓋測試庫的資料。在匯出表的過程遇到報錯2016 4 19 星期二 16 00 00 is not a valid date...