刪除Oracle數(shù)據(jù)庫數(shù)據(jù)一般有以下2種方式:delete、drop或truncate。下面針對這2種刪除oracle數(shù)據(jù)庫數(shù)據(jù)的方式探討一下oracle數(shù)據(jù)庫數(shù)據(jù)恢復(fù)方法(不考慮全庫備份和利用歸檔日志)。
1、delete誤刪除的數(shù)據(jù)恢復(fù)方法。
利用oracle提供的閃回方法進行恢復(fù)。如果在刪除數(shù)據(jù)后還沒做大量的操作(只要被刪除數(shù)據(jù)的塊沒被覆寫),就可以利用閃回直接找回刪除的數(shù)據(jù)。
具體步驟為:
a、確定刪除數(shù)據(jù)的時間(最好是刪除數(shù)據(jù)的時間點)。
b、用以下語句找出刪除的數(shù)據(jù):select * from 表名 as of timestamp to_timestamp('刪除時間點','yyyy-mm-dd hh24:mi:ss')
c、把刪除的數(shù)據(jù)重新插入原表:insert into 表名 (select * from 表名 as of timestamp to_timestamp('刪除時間點','yyyy-mm-dd hh24:mi:ss'))
注意要保證主鍵不重復(fù)。
如果表結(jié)構(gòu)沒有發(fā)生改變,還可以直接使用閃回整個表的方式來恢復(fù)數(shù)據(jù)(表閃回要求用戶必須要有flash any table權(quán)限。)。
具體步驟:
alter table 表名 enable row movement
flashback table 表名 to timestamp to_timestamp(刪除時間點',' frombyte yyyy-mm-dd hh24:mi:ss')
2、drop誤刪除的數(shù)據(jù)恢復(fù)方法。
oracle在刪除表時沒有直接將表所占的塊清空,只是對該表的數(shù)據(jù)塊做了可以被覆寫的標志。oracle將已刪除的表的信息放到了一個虛擬容器“回收站”中,所以在塊未被重新使用前還可以恢復(fù)。
具體步驟:
查詢這個“回收站”或者查詢user_table視圖來查找已被刪除的表:
select table_name,dropped from user_tables
select object_name,original_name,type,droptime from user_recyclebin
在以上信息中,表名都是被重命名過的,字段table_name或者object_name就是刪除后在回收站中的存放表名。
如果還能記住表名,則可以用下面語句直接恢復(fù):
flashback table 原表名 to before drop
如果記不住了,可以直接使用回收站的表名進行恢復(fù),然后再重命名。參照下方語句:
flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名
oracle的閃回功能除了以上基本功能外,還可以閃回整個數(shù)據(jù)庫。
使用數(shù)據(jù)庫閃回功能讓數(shù)據(jù)庫回到過去某一狀態(tài)。語句如下:
SQL>alter database flashback on
SQL>flashback database to scn SCNNO
SQL>flashback database to timestamp to_timestamp('時間點','yyyy-mm-dd hh24:mi:ss')
總結(jié):
oracle數(shù)據(jù)庫雖然提供以上安全機制保證了誤操作后可以恢復(fù)數(shù)據(jù),但同時也出現(xiàn)另外一個問題:空間占用。drop表或者delete表數(shù)據(jù)后,空間不會自動回收。
對于一些確定不使用的表,刪除后可以回收空間。刪除后回收空間的方法:
1、采用truncate方式進行截斷。
2、在drop時加上purge選項:drop table 表名 purge
該選項還有以下用途:
通過刪除recyclebin區(qū)域來永久性刪除表。
原始刪除表emp:
drop table emp cascade constraints purge table emp
刪除當前用戶的回收站:
purge recyclebin
刪除全體用戶在回收站的數(shù)據(jù):
purge dba_recyclebin
審核編輯 黃宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
568瀏覽量
17432 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3794瀏覽量
64360 -
Oracle
+關(guān)注
關(guān)注
2文章
289瀏覽量
35123
發(fā)布評論請先 登錄
相關(guān)推薦
評論