2

我发现我可以有两个表并fast refresh on commit materialized view根据这些表连接创建一个。

但是,我想做的是fast refresh on commit根据以下内容制作物化视图:

(1) 一个表联接到
(2) 一个complete refresh on demand物化视图,它本身基于其他视图(即普通视图)。

当我尝试这样做时,我得到了 error ORA-12053,它谈到了from子句中的条目相互依赖,即使它们显然不依赖。

我可以通过将 (2) 替换为普通表来解决此问题,并且只需在该表中进行批量插入而不是刷新物化视图。但是,如果没有必要,我宁愿不这样做。

我将尝试做一个说明错误的最小示例,但是如果您可以告诉我我想做的事情是可能的(最好是通过示例)还是不可能的,那就太好了。

4

2 回答 2

0

按照这些事实来理解错误。

  1. 物化视图根据Fast Refresh on Commit对基表所做的更改逐行刷新。
  2. 通过Refresh Complete on Demand截断目标表并重新插入所有内容来刷新物化视图。
  3. 由于oracle无法跟踪表2上的更改(即刷新完整的物化视图),因此无法刷新上层物化视图。
于 2011-09-19T13:04:58.550 回答
0

嵌套物化视图有一些限制。我在这篇博文中描述了它们。ORA-12053 是不满足嵌套 MV 的第一个限制的结果。使底层 MV 更复杂(连接、聚合或联合所有 MV)是一种解决方案。

问候,
罗布。

于 2011-09-19T21:38:52.480 回答