Oracle找回被覆盖的存储过程

几天前修改过存储过程,放了个小长假回去给忘记了,发现测试库编译错误就直接从生产库导出最新的全部覆盖。就在编译成功后沾沾自喜时发现有个程序放假前修改过并在测试库测试,覆盖之后这个程序相当于撤销了之前的操作。好在Oracle的机制很人性化,基本上不管怎么删除都能找回来。存储过程的还原三步搞定。
1、切换到管理员,这些操作普通用户没有权限

2、新建一张表存放某个具体时间的存储过程信息

create table lwz_tmp as 
select * 
from dba_source as of timestamp TO_TIMESTAMP('2020-12-31 20:33:00', 'YYYY-MM-DD HH24:MI:SS') 
where TYPE = 'PROCEDURE' 
And owner = 'LWZ' 
And Name = 'MYPRO'; 

3、上面就已经得到了覆盖前的存储过程,再从中取text字段就是里面每一行的内容

select text 
from lwz_tmp 
where name ='MYPRO'
and owner = 'LWZ' 
order by line; 

可以将text全部作为excel导出,再取对应的文字列(导出第一列为序号)复制到notepad或者txt上,替换掉多余的"双引号,稍微调整即可。同理,还原某个时间的数据也可以用到timestamp TO_TIMESTAMP(),但是用了truncate无法用这个还原,谨慎使用,尽管delete速度比truncate慢很多,也尽量用delete!!!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值