重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 87|回复: 0
打印 上一主题 下一主题

在数据库上运行 DBCC CHECKDB 语句时出现“等待闩锁时出现超时”错误

[复制链接]
跳转到指定楼层
楼主
发表于 2026-3-22 11:04:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现象
假设出现了下面这种情景:

你有一个数据库,其中包含一个或多个非常大的表。
这些表的大小通常为几百 GB(GB)。
DBCC CHECKDB在 SQL Server 中的数据库上运行该语句。
在此方案中,类似于以下内容的错误消息将写入 SQL Server 错误日志:

<DateTime> spid65 在等待闩锁时发生超时:类“DBCC_MULTIOBJECT_SCANNER”,id 000000002201DED0,类型 4,任务0x000000000C80BEB8:6,waittime 300,标志0xa,拥有任务0x0000000005A0AC58。 将继续等待。

但是,该 DBCC CHECKDB 语句将成功完成。 可以安全地忽略错误消息。

原因
出现此问题的原因是当 SQL Server 遍历索引分配映射(IAM)链时发生超时。 错误消息中提到的闩锁用于阻止其他线程访问列表。 此列表是由遍历与给定表关联的所有索引的 IAM 链的线程生成的。 如果表足够大,遍历这些 IAM 链需要 5 分钟以上,则可能会遇到闩锁超时。此外,当磁盘 I/O 速度缓慢时,此问题通常更糟。

状态
此行为是特意这样设计的。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-18 07:22 , Processed in 0.223065 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表