带主键的物化视图不起作用
materialized view with primary key not work
晚安,
我在创建物化视图类型主键时遇到问题,2 table 有主键。如下: table "cotizacion" 有两个主键,
-fecha
-neumatico
table“table_hija1”有一个主键:“id”
可能是什么问题,非常感谢您的帮助。谢谢,
观测值:
-必须是按需刷新类型
-table_child1,是一个大table,包含50个小table的数据。无法分割
他们分成 50 个小 tables。
CREATE MATERIALIZED VIEW LOG ON Cotizacion
WITH primary key
INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON tabla_hija1
WITH primary key
INCLUDING NEW VALUES;
create materialized view vm_prueba3
refresh fast on demand
with primary key
as
select
c.id id1,
e.id id2,
f.id id3,o.neumatico,
o.idproceso,
o.fecha,
o.precio
from Cotizacion o, tabla_hija1 c, tabla_hija1 e,tabla_hija1 f
where
( o.estado=c.vvalor(+) and c.tipo_filtro=1 )
and
( o.segmento=e.vvalor(+) and e.tipo_filtro=2)
错误:
ORA-12052: 系统无法快速实现视觉效果。VM_PRUEBA3
- 00000 -“无法快速刷新实体化视图 %s.%s”
*原因:定义中缺少某些 table 的 ROWID 或
外部联接的内部 table 对
没有 UNIQUE 约束
加入列。
*操作:指定 FORCE 或 COMPLETE 选项。如果出现这个错误
在创建过程中,物化视图定义可能已经
改变了。请参阅有关物化视图的文档。
"ROWIDs of certain tables were missing in the definition"
根据文档,对于具有按需执行快速刷新的联接的 MV:
每个细节都必须存在实体化视图日志 table 除非
table 支持分区更改跟踪 (PCT)。另外,当一个
物化视图日志是必需的,ROWID 列必须存在
在每个物化视图日志中。
所有详细信息 table 的 rowid 必须出现在物化视图查询定义的 SELECT 列表中。
您需要在实例化视图中包含每个源 table 的 rowid:
CREATE MATERIALIZED VIEW LOG ON Cotizacion
WITH rowid
INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON tabla_hija1
WITH rowid
INCLUDING NEW VALUES;
create materialized view vm_prueba3
refresh fast on demand
with rowid
as
select
c.rowid c_rowid,
e.rowid e_rowid,
f.rowid f_rowid,
o.rowid o_rowid,
c.id id1,
e.id id2,
f.id id3,o.neumatico,
o.idproceso,
o.fecha,
o.precio
from Cotizacion o, tabla_hija1 c, tabla_hija1 e,tabla_hija1 f
where
( o.estado=c.vvalor(+) and c.tipo_filtro=1 )
and
( o.segmento=e.vvalor(+) and e.tipo_filtro=2)
晚安, 我在创建物化视图类型主键时遇到问题,2 table 有主键。如下: table "cotizacion" 有两个主键, -fecha -neumatico
table“table_hija1”有一个主键:“id”
可能是什么问题,非常感谢您的帮助。谢谢,
观测值:
-必须是按需刷新类型
-table_child1,是一个大table,包含50个小table的数据。无法分割
他们分成 50 个小 tables。
CREATE MATERIALIZED VIEW LOG ON Cotizacion
WITH primary key
INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON tabla_hija1
WITH primary key
INCLUDING NEW VALUES;
create materialized view vm_prueba3
refresh fast on demand
with primary key
as
select
c.id id1,
e.id id2,
f.id id3,o.neumatico,
o.idproceso,
o.fecha,
o.precio
from Cotizacion o, tabla_hija1 c, tabla_hija1 e,tabla_hija1 f
where
( o.estado=c.vvalor(+) and c.tipo_filtro=1 )
and
( o.segmento=e.vvalor(+) and e.tipo_filtro=2)
错误:
ORA-12052: 系统无法快速实现视觉效果。VM_PRUEBA3
- 00000 -“无法快速刷新实体化视图 %s.%s”
*原因:定义中缺少某些 table 的 ROWID 或
外部联接的内部 table 对
没有 UNIQUE 约束加入列。
*操作:指定 FORCE 或 COMPLETE 选项。如果出现这个错误
在创建过程中,物化视图定义可能已经
改变了。请参阅有关物化视图的文档。
"ROWIDs of certain tables were missing in the definition"
根据文档,对于具有按需执行快速刷新的联接的 MV:
每个细节都必须存在实体化视图日志 table 除非 table 支持分区更改跟踪 (PCT)。另外,当一个 物化视图日志是必需的,ROWID 列必须存在 在每个物化视图日志中。
所有详细信息 table 的 rowid 必须出现在物化视图查询定义的 SELECT 列表中。
您需要在实例化视图中包含每个源 table 的 rowid:
CREATE MATERIALIZED VIEW LOG ON Cotizacion
WITH rowid
INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON tabla_hija1
WITH rowid
INCLUDING NEW VALUES;
create materialized view vm_prueba3
refresh fast on demand
with rowid
as
select
c.rowid c_rowid,
e.rowid e_rowid,
f.rowid f_rowid,
o.rowid o_rowid,
c.id id1,
e.id id2,
f.id id3,o.neumatico,
o.idproceso,
o.fecha,
o.precio
from Cotizacion o, tabla_hija1 c, tabla_hija1 e,tabla_hija1 f
where
( o.estado=c.vvalor(+) and c.tipo_filtro=1 )
and
( o.segmento=e.vvalor(+) and e.tipo_filtro=2)