oracle - ANSI JOINS 和 UNIONS 不允许我在 RTMV 的查询计算上使用 ENABLE
问题描述
我正在尝试创建一个实时物化视图。我的查询包含左外连接。这些左外连接并没有让我使用实时物化视图ENABLE ON QUERY COMPUTATION
的功能。我用 that 替换了 joins也不能用. 有谁知道如何通过它?UNION
ENABLE 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
解决方案
一个问题可能是没有为所有基表创建 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;
有关更多信息,请参阅使用实时物化视图
推荐阅读
- python - Python:将字符串列转换为日期时间列('%d/%m/%YT%H:%M:%S')
- firebase - 如何在 Flutter 中为 Firebase 身份验证构建自定义电子邮件操作处理程序
- python - Python APScheduler 失败:“仅支持 pytz 库中的时区”错误
- angular - 使用 ts-morph 在声明 NgModule 中添加组件
- django - Django从模型中的分区获取数据
- visual-studio - Visual Studio 2019 安装程序一直无法下载离线安装程序包?
- powerbi - 需要准确规格的时间线视觉图
- javascript - 如何通过javascript中的值找到嵌套对象的键?
- c++ - 关于递增迭代器的困惑
- python - PermissionError:[WinError 5] 访问被拒绝:'C:\\Users\\testuser'