oracle利用未成功的备份来恢复除数据外的对象
1、背景
朋友联系到我,说昨天升级了业务,升级完成后发现有几个包体或过程被覆盖了,但备份是失败的,问我能恢复吗
2、分析思路和处理过程
思路:
了解到问题后,我远程过去看了看:
1、确认数据库是否开归档
2、确认是否真的是他所说的备份是失败的
3、确认是否有其他人在远程分析处理该问题。
**数据库未开归档,且redo日志被覆盖,无法通过日志恢复。
**备份文件只备份了一半,就报了快照过旧的错误。
**我远程过去的时候,该用户的维保单位正在处理,据他介绍他们做的备份一体机也未成功,搞了几个小时都未解决该问题,才联系到我。
处理过程(由于时间紧迫未截图,自行脑补):
找到服务器上的坏的dmp备份,利用impdp生成sql将数据搞了出来,从远程到问题处理不超过5分钟。
impdp \
' / as sysdba \' directory=exp_dir sqlfile=cre_package.sql dumpfile=xx.dmp logfile=xx.log cluster=n include=PACKAGE,PROCEDURE
在服务器本地做如上操作,将sql提取出来完成了恢复。
3、总结
数据泵备份到表就报错了,并不代表备份是无效的,只是到表的位置就截止了,我们要得是元数据,依然可以从dmp当中提取。如果dmp也有损坏的情况,那么只有通过抽取dmp中的关键信息进行恢复。