SQLSERVER数据库故障分析报告
数据库故障分析报告
一、故障现象
出现故障的服务器采用WINDOWS SERVER2003 ENTERPRISE的32位版本,打SP2补丁,系统开启PAE 支持4GB 以上的内存,数据库SQLSERVER2000 ENTERPRISE的32位版本,打SP3补丁,开启AWE 支持4GB 以上的内存,服务器为16核至强CPU 和6GB 物理内存配置。
对于2012-04-12发生的数据库慢,业务系统不能正常运行(在2012-04-10发生的问题是数据库发现有死锁和阻塞的情况),通过查询分析器可以正常登陆数据库,在查询分析器中执行SQL 语句速度慢。
在查询分析器中使用SP_WHO2命令没有发现数据库有死锁和阻塞的情况,可以排除这方面的原因,查看数据库的日志信息有一些警告和报错信息, 如下图所示意:
在sql server profiler中对于故障当时的数据库的跟踪,捕获如下的可疑事件,其中一个事务执行事件偏长,大约14秒钟左右,一个事务出现内存不足问题导致不能被捕获具体内容。
为了保障系统尽快运行,在通过以上简单故障信息收集后,数据库系统重新启动,故障现象消失。
二、故障分析
在系统日志中查询的关于SQLSERVER 的一个警告和一个错误信息不太影响系统的正常运行,其中警告信息主要是SQL Server 程序总会尝试在
Active
Directory 中注册虚拟服务器。在SQLSERVER2000 SP4补丁中解决。错误信息是SQLSERVER2000sp3的一个BUG ,如下是微软的一个对这个BUG 的说明: 当客户端程序在 Microsoft SQL Server Service Pack 3 (SP3) 数据库上运行查询时,查询可能需要比平时更长的时间。进行以下操作时,可能会出现此行为:
•在客户端程序连接到数据库的同时使用 SQL 查询分析器在 SQL Server 数据库上运行查询。 •在 SQL 查询分析器处于打开状态的同时重新启动 SQL Server 的实例。
以上两个问题只要SQLSERVER2000打到SP4的补丁就可以解决问题。
对于在sql server profiler中捕获的两个可疑事件,结合现有服务器操作系统和数据库系统全部使用的是扩展内存的使用方式(扩展内存在理论上会比直接内存访问方式效率要低),所以建议需要添加内存并且改用64位的操作系统和数据库。
三、故障处理解决方案
针对现有的问题建议采用如下的措施进行调整:
1、操作系统采用WINDOWS SERVER 2003 ENTERPRISE X64版本,数据库采用SQLSERVER2005/SQLSERVER 2008的64位企业版(SQLSERVER2000在稳定性和可靠性上还是要比SQLSERVER2005/SQLSERVER 2008逊色很多)并且更新为最新的补丁集。
2、加大现有服务器的内存,建议扩大到16G 以上(现在内存白菜价),这样可以减少系统换页,提高数据库的执行效率。