日常监控邮件预警(视图无效测试分析)

第一次在博客园写博客,写的不好,请大家多多评论,也希望自己以后对技术探索的更深。

今天下班之后,由于晚上要发版本,所以开发同事必须留下,突然收到一封公司监控预警邮件。

瞄了几眼,大致的意思就是说 视图无效。由于视图查询的是表,所以开始做实验测试。

 

实验一: 当基表drop列的时候,视图是否还是有效?

1.新建一张基表:

create table test1(row_id number,cust_no varchar2(100));

2.查看表的表结构

select a.owner,
a.table_name,
c.comments,
a.column_name,
a.data_type,
a.char_length,
a.data_default,
b.comments
from dba_tab_columns a
inner join dba_col_comments b
on a.owner = b.owner
and a.table_name = b.table_name
and a.column_name = b.column_name
inner join dba_tab_comments c
on a.table_name = c.table_name
and a.owner = c.owner
where a.owner = upper(‘scott’)
and a.table_name = upper(‘test1’)
order by a.column_id;

3.创建一张视图

create or replace view v_test1 as select * from test1;

4.查看视图的状态:

5.删除cust_no列,表结构如下:

 — drop columns 

alter table test1 drop column cust_no;

 

6.查看视图是否还是有效? 此时看到视图已经无效了

 

实验二:

当表新增列的时候,视图是否还是有效的昵?

1.新建一张测试表,表结构如下:

create table test_add_col(row_id varchar(10),cust_no varchar2(20));

2.创建一张视图,命令如下:

create or replace view v_test_add_col as select * from test_add_col;

3.查看视图的状态,如下:

4.对test_add_col表新增一列,脚本如下:

— add/modify columns
alter table test_add_col add cust_name varchar2(100);

5.最后查看视图v_test_add_col 是否还是有效?

select t.status,t.* from dba_objects t where t.object_name = upper(‘v_test_add_col’);

结论:当对表drop列的时候,对访问这张表的视图有影响,要相应的修改视图。

        当对表add列的时候,对访问这张表的视图没有影响。

        当对表的列的数据类型发生更改的时候,对访问这张表的视图没有影响。

 

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐