ITPub博客

首页 > 数据库 > Oracle > Oracle Adaptive Log File Sync 问题

Oracle Adaptive Log File Sync 问题

原创 Oracle 作者:dingjun123 时间:2026-05-11 21:09:15 0 删除 编辑
Oracle 11g 的 Adaptive Log File Sync 特性在 11.2.0.3 版本中默认开启后,确实带来了一系列严重的性能问题,这也是业界普遍建议关闭该参数的根本原因。以下是详细的技术分析:

一、Adaptive Log File Sync 的工作机制

该特性由隐含参数 _use_adaptive_log_file_sync 控制,允许 LGWR 在两种模式间自适应切换:
表格
模式 机制 特点
Post/Wait LGWR 写入完成后 主动通知前台进程 响应快、延迟低,但 LGWR CPU 负担较重
Polling 前台进程 定时轮询检查写入进度 减轻 LGWR 负担,但前台进程等待时间不可控
Oracle 声称在高负载下 Polling 模式更具扩展性,低负载下 Post/Wait 响应更好,因此设计了自适应切换机制
。

二、为什么要关闭?核心问题分析

1. 已知 Bug 导致 Log File Sync 异常升高

11.2.0.3 默认开启该特性后,引入了大量 Bug,反而使 log file sync 等待时间异常飙升
。MOS 上记录的相关 Bug 包括:
  • Bug 13707904 - LGWR sometimes uses polling, sometimes post/wait
  • Bug 13074706 - Long "log file sync" waits in RAC not correlated with slow writes
  • Bug 25178179 - Several sessions wait on 'log file sync' in a RAC environment

2. Polling 模式的硬编码延迟缺陷

当切换到 Polling 模式时,前台进程的轮询间隔是 硬编码的 10ms。这意味着即使 LGWR 已经写完日志,前台进程也可能因为轮询周期而额外等待最多 10ms,直接导致 log file sync 平均等待时间从 1-2ms 飙升到 10ms 以上
。
实际案例:有客户将该参数设为 FALSE 后, log file sync 平均等待时间从 10ms 下降到 1-2ms
。

3. 频繁的模式切换带来额外开销

自适应机制会根据内部统计信息在两种模式间切换,但切换本身就有开销。安全机制虽然防止过于频繁的切换,但仍可能导致性能抖动。从 LGWR trace 文件中可以看到频繁的切换记录:
plain
复制
Log file sync switching to polling
Log file sync switching to post/wait
```[^11^][^12^]
### 4. **RAC 环境下问题更突出**
在 RAC 环境中,Adaptive Log File Sync 可能导致节点间 `log file sync` 等待差异巨大。例如某案例中 RAC 节点 1 正常,节点 2 出现严重的 `log file sync` 等待,严重影响业务[^19^][^20^]。
### 5. **OLTP 系统尤其敏感**
对于高并发的 OLTP 系统,事务提交频繁,`log file sync` 的延迟直接影响响应时间。Polling 模式的不可预测性对这种系统伤害极大,因此 MOS 虽建议打补丁或升级,但业内对 OLTP 系统的**实际建议是默认关闭**[^13^]。
---
## 三、如何判断是否受影响
### 1. 检查当前参数值
```sql
SELECT a.ksppinm name, b.ksppstvl value, a.ksppdesc description 
FROM x$ksppi a, x$ksppcv b 
WHERE a.indx = b.indx 
AND a.ksppinm = '_use_adaptive_log_file_sync';
11.2.0.3+ 默认值为 TRUE
。

2. 查看 LGWR Trace 文件

bash
复制
cd $ORACLE_BASE/diag/rdbms/$DB_UNIQUE_NAME/$ORACLE_SID/tracegrep -i "polling\|post" ${ORACLE_SID}_lgwr_*.trc

3. AWR 报告关键指标

  • log file sync 平均等待时间异常高(>10ms)
  • redo synch poll writes / redo synch polls 统计值非零,表明发生过 Polling

四、关闭方法

sql
复制
-- 动态修改(立即生效,但重启后失效)ALTER SYSTEM SET "_use_adaptive_log_file_sync" = FALSE SCOPE=BOTH;-- 或写入 spfile ALTER SYSTEM SET "_use_adaptive_log_file_sync" = FALSE SCOPE=SPFILE;
注意:这是一个 双下划线隐含参数,修改需谨慎并在测试环境验证
。

五、版本修复情况

表格
版本 状态
11.2.0.1/11.2.0.2 默认 FALSE,相对安全
11.2.0.3 默认 TRUE,问题集中爆发
11.2.0.4 / 12.1.0.1+ Bug 修复,但建议仍评估是否需要关闭

总结

关闭 _use_adaptive_log_file_sync 的核心原因是: 该特性在 11.2.0.3 中的实现存在设计缺陷和大量 Bug,其自适应切换机制反而引入了不可预测的性能抖动,特别是 Polling 模式的硬编码 10ms 延迟对 OLTP 系统伤害明显。在 Oracle 官方彻底修复前(11.2.0.4/12c),生产环境(尤其是 11.2.0.3)建议直接关闭,回归稳定的 Post/Wait 模式。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7655508/viewspace-3117569/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-07

  • 博文量
    45
  • 访问量
    90557