一次2000修复实践

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
我所讲的一个故事的背景是这样的,在某一个POS的项目中使用SQLSERVER2000做前台,IBM的做后台数据库。前台数据库的环境是这样的是WINDOWS2000SERVER(10USERS),数据库是SQLSERVER2000(E)+SP3,Application是POS的收银系统(是一种实时的交易系统)。的配置是:P4XRON2.4G*2,36GHDD*5做的RAID5,1GMEMORY,HPDDS4磁带机,数据库的容量一般保持在5G左右。
  因为数据比较的重要,并且数据容量也不大,我们要求的备份策略是每天在磁带机做POS_DB的全备份(一个星期7天一个循环),在晚上还在硬盘上做全部备份(MASTER,MSDB,POS_DB).这样保持双重的保险。

  1.故障爆发:

  2003-12-2613:00

  客户报告所有的POS死机和SERVER运行速度非常的慢。经过重新启动服务器(启动到检查RAID卡时开始报警)我们发现在WINDEOWS2000SERVER的“系统日志”中有这样的信息:

Error:823,Severity:24,State:2
I/Oerror(tornpage)detectedduringreadatoffset0x0000001bf96000infileD:/DATA/POS_DB.mdf'.
SQLSERVER的“错误日志”中有这样的信息:
2003-12-1003:34:22.23spid56Error:823,Severity:24,State:2
2003-12-1003:34:22.23spid56I/Oerror(tornpage)detectedduringreadatoffset0x00000074964000infile'D:/DATA/POS_DB.mdf'..

  来自msdn的解释:

I/Ologicalcheckfailure:IfareadWindowsAPIcallorawriteWindowsAPIcallforadatabasefileissuccessful,butspecificlogicalchecksonthedataarenotsuccessful(atornpage,forexample),an823errorisraised.Thefollowingerrormessageisanexampleofan823errorforanI/Ologicalcheckfailure:
2003-09-0516:51:18.90spid17Error:823,Severity:24,State:2
2003-09-0516:51:18.90spid17I/Oerror(tornpage)detectedduringreadatoffset0x00000094004000infile'F:/SQLData/mydb.MDF'..
Toresolvethisproblem,firstruntheDBCCCHECKDBstatementonthedatabasethatisassociatedwiththefileintheerrormessage.IftheDBCCCHECKDBstatementreportserrors,correctthoseerrorsbeforeyoutroubleshootthisproblem.IftheproblempersistsevenaftertheDBCCCHECKDBerrorshavebeencorrected,oriftheDBCCCHECKDBstatementdoesnotreportanyerrors,reviewtheMicrosoftWindowsNTsystemeventlogforanysystemerrorsordisk-relatederrors.Youcanalsocontactyourhardwarevendortorunanyappropriatediagnostics.

  I/O逻辑检查失败:如果有一个WINDOWS程序在读取和写数据库文件时是成功的,但是在详细的数据逻辑检查时没有成功(比如:不完整的页),SQLSERVER会返回MSG823的错误。下面就是一个I/O逻辑检查失败MSG823的实例:

2003-09-0516:51:18.90spid17Error:823,Severity:24,State:2
2003-09-0516:51:18.90spid17I/Oerror(tornpage)detectedduringreadatoffset0x00000094004000infile'F:/SQLData/mydb.MDF'..

  要解决这样的问题,首先要在该数据库中执行DBCCCHECKDB(错误信息提示的数据库文件)。如果DBCCCHECKDB报错,在你修复错误之前纠正这些错误。如果这些错误信息一直保留到执行DBCCCHECKDB运行之后,或者DBCCCHECKDB没有报告任何错误,检查WINDOWSNT系统的的事件查看器的和系统错误或磁盘错误相关的信息。你也可以联系硬件厂商运行正确的诊断工具。

  坏了,数据库文件有问题,在检查OS的事件查看器,我们发现在一个星期之前就有错误信息(只是OFFSET的偏移地址不同)。

  赶紧检查HDD,果然发现在RAID5的第一快HDD亮了红灯(灰尘太多,很难于看清)

  执行DBCCCHECKDB('POS_DB')检查发现:

Server:Msg8909,Level16,State1,Line1
Tableerror:ObjectID26342838,indexID35207,pageID(1:50978).ThePageIdinthepageheader=(32230:-2048732002).

Server:Msg8939,Level16,State1,Line1 1

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值