首页 > 解决方案 > ANSI JOINS 和 UNIONS 不允许我在 RTMV 的查询计算上使用 ENABLE

问题描述

我正在尝试创建一个实时物化视图。我的查询包含左外连接。这些左外连接并没有让我使用实时物化视图ENABLE ON QUERY COMPUTATION的功能。我用 that 替换了 joins也不能用. 有谁知道如何通过它?UNIONENABLE ON QUERY COMPUTATION

我的示例查询:

CREATE MATERIALIZED VIEW “MV_XYZ” 
(set of columns names associated with the parent tables used to 
create MV)
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE
ENABLE ON QUERY COMPUTATION
AS select "set of values associated from these 4 tables"
FROM abc_set ds, abc_d d
LEFT OUTER JOIN ab_case dc ON dc.c_id = d.id
LEFT OUTER JOIN abc_lab dl ON dl.l_id = d.id
WHERE ds.id = d.d_id
AND d.ch = 1
AND ds.type = ‘ARC’;

我也有上述 MV 的 MV_log,这样我就可以使用 12.2 版本的 FRESH_MV 提示功能获得实时数据

并且错误我得到 ORA-32361: cannot ENABLE ON QUERY COMPUTATION for the materialized view

标签: oracleoracle12cmaterialized-views

解决方案


一个问题可能是没有为所有基表创建 MV 日志。来自 Oracle 文档:

确保实时物化视图的所有基表上都存在物化视图日志。

ORA-32361当我只使用如下静态列时,我遇到了同样的问题:

CREATE MATERIALIZED VIEW EMP_DEPT_MV
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE
ENABLE ON QUERY COMPUTATION
AS
select e.deptno,e.SAL from emp e LEFT JOIN dept d on d.deptno = e.deptno; 

ORA-32361: cannot ENABLE ON QUERY COMPUTATION for the materialized view

但是当我添加聚合列时,它没有问题

CREATE MATERIALIZED VIEW EMP_DEPT_MV
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE
ENABLE ON QUERY COMPUTATION
AS
select e.deptno,sum(SAL) from emp e LEFT JOIN dept d on d.deptno = e.deptno
group by e.deptno;

有关更多信息,请参阅使用实时物化视图


推荐阅读