讲师中心 微信公众号
AI工具推荐 视频效率加速

为什么Oracle 11g主库Log Switch频繁影响备库同步_通过增大联机重做日志文件大小

秋枫同学_6851

秋枫同学_6851

发布时间:2026-05-18 12:23:33

|

823人浏览过

|

来源于php中文网

原创

增大online redo log文件大小可延长log switch间隔,为checkpoint、DBWR、ARCH、RFS和MRP各环节提供缓冲窗口,降低log file switch (checkpoint incomplete)等待,但须同步增加日志组数量、调优fast_start_mttr_target,并确保备库standby redo log尺寸≥主库最大online日志尺寸且VALID_FOR配置正确。

频繁 log switch 会直接拖慢备库同步节奏,不是因为“切得太勤”本身有问题,而是它暴露并加剧了底层 io 和日志管理瓶颈——特别是当 log file switch (checkpoint incomplete) 等待大量出现时,说明 dbwr 跟不上 lgwr,归档还没传完,新日志就又要覆盖旧的,备库只能干等。

为什么增大 online redo log 文件大小能缓解同步延迟

Log Switch 频繁本质是单个日志组写得太快、撑不住业务压力。比如每 2 分钟切一次,意味着每 2 分钟就要完成:LGWR 写满当前日志 → 触发 checkpoint → DBWR 刷脏块 → ARCH 进程打包归档 → RFS 写入备库 standby redo → MRP 开始应用。任一环节卡住(常见是 DBWR 慢或归档目标响应延迟),就会堆积 active 日志,阻塞后续切换。

增大日志文件大小(例如从 50MB 改为 200MB)不改变单位时间产生的 redo 量,但拉长了单次写满所需时间,相当于给 checkpoint、DBWR、ARCH、RFS、MRP 多出几倍的缓冲窗口。实测中,日志组从 50MB → 200MB,Log Switch 间隔常从 2–3 分钟延长至 8–12 分钟,log file switch (checkpoint incomplete) 等待显著下降。

  • 必须配合增加日志组数量(至少 4 组),否则大文件 + 少组 = 切换仍密集,且 checkpoint 压力集中
  • 不能只改大小不调 fast_start_mttr_target:该参数控制 checkpoint 频率,若设得过小(如 30 秒),系统会强行高频 checkpoint,抵消大日志带来的缓冲效果
  • RAC 环境下,各实例需独立评估日志压力;不能只看 v$log 总体状态,要查 v$log 的 thread# 和 instance_name 关联

主库执行增大 redo log 的安全顺序

Oracle 不允许直接 ALTER DATABASE RESIZE LOGFILE,必须走“新增 + 切换 + 删除”路径。关键点在于确保被删的日志组状态是 inactive,否则会报 ORA-01624 或卡在 clearing 状态。

Switch Modes
Switch Modes

动态切换AI模型以优化成本与性能。当用户发出“eco mode”、“balanced mode”、“smart mode”或“max mode”等模式指令,或使用“/modes status”查询状态及“/modes setup”配置模式时触发。

下载
  • 先确认当前日志组状态:SELECT group#, status, bytes/1024/1024 mb FROM v$log ORDER BY group#;,只对 INACTIVE 组操作
  • 强制切日志并推进 checkpoint:ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT;,反复直到目标组变 INACTIVE
  • 新增大日志组(推荐 200MB 起):ALTER DATABASE ADD LOGFILE GROUP 10 ('/u01/oradata/db/redo10a.log') SIZE 200M;
  • 删除旧小日志组:ALTER DATABASE DROP LOGFILE GROUP 1;(仅限 INACTIVE 状态)
  • 删除后立即验证:SELECT * FROM v$log WHERE status = 'INVALID' 应为空;若有,说明文件被误删或权限异常

备库必须同步调整 standby redo log

standby redo log(SRL)大小必须 ≥ 主库 online redo log 最大尺寸,否则 RFS 进程收到第一个大日志块就写不进 SRL,直接报 ORA-00344 或卡在 WAIT_FOR_LOG,MRP 根本不启动。

  • 查主库最大日志尺寸:SELECT MAX(bytes) FROM v$log;,假设结果是 209715200(200MB)
  • 在备库添加 SRL(注意路径权限和磁盘空间):ALTER DATABASE ADD STANDBY LOGFILE GROUP 20 ('/u01/oradata/db/srl20.log') SIZE 200M;
  • 不能复用主库的 SRL 文件名或路径:备库 SRL 是独立物理文件,哪怕路径相同也需重新创建
  • 添加后立刻验证:SELECT group#, status, bytes/1024/1024 mb FROM v$standby_log;,确认新组状态为 UNASSIGNED,而非 INVALID

容易被忽略的连锁反应点

增大日志后最常翻车的地方,不在增删操作本身,而在配套机制没跟上:

  • LOG_ARCHIVE_DEST_2 的 VALID_FOR 必须含 (ONLINE_LOGFILE,PRIMARY_ROLE):否则 ARCH 进程压根不触发归档传输,增大日志反而让 gap 更隐蔽
  • RMAN 归档删除策略若仍是 APPLIED ON ALL STANDBY,大日志导致归档生成慢、应用更慢,RMAN 可能误删尚未传到备库的归档(尤其 ADG 场景)——务必改成 SHIPPED TO ALL STANDBY
  • 备库 standby_file_management 若为 AUTO,而主库新增了数据文件,备库可能因路径映射失败产生 UNNAMED 文件,MRP 自动 halt,此时增大日志毫无意义
  • 监控不能只盯 v$archived_log.applied:它只反映已应用归档数,要结合 v$managed_standby.sequence# 和 v$archive_gap 才能判断是否真在实时追平

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

3149

2023.06.20

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

2308

2023.07.25

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

1240

2023.08.02

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1198

2023.08.09

c语言random函数用法
c语言random函数用法

c语言random函数用法:1、random.random,随机生成(0,1)之间的浮点数;2、random.randint,随机生成在范围之内的整数,两个参数分别表示上限和下限;3、random.randrange,在指定范围内,按指定基数递增的集合中获得一个随机数;4、random.choice,从序列中随机抽选一个数;5、random.shuffle,随机排序。

1356

2023.09.05

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2138

2023.09.20

c语言get函数的用法
c语言get函数的用法

get函数是一个用于从输入流中获取字符的函数。可以从键盘、文件或其他输入设备中读取字符,并将其存储在指定的变量中。本文介绍了get函数的用法以及一些相关的注意事项。希望这篇文章能够帮助你更好地理解和使用get函数 。

3460

2023.09.20

c数组初始化的方法
c数组初始化的方法

c语言数组初始化的方法有直接赋值法、不完全初始化法、省略数组长度法和二维数组初始化法。详细介绍:1、直接赋值法,这种方法可以直接将数组的值进行初始化;2、不完全初始化法,。这种方法可以在一定程度上节省内存空间;3、省略数组长度法,这种方法可以让编译器自动计算数组的长度;4、二维数组初始化法等等。

15695

2023.09.22

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

0

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn