Oracle物化视图索引引发的问题

  在一次上线升级后发现业务异常,一个查询接口不能用了,定位发现数据库异常,排查后惊奇的发现Oracle数据库的cpu使用率竟然达到了100%!再回头看这次改动的脚本,只有一个物化视图的重建而已。因为源库的表新加了一个字段,所以需要把本地数据库原物化视图删掉重建:

drop materialize view mv_wlf_charge;

drop table mv_wlf_charge;

create table mv_wlf_charge as

select "t_wlf_charge"."id" "id", "t_wlf_charge"."code" "code" from t_wlf_charge@DBLINK_WLF;

create materialize view mv_wlf_charge

on public table refresh fast on demand

start with to_date('09-02-2017 21:09:00', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE + 1/144

as select "t_wlf_charge"."id","t_wlf_charge"."code" from "t_wlf_charge".DBLINK_WLF "t_wlf_charge";

  因为物化视图创建后会生成一个同名的表,所以这里的脚本也操作了该表。但因为mv_wlf_charge表是个大表,接口调用量大,导致该表查询非常频繁,所以数据库立马就hold 不住了。其实原来被drop的物化视图是有索引的,这一重建把索引整没了。重新对mv_wlf_charge表建索引就可以了,对原表建索引,就相当于对物化视图建了索引。

 

posted on 2017-02-09 21:22  不想下火车的人  阅读(1073)  评论(0编辑  收藏  举报

导航