Oracle閃回恢復誤刪除的表、存儲過程、包、函數...
阿新 • • 發佈:2019-01-10
數據庫 函數 use 分鐘 ack ... 根據 ora interval 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提供的閃回機制恢復誤刪數據,
從而避免出現較大的生產事故.
下面是本人平時工作中積累的一些常用的操作,非常簡單實用,分享給大家.
恢復dml誤刪的數據:
select * from 誤刪除的表名 as of timestamp(systimestamp-interval ‘10‘ minute);--此處的10代表10分鐘前表中的數據,可以根據實際情況進行查詢
恢復drop掉的存儲過程、函數、包等:
select *
from (select u.name AS username,
o.name AS procedurename,
7,
‘PROCEDURE‘,
8,
‘FUNCTION‘,
9,
‘PACKAGE‘,
11,
‘PACKAGE BODY‘,
12,
‘TRIGGER‘,
‘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.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閃回恢復誤刪除的表、存儲過程、包、函數...