0

0

如何分析Data Guard主备库延迟的根本原因_Network Lag与Apply Lag的深入剖析

P粉602998670

P粉602998670

发布时间:2026-03-17 12:09:13

|

971人浏览过

|

来源于php中文网

原创

transport lag 和 apply lag 可能是“假高”:需检查 v$dataguard_stats 中 time_computed、datum_time 与系统时间是否同步;RFS 状态 IDLE 且 transport lag 非零说明传输完成;MRP0 状态 WAIT_FOR_LOG 表示等待联机日志归档;备库 RFS 已收全日志但未应用,因 ADG 默认不实时应用 current logfile,需配置并启用 standby redo log 才支持 real-time apply。

怎么看 transport lag 和 apply lag 到底是不是真延迟

很多 dba 一看到 v$dataguard_statsapply lag 是几小时,就急着去重启 mrp 或切日志,结果发现只是“假高”。关键要看三样东西是否同步:time_computeddatum_time 和当前系统时间。如果 time_computed 是两小时前的值,那 apply lag 再大也没意义——它根本没刷新。

  • transport lag 非零,但 RFS 进程状态是 IDLE:说明归档没卡在传输层,主库已发完,备库也收全了
  • apply lag 很大,但 MRP0 状态是 WAIT_FOR_LOG:不是没日志,而是它在等“当前联机日志”被归档后才能继续——这就是典型的 not apply current logfile
  • v$managed_standby 时重点盯 SEQUENCE#:主库当前 sequence# 是 14720,备库 MRP0 卡在 14714,但 RFS 已收到 14720 → 日志已到,只是没应用

为什么 MRP 不主动应用 current logfile

ADG 默认不会实时拉取并应用主库正在写的联机日志(current online log),除非你明确启用了实时应用(real-time apply)。这个行为不是 bug,是设计使然——它依赖 standby redo log(SRL)是否存在、大小是否匹配、以及是否被正确启用。

  • 没配 SRL,或 SRL 组数/大小
  • SRL 存在但状态是 UNASSIGNED:检查 v$standby_log,常见原因是备库控制文件没识别到 SRL,需执行 alter database recover managed standby database using current logfile disconnect
  • 启用了 real-time apply,但 log_archive_dest_n 中漏了 SYNCLGWR:传输模式不支持实时捕获,再怎么配 SRL 也没用

单线程 MRP 应用跟不上怎么办

默认的 MRP 是单进程串行回放,遇到大批量 DML(比如夜间批量导入)、索引重建或大事务,很容易积压。这不是配置错,是能力瓶颈。

  • Oracle 12c+ 支持并行恢复:用 alter system set parallel_execution_message_size=8192 + 启动时加 parallel_recovery_target=16 参数(需重启实例)
  • 更稳妥的做法是调大 _maximum_parallel_apply_servers(隐含参数,慎用),但优先检查是否有大事务阻塞:查 v$logstdby_processv$logstdby_transaction
  • 别迷信“越多越好”:并行数超过 CPU 核心数反而引发 latch 争用,建议从 4 起步,观察 DB timelog file sync 等待事件变化

最容易被忽略的磁盘与文件陷阱

MRP 报错停摆,alert 日志里找不到明显 ORA- 错误,但 v$recover_file 显示 FILE MISSINGUNNAMED00xxx:八成是主库新增了数据文件,备库没跟上。

皮卡智能
皮卡智能

AI驱动高效视觉设计平台

下载
  • STANDBY_FILE_MANAGEMENT=AUTO 时,备库会尝试自动建文件,但若 DB_FILE_NAME_CONVERT 路径错误,或目标目录磁盘满/权限不足,就会生成 UNNAMED 占位符,MRP 直接卡死
  • v$datafilev$archived_logname 字段,确认路径是否真实存在;用 ls -l 看 $ORACLE_HOME/dbs 下的 UNNAMED 文件时间戳,基本就是出问题的那个 SCN 点
  • 临时解法:手动在备库创建对应路径 + 文件,再执行 alter database create datafile '/path/to/UNNAMED00xxx' as '/real/path/file01.dbf',之后 MRP 自动续跑

真正难处理的不是延迟本身,而是延迟背后混杂了传输、应用、文件管理、资源限制四层问题。一次 alter system switch logfile 能让数据“突然同步”,只能说明它原本就卡在日志边界上——而那个边界,往往是你没配 SRL、没开 real-time、或者某张表空间悄悄长出了第 17 个数据文件。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

570

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

441

2024.03.13

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

806

2023.08.10

alert怎么实现换行
alert怎么实现换行

alert通过使用br标签来实现换行。更多关于alert相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

501

2023.11.07

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

271

2023.08.16

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

221

2023.09.15

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

248

2023.09.18

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

464

2023.09.19

c++ 字符处理
c++ 字符处理

本专题整合了c++字符处理教程、字符串处理函数相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.17

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号