Oracle表结构修改触发视图无法正常使用问题
一.问题描述
当对视图使用的基表进行表结构修改后,会触发视图的无效以及编译出错问题,必须重建视图解决。
二.问题再现
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表结构修改触发视图无法正常使用问题的更多相关文章
- ORACLE主要的系统表和系统视图
ORACLE主要的系统表和系统视图 1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYS进行查询.几个重要的表或者视图如下: v$controlfile:控制 ...
- 【转】Oracle 表空间与数据文件
--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...
- .Net程序员学用Oracle系列(23):视图理论、物化视图
1.视图理论 1.1.视图的存储 1.2.视图的作用 1.3.视图的工作机制 1.4.视图的依赖性 1.5.可更新的连接视图 1.6.内联视图 2.物化视图 2.1.刷新物化视图 2.2.物化视图日志 ...
- Oracle 表空间与数据文件
-============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或多 ...
- Oracle学习总结_day06_视图&序列&索引
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day 06 视图,索引,序列 视图 什么是视图: 视 ...
- Oracle表空间,用户,用户授权
一:Oracle表空间 1,Oracle表空间与SQL Server文件组对比 SQL Server的文件组(文件组包括若干MDF,NDF数据文件)对我们来说并不陌生,前段时间我在博客“怎样玩转千万级 ...
- Oracle 11g系列:视图
视图是数据库中特有的对象,视图用于存储查询,但不会存储数据(物化视图除外).这是视图和数据表的重要区别.Oracle中有4种视图:关系视图.内嵌视图.对象视图和物化视图. 1.关系视图 1>.创 ...
- Oracle数据库入门——物化视图日志结构
物化视图的快速刷新要求基本必须建立物化视图日志,这篇文章简单描述一下物化视图日志中各个字段的含义和用途. 物化视图日志的名称为MLOG$_后面跟基表的名称,如果表名的长度超过20位,则只取前20位,当 ...
- ORACLE 创建与使用视图
一.what(什么是视图?) 1.视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询 ...
随机推荐
- 详解Js中文件读取机制
前言,文件读取是提高应用体验度的必须接口,应用场景中需求很频繁. Js处理文件读取,由于处于安全方面的考虑,在2000年以前,都是以“<input type="file"&g ...
- 启用apache,发现80端口被占用【已解决】
前段时间停止了Apache,结果在打开的时候发现无法打开,80端口被占用,于是win+r 运行cmd 输入netstat -ano 可以看到80端口被PID4占用,于是打开任务管理器-进程-查看,选择 ...
- java并发编程(三)线程挂起,恢复和终止的正确方法
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17095733 下面我们给出不用上述两个方法来实现线程挂起和恢复的策略--设置标志位. ...
- NSDecimalNumber用于精度准确的计算
在处理金额计算时,往往会涉及到小数,由于Double类型不准确,无法做到产品的要求.为了保证金额计算的准确性,建议使用NSDecimalNumber. 1.创建对象(常用的方法) // mantiss ...
- SQL日期相关的操作
DECLARE @dt datetime SET @dt=GETDATE() DECLARE @number int --1.指定日期该年的第一天或最后一天 --A. 年的第一天 ),)+'1-1' ...
- MySql存储过程的操作
[存储过程1] 写一个存储过程 procedure实现两数相加 DELIMITER && CREATE PROCEDURE pr_add(xx INT,yy INT) BEGIN DE ...
- [lua大坑]一个莫名其妙的lua执行时崩溃引出的堆栈大小问题
这是一个坑,天坑!如果不是我随手删除了一个本地变量,这个问题直到现在我应该也没有头绪. 首先,写了一个新的lua脚本,载入,执行.在执行的时候,出了这么一个莫名其妙的问题: EXC_BAD_ACCES ...
- linux文件数相关命令
查看系统目前打开的文件数命令#cat /proc/slabinfo | grep ip_conn | grep -v ip_conntrack_expect | awk '{print $2}' 查看 ...
- linux下安装svn server
1. yum install subversion 2. mkdir -p /home/svn/svnfile 3. svnadmin create /home/svn/svnfile 4. 进入co ...
- magento事件(event)的dispatchEvent(分发)和catchEvent(获取)
当你需要扩展Magento的核心的功能时有两个选择: (1)重写(override)Magento的core classes (2)使用Magento的event-driven 机制 由于你只能重写一 ...