ITPub博客

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

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

原创 Oracle 作者:chensq 时间:2000-01-01 00:00:21 0 删除 编辑

[@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博客 ” ,链接:https://blog.itpub.net/21072/viewspace-815353/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: RAC 管理命令
请登录后发表评论 登录
全部评论

注册时间:2008-03-17

  • 博文量
    10
  • 访问量
    297149