Oracle 誤刪除資料的恢復方法

2021-09-23 06:04:30 字數 1956 閱讀 9867

在工作中,如果誤操作刪除資料,可能會導致無可挽回的損失(本文以 oracle 資料庫為例,介紹關於表中資料刪除的解決辦法)。

刪除表資料有三種方法:delete,drop,truncate

一:delete 誤刪除的解決方法

原理:利用 oracle 提供的閃回方法,如果在刪除資料後還沒做大量的操作(只要保證被刪除資料的塊沒被覆寫),就可以利用閃回方式直接找回刪除的資料。
詳細步驟(方法一):

一:確定刪除時間點(在刪除資料之前的時間就行,不過最好是刪除資料的時間點)。

二:找到刪除的資料

select 星號 from 表名 as of timestamp to_timestamp(『刪除時間點』,『yyyy-mm-dd hh24:mi:ss』)

三:把刪除的資料重新插入原表,注意:需要保證主鍵不可重複

insert into 表名 (select * from 表名 as of timestamp to_timestamp(『刪除時間點』,『yyyy-mm-dd hh24:mi:ss』))

詳細步驟(方法二):

如果表結構沒有發生改變,可以直接使用閃回整個表的方式來恢復資料(表閃回要求使用者必須要有 flash any table 許可權)。

一:開啟行移動功能

alter table 表名 enable row movement。

二:恢復表資料

flashback table 表名 to timestamp to_timestamp(刪除時間點』,『yyyy-mm-dd hh24:mi:ss』)

三:關閉行移動功能 ( 千萬別忘記 )

alter table 表名 disable row movement

二:drop 誤刪除的解決方法
原理:由於 oracle 在刪除表時,沒有直接清空表所佔的塊,oracle 把這些已刪除的表的資訊放到了乙個虛擬容器 「 **站 」 中,而只是對該錶的資料塊做了可以被覆寫的標誌,所以在塊未被重新使用前還可以恢復。
詳細步驟:

查詢這個 「**站」 或者查詢 user_tables 檢視來查詢已被刪除的表:

(1):select table_name,dropped from user_tables。

(2):select object_name,original_name,type,droptime from user_recyclebin。

在以上資訊中,表名都是被重新命名過的,字段 table_name 或者 object_name 就是刪除後在**站中的存放表名。

一:記得表名:flashback table 原表名 to before drop。

二:不記得表名,也可以直接使用**站的表名進行恢復,然後進行重新命名:

flashback table 「**站中的表名」 to before drop rename to 新錶名。

oracle的閃回功能除了以上基本功能外,還可以閃回整個資料庫:

使用資料庫閃回功能,可以使資料庫回到過去某一時間點, 語法如下:

sql > alter database flashback on

sql > flashback database to scn scnno;

sql > flashback database to timestamp to_timestamp(『時間點』,『yyyy-mm-dd hh24:mi:ss』);

總結
oracle 提供以上機制保證了安全操作,但也帶來了空間占用的問題,由於以上機制的執行,使用 drop 表或者 delete 資料後,空間不會自動**,對於一些確定不使用的,刪除時需要同時**空間:

(1):採用 truncate 方式進行刪除(不能進行資料恢復了)。

(2):在 drop 時加上 purge 選項,即:drop table 表名 purge

oracle 誤刪除資料恢復方法

方法一 insert into t cc object select from t cc object as of timestamp to date 2013 11 1 15 00 00 yyyy mm dd hh24 mi ss 這句sql的意思是找到t cc object 表裡2013 11 ...

ORACLE誤刪除資料的恢復方法

有很多原因導致了資料記錄的誤刪,怎樣恢復誤刪的記錄呢?先來看看這個概念 scn 系統改變號 它的英文全拼為 system change number 它是資料庫中非常重要的乙個資料結構。scn提供了oracle的內部時鐘機制,可被看作邏輯時鐘,這對於恢復操作是至關重要的 注釋 oracle 僅根據 ...

oracle誤刪除資料的恢復方法

學習資料庫時,我們只是以學習的態度,考慮如何使用資料庫命令語句,並未想過工作中,如果誤操作一下,都可能導致無可挽回的損失。當我在工作中真正遇到這些問題時,我開始尋找答案。今天主要以oracle資料庫為例,介紹關於表中資料刪除的解決辦法。不考慮全庫備份和利用歸檔日誌 刪除表中資料有三種方法 delet...