物化视图

drop materialized view log on pub_alarmobject_c_tbl;
drop materialized view alarminfoview;
drop materialized view log on onu_tbl;
drop materialized view log on olt_tbl;


create materialized view log on olt_tbl
tablespace tbs_fj_data with rowid,primary key,;


create materialized view log on onu_tbl
tablespace tbs_fj_data with rowid, sequence(onu_id,vendor_onu_id,onu_ip,serial_number,onu_name)
including new values;

create materialized view log on olt_tbl
tablespace tbs_fj_data with rowid ,sequence(olt_id,node_id)
including new values;


create materialized view alarmobjecttblview
tablespace tbs_fj_data
build deferred refresh fast on demand
start with sysdate next sysdate+10/24/60
as
select * from pub_alarmobject_c_tbl;


create materialized view alarminfoview
tablespace tbs_fj_data
refresh fast
/*with rowid*/
on /*demand*/ commit
/*start with sysdate next sysdate + 10/24/60*/
as
select t.onu_id,t.vendor_onu_id,t.onu_ip,t.serial_number,b.olt_id,b.node_id,t.rowid trowid , b.rowid browid from onu_tbl t, olt_tbl b where t.olt_id = b.olt_id order by t.onu_name;
=========================================================================
ON COMMIT 与WITH ROWID 和START WITH SYSDATE NWXT SYSDATE +10/24/60 不兼容
在关联表建视图时要写出各个表的ROWID。
=========================================================================
create materialized view alarminfoview
tablespace tbs_fj_data
refresh fast
with rowid
on demand /*commit*/
start with sysdate next sysdate + 10/24/60
as
select t.onu_id,t.vendor_onu_id,t.onu_ip,t.serial_number,b.olt_id,b.node_id,t.rowid trowid , b.rowid browid from onu_tbl t, olt_tbl b where t.olt_id = b.olt_id order by t.onu_name;


1:
在创建增量和快速刷新物化视图时必须建物化视图日志,如在没有建物化视图日志基表上直接建快速刷新物化视图则会报ORA-23413 表不带实体化物化视图。
2:
建设用ROWID,prmary key 创建物化视图日志,


drop materialized view log on regiontbl;--删物化视图日志
drop materialized view log on usertbl;
drop materialized view eq_user_view;--删物化视图

create materialized view log on regiontbl tablespace tbs_fj_data with rowid /*,primary key*/ ,sequence(regionid) including new values;--创建物化视图日志(基表中没有主键时不能使用主键)
--创建物化视图日志有以下几种
--1:ROWID 行号
--2:PRIMARY KEY 主键
--3:SEQUENCE 序列
--4:INCLUDING NEW VALUES
--物化视图的刷新方法
--1:FAST (快速或增量刷新)
--2:COMPLETE(完全刷新--此方法类似将表数据全截掉再插入数据)
--3:FORCE
--4:NEVER
create materialized view log on usertbl tablespace tbs_fj_data with rowid /*,primary key */,sequence(region) including new values;

create materialized view eq_user_view tablespace tbs_fj_data --创建物化视图(日志中有体现ROWID,建物化视图时要写出

每张关联表ROWID,ON DEMAND 在根据用户需要时进行刷新
--如用户可以设置刷新的频率,为了避免影响数据库性能把刷新频率大于10 分钟以上)
refresh fast with rowid on demand start with sysdate next sysdate+10/24/60
as
select t.regionid,t.regionname,t.rowid trowid,t.ocname,https://www.360docs.net/doc/c311905006.html,,https://www.360docs.net/doc/c311905006.html,erid,b.rowid browid from regiontbl t, usertbl b where t.regionid=b.region


create materialized view eq_user_view tablespace tbs_fj_data --创建物化视图(ON COMMIT 根据基表进行DML操作后刷新物化视图,不能由用户自己控制刷新频率无法保证数据库性能)
refresh fast on commit
as
select t.regionid,t.regionname,t.rowid trowid,t.ocname,https://www.360docs.net/doc/c311905006.html,,https://www.360docs.net/doc/c311905006.html,erid,b.rowid browid from regiontbl t, usertbl b where t.regionid=b.region




create materialized view region_user_view tablespace tbs_fj_data --创建物化视图(ON DEMAND .ON COMMIT两种刷性方式DEMAND可根据用户数据库性能进行设置物化视图的刷新频率
--COMMIT在数据库基表做DML修改操作时刷新视图)

refresh fast on demand
start with sysdate next sysdate +10/24/60
as
select t.regionid,t.regionname,https://www.360docs.net/doc/c311905006.html,abbr,t.ocname,t.domainname,
t.rowid trowid ,t.smstelno,https://www.360docs.net/doc/c311905006.html,,https://www.360docs.net/doc/c311905006.html,erid,b.email,b.rowid browid from regiontbl t,usertbl b where t.regionid=b.region;


1) 使用commit选项。
2) 使用dbms_mview安排自动刷新时间。
- 手工刷新
SQL>execute dbms_mview.“refresh”(‘EMP_BY_DISTRICT’); --刷新指定的物化视图
SQL>execute dbms_mview.“refresh”_defresh_dependent(‘EMPLOYEE’);――刷新利用了该表的所有物化视图
SQL>execute dbms_mview.“refresh”_all_mviews;――刷新该模式中,自上次刷新以来,未得到刷新的所有物化视图。
? 禁用物化视图
- 修改init.ora参数的query_rewrite_enabled参数设置成flase,重启实例。
- 使用alter system set query_rewrite_enabled = flase;动态修改。
- 使用alter session set query_rewrite_enabled = flash;修改会话内。
- 使用 norewrite提示。
? 删除物化视图
SQL>drop materialized view emp_by_district;

---

Oracle8i版本开始提供可以创建实体化视图即物化视图(MATERIALIZED VIEW),它确实存放有物理数据。物化视图包含定义视图的查询时所选择的基表中的行。对物化视图的查询就是直接从该视图中取出行。
在olap环境中,mview是以空间换时间的一种有效手段,更少的物理读/写,更少的cpu时间,更快的响应速度,所以它不适合高端的oltp环境;在oltp环境中,规模较大的报表适合使用mview来提高查询性能。
数据仓库中的物化视图主要用于预先计算并保存表连接或聚集

等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。在数据仓库中,还经常使用查询重写(query rewrite)机制,这样不需要修改原有的查询语句,Oracle会自动选择合适的物化视图进行查询,完全对应用透明。

相关文档
最新文档