【发布时间】:2021-05-31 20:10:50
【问题描述】:
我正在尝试在 Oracle 中创建一个 mview。这将是我每天运行的报告,所以我只需要在执行前按需更新它。
CREATE MATERIALIZED VIEW mv_test
REFRESH
ON DEMAND
AS
SELECT
zzcode,
COUNT(1) c
FROM
cdc.uap_zufi_t_dca_place@rbip
GROUP BY
zzcode;
BEGIN
dbms_snapshot.refresh('mv_test', 'f');
END;
但是,出现以下错误:
ORA-06512:在第 2 行 23413. 00000 - “表“%s”。“%s”没有物化视图日志” *原因:主表无法进行快速刷新 不包含物化视图日志。 *操作:使用 CREATE MATERIALIZED VIEW LOG 命令创建一个 主表上的物化视图日志。
【问题讨论】:
-
错误信息的哪一部分让您感到困惑?它不仅告诉您问题所在,还提供解决问题所需的操作
-
试试
refresh on demand complete -
这个查询返回什么
select refresh_mode, refresh_method from all_mviews where mview_name = 'MV_TEST'? -
您需要在 mv 引用的表上创建 MATERIALIZED VIEW LOG,而不是在 mv 本身上。在您的情况下,这可能在 cdc.uap_zufi_t_dca_place@rbip
-
我猜您需要登录到该源数据库才能创建该日志(或让具有适当权限的人为您执行此操作)。恐怕我不知道当源表在另一个数据库中时是否可以在一个数据库中创建一个 MV - 但我猜如果你阅读 Oracle 文档,它可能会告诉你。无论如何,如果您查看文档可能会是一个好主意