无法使用“Refresh Fast On commit”在远程数据库上创建物化视图

问题描述

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

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

解决方法

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