Oracle重新编译视图

发布时间 2023-10-15 09:05:47作者: 百里浅暮

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

第一步,查找失效的视图。

可以使用数据字典中的user_objects来查找出失效的视图名,还可以利用user_views来查找出相应视图的代码信息。

基本的代码如下:

----------------查找出失效的视图  
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';

第二步,重新编译。

可以使用以下方式来重新编译视图:

ALTER  VIEW view_name COMPILE;

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