SQL2005X64+Windows2003X64环境下迁移X32SQL2005数据库遇到的问题如下:
1)迁移后数据库间断性出现访问阻塞(该现象迁移前已存在);
2)在实例/LOG/下不定期生成内存转储文件(* .MDMP),24小时内撑爆300GB硬盘;
3)DBCC操作不响应,重启实例服务后可以DBCC,结果报错:(1)页分配错误(2)出现重复数据;
问题分析:
1)问题可能是表部分区间索引损坏,原数据库表设计在一个大文件上,数据库文件所在盘使用了热备份文件镜像,造成访问阻塞;
2)数据库某个环节出现错误,所以出现报错*.MDMP,问题极有可能是DBCC出现的错误;
3)数据库主文件已经超过50GB,对于I/O操作响应可能低效。
4)数据库主要表的写IO与读IO未分离,在同一个物理文件上,该文件还在镜像上;
解决办法:
第一阶段:重点解决DBCC错误问题
重建可能出现问题的数据表(只能根据业务判断,并确认),具体方法:建立新表,将老表数据通过DTC导入,删除老表,重命名新表;
该操作完成后,DBCC-TABLE正常;但是DBCC REPARI全库仍然有页分配错误;
第二阶段:根据第一阶段处理结果,判断数据库已经出现不可修复问题
以脚本重建数据库,将老数据库全部表通过DTC导入新库;启用新库,停用老库。
该操作完成后,(* .MDMP)文件不再生成,从此确认老库存在不可修复页分配错误。
但是仍然存在数据访问阻塞。
第三阶段:根据前面的处理结果,判断访问阻塞的原因应该是当前数据库业务本身设计策略的问题
停用该数据库文件的自动镜像;
按每半个月分一个物理文件对主数据表进行分区(分区的区间根据表的数据量设置,经过测试SQL2005需要保证每表记录数在1500万条左右为性能最佳点);并将分区文件均匀分在不同硬盘上;
再次观察,数据库运行正常!!
以上记录仅仅为特定案例处理方法,是否有通用性请看客斟酌。