欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-09 19:05:27
第一次在博客园写博客,写的不好,请大家多多评论,也希望自己以后对技术探索的更深。 今天下班之后,由于晚上要发版本,所以开发同事必须留下,突然收到一封公司监控预警邮件。 瞄了几眼,大致的意思就是说 视图无效。由于视图查询的是表,所以开始做实验测试。 实验一: 当基表drop列的时候,视图是否还是有效? ......

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

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

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

 

实验一: 当基表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列的时候,对访问这张表的视图没有影响。

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