【发布时间】:2013-06-28 14:11:19
【问题描述】:
在包含大量列、索引和约束的表上创建物化视图时,我遇到了一个奇怪的问题。
我尝试运行命令:
创建物化视图 mvX 立即并行构建 快速刷新 SELECT * FROM 表名
运行命令后,我得到:“无法从复杂查询中创建快速刷新物化视图” 所以我运行命令: dbms_mview.explain_mview('SELECT * FROM table_name') 并检查了 REFRESH_FAST_AFTER_INSERT 处的 mv_capabilities_table,有消息: "这种类型的 MV 不支持 FROM 列表中的内联视图或子查询"
- 我已经用主键和 rowid 在表上创建了一个成熟的视图日志。
- 我尝试在复制表上创建相同的成熟视图 (CREATE TABLE copy_table_name as select * from table_name) 并且它成功完成(也在这个表上创建了一个日志)
此视图必须是 FAST REFRESH。 我无法解释为什么在复制表上它成功而在原始表上它失败了。 帮忙?
【问题讨论】:
-
听起来这个表其实是一个视图。
-
没有。它不是。确定一张桌子。
-
你最好展示创建 mv 的所有代码,测试功能,然后我认为它是一个表而不是视图。
-
create : CREATE MATERIALIZED VIEW mvX PARALLEL BUILD IMMEDIATE REFRESH FAST AS SELECT * FROM table_name 测试:调用 dbms_mview.explain_mview('SELECT * FROM table_name') 并从 mv_capabilities_table 中选择 *。对象类型:从 user_objects 中选择 object_type,其中 object_name = 'TABLE_NAME'; (返回表)
标签: oracle11g materialized-views