Oracle分区表删除数据,物化视图触发增量刷新操作如何执行?
- 内容介绍
- 文章标签
- 相关推荐
本文共计933个文字,预计阅读时间需要4分钟。
相关专题
物化视图不会自动感知分区删除,必须手动干预
删掉 log_2022 分区后,mv_log_daily 里的数据不会消失,也不会触发任何刷新——哪怕你刚执行过 dbms_mview.refresh('mv_log_daily', 'f')。oracle 不把 drop partition 当作 dml 变更,物化视图日志(mlog$_lzms_log)里一条记录都不会多,所以 fast 刷新根本找不到“哪些行变了”,只能报 ora-12004: refresh fast cannot be used 或悄悄退化成 complete。
删分区后必须先 COMPLETE 刷新,不能硬上 FAST
分区 DDL(包括 DROP、TRUNCATE、EXCHANGE)会让所有依赖该表的物化视图状态强制变为 STALE,这是 Oracle 的元数据强一致性机制,不是异常。此时再调用 REFRESH FAST 必然失败或跳过变更。
本文共计933个文字,预计阅读时间需要4分钟。
相关专题
物化视图不会自动感知分区删除,必须手动干预
删掉 log_2022 分区后,mv_log_daily 里的数据不会消失,也不会触发任何刷新——哪怕你刚执行过 dbms_mview.refresh('mv_log_daily', 'f')。oracle 不把 drop partition 当作 dml 变更,物化视图日志(mlog$_lzms_log)里一条记录都不会多,所以 fast 刷新根本找不到“哪些行变了”,只能报 ora-12004: refresh fast cannot be used 或悄悄退化成 complete。
删分区后必须先 COMPLETE 刷新,不能硬上 FAST
分区 DDL(包括 DROP、TRUNCATE、EXCHANGE)会让所有依赖该表的物化视图状态强制变为 STALE,这是 Oracle 的元数据强一致性机制,不是异常。此时再调用 REFRESH FAST 必然失败或跳过变更。

