DBAtlas · 数据库运维图谱

ORA-00494: enqueue held for too long by 'inst N, osid M'(enqueue 被 'inst N, osid M' 持有时间过长)

Oracle

含义

某个关键资源 enqueue(例如 CF —— 控制文件 enqueue)被某进程持有的时间远超允许值,Oracle 为防止系统挂起而终止了该进程。在 alert.log 中与 'killing enqueue blocker' 条目一同出现。

原因

由于 I/O 瓶颈、严重的 CPU 压力或操作系统停顿(swapping、磁盘缓慢),某个后台或用户进程持有重要 enqueue 的时间超过了允许值;对于控制文件(CF)enqueue,此时间由 _controlfile_enqueue_timeout 设定(默认 900 s)。隐含(下划线)参数只应在 Oracle Support 指导下修改。通常由存储延迟或 LGWR/CKPT 等进程缓慢触发。

解决方法

查看 alert.log 和被终止进程的跟踪文件,确定涉及哪个 enqueue(通常是控制文件)以及哪个后台进程。真正的原因通常是存储/I/O 延迟:检查磁盘响应时间、多路径和控制器健康状况。降低 CPU/内存压力和 swap 使用。如果反复出现,将跟踪分析结果提供给 Oracle Support。

在 DBAtlas 中打开 →

同一数据库的其他条目