2

我在一台服务器上有一个由 DB 链接创建的物化视图。该 Mview 上正在运行一项作业。(之前使用 dbms_refresh.make 创建)。

现在我在原始表中创建了 3 个新字段。我的疑问是。

1)我是否需要再次删除并创建 Mview,如果是,我是否需要再次在主服务器上创建 Mview 日志 2)在 Mview 上运行的作业会发生什么,我需要重新创建它吗?

还有在 Mview 上创建的视图,所以 -- 如果我运行创建或替换视图查询,它会产生任何问题吗?

请指导。

谢谢!

4

2 回答 2

3

如果您需要在物化视图中包含新列,那么是的,您需要重新创建物化视图。您必须显式删除视图,因为没有“创建或替换物化视图”语句。

DROP MATERIALIZED VIEW blah;
CREATE MATERIALIZED VIEW blah...

删除/重新创建物化视图应该重新创建刷新作业。不是 100% 确定的,但您可能也应该重新创建日志。

而且,如果您不需要在视图中包含新列,那么您真的不需要做任何事情......

于 2010-11-18T17:32:01.403 回答
2

在删除/创建物化视图之后,您应该在之后重新编译其他视图,因为它们可能已经失效。

您可以检查是否发生了这种情况

select * 
from user_objects
where status = 'INVALID';

重新编译视图可以用

alter view the_view compile;

或者

exec dbms_utility.compile_schema(user);

这只是重新编译架构中的所有内容。确保在执行此操作时没有正在运行的作业!

于 2010-11-18T07:47:34.447 回答