Oracle11g 在Oracle 11g上使用Fast Refrese创建物化视图

Oracle11g 在Oracle 11g上使用Fast Refrese创建物化视图,oracle11g,materialized-views,Oracle11g,Materialized Views,在一个包含大量列、索引和约束的表上创建物化视图时,我遇到了一个奇怪的问题 我尝试运行命令: 创建物化视图mvX 并行生成立即 刷新快如 从表名称中选择* 运行我得到的命令后:“无法从复杂查询创建快速刷新物化视图” 所以我运行命令: dbms_mview.explain_mview('SELECT*FROM table_name')) 并在REFRESH\u FAST\u检查mv\u capabilities\u表插入后,出现以下消息: “此类型不支持列表中的内联视图或子查询” 我在表上创建了一个

在一个包含大量列、索引和约束的表上创建物化视图时,我遇到了一个奇怪的问题

我尝试运行命令:

创建物化视图mvX 并行生成立即 刷新快如 从表名称中选择*

运行我得到的命令后:“无法从复杂查询创建快速刷新物化视图” 所以我运行命令: dbms_mview.explain_mview('SELECT*FROM table_name')) 并在REFRESH\u FAST\u检查mv\u capabilities\u表插入后,出现以下消息: “此类型不支持列表中的内联视图或子查询”

  • 我在表上创建了一个带有主键和rowid的Materialized视图日志
  • 我试图在复制表上创建相同的Materialized视图 (创建表格副本表格名称作为从表格名称中选择*) 并成功完成(也在此表上创建了日志)
  • 此视图必须快速刷新。 我无法解释为什么在复制表上它成功了,而在原始表上它失败了。
    帮助?

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

    听起来这个表实际上是一个视图。否。不是。定义一个表。你最好显示创建mv所用的所有代码,测试功能,然后显示它是一个表而不是一个视图。创建:创建物化视图mvX并行构建立即刷新快如选择*从表\u名称测试:调用dbms\u mview。解释\u mview('SELECT*FROM table\u name'))并从mv_能力_表中选择*。对象类型:从用户对象中选择对象类型,其中对象名称='表名称';(返回表)