【问题标题】:Why does SQL Developer think there's an error in my materialized views?为什么 SQL Developer 认为我的物化视图中有错误?
【发布时间】:2014-11-01 19:07:44
【问题描述】:

我创建了一些物化视图,Oracle SQL Developer 在每个视图旁边放置了一个红色的小“x”。目前,当我查询它们并在 SQL Plus 中运行以下查询时,它们返回了正确的信息,表明没有错误:

SELECT * FROM USER_SNAPSHOTS

这里的 ERROR 列为有问题的物化视图返回 0。

有谁知道为什么 SQL Developer 认为有错误?还有其他地方可以查吗?

更新

听从 Patrick 的建议,我运行了以下查询:

SELECT * FROM ALL_MVIEWS

所讨论的每个视图的 COMPILE_STATE 都是“NEEDS_COMPILE”。这是什么意思?为什么需要重新编译?基础表均未更改。

【问题讨论】:

  • 我会用视图 all_mviews 确认您所指的物化视图的 compile_state 列。
  • 感谢您的建议。请查看更新。
  • 在物化视图的编译过程中出现无法解释的非抛出错误?如果您在当前会话中创建了这些对象,则可以查询视图 user_errors。

标签: oracle views oracle-sqldeveloper materialized-views


【解决方案1】:

出于某种原因,只需刷新物化视图即可使“错误”消失。所以不是真正的错误,更多的是提醒数据不是最新的。如果表结构实际上没有改变,我想你可以忽略它......

【讨论】:

    【解决方案2】:

    要修复由于 NEEDS_COMPILE 导致的视图上的“红色”十字图标(实际上是红色背景上的白色十字),请运行 ALTER VIEW 命令。

    ALTER VIEW MY_VIEW COMPILE;
    

    查看关于 ALTER VIEW 的 ORACLE SQL 参考。

    http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4004.htm

    【讨论】:

    • 问题是关于物化视图,但感谢提示,它对我有用 - ALTER materialized VIEW MY_VIEW COMPILE;
    【解决方案3】:

    这可能是由物化视图所基于的基础表的修改引起的。例如:增加实体化视图中包含的表中列的最大大小。

    要刷新物化视图,您可以执行以下操作:

    BEGIN
    DBMS_SNAPSHOT.REFRESH('Name of materialized view');
    END;
    

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 2011-03-07
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      相关资源
      最近更新 更多