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

7

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

提前感谢您。

2个回答

9

是的,您可以使用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以了解详情。

如果出现ORA-23413:表没有物化视图日志的情况,请运行:CREATE MATERIALIZED VIEW LOG ON MY_TABLE; - Alfredo M

0

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

如果您需要在更改后立即复制更改,则建议使用Golden Gate或Streams(如果您不想许可GG)。请注意,Oracle已停止支持Streams,而支持Golden Gate,因此如果您遇到任何问题,您将独自解决。但无论如何,一旦掌握了它,它就是一个非常可靠的复制工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接