百度了一下,有一个大佬是这样说的:
在PL/SQL中查询数据库视图时总是报告“ora-04063:view view_test has errors”的错误:
Oracle视图非常强大的功能之一在于其可以创建一个带有错误的视图。比如说视图里的字段在基表里不存在,该视图仍然可以创建成功,但是非法的且无法执行。当基表里加入了该字段,或者说某个字段修改成视图里的该字段名称,那么视图马上就可以成为合法的。
例子:
  创建基表: create table v_test (name varchar2(32),age number(12));
  创建带错误的视图:
   create force view view_test as select name,age,address from v_test;(注意加上force选项)
  由于address字段在v_test里不存在,所以会报warning: View created with compilation errors的警告,而且执行select * from view_test;时会报“ORA-04063: view "SCOTT.VIEW_TEST" 有错误”的异常。
但是如果在v_test里加上address字段,那么视图就会合法。
对基表进行修改:
 alter table v_test add (address varchar2(128));

现在再执行select * from view_test;就会执行成功了。

 
还有一个大佬是这样解释的:

这个错误发生的原因有两种情况:

1、一种是创建的视图本身有误,但是通过force等命令强制创建成功了,比如视图本身包含基表中不存在的列(或者是基于不存在的列使用了分析函数创造的列)。

解决方案: 
最好不要用强制方法创建视图,保证所用的列都是真实存在的!

2、视图的基表,或者视图基于其创建的视图被删除了。Oracle中的视图可能会先被创建了,然后其基表或者视图被删除了,就会导致当前视图产生错误。比如为了避免使用占空间较多的临时表,我使用了很多视图,然后通过视图来实现复杂的取数,但我在删除视图的过程中,是按创建视图的顺序从前往后删除的。先删除的最后一个视图生成时用到过的视图,这就会导致最后一个生成的视图是基于不存在的视图产生的,从而是个错误视图,不能查询。

解决方案: 
所以在删除视图时,要非常注意删除的顺序,最后需要用到的数据,最好是从视图里复制到有物理存储空间的表中,再逆序删除所有的临时视图。

oracle错误分析:ora-04063:view view_test has errors的更多相关文章

  1. Oracle sqlnet.ora配置

    Oracle sqlnet.ora配置 sqlnet.ora的作用(官网指出的)   www.2cto.com 1.限制客户端访问(如指定客户端域为不允许访问) 2.指定命名方法(local nami ...

  2. oracle tnsnames.ora文件用法说明

      oracle tnsnames.ora文件用法说明 CreationTime--2018年8月10日08点32分 Author:Marydon 1.用途 oracle客户端所需要的一个文件,通过该 ...

  3. Oracle Entity6 在查询View的时候出现重复数据

    在使用oracle + Entity6的时候, 遇到一个问题,在查询View的时候,在工具中执行View的sql语句,是两条不同的数据. 但是从Entity中查询出来却是两条相同的数据. 查看了一下e ...

  4. LR连接oracle时出现:SQLState=28000[Oracle][ODBC][Ora]ORA-01017:invalid username/password;logon denied

    出现的现象:

  5. [oracle] listener.ora 、sqlnet.ora 、tnsnames.ora

    路径 $ORACLE_HOME/network/admin sqlnet.ora(客户及服务器端) 作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个 ...

  6. oracle listener.ora文件配置

    # listener.ora Network Configuration File: /oracleDB/product//db_1/network/admin/listener.ora # Gene ...

  7. oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子

    1.解决问题:TNS或者数据库不能登录.      最简单有效方法:使用oracle系统提供的工具 netca 配置(把原来的删除掉重新配置)     $netca  2.然而,仍有疑问:如何指定'l ...

  8. oracle listener.ora的host不能使localhost,而应该是该机器名,否则不能用ip地址进行连接

    # listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/lis ...

  9. Oracle tnsnames.ora

    安装过ORACLE的都知道,oracle安装时需要进行配置,这个配置可以在客户端的企业管理器一步一步进行,或者直接拷贝一个tnsnames.ora文件到安装目录下(c:\app\Administrat ...

随机推荐

  1. ios虚拟机安装 (三)

    安装mac系统出现欢迎使用的界面-->一直继续(个人设定) 点击左上角-->Dock-->启动放大 Safari 浏览器

  2. Oracle存储过程简单实例

    转自 http://www.cnblogs.com/nicholas_f/articles/1526029.html /*不带任何参数存储过程(输出系统日期)*/create or replace p ...

  3. maven与ide工具的整合

    maven与myeclipse的整合 1   点击window会出现 2>选择  preferences

  4. 前端HTML空格与后台PHP utf-8空格

    今天在处理html input输入框时,发现一个问题: 在用户名输入框中输入admin "'p(中间是一个空格),点保存后台提示数据保存成功,按理应该是未修改,通过chrome调试工具发现传 ...

  5. 实验二:klee处理未建模函数和处理error的方式

    首先,能够分析klee源码固然重要.但是目前尚未到那个地步.我按照我的过程,记录和分析我所做的实验. 结论性内容是: 1.klee处理printf传入符号值的情形时,报为error,不会将符号值具体化 ...

  6. 3.HTML颜色

    一,HTML 颜色采用的是 RGB 颜色,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色. <p st ...

  7. JavaScript DOM 編程藝術(2版) 綜合實例Band js代碼

    function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload!='function') { win ...

  8. [翻译] MotionBlur

    MotionBlur https://github.com/fastred/MotionBlur MotionBlur allows you to add motion blur effect to ...

  9. 使用NSOperation以及NSOperationQueue

    使用NSOperation以及NSOperationQueue NSOperation vs. Grand Central Dispatch (GCD) 在Mac OS X v10.6和iOS4之前, ...

  10. Linode VPS主机套餐方案降低处理方法且不影响数据

    使用Linode VPS主机产品经历过512MB内存升级至1GB内存,再升级至2GB内存,以及目前推出1GB内存方案月付10美元.比如我们在使用Linode 2GB内存方案的时候占用资源不是太多,其实 ...