Oracle闪回恢复误删除的表、存储过程、包、函数...
在日常的数据库开发过程汇总难免会出现一些误删除的动作,
对于一些误删的操作我们可以通过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等
备注:如果以上代码看不懂,可以动手查询一下,效果一目了然。