_use_adaptive_log_file_sync 控制,允许 LGWR 在两种模式间自适应切换:| 模式 | 机制 | 特点 |
|---|---|---|
| Post/Wait | LGWR 写入完成后 主动通知前台进程 | 响应快、延迟低,但 LGWR CPU 负担较重 |
| Polling | 前台进程 定时轮询检查写入进度 | 减轻 LGWR 负担,但前台进程等待时间不可控 |
log file sync 等待时间异常飙升
。MOS 上记录的相关 Bug 包括:log file sync 平均等待时间从 1-2ms 飙升到 10ms 以上
。实际案例:有客户将该参数设为 FALSE 后,log file sync平均等待时间从 10ms 下降到 1-2ms 。
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';TRUE
。cd $ORACLE_BASE/diag/rdbms/$DB_UNIQUE_NAME/$ORACLE_SID/tracegrep -i "polling\|post" ${ORACLE_SID}_lgwr_*.trclog file sync 平均等待时间异常高(>10ms)redo synch poll writes /
redo synch polls 统计值非零,表明发生过 Polling
-- 动态修改(立即生效,但重启后失效)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/ ,如需转载,请注明出处,否则将追究法律责任。