<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
因为数据比较的重要,并且数据容量也不大,我们要求的备份策略是每天在磁带机做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>
我所讲的一个故事的背景是这样的,在某一个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>