什么是物化视图
Oracle物化视图是包括一个查询结果的数据库对象。它是一种非本地数据的本地化副本,或用来生成基于某种功能或者业务需求的汇总表。
物化视图存储基于非本地表的数据,也可以成为快照。她属于一种物理结构,具有段结构。
物化视图可以用于预先保存表连接或聚集等耗时较多操作的结果。这样进行查询时,可以避免这些耗时的操作。
物化视图的目的是为了提高查询性能。
物化视图对应用透明,增加和删除物化视图不会影响应用中SQL语句的正确性和有效性。
物化视图占用内存空间。
当基表发生变化时,物化视图也应当刷新。
物化视图可以查询表、视图、和其他物化视图。
物化视图相关的系统权限
授权
GRANT CREATE MATERIALIZED VIEW TO 用户;
撤销
REVOKE CREATE MATERIALIZED VIEW FROM 用户;
创建物化视图
CREATE MATERIALIZED VIEW 物化视图名
BUILD [immediate | deferred]
REFERSH [force | fast | complete | never]
FORCE ON [commit | demand]
START WITH 开始时间
NEXT 下次刷新时间
AS
查询语句
-
BUILD 创建方式
- immediate 立即生效
- deferred 推迟至第一次refresh才生效
-
REFERSH 物化视图刷新方式
- force 默认。 如果可以fast就fast,不行就complete。
- fast 只刷新增量部分。
- complete 更新全部数据
- never 从不刷新。
-
FORCE ON 刷新触发方式
- commit 有数据提交时刷新,刷新视图不能跨库执行。
- demand 根据start with 和 next的参数刷新。或者dbms_mview.refresh函数手动刷新。
dbms_mview.refresh手工刷新
BEGIN
dbms_mview.refresh(list => '物化视图' , method => 'COMPLETE' , refresh_after_errors => TRUE);
END;
删除物化视图
DROP MATERIALISED VIEW 物化视图名
-- 创建测试表emp
CREATE TABLE emp (
id number,
name varchar2(40)
);
-- 插入两条数据
INSERT INTO emp SELECT 1, 'LEO' FROM dual;
INSERT INTO emp SELECT 2, 'KEVIN' FROM dual;
COMMIT;
-- 创建物化视图
CREATE MATERIALIZED VIEW mv_emp
BUILD IMMEDIATE
REFRESH FORCE
ON DEMAND
START WITH SYSDATE
NEXT SYSDATE + 2/1440
AS
SELECT id, name FROM emp;
INSERT INTO emp SELECT 3, 'WINSTON' FROM DUAL;
COMMIT;
-- 表立即更新,物化视图延后更新。
SELECT * FROM MV_EMP;
-- 插入数据
INSERT INTO emp SELECT 4, 'GRACE' FROM DUAL;
-- 立即手工刷新,数据会被隐式提交
exec dbms_mview.refresh(list => 'mV_emp' , method => 'COMPLETE' , refresh_after_errors => TRUE);
DROP MATERIALIZED VIEW MV_EMP;
Materialized view MV_EMP已删除。
标签:21,--,视图,物化,emp,刷新,Oracle,refresh
From: https://www.cnblogs.com/slqleozhang/p/16884725.html