基于非快速刷新视图的快速刷新物化视图
我发现我可以有两个表,并基于这些已连接的表创建一个fast refresh on commit
materialized view
。基于非快速刷新视图的快速刷新物化视图
我想什么但是做的是让基于以下一个fast refresh on commit
物化视图:
(1)的表连接到它本身是基于其他视图
(2)complete refresh on demand
物化视图(普通观点,就是这样)。
当我尝试这样做时,我得到错误ORA-12053
,它讨论了from
子句中的条目彼此之间存在依赖关系,即使它们明显没有。
我可以通过用一个普通的表替换(2),只是在该表中进行批量插入而不是刷新物化视图来解决此问题。但是,如果没有必要,我宁愿不这样做。
我会尽量在一个说明错误的小例子上工作,但是如果你能给我一个关于我想做什么是可能的(最好是通过一个例子)的想法或者不太可能,那将会很棒。
请按照以下事实了解错误。
- 的
Fast Refresh on Commit
物化视图是基于基表的变更刷新行由行 。 -
Refresh Complete on Demand
物化视图被刷新 截断目标表并重新插入所有内容。 - 上的刷新物化因为 Oracle无法跟踪表2变化视图将是不可能的(即,刷新完整 物化视图。)
(1)表和(2)'complete refresh on demand'物化视图都在物化视图日志上,所以我不确定为什么我无法从物化视图快速刷新,但如果我只是快速刷新截断表并手动重新插入? – Clinton
截断和提交后可以快速刷新,但“截断”不会在目标实例化视图上复制。你只会在物化视图中获得插入。这在嵌套的物化视图中是不允许的,因为可以这么说,很奇怪。它不会反映基表数据。 –
上有嵌套限制物化观点。我在this blogpost中描述了它们。 ORA-12053是不满足嵌套MV的第一个限制的结果。使底层MV更复杂(一个连接,聚合或联合所有MV)是一种解决方案。
Regards,
Rob。
这是一个有趣的问题,请添加例子。 –