溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle中Drop,Delete,Truancate表恢復

發(fā)布時間:2020-09-09 11:56:23 來源:網(wǎng)絡 閱讀:1094 作者:神諭03 欄目:關系型數(shù)據(jù)庫

Oracle中Drop,delete,truancate表恢復

oracle中,常常會由于一些失誤導致表的刪除,以下是我寫的一些表恢復的方法。

閃回模式得滿足條件(啟用閃回區(qū)和啟用歸檔):

1.檢查是否啟動了flash recovery area

show parameter db_recovery_file

2.檢查是否啟用了歸檔

archive log list;


(一)Drop表的恢復

如果按照平時刪除表的方法:(Drop table tablename;)的話。表不會立即被刪除,而是存放于回收站中(Oracle 10g以后才有)。我們可以通過閃回(Flashback)把表恢復。

 查看被回收站中刪除的表:

    Select * from dba_recyclebin (where type='TABLE'); --找出對應的表是否存在

  閃回表:

    Flashback tbale 表名 to before drop;

**回收站存放的不僅僅只有表,還有其他對象


(二)Delete表的恢復

同樣,Delete后可以通過閃回時間戳或者閃回SCN號進行恢復。

  基于時間戳恢復

①確定刪除數(shù)據(jù)的時間(在刪除數(shù)據(jù)之前的時間就行,不過最好是刪除數(shù)據(jù)的時間點)

②用以下語句找出刪除的數(shù)據(jù):

 select * from 表名 as of timestamp to_timestamp('刪除時間點','yyyy-mm-dd hh34:mi:ss')

開啟行移動功能 

 alter table 表名 enable row movement

④把刪除的數(shù)據(jù)重新插入原表:

 insert into 表名 (select * from 表名 as of timestamp to_timestamp('刪除時間點','yyyy-mm-dd hh34:mi:ss'));注意要保證主鍵不重復。

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

 alter table 表名 disable row movement

  基于SCN號恢復

①獲取當前的SCN號
 select dbms_flashback.get_system_change_number from dual; --假設得到scn號為10672000

②如果知道刪除前的SCN號最好,如果不知道就通過閃回查詢嘗試.

 select count(*) from 表名 as of scn 10671000; --如果數(shù)據(jù)量為0,則繼續(xù)提前scn號

 select count(*) from 表名 as of scn 10670000; --查詢的數(shù)據(jù)量為原來的數(shù)據(jù)量,則ok

③通過查詢的SCN號進行閃回恢復

 insert into 表名 select * from tablename as of scn 10670000;


(三)Truncate表的恢復

truncate表后不會產(chǎn)生日志記錄和回滾段空間的使用,不能用查詢閃回恢復。

①最簡單的方法:下載使用PRM (數(shù)據(jù)庫災難恢復工具)

②進行數(shù)據(jù)庫閃回(在生產(chǎn)庫不推薦):

 select  sysdate from dual;  --查看時間戳,確認已經(jīng)開啟閃回,如果沒開啟,只能用①方法了;

 shutdown immediate;  --關閉數(shù)據(jù)庫

 startup mount;  --啟動到mount狀態(tài)

 flashback database to timestamp to_timestamp('2017-07-30 18:22:33','yyyy-mm-dd hh34:mi:ss');  --閃回刪除時間點的時間

 alter database open;  --打開數(shù)據(jù)庫









向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI