ORA-04021 重新创建物化视图

问题描述 投票:0回答:1

我们需要重新创建物化视图,因为它背后的查询略有变化。然而,这个视图使用得非常频繁,以至于我们每次尝试时,无论白天还是晚上,都会得到 ORA-04021:等待锁定对象时发生超时。

是的,我们可以关闭侦听器并停止所有传入连接,但由于某种原因,管理层不想这样做,因为这会影响整个站点。

我的问题是:如果我用新名称创建一个新 MV,然后创建一个指向该新 MV 的公共同义词,对象所有者本身会使用该同义词吗?或者因为模式所有者拥有该对象,所以它不会使用同义词。

我们可以创建一个临时 MV 并通过同义词引用它,然后更正实际的 MV,并重新指向同义词。

或者还有其他的可能性吗?

非常感谢!

oracle materialized-views
1个回答
0
投票

您根本不需要重新创建物化视图。只需在现有视图上调用

dbms_mview.refresh
即可重新填充它。确保您使用原子刷新 (
atomic_refresh=>TRUE
),因此不需要截断。它不应该需要锁定对象。

如果您did最终交换了两个mview(有时这样做是为了在繁忙的环境中使用非原子(截断与删除)刷新),您将无法创建与mview 在同一所有者下。它们都是对象,并且对象必须在模式中唯一命名。您需要将您的 mview 重命名为您的代码未引用的其他名称。

© www.soinside.com 2019 - 2024. All rights reserved.