4

我正在尝试创建将在 DB1 上每 6 小时运行一次的物化视图,并从 DB2 表中复制数据。我在 DB2 远程表上创建了 MLOG$_REMOTE_TABLE1。

我正在使用 Oracle 11g(ps oracle 12g 执行此脚本时没有问题)

在下面执行此脚本时,我收到错误:

CREATE MATERIALIZED VIEW REPL_TABLE1
REFRESH FORCE ON DEMAND
START WITH SYSDATE NEXT SYSDATE + 6/24
ENABLE QUERY REWRITE
AS
SELECT * FROM REMOTE_TABLE1_SYN;

ORA-30372: 细粒度访问策略与物化视图冲突

能否请您告诉我为什么我在 11g 上而不是在 12g 上出现此问题(这是 11g 的错误)吗?我该如何解决?

4

2 回答 2

7

我通过使用找到了解决方案

REFRESH FORCE ON DEMAND WITH ROWID USING TRUSTED CONSTRAINTS

就我而言,我有一张带 aprox 的桌子。100 条记录,这是一个小表,所以我可以使用 ROWID。但是在大表上使用ROWID并不是一个好主意,因为它会在整个表中搜索行,并且表的复制会花费很长时间。

于 2017-08-04T07:19:56.993 回答
3

您所需要的只是:使用可信约束按需刷新。

这样,您的查询可以忽略 Oracle VPD 施加的限制。

于 2019-08-13T21:35:08.973 回答