用自己写的awk脚本及Oracle包成功恢复客户的重要数据!

[@more@]

凌晨1点多接到客户的电话,说一个表在导出时发生ORA-600[kcfnew_2]错误。在网上搜了一下,也没有什么可以参考的案例,但大致意思是数据文件有损坏。

文件损坏也是事实了,其实几个小时前就是因为SCN不一致,才加过事件调整SCN,把库勉强启动起来。

由于数据库版本很低(Oracle 8.1.1+Linux),加了10231事件也不起作用,并且客户催得紧,必须在6:00以前恢复应用。加事件导出数据不成功,又考虑生成rowid,根据rowid来找回数据,并插入到新表,无赖出现“无效的rowid”错误,并且插入表时报表不存在;至此,只有从文件中读出数据再恢复了。由于没有该平台下的dul,只有试试前段时间自己写的awk脚本了。

根据损坏表的扩展信息dump出每一个块,就得到了这个表的所有十六进制记录信息。到dump最后一个扩展时,报无效的rowid,估计损坏的就是这一部分了,由于是远程操作,且时间紧张,也没有仔细去管这一部分。

将几十M的dump文件压缩后抓到本地后,进行Linux虚拟机,几分钟就整理出了记录信息,一共七万多条。跟客户核对了一下,还差620条。再用自己写的包处理后,数据还原了!由于是远程操作,且是通过QQ完成,连Telnet都用不上,所以考虑将数据以insert语句的形式发给客户。在测试的时候吓了我一跳,说还差三个字段!我仔细看了一下我的程序,再看看Dump信息,只有九个字段啊!那后面三个字段一定是空字段!找到开发商,确认此事后,开始生成insert语句。

将sql发给客户后,马上执行,没有任何错误,数据恢复成功,不一会儿,就看到应用跑起来了!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21072/viewspace-815353/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21072/viewspace-815353/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值