相信有很多oracle數據庫用戶都遇到過在操作Oracle數據庫時誤刪除某些重要數據的情況,這個時候如果數據庫沒有備份且數據十分重要的,怎么才能恢復誤刪除的數據呢?北亞企安數據恢復工程師下面簡單介紹幾個誤刪除Oracle數據庫數據的恢復方法。
Oracle數據庫誤刪除數據的恢復方法一:
利用oracle提供的閃回方法恢復數據,該方法適用于delete刪除(一條記錄)的情況:
首先需要知道是什么時間進行的刪除操作,如果不能確定具體時間點則選擇盡量準確的刪除數據前的時間。然后利用“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')
Oracle數據庫誤刪除數據的恢復方法二:
oracle數據庫在刪除表時會將刪除信息存放于某虛擬“回收站”中而非直接清空,再此種狀態下數據庫標記該表的數據庫為“可以復寫”,所以在該塊未被重新使用前依然可以恢復數據。該方法適用于drop刪除。
首先需要通過查詢user_table視圖找到被刪除的表:
select table_name,dropped from user_tables
select object_name,original_name,type,droptime from user_recyclebin
注意此時的表名稱已經被重新命名,table_name和object_name就是回收站中的存放表名。如果知道原表的名稱可以通過“flashback table 原表名 to before drop”語句恢復數據,如果不知道原表的名稱可以直接按照回收站中的表名稱將數據恢復,然后通過
“flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名”語句就可以重新命名。
Oracle數據庫誤刪除數據的恢復方法三:
利用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,該選項也可以通過刪除recyclebin區域來永久性刪除表。
刪除表:
SQL>drop table emp cascade constraints;
SQL>purge table emp;
刪除當前用戶的回收站:
SQL>purge recyclebin;
刪除全體用戶在回收站的數據:
SQL>purge dba_recyclebin
審核編輯 黃宇
-
數據恢復
+關注
關注
10文章
587瀏覽量
17662 -
數據庫
+關注
關注
7文章
3852瀏覽量
64725
發布評論請先 登錄
相關推薦
服務器數據恢復—raid5陣列上層win系統+oracle數據庫數據恢復案例
數據庫數據恢復—ORACLE常見故障的數據恢復可行性分析
oracle數據恢復—存儲掉盤導致Oracle數據庫文件大小變為0kb的數據恢復案例
![<b class='flag-5'>oracle</b><b class='flag-5'>數據</b><b class='flag-5'>恢復</b>—存儲掉盤導致<b class='flag-5'>Oracle</b><b class='flag-5'>數據</b>庫文件大小變為0kb的<b class='flag-5'>數據</b><b class='flag-5'>恢復</b>案例](https://file1.elecfans.com/web2/M00/0C/17/wKgZomc-qEmAQFhJAAefXIBOIFw458.png)
服務器數據恢復—EXT3文件系統下誤刪除數據的恢復案例
![服務器<b class='flag-5'>數據</b><b class='flag-5'>恢復</b>—EXT3文件系統<b class='flag-5'>下</b>誤<b class='flag-5'>刪除數據</b>的<b class='flag-5'>恢復</b>案例](https://file.elecfans.com/web2/M00/6B/71/poYBAGMr1U6AOot4AAB4laMRdgw508.png)
Oracle數據恢復—Oracle數據庫delete刪除的數據恢復方法
服務器數據恢復—存儲中卷被刪除后重建如何恢復被刪除卷的數據?
服務器數據恢復—RAID5多塊磁盤掉線導致崩潰的數據恢復案例
![服務器<b class='flag-5'>數據</b><b class='flag-5'>恢復</b>—RAID5多塊磁盤掉線導致崩潰的<b class='flag-5'>數據</b><b class='flag-5'>恢復</b>案例](https://file.elecfans.com/web2/M00/A4/BF/pYYBAGRcklmAH4s_AAJJZxWzDlg105.png)
Oracle數據恢復—Oracle數據庫誤truncate表的數據恢復案例
![<b class='flag-5'>Oracle</b><b class='flag-5'>數據</b><b class='flag-5'>恢復</b>—<b class='flag-5'>Oracle</b><b class='flag-5'>數據</b>庫誤truncate表的<b class='flag-5'>數據</b><b class='flag-5'>恢復</b>案例](https://file.elecfans.com/web2/M00/9A/D7/pYYBAGQdHS6AJ5uRAAIvhiclg9s075.png)
評論