【问题标题】:Creating a Materialized View with Fast Refrese on Oracle 11g在 Oracle 11g 上使用快速刷新创建物化视图
【发布时间】: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 列表中的内联视图或子查询"

  1. 我已经用主键和 rowid 在表上创建了一个成熟的视图日志。
  2. 我尝试在复制表上创建相同的成熟视图 (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


【解决方案1】:

表中的一列是否可能是计算/虚拟列?如果有,那么我会调查在这种情况下它可能不起作用的可能性。这是我能想到的唯一原因,为什么 MV Capabilities 在你的情况下会出现这样的错误。

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 2021-11-18
    • 1970-01-01
    • 2015-06-13
    • 2021-11-06
    • 2011-10-20
    • 2016-12-11
    • 1970-01-01
    • 2013-05-04
    相关资源
    最近更新 更多