Oracle庫恢復(fù)刪除數(shù)據(jù)的方法小結(jié)
誤刪 Oracle 庫中的數(shù)據(jù),在不考慮全庫備份和利用歸檔日志情況,如何恢復(fù)數(shù)據(jù)呢?
下面介紹幾種方法恢復(fù)數(shù)據(jù):
1、利用 Oracle 提供的閃回方法進(jìn)行數(shù)據(jù)恢復(fù),適用于 delete 刪除方式
首先獲取刪除數(shù)據(jù)的時間點(diǎn):
select * from v$sql where sql_text like '%table_name%';
根據(jù)結(jié)果中的 sql_text 內(nèi)容,找到 delete 執(zhí)行語句對應(yīng)的刪除時間點(diǎn),執(zhí)行下面語句查詢出刪除的數(shù)據(jù)。
select * from table_name as of timestamp to_timestamp(‘刪除時間點(diǎn)',‘yyyy-mm-dd hh24:mi:ss') where (刪除時的條件);
檢查數(shù)據(jù)無誤后,執(zhí)行下面操作,將數(shù)據(jù)插回原表中。注意主鍵不重復(fù)
insert into table_name select * from from table_name as of timestamp to_timestamp(‘刪除時間點(diǎn)',‘yyyy-mm-dd hh24:mi:ss') where (刪除時的條件);
2、利用 Oracle 虛擬回收站功能
原理是因?yàn)?Oracle 數(shù)據(jù)庫在刪除表時會將刪除信息存放于某虛擬回收站中而非直接清空,在此種狀態(tài)下數(shù)據(jù)庫標(biāo)記該表的數(shù)據(jù)庫為可以復(fù)寫,所以在該塊未被重新使用前依然可以恢復(fù)數(shù)據(jù)。該方法多用于 drop 刪除。
首先查詢 user_table 視圖,找到被刪除的表:
select table_name,dropped from user_tables; select object_name,original_name,type,droptime from user_recyclebin;
注意此時的,object_name 和 original_name 就是回收站存放的表名和原來刪除的表名,如果表名沒有被重新命名,可以通過下面語句進(jìn)行恢復(fù):
flashback table original_name to before drop;
3、用 Oracle 數(shù)據(jù)庫的閃回功能可以將數(shù)據(jù)庫恢復(fù)到過去某一狀態(tài)
注意,此時是整庫恢復(fù),具體語法如下:
SQL>alter database flashback on SQL>flashback database to scn SCNNO; SQL>flashback database to timestamp to_timestamp(‘frombyte 2021-09-02 23:59:59',‘yyyy-mm-dd hh24:mi:ss');
4、徹底刪除數(shù)據(jù)
如果確定需要刪除的數(shù)據(jù)又不想無謂的占用空間,可以使用以下3種方式:
1)采用 truncate 方式進(jìn)行截斷。(不能進(jìn)行數(shù)據(jù)恢復(fù))
2)在 drop 時加上 purge 選項(xiàng):
drop table table_name purge;
5. 關(guān)于清空回收站
1)刪除當(dāng)前用戶回收站
purge recyclebin;
2)刪除全體用戶在回收站的數(shù)據(jù)
purge dba_recyclebin;
以上就是Oracle庫恢復(fù)刪除數(shù)據(jù)的方法小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Oracle恢復(fù)刪除數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Oracle中 關(guān)于數(shù)據(jù)庫存儲過程和存儲函數(shù)的使用
本篇文章,小編將為大家介紹,在Oracle中 關(guān)于數(shù)據(jù)庫存儲過程和存儲函數(shù)的使用,有需要的朋友可以參考一下2013-04-04如何把Oracle?數(shù)據(jù)庫從?RAC?集群遷移到單機(jī)環(huán)境
這篇文章主要介紹了把?Oracle?數(shù)據(jù)庫從?RAC?集群遷移到單機(jī)環(huán)境,內(nèi)容包括系統(tǒng)環(huán)境搭建,源數(shù)據(jù)庫的操作及目標(biāo)數(shù)據(jù)庫的操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08oracle數(shù)據(jù)庫定時任務(wù)dbms_job的用法詳解
這篇文章給大家詳細(xì)介紹了dbms_job的用法,用于安排和管理作業(yè)隊(duì)列,通過使用作業(yè),可以使ORACLE數(shù)據(jù)庫定期執(zhí)行特定的任務(wù)。有需要的朋友們可以參考借鑒。2016-09-09