Sqlserver数据库恢复案例说明
1 背景
公司SQLserver2005数据库是在放在windows2003上面的,当时的sqlserver是给报表系统使用的.数据库上面差不多有2T的数据.
出问题那段时间,老是有短信告警提示从ORACLE数据库同步有异常(从平台同步基础数据过来加工),每小时的任务调度有一些存储过程莫名的错误,还超时调度不完,导致了很多任务都没能如期的完成,生成的统计数据也完成不了,赶紧用3板斧
(1) 检查锁表,查询耗时SQL
(2) dbcc checktable
(3) dbcc checkdb
以前这个经验之前用的比较灵验了,现在不灵验了, 纳尼,一个简单的数据同步插入语句就卡死了,kill掉后还是不行 再次同步数据的时候一样不行,想到的办法只能重启服务器了,这个事情白天不敢干的,只有等到晚上了.
检查sqlserver错误日志发现问题(大致意思是磁盘的某个位置出现异常导致写入失败),后来检查服务器上的事件查看器,磁盘错误,通知工程维护的同事去机房发现是富士通的一块磁阵坏了
本以为等他们换了磁阵(当时要把所有的MDF,LDF文件拷贝到新的地方,以防万一),重启服务器就万事大吉了,结果重启之后悲剧发生了,有一个数据库出现(置疑,恢复中),进度一直卡在59%那里过不去,这个数据库启动不起来,也就导致了报表应用无法使用,公司所有的日常工作都要分析数据也无法进行了.问题越来越严重了,之前是报表系统可以使用,只能不能查最新的数据而已,现在是连系统都不能用了
2 原因分析
前由于磁阵的问题导致写入失败,数据库LDF文件和MDF记录的数据存在不同步的情况,数据库恢复的时候导致无法正常通过,决定将LDF日志文件删除,弃用这部分数据(基础数据是从oracle平台同步过来的,所以不担心数据丢失的情况)
3 数据库恢复
3.1 新建伪数据库 zxdb_gz
所有的mdf ndf ldf文件名称必须一样