Oracle主库更新后从库未同步,如何通过视图日志检查刷新模式问题?

2026-05-03 06:560阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计757个文字,预计阅读时间需要4分钟。

Oracle主库更新后从库未同步,如何通过视图日志检查刷新模式问题?

相关专题

物化视图在主库更新后从库没同步,根本原因不是“刷新没触发”,而是物化视图日志(materialized view log)本身在data guard备库上不可用——oracle默认不复制物化视图日志表,且备库是只读的,无法写入日志。

物化视图日志不会被DG自动同步

这是最容易被忽略的前提:DG只传输归档日志和在线重做日志,不传输用户创建的物化视图日志表(如 MLOG$_sales)。这些日志表存在于主库的用户schema下,属于普通堆表,不在DG保护范围内。

  • 你在主库执行 CREATE MATERIALIZED VIEW LOG ON t1,只会在主库建一张 MLOG$_T1 表;从库上完全不存在这张表
  • 即使主库对 t1 做了DML,日志记录只写入主库的 MLOG$_T1,从库既看不到、也写不了
  • 所以从库上的物化视图(哪怕定义相同)根本无法做快速刷新(FAST),DBA_MVIEW_ANALYSIS.FAST_REFRESHABLE 必然为 NO

从库上物化视图只能用COMPLETE刷新模式

如果你硬要在备库建一个同名物化视图,它只能走 COMPLETE 刷新路径,也就是全量重查主表。

阅读全文
标签:Oracle

本文共计757个文字,预计阅读时间需要4分钟。

Oracle主库更新后从库未同步,如何通过视图日志检查刷新模式问题?

相关专题

物化视图在主库更新后从库没同步,根本原因不是“刷新没触发”,而是物化视图日志(materialized view log)本身在data guard备库上不可用——oracle默认不复制物化视图日志表,且备库是只读的,无法写入日志。

物化视图日志不会被DG自动同步

这是最容易被忽略的前提:DG只传输归档日志和在线重做日志,不传输用户创建的物化视图日志表(如 MLOG$_sales)。这些日志表存在于主库的用户schema下,属于普通堆表,不在DG保护范围内。

  • 你在主库执行 CREATE MATERIALIZED VIEW LOG ON t1,只会在主库建一张 MLOG$_T1 表;从库上完全不存在这张表
  • 即使主库对 t1 做了DML,日志记录只写入主库的 MLOG$_T1,从库既看不到、也写不了
  • 所以从库上的物化视图(哪怕定义相同)根本无法做快速刷新(FAST),DBA_MVIEW_ANALYSIS.FAST_REFRESHABLE 必然为 NO

从库上物化视图只能用COMPLETE刷新模式

如果你硬要在备库建一个同名物化视图,它只能走 COMPLETE 刷新路径,也就是全量重查主表。

阅读全文
标签:Oracle