如何创建物化视图日志_CREATE MATERIALIZED VIEW LOG记录基表DML变更

物化视图日志必须显式创建且绑定基表,ON COMMIT刷新依赖其存在;建日志需指定WITH PRIMARY KEY、INCLUDING NEW VALUES等关键参数,否则FAST刷新失败或降级为COMPLETE。物化视图日志必须在基表上显式创建,否则 ON COMMIT 刷新会失败物化视图日志不是自动产生的,哪怕你只建一个 on commit 刷新的物化视图,也得先手动建日志。没它,refresh 会直接报错 ora-12004: refresh fast cannot be used 或更直白的 ora-12006: a materialized view log already exists on the table(注意这个错误其实是"日志存在但不满足要求",不是"不存在")。关键点:日志绑定的是基表,不是物化视图;一个基表可被多个物化视图共享同一个日志,只要字段需求兼容。建日志前确认基表有主键(WITH PRIMARY KEY 是最常用且推荐的选项)如果物化视图要查 ROWID,日志必须带 WITH ROWID;但 Oracle 12c+ 默认启用 ROWID 跟踪,所以多数情况不用显式写如果物化视图含聚合或 GROUP BY,日志必须包含对应列,且需 INCLUDING NEW VALUES(否则 FAST 刷新会退化成 COMPLETE)CREATE MATERIALIZED VIEW LOG ON 表名的常见参数组合与陷阱参数选错,轻则刷新变慢,重则 FAST 刷新完全不可用。Oracle 对日志结构非常敏感,尤其是涉及 JOIN 或 AGGREGATE 的物化视图。WITH PRIMARY KEY:90% 场景够用;但若基表主键是复合主键,且物化视图只引用其中一部分列,仍可能触发 ORA-12033(无法使用过滤器)INCLUDING NEW VALUES:必须加!尤其当物化视图含 SUM()、COUNT(*) 等聚合函数;漏掉它会导致 FAST 刷新拒绝执行,降级为 COMPLETE不要随便加 SEQUENCE:除非物化视图定义里明确用了 SEQUENCE 关键字(极少场景),否则纯属冗余,还占空间日志建好后,别手动删基表上的索引------MLOG$_xxx 日志表依赖基表主键索引,删了索引可能导致后续 DML 报 ORA-00600 内部错误为什么 ALTER TABLE ADD CONSTRAINT 主键后,物化视图日志不生效?Oracle 不会自动把已有日志升级适配新主键。即使你后来给基表加了主键,之前建的 WITHOUT PRIMARY KEY 日志依然无效------FAST 刷新照样失败。 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西

相关推荐
m0_702036531 小时前
Layui表格渲染如何处理字段名为JSON关键字(如order)的情况
jvm·数据库·python
m0_591364731 小时前
mysql连接查询中包含大表如何优化_采用嵌套循环JOIN优化顺序
jvm·数据库·python
风落无尘1 小时前
《智能重生:从垃圾堆到AI工程师》——第九章 语言与理解
人工智能·python·卷积神经网络
2401_884454151 小时前
golang如何给图片添加水印_golang图片添加水印解析
jvm·数据库·python
hongjianMa1 小时前
【论文阅读】Structured Spectral Reasoning for Frequency-Adaptive Multimodal Recommendation
论文阅读·python·深度学习·推荐系统·多模态推荐
kexnjdcncnxjs1 小时前
如何用SQL统计每组的平均值同时显示原行_OVER子句
jvm·数据库·python
阿坤带你走近大数据1 小时前
DM达梦数据库的介绍
数据库·mysql·oracle·国产信创
CLX05051 小时前
Redis如何防范脑裂导致的数据丢失_配置min-replicas-to-write强制要求可用从节点数
jvm·数据库·python
毋语天2 小时前
从零搭建 RAG 系统:Milvus 向量数据库 + 大模型完整实战指南
数据库·milvus