log file switch completion频繁说明lgwr切换日志被卡住,主因是i/o延迟、归档阻塞或并发提交风暴;需查v$system_event中avg_ms(>10ms危险)和v$archive_dest确认sync归档或arch异常。

AWR里log file switch completion频繁,说明LGWR切换日志的动作被卡住,不是日志写得慢,而是切换流程本身在等——常见于I/O延迟、归档阻塞或并发提交风暴。
查v$system_event确认是否真高
别只看AWR报告里的Top 5 Timed Events,先跑这句看真实等待强度:
SELECT event, total_waits, time_waited_micro/1000000 time_sec,
ROUND(time_waited_micro/1000/NULLIF(total_waits,0),2) avg_ms
FROM v$system_event
WHERE event = 'log file switch completion';
重点看avg_ms:超过10ms就危险;total_waits一小时超500次,基本可断定是LGWR处理不过来。AWR聚合可能稀释峰值,这个实时视图更准。
- 如果
avg_ms高但total_waits不高 → 单次切换卡顿,盯log file parallel write平均等待 - 如果
total_waits极高但avg_ms低(
log file parallel write > 5ms 就得查存储
log file parallel write是LGWR写日志文件的底层I/O耗时,它直接决定log file switch completion能否快速完成。查:
SELECT event, ROUND(time_waited_micro/1000/NULLIF(total_waits,0),2) avg_ms FROM v$system_event WHERE event = 'log file parallel write';
超过5ms必须动手:
智能模型自动切换 V5.0.2 - 多模态感知,自动识别图片/视频/音频/代码/文本任务,切换最优模型。支持图片理解(qwen3-vl-plus)、视频音频(qwen3.5-plus)、代码(glm-5)、Office文档(MiniMax-M2.5)、推理等场景。零感知切换,无需手动操作。
- Redo日志文件不能放在NFS或慢速SAN上——哪怕只是临时挂载
- 检查磁盘队列长度:
iostat -x 1看await和%util,持续>10ms或>90%就说明存储已饱和 - Redo路径要独占高速本地SSD,别和数据文件、归档混在同一LUN
归档同步模式或ARCH进程拖后腿
哪怕没开归档,只要配置了LOG_ARCHIVE_DEST_n且设为SYNC,每次日志切换都得等ARCH写完才放行。查:
SELECT dest_id, status, target, schedule, archiver, transmit_mode, async_blocks FROM v$archive_dest WHERE status = 'VALID';
关键点:
- 看到
transmit_mode = 'SYNC'→ 切换必须等ARCH落盘,立刻改ASYNC -
archiver = 'FAILED'或schedule = 'DEMAND'→ ARCH挂了,查告警日志里ORA-00258类错误 -
log_archive_max_processes默认是2,OLTP系统建议设为4~6(但别超CPU核数一半)
别忽略应用层的提交节奏
AWR里log file switch completion飙升,有时根本不是数据库配置问题,而是应用在高频短事务:
- 查
v$sysstat里user commits和user rollbacks每秒增长量,>100/s就属高压提交 - 对比
log file sync等待:如果它也同步升高,说明是COMMIT太密,LGWR来不及响应 - 这种场景下扩日志组没用——反而掩盖问题;应推动应用合并事务、用批量INSERT/UPDATE代替逐行提交
真正卡住log file switch completion的,往往是那几个被忽略的细节:归档路径在机械盘上、LGWR日志文件和DBWR数据文件共用同一块SSD、或者开发在循环里写了1000个COMMIT。调参前,先看v$system_event和v$archive_dest这两张表。










