物化视图错误ORA-12004虽然REFRESH完成

时间:2016-01-07 10:34:15

标签: oracle materialized-views

当我今天开始使用SQL-Developer时,我注意到我的物化视图出错了。 错误是众所周知的ORA-12004:快速刷新不能使用......

当然,我已经使用谷歌,我得出结论,快速刷新需要日志表,我的错误消息也说无法访问日志表。 但是:我没有使用快速刷新:/

问题可能是,我的选择有时不包含数据?例如,不适用于周六和周日。

我是如何创建mat视图的:

CREATE MATERIALIZED VIEW Matv_test_1
BUILD IMMEDIATE 
REFRESH COMPLETE
NEXT (trunc(sysdate) + 4/24) + 1
AS
select...

那么可能是什么问题?

另外两件事: 1)默认启用日志记录吗?或者如何在创建视图时启用日志记录? 2)NEXT子句是否会影响刷新类型,还是这两个选项完全不同?例如:在我的代码中,是仅在设定的时间进行刷新,还是在我选择的表中更改后进行刷新?如果是最后一个,那么在设定的时间做了什么?

如果我使用

NEVER REFRESH
NEXT (trunc(sysdate) + 4/24) + 1

是刷新还是实现?

感谢。

1 个答案:

答案 0 :(得分:0)

  1. 必须创建日志才能快速刷新。默认情况下不启用它。也许,我们必须为mv中引用的表创建日志。我们不需要在创建mv时指定使用特定日志。 Oracle内部负责使用我们为表创建的日志。如果日志未启用,则会产生错误,并且我们正在创建一个mv,其日志就像提交,快速刷新等先决条件一样。

  2. Next子句指定何时刷新mv。它会相应地创建一个oracle作业来执行刷新。在您的情况下,如果指定构建立即刷新将立即发生,并且下一次刷新发生在您在下一个子句中指定的时间间隔

  3. 如果从未指定刷新,我们不需要使用next子句,也许我会遇到并且错误我认为