新公司数据库死锁追踪揭秘:艰难排查与意外发现

需积分: 14 2 下载量 147 浏览量 更新于2024-09-17 收藏 417KB DOCX 举报
"一次死锁追踪经历"讲述了作者在新公司接手一个生产数据库大规模中断的问题。这个事件发生在夜晚,作者由于不在现场,未能第一时间获取详细信息,只能依据后来收集的trace信息进行分析。作者最初猜测可能是数据库作业异常或程序错误导致的死锁,然而trace显示数据库在19:49:28连续被系统取消了三个锁,并且大部分连接都出现了Abort状态,这指向了死锁的可能性。 在排查过程中,作者尝试通过检查Agent中的JOB运行记录和trace文件中的长Update、Insert或Delete语句来定位问题,但未发现明显异常。随后,作者转向Windows日志和数据库错误日志,依然没有找到线索,这让情况变得棘手。咨询业内专家也未能迅速解决问题,线索似乎在现有的资料中难以寻觅。 意识到死锁的本质是资源竞争和一致性问题,作者决定改变策略,通过清空错误日志、开启跟踪标志1204和1222,以捕捉更多的死锁信息。经过几天的数据收集,最终在ERROR.LOG中发现了死锁的证据,确认了死锁的存在。在日志中,作者看到了大量的死锁信息,进一步揭示了数据库内部资源争夺的具体情况。 通过对页面信息的详细查看,作者得以深入理解死锁的细节,并找到了引发这次故障的“真凶”。这次经历提醒了作者在数据库维护中,死锁问题的排查需要耐心细致,以及对各种日志和工具的熟练运用,以确保系统的稳定运行。