本帖最后由 a82740373 于 2011-07-26 17:13:59 编辑

解决方案 »

  1.   

    1,重新编译无效对象
    2,然后再执行SELECT owner, object_name, object_type FROM dba_objects WHERE status<>'VALID' and object_type='VIEW'
      

  2.   

    http://winie.iteye.com/blog/540228
      

  3.   

    多谢!那是不是说如果不再编译的话,我们没有办法知道一个invalid状态的View是否实际上已经valid。也就是当表或者字段改动后,oracle会自动编译相关联的view,把它们表示成invalid状态,而反过来,当表或者字段再次改动后,oracle却没有自动编译相关联的view去把它们表示成valid状态?而非要我们主动去编译才改变呢?我们这边要做的东西是,抽取oracle中的这一刻的有效view,如果不进行编译的话有办法做到么?
      

  4.   

    ORACLE中的对象,当内部相关内容发生修改或者变动的时候,就会显示无效,
    我个人觉得,只有手工执行编译,然后再查询;