首页 > 解决方案 > 无法使用“提交时快速刷新”在远程数据库上创建物化视图

问题描述

我在 database1 中有一个表 tab1,我在其上创建了物化视图日志。现在我的要求是在database2中创建一个具有实时数据的物化视图,这样一旦数据提交到我的tab1中,它就应该反映在我的mview中。为此,我尝试使用“提交时快速刷新”选项在 database2 中创建 mview,但出现以下错误:ORA-12054:无法为物化视图设置 ON COMMIT 刷新属性

Q1.) 是否根本不可能使用 on commit 选项在远程数据库中创建 mview?Q2.) 如果不是,那为什么?如果是,如何?Q3.) 当 db 链接断开时会发生什么?

标签: materialized-viewsoracle19c

解决方案


  1. 不可能有一个on commit引用远程对象的物化视图。这是记录在案的限制之一。
  2. 从实现的角度来看,允许物化视图在引用远程对象的同时进行提交刷新是非常具有挑战性的。物化视图通常从远程数据库中提取数据。在这种情况下,远程数据库上的提交进程必须通知本地数据库正在提交更改,这可能需要本地数据库上的新进程来监听这些通知并启动刷新。这也往往会使本地数据库上的提交变得非常缓慢。这意味着如果数据库链接断开,您将无法在本地数据库上提交,这将对可靠性造成重大打击。数据库之间的数据同步复制会在性能和可靠性方面付出巨大的代价,而这几乎是不值得的。
  3. 您将无法在本地数据库上提交更改。因此,如果远程数据库关闭,您的本地数据库将在功能上无法使用。

推荐阅读