百度了一下,有一个大佬是这样说的:
在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. CSS之浮动布局(float,浮动原理,清除/闭合浮动方法)

    css之浮动布局 本人博客:查看文章   1.什么是浮动:在我们布局的时用到的一种技术,能够方便我们进行布局,通过让元素浮动,我们可以使元素在水平上左右移动,再通过margin属性调整位置 2.浮动的 ...

  2. 浅谈 JavaScript 中常用数据及其类型转换

    在 JavaScript 中有一些 value 会经常碰到: [] (空数组).{} (空对象).'' (空字符串).undefined.null.0.NaN.Infinite 也会经常碰到数据类型转 ...

  3. Global Average Pooling Layers for Object Localization

    For image classification tasks, a common choice for convolutional neural network (CNN) architecture ...

  4. 转 Js窗体window大小设置

    网页可见区域宽:document.body.clientWidth  网页可见区域高:document.body.clientHeight  网页可见区域宽:document.body.offsetW ...

  5. 通过代码管理工具 git 完成一次完整的代码管理过程

    1.从公共远程fork一份自己的本地远程之后,从本地远程 clone 到本地 2.将本地代码跟公共远程代码做关联配置 git remote add upstream https://github.co ...

  6. 使用 Azure 门户创建 Linux 虚拟机

    可以通过 Azure 门户创建 Azure 虚拟机. 此方法提供一个基于浏览器的用户界面,用于创建和配置虚拟机和所有相关的资源. 本快速入门介绍了如何创建虚拟机并在 VM 上安装 webserver. ...

  7. 第八章 SQL高级处理 8-2 GROUPING运算符

    一.同时得到合计行 合计行是不指定聚合键时得到的汇总结果. UNION ALL与UNION的不同之处是它不会对结果进行排序,因此比UNION性能更好.   二.ROLLUP——同时得出合计和小计 GR ...

  8. Common administrative commands in Red Hat Enterprise Linux 5, 6, and 7

    https://access.redhat.com/articles/1189123 Common administrative commands in Red Hat Enterprise Linu ...

  9. ORACLE 参数设置绑定变量

    使用 CURSOR_SHARING 参数 EXACT  默认,不替换 SIMIAR 当替换不会影响到执行计划时,才会将字面量替换成绑定变量 FORCE 只要有可能,字面量会被替换为绑定变量

  10. Win7系统安装 Photoshop CC 中文完全破解版

    Win7系统安装 Photoshop CC 中文完全破解版 谨以此教程献给某位做UI设计的朋友^_^! 01. 确定自己的系统是32位的还是64位的,本人电脑是64位 02. 将 Photoshop_ ...