1. 程式人生 > >Oracle閃回恢復誤刪除的表、存儲過程、包、函數...

Oracle閃回恢復誤刪除的表、存儲過程、包、函數...

數據庫 函數 use 分鐘 ack ... 根據 ora interval

在日常的數據庫開發過程匯總難免會出現一些誤刪除的動作,

對於一些誤刪的操作我們可以通過oracle提供的閃回機制恢復誤刪數據,

從而避免出現較大的生產事故.

下面是本人平時工作中積累的一些常用的操作,非常簡單實用,分享給大家.

恢復dml誤刪的數據:

select * from 誤刪除的表名 as of timestamp(systimestamp-interval ‘10‘ minute);--此處的10代表10分鐘前表中的數據,可以根據實際情況進行查詢

恢復drop掉的存儲過程、函數、包等:

select *
from (select u.name AS username,
o.name AS procedurename,

decode(o.type#,
7,
‘PROCEDURE‘,
8,
‘FUNCTION‘,
9,
‘PACKAGE‘,
11,
‘PACKAGE BODY‘,
12,
‘TRIGGER‘,
13,
‘TYPE‘,
14,
‘TYPE BODY‘,
‘UNDEFINED‘) AS sptype,
s.line AS LINE,
s.source codetext
from sys.obj$ o, sys.source$ s, sys.user$ u
where o.obj# = s.obj#
and o.owner# = u.user#
and (o.type# in (7, 8, 9, 11, 12, 14) OR
(o.type# = 13 AND o.subname is null))
and u.name = ‘數據庫用戶名需要大寫‘) as of timestamp(systimestamp - interval ‘21‘ minute) --按照時間進行閃回操作 此處為21分鐘前的狀態
where sptype = ‘PROCEDURE‘; --也可以單獨查詢FUNCTION、PACKAGE等

備註:如果以上代碼看不懂,可以動手查詢一下,效果一目了然。

Oracle閃回恢復誤刪除的表、存儲過程、包、函數...