物化视图:如何在表数据更改时自动刷新它?

时间:2014-08-18 15:31:20

标签: sql oracle views oracle-sqldeveloper materialized-views

Oracle Materialized视图中是否有一种方法可以在物化视图中使用的表发生更改时自动刷新?我应该使用什么是刷新模式和刷新方法?我应该使用Sql Developer使用哪些选项?

提前谢谢

2 个答案:

答案 0 :(得分:7)

是的,您可以使用ON COMMIT定义物化视图,例如:

CREATE MATERIALIZED VIEW sales_mv
   BUILD IMMEDIATE
   REFRESH FAST ON COMMIT
   AS SELECT t.calendar_year, p.prod_id ... FROM ...

在这种情况下,每次提交后,MV都会刷新,前提是最后一次事务是在主表上完成的。 由于每次提交后都会进行刷新,因此强烈建议您使用FAST REFRESH,而不是COMPLETE,这会持续太长时间。

为了使用FAST REFRESH,您有几个限制和前提条件,请查看Oracle文档:CREATE MATERIALIZED VIEW, FAST Clause了解详细信息。

答案 1 :(得分:0)

我认为没有任何方法可以在制作后立即“自动”复制m.view的更改。但是有一些方法可以按需使用FAST(增量)刷新,您只需要为m.view或m.view组安排一个作业来进行刷新。您还可以使用m.view日志跟踪所有dml,并通过db链接在远程数据库上快速刷新,将其传播到m.view。

如果您需要在更改后立即复制更改,那么我建议使用黄金门或流(如果您不想要许可证GG)。请注意,oracle停止了对支持Golden Gate的流的支持,所以如果你有任何问题,你就可以自己动手了。但无论如何,一旦掌握了它,它就是一个非常可靠的复制工具。