一.问题描述

当对视图使用的基表进行表结构修改后,会触发视图的无效以及编译出错问题,必须重建视图解决。

二.问题再现

1.Oracle10g环境

1.1 创建视图测试用两张基表:TestTable和TestUser

1.2  创建测试视图VW_TABLEUSERALL和VW_TABLEUSER

前者使用了TestTable.*, 后者显示指定列。

 查询视图的状态如下:全部是Valid状态

1.3 修改TestTable表结构:增加一列Col1

 再次查询视图的状态如下:全部是INVALID状态

 

 

1.4 重新编译两张视图

 重新查询视图的状态如下:全部是Valid状态:

查询视图的数据:VW_TableUserAll查询出错。

1.5 视图重建

重新查询视图的数据:VW_TableUserAll查询正常: 新增的Col1出现了!

2. Oracle11g环境

2.1 环境准备

和Orale10g下的1.1 和1.2 步骤一致

2.2 修改TestTable表结构:增加一列Col1

查询视图的状态如下:全部是VALID状态

   

2.3 查询视图VW_TableUserAll,没有新增的Col1这一列!

但是基表TestTable中存在Col1这一列

2.4 重新编译视图,依旧查不到Col1这一列

2.5 重建视图,问题解决

3. 问题结论

Oracle10g环境下:

对视图基表的修改会触发view的无效。如果视图中使用了修改的基表表结构,重新编译视图无法解决问题,视图需要重建。

Oracle11g环境下:

对视图基表的修改不会触发view的无效。如果视图中使用了修改的基表表结构,重新编译视图无法解决问题,视图需要重建。

因此:

如果修改了视图使用到的基表的表结构被修改了,恰如视图中涉及了修改后的表结构,重新编译视图操作,仍无法查询到修改的列,必须进行视图重建。

Oracle表结构修改触发视图无法正常使用问题的更多相关文章

  1. ORACLE主要的系统表和系统视图

    ORACLE主要的系统表和系统视图 1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYS进行查询.几个重要的表或者视图如下: v$controlfile:控制 ...

  2. 【转】Oracle 表空间与数据文件

    --============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...

  3. .Net程序员学用Oracle系列(23):视图理论、物化视图

    1.视图理论 1.1.视图的存储 1.2.视图的作用 1.3.视图的工作机制 1.4.视图的依赖性 1.5.可更新的连接视图 1.6.内联视图 2.物化视图 2.1.刷新物化视图 2.2.物化视图日志 ...

  4. Oracle 表空间与数据文件

    -============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或多 ...

  5. Oracle学习总结_day06_视图&序列&索引

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day 06 视图,索引,序列 视图 什么是视图: 视 ...

  6. Oracle表空间,用户,用户授权

    一:Oracle表空间 1,Oracle表空间与SQL Server文件组对比 SQL Server的文件组(文件组包括若干MDF,NDF数据文件)对我们来说并不陌生,前段时间我在博客“怎样玩转千万级 ...

  7. Oracle 11g系列:视图

    视图是数据库中特有的对象,视图用于存储查询,但不会存储数据(物化视图除外).这是视图和数据表的重要区别.Oracle中有4种视图:关系视图.内嵌视图.对象视图和物化视图. 1.关系视图 1>.创 ...

  8. Oracle数据库入门——物化视图日志结构

    物化视图的快速刷新要求基本必须建立物化视图日志,这篇文章简单描述一下物化视图日志中各个字段的含义和用途. 物化视图日志的名称为MLOG$_后面跟基表的名称,如果表名的长度超过20位,则只取前20位,当 ...

  9. ORACLE 创建与使用视图

    一.what(什么是视图?) 1.视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询 ...

随机推荐

  1. java实现图像灰度化

    /*在研究Java实现将一张图片转成字符画的时候,发现将图像转化字符串是根据照片的灰度采用不同的字符画出来,形成一个灰度表.于是就研究了下关于灰度值这个东西,于是跳了一个大坑...因为鄙人用的ubun ...

  2. delphi URL 编码的转换

    先介绍一下,Delphi中处理Google的URL编码解码,其中就会明白URL编码转换的方法的 从delphi的角度看Google(谷歌)URL编码解码方式 在网上搜索了一下,似乎没有什么关于goog ...

  3. C指针-const char* p到底是什么不可以改变

    char a = 'w'; char b = 'q'; const char* p = &a; p = &b; printf("%c",p[0]); 如上一段代码, ...

  4. Visual Studio命令行工具

    devenv.exe Visual Studio IDE 主程序,位于VS_INSTALL_DIR/Common7/IDE. 本节内容来源:vs2010环境执行devenv /? 启动VS deven ...

  5. Pycharm Professional Edition 激活码(license)

    http://blog.csdn.net/yangysc/article/details/52355865 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiw ...

  6. 企业app分发

    http://beyondvincent.com/2014/07/30/2014-07-30-provision-ios-ipa-app-for-in-house-enterprise-distrib ...

  7. JMeter学习-028-JMeter默认jmx脚本分发目录(路径)定制

    我们在分布式执行参数化脚本时,为尽可能多的利用Slave资源,尽可能将参数文件配置为相对路径,以更好的去适配Slave环境.与此同时,每台Slave的服务jmeter -s 启动的路径可能不尽相同,同 ...

  8. SELENIUM2 使用JavascriptExecutor在页面Javascipt执行

    目的: 1. 执行一段JS,来改变HTML2. 一些非标准控件无法用selenium2的API时,可以执行JS的办法来取代 主要操作:JavascriptExecutor j = (Javascrip ...

  9. 【原创】JMeter学习(三十七)Jmeter录制手机app脚本

    环境准备: 1.手机 2.wifi 3.Jmeter   具体步骤: 1.启动Jmeter: 2.“测试计划”中添加“线程组”: 3.“工作台”中添加“HTTP代理服务器”: 4.配置代理服务器:Gl ...

  10. MySQL的几个概念:主键,外键,索引,唯一索引

    概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和 ...