在刚刚处理完过第一个自自己开始的全职Oracle服务的case不几天,一个朋友推荐了一个业务给我,一个市级数据库在进行导入导出的过程中,遭受突然的死机,再次开机以后,数据库瘫痪,不能运行。本来这样的系统瘫痪事故是比较容易解决的,不过客户的数据库特别的大,对于用户来说,根本就没有做好备份的准备,更重要的是,用户无法承受极长的停机时间。项目是由朋友负责维护,当数据库遭受到这样的打击的时候,他第一时间通知了我。
马上通知他做好冷备份,最好最坏最稳妥的打算。整个备份下来就是将近T级的空间,这样也体谅他们平时没有做自动归档备份了,这样的容量,时时都要受到存储空间不够的考验,一时也不好说他们,开始分析了,根据对启动过程的分析,重做启动日志失败,通过对有关重做日志相关的查询,进一步确定错误发生的文件,已经错误发生的可能性,决定好这一切以后,开始按照以前的经验对redo日志进行clear了,由于数据量太大,并且数据比较重要,在解释完自己的处理方式和可能出现的风险后,经过客户权衡,最后和客户签订服务协议。开始恢复数据库,让数据库正常启动。由于用户做过导入的过程,导入几个10G级别的大表,就是在导入过程中出错的,更加客户的导入的描述,应该有不少的记录已经导入到数据库了,根据导入数据的特性和用户的描述马上用一个存储过程以便将所有的导入的记录找出,以至数据库恢复后可以进行数据恢复。一切都以OK。清楚redo日志,mount上database。启动数据库成功,接下来,运行存储过程删除那些数据,然后在指导客户优化了导入的命令,从而成功导入数据。全部完成不到1个半小时。
及时的数据库恢复给了客户很大的帮助,同时我在这个任务中也比较冷静的对实际情况分析,从而选择了最为简洁的处理方式,让自己的现场处理能力进一步得到了锻炼和提升。