Oracle物化视图刷新方式on commit 问题

SQL> CREATE Materialized View q
2 REFRESH Force
3 on commit
4 NEXT SYSDATE + 5/(24*60)
5 AS
6 select nvl(a.n1,b.n1) as n1,nvl(a.n2,b.n2) as n2,nvl(n3,0) as n3,nvl(n4,0)a
s n4,(nvl(n4,0)-nvl(n3,0)) as n5 from a full join b on a.n1=b.n1 and a.n2=b.n2;

select nvl(a.n1,b.n1) as n1,nvl(a.n2,b.n2) as n2,nvl(n3,0) as n3,nvl(n4,0)as n4,
(nvl(n4,0)-nvl(n3,0)) as n5 from a full join b on a.n1=b.n1 and a.n2=b.n2

*
ERROR at line 6:
ORA-12051: ON COMMIT attribute is incompatible with other options
哦 谢谢 我是初学者 那你是上哪找的 是Oracle 官网吗 还是 Oracle 帮助 文档

刚看了一下10g的快速刷新限制条件,明确说明了包含分析函数的物化视图是无法快速刷新的:

General Restrictions on Fast Refresh
The defining query of the materialized view is restricted as follows:

The materialized view must not contain references to non-repeating expressions like SYSDATE and ROWNUM.

The materialized view must not contain references to RAW or LONG RAW data types.

It cannot contain a SELECT list subquery.

It cannot contain analytical functions (for example, RANK) in the SELECT clause.

It cannot contain a MODEL clause.

It cannot contain a HAVING clause with a subquery.

It cannot contain nested queries that have ANY, ALL, or NOT EXISTS.

It cannot contain a [START WITH …] CONNECT BY clause.

It cannot contain multiple detail tables at different sites.

On-commit materialized view cannot have remote detail tables.

Nested materialized views must have a join or aggregate.
温馨提示:内容为网友见解,仅供参考
无其他回答

Oracle物化视图刷新方式on commit 问题
刚看了一下10g的快速刷新限制条件,明确说明了包含分析函数的物化视图是无法快速刷新的:General Restrictions on Fast Refresh The defining query of the materialized view is restricted as follows:The materialized view must not contain references to non-repeating expressions like SYSDATE and ROWNUM....

ORA-12054: 无法为实体化视图设置 ON COMMIT 刷新属性
经查,我这段sql错误原因是“物化视图日志没有基于rowid;物化视图引用的字段没有包含所有关联表的rowid”。修改sql为:CREATE MATERIALIZED VIEW LOG ON A WITH ROWID ;CREATE MATERIALIZED VIEW LOG ON B WITH ROWID ;CREATE MATERIALIZED VIEW MV_TEST BUILD IMMEDIATE REFRESH FAST ON COMMIT AS SELEC...

oracle数据库 建立物化视图,提高查询效率
物化视图有两种刷新模式:on demand和on commit。on demand仅在需要时刷新,保证数据一致性;on commit则在事务提交后立即刷新,可能导致操作速度变慢。刷新方法有complete(完全刷新,删除所有记录后重建)、fast(增量刷新,仅更新更改)和force(自动判断刷新方式)。物化视图支持查询重写,即在可能的情况下...

物化视图no demand和no commit的区别
ON COMMIT 是说,一旦基表有了 COMMIT ,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。2 、ON DEMAND 物化视图 物化视图的创建本身是很复杂和需要优化参数设置的,特别是针对大型生产数据库系统 而言。但 Oracle 允许以这种最简单的,类似于普通视图的方式来做,所以不可避免的会涉 ...

Oracle设置物化视图的自动刷新
物化视图建立的时候可以定义刷新方式,一般有: refresh fast 和 refresh complete之分,前者是只更新主表中变化的记录(主表必须建立materialized view log),而后者是把MV里面的数据全部更新。此外,更新方式还可以有:on demand, on commit, on force之分. on commit是及时更新。其实用户创建materialized...

oracle物化视图不会自动更新是怎么回事
首先要确保你建的物化视图刷新方式是on demand,还是on commit;1、on demand 顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图;这是需要手动刷新的。2、on commit 提交触发,一旦基表有了commit,即事务提交,则立刻刷新,立刻更新物化视图。

Oracle物化视图-看这一篇就可以了
物化视图刷新有多种方式,包括`FAST`、`COMPLETE`和`FORCE`。其中`FAST`刷新仅更新自上次刷新后发生变化的数据;`COMPLETE`刷新整个物化视图;`FORCE`根据具体情况选择`FAST`或`COMPLETE`。物化视图的刷新时间可以设定为`ON DEMAND`(需要时刷新)、`ON COMMIT`(提交后刷新)或根据特定时间间隔进行定时...

如何查看物化视图刷新了多少数据
ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。创建物化视图时未作指定,则Oracle按ON DEMAND模式来创建。但怎么更新?或者...

物化视图创建物化视图
3. **刷新策略**:物化视图的刷新方式分为On Demand(按需刷新)和On Commit(提交时刷新)。On Demand允许用户手动或定时刷新,而On Commit则在基表DML操作完成后自动进行。刷新方式有Fast、Complete、Force和Never,其中Fast为增量刷新,Complete则全面刷新,Force会自动判断刷新方式。4. **顺序和日志*...

complete的物化视图的基表为什么必须要有主键
ON COMMIT 说旦基表 COMMIT 即事务提交则立刻刷新立刻更新物化视图 使数据基表致 二 、 ON DEMAND 物化视图 物化视图创建本身复杂需要优化参数设置特别针型产数据库系统 言 Oracle 允许种简单类似于普通视图式做所避免涉 及默认值问题说 Oracle 给物化视图重要定义参数默认值处理我需要特 别注意 物化视...

相似回答