Oracle重新编译视图

当表名、列名、列类型等底层表的信息发生改变的时候,就会使得视图无法使用,其时就需要对视图进行重新的编译。

第一步,查找失效的视图。
可以使用数据字典中的user_objects来查找出失效的视图名,还可以利用user_views来查找出相应视图的代码信息。
基本的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
----------------查找出失效的视图  
Select object_name, ---------对象名称
object_type, ---------对象类型
status ---------对象当前状态
from user_objects ---------用户对象表
where object_type= 'VIEW'
and status = 'INVALID';

----------------利用上面找出的试图名称,查找出视图的代码
Select VIEW_NAME, --------视图名称
TEXT --------视图的代码
from user_views --------用户视图表
where view_name='view_name';

第二步,重新编译。
可以使用以下方式来重新编译视图:

1
ALTER  VIEW view_name COMPILE;

如果视图的结构被改变了(如底层表的列被删除了),则上面的这种方法无法对视图重新编译成功。需要重新执行视图的定义SQL语句。

------ 本文完 ------