Oracle19c Data Guard升级补丁后为何不同步?

浅枫小哥_2422

浅枫小哥_2422

2026-08-22

320人浏览

原创

oracle 19c data guard升级补丁后不同步,主因是主备库补丁级别未对齐、valid_for参数缺失standby_role、standby_file_management被重置为manual,或旧归档校验失败导致mrp0静默挂起。

oracle19c data guard升级补丁后为何不同步?

Oracle 19c Data Guard 升级补丁后不同步,大概率不是补丁本身“坏了”,而是补丁触发了原有配置的兼容性问题或状态不一致——比如主备库补丁级别不对齐、LOG_ARCHIVE_DEST_2中VALID_FOR失效、或standby_file_management在补丁重启后被重置为MANUAL。

补丁升级后主备库版本/补丁号不一致

19c 的 RU(Release Update)和 RUR(Release Update Revision)要求主备库必须严格对齐。哪怕主库打了 April 2026 RU,备库只打了 January 2026 RU,MRP0 就会静默挂起,不报错但不再推进 SEQUENCE#。

  • 查主库:SELECT BANNER_FULL FROM V$VERSION;
  • 查备库:同上,对比输出中 “Release” 和 “RU” 字段是否完全一致
  • 特别注意:OPATCH LSINVENTORY 输出里 Database Release Update 行必须相同;仅 Oracle Database 19c 版本号一致不够
  • 补丁不一致时,v$dataguard_stats 中 apply_lag 会持续增长,v$managed_standby 中 MRP0 状态可能为 IDLE 或 WAIT_FOR_LOG,但无明显错误日志

VALID_FOR 参数在补丁后失效导致传输中断

19c 某些 RU(如 19.21+)强化了 VALID_FOR 校验逻辑。如果主库是 RAC,且 LOG_ARCHIVE_DEST_2 中只写了 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE),而没显式包含 STANDBY_ROLE,补丁升级后 RFS 进程可能拒绝接收日志,v$archive_gap 为空但同步停滞。

Market Oracle
Market Oracle

金融事件影响分析器 — 获取突发新闻,追踪金属/石油/加密货币/股票价格,预测短中长期市场连锁反应

下载
  • 查主库当前配置:SHOW PARAMETER log_archive_dest_2
  • 正确写法应为:VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)(STANDBY_LOGFILES,STANDBY_ROLE)
  • 若缺失 STANDBY_ROLE 部分,执行:ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=stdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=stdb' SCOPE=BOTH;
  • 改完立刻查备库 v$managed_standby,确认 RFS 进程 STATUS 是否变为 IDLE(表示已开始接收)

standby_file_management 被重置为 MANUAL

某些 19c 补丁(尤其是涉及 ASM 或 PDB 的 RUR)会在实例重启时将 standby_file_management 从 AUTO 重置为 MANUAL。一旦主库新增数据文件或 PDB,备库不会自动创建对应文件,MRP0 遇到 UNNAMED 文件就卡住,v$logstdby 或 v$managed_standby 不报错但 SEQUENCE# 冻结。

  • 查备库当前值:SHOW PARAMETER standby_file_management
  • 若返回 MANUAL,立即执行:ALTER SYSTEM SET standby_file_management = AUTO SCOPE=BOTH;
  • 然后检查 v$datafile,看是否存在 UNNAMED 文件名;有则需手动处理:ALTER DATABASE CREATE DATAFILE '/u01/app/oracle/product/19c/dbs/UNNAMED00026' AS '+DATADG1/ORCL/DATAFILE/users.256.123456789';
  • 注意:路径必须与主库 v$datafile 中对应文件的 NAME 字段完全一致(包括 ASM 别名),否则仍会失败

补丁后归档日志校验更严格,旧归档被拒收

19c 后期 RU 引入更严格的归档日志完整性校验。如果备库磁盘上有补丁前传来的归档(尤其经 scp 手动拷贝过),补丁升级后 MRP0 可能因校验失败直接跳过该日志,也不报 ORA 错误,只在 alert.log 末尾留一句 skipping archived log ... checksum mismatch。

  • 查备库 alert.log 最后 50 行:tail -50 $ORACLE_BASE/diag/rdbms/*/alert/*.log | grep -i "skip\|checksum"
  • 若发现跳过记录,用 LIST ARCHIVELOG 确认缺口,再从主库重新传输对应归档(不要复用旧文件)
  • 传输后必须手动注册:ALTER DATABASE REGISTER PHYSICAL LOGFILE '<code>full_path_to_arch';,绕过校验
  • 别依赖 RECOVER AUTOMATIC —— 它默认跳过校验失败的日志,手动注册才能强制加载

补丁升级后的不同步,很少是单一原因;往往多个配置项同时“松动”,比如 VALID_FOR 失效导致 RFS 停收,叠加 standby_file_management 被重置,再遇上旧归档校验失败,三者叠加会让问题看起来像“完全卡死”。排查时别只盯一个点,优先跑一遍这四个检查项,顺序不能乱——先版本,再传输参数,再文件管理,最后归档校验。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle

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

相关专题

更多
oracle清空表数据
oracle清空表数据

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

2023.08.16

841

5

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

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

2023.09.15

2313

5

oracle怎么分页
oracle怎么分页

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

2023.09.18

2330

5

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

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

2023.09.19

1369

3

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2023.09.19

1933

7

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

2023.09.19

2509

4

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4129

19

oracle通配符有哪些
oracle通配符有哪些

oracle通配符有“%”、“_”、“[]”和“[^]"。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.08

237

5

oracle四舍五入怎么操作
oracle四舍五入怎么操作

oracle四舍五入操作可以使用ROUND函数来实现,其语法为“ROUND(number, decimal_places)”,其中,number是要进行四舍五入的数值,decimal_places是指定的小数位数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.14

646

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程