我在一个服务器上有一个由DB链接创建的物化视图。 Mview上有一个工作正在运行。 (之前使用dbms_refresh.make创建)。
现在我在原始表中创建了3个新字段。 我的疑问是。
1)我是否需要再次删除并创建Mview,如果是,我是否需要再次在主服务器上创建Mview日志 2)在Mview上运行的作业会发生什么,我是否需要创建它?
还有在Mview上创建的视图,所以 - 如果我运行创建或替换视图查询,它会产生任何问题吗?
请指导。
谢谢!
答案 0 :(得分:3)
如果需要在物化视图中包含新列,则需要重新创建物化视图。您必须显式删除视图,因为没有“创建或替换物化视图”语句。
DROP MATERIALIZED VIEW blah;
CREATE MATERIALIZED VIEW blah...
删除/重新创建实体化视图应重新创建刷新作业。不是100%肯定,但您也应该重新创建日志。
而且,如果您不需要在视图中包含新列,那么您真的不需要做任何事情......
答案 1 :(得分:2)
删除/创建实体化视图后,您应该重新编译其他视图,因为它们可能已失效。
您可以使用
检查是否发生了这种情况select *
from user_objects
where status = 'INVALID';
可以使用
重新编译视图alter view the_view compile;
或
exec dbms_utility.compile_schema(user);
这只是重新编译模式中的所有内容。这样做时一定要没有正在运行的工作!