只剩下键盘敲打声的办公室,被一个突如其来的电话打破了宁静。电话那头,是某公安客户的紧急求助。
案发现场
其核心数据库,由于存储突然断电,导致数据库实例crash,待存储工程师修复好存储后,时间已经过去一天多了。期间客户为了避免业务中断,把十几天前的一个逻辑备份恢复回来以供临时使用,却发现由于缺少几张关键表的数据导致部分业务无法正常进行,客户方压力很大,希望存储修复好后,尽快把旧库上一些核心数据恢复回来。
天公不作美
天公不作美,存储修复好后,发现ASM实例不能将磁盘组装载,听客户说到这里,沃趣工程师当时第一反应是ASM磁盘头损坏,使ASM实例不能发现足够的ASM磁盘,进而导致磁盘组不能被装载。事不宜迟,赶紧联系了对方的技术人员远程支持,登陆上去以后先把所有磁盘的前10M数据通过dd备份了出来,防止后面误操作还原不了现场,通过kfed工具查看ASM磁盘的磁盘头,发现磁盘头都是有效的,但是实例的报错信息又非常清晰的提示磁盘组由于没有足够的磁盘导致不能被装载,这时,想到了amdu工具,它是用来抽取ASM磁盘组中的数据,但是它还有一个隐藏的功能,校验ASM磁盘头是否完整,莫非磁盘头看着是有效的,但是其实已经有不一致的数据了?
初现希望
由于客户使用的是10.2版本的ASM,默认并没有带amdu工具,因此赶紧去MOS上进行下载,安装好amdu工具后,直接在grid用户下敲amdu回车,然后会生成一个目录,目录下有report.txt文件,这个文件中记录了发现的asm磁盘以及磁盘头信息是否完好,查看这个文件后发现一共8个ASM磁盘,其中有6个磁盘的磁盘头都已经损坏,提示check值无效,对于这种情况其实非常好修复,只需要通过kfed工具把磁盘头的信息重新merge回去,Oracle会自动计算新的checksum值写回,按照这种办法做了之后,重新使用amdu工具检查,8个磁盘已经都能够正确识别,尝试重启装载磁盘组,磁盘组可以正常被装载。
雪上加霜
事情进展到这里非常的顺利,可就在感觉已经离成功仅一步之遥的时候,又遇到了问题,在拉起数据库实例的过程中,后台alert日志中显示了大量的坏块,尝试把相关的数据文件offline掉再启动数据库,又发现了大量的system表空间的坏块,当时想通过把system表空间通过amdu抽取出来,再使用bbed工具来修改相关系统坏块来尝试修复,但是接着又发现amdu工具根本没有办法使用,提示了ASM的元信息文件PST表和AT表损坏,对于PST表和AT表损坏,一般可以使用磁盘组的alter diskgroup check方式修复磁盘组元数据,但是我们这次的案例里可能损坏的信息过于严重,命令执行过程中,磁盘组直接被卸载掉了,重新尝试挂载磁盘组,可成功挂载后立即就又被卸载,查看后台进程的跟踪日志,依然是提示PST表和AT表损坏。
希望重现
通过kfed工具查看所提示磁盘的这两个元数据文件的内容,并没有发现有明显的损坏,事情到了这里貌似是无法继续了,当时脑子一转,莫非还是checksum值不一致?抱着尝试的心态,把跟踪文件中提示磁盘的AT表的元数据merge了一下,再次尝试拉起磁盘组,依然不能被装载,但是这次报错的信息变化了,提示另外一个磁盘的AT表和PST表损坏,看来有希望啊,如法炮制,就这样修复了有4个磁盘,都没有遇到问题。
TOO YOUNG TOO SIMPLE
可就在第五个磁盘的时候,这种办法不起作用了,一直提示这个盘的AT 表和PST表损坏,单独把这个盘的AT表和PST表导出来和正常的磁盘比对,没有发现有什么异常。后面又尝试了多次把之前备份的磁盘头还原后再尝试修复都不起作用。
上dul,会是万能的吗?
看来只能dul 工具上了,但是不到万不得已,又不想使用这个工具。跟客户沟通后,咨询他们是否有购买第三方的一些数据恢复服务,告之并没有,现在再找人时间上也来不及,没办法,先不管那么多了,尽快让客户的数据库能提供服务最重要,赶紧上dul工具吧,看能恢复多少数据回来。
不幸中的万幸
不幸中的万幸,本次掉电数据库的系统表空间并没有严重的数据字典毁坏,通过使用dul工具非常顺利的把几张关键表的数据都恢复了出来。恢复过程中遇到了一些问题,例如由于数据量有接近3个T,dul扫盘过程中非常的慢,还有由于表中有blob数据,dul的参数中的lob buffer给的默认值比较小导致抽取失败等等,都一一解决了。
备份,备份,还是备份!!!
整个恢复过程一波三折,不过结果总算是好的。这里强调:备份重于一切,经济条件允许的,离线备份和在线dataguard备份都要有,没有条件的,至少要有两者中的一个,否则真的发生了灾难,就只能寄希望于dul这样的恢复工具了,但是需要严重强调,dul不是万能的,而且一般能提供数据恢复服务的公司,收费都非常的昂贵,这些钱足够你来搭建一个DataGuard了。
QBackup 让你远离“火线”
双重备份
数据备份秒级验证
一键式操作
增量存储
工程师有话说
1.由于本次故障一切的操作都远程完成,很多日志和命令都没有保留。
2.别问我dul从哪下载的。
3.有任何数据库问题可随时咨询沃趣科技