1.创建DBLINK
-- Drop existing database link
drop public database link LQPVPUB;
-- Create database link
CREATE DATABASE LINK LQPVPUB
CONNECT TO "INTEPDM" identified by "password"
using "LQPVPUB"
2.创建物化视图日志(远程主机操作)
CREATE MATERIALIZED VIEW LOG ON dm_basicmodel
WITH PRIMARY KEY
INCLUDING NEW VALUES;
3.创建物化视图
CREATE MATERIALIZED VIEW mv_model --创建物化视图
BUILD IMMEDIATE --在视图编写好后创建
REFRESH FAST WITH PRIMARY KEY --根据主表主键增量刷新(FAST,增量)
ON DEMAND -- 在用户需要时,由用户刷新
ENABLE QUERY REWRITE --可读写
AS
SELECT bm_id,bm_partid,bm_code from dm_basicmodel@LQPVPUB t --查询语句
4.删除物化视图和日志
日志和物化视图要分开删除
DROP MATERIALIZED VIEW LOG ON GG_ZLX_ZHU@TOCPEES;
DROP MATERIALIZED VIEW GG_ZLX_ZHU;
5.物化视图更新
CREATE OR REPLACE PROCDURE P_MVIEW_REFRESH AS BEGIN DBMS_MVIEW.REFRESH('GG_ZLX_ZHU,GG_ZLX_FU','ff'); END P_MVIEW_REFRESH;
注意:
5.1、如果需要同时刷新多个物化视图,必须用逗号把各个物化视图名称连接起来,并对每个视图都要指明刷新方式
(f、增量刷新,c、完全刷新,?、强制刷新)。
5.2、当日志和物化视图创建好后,删除日志,则需要重新创建物化视图,否则无法增量刷新。
5.3、因为上面写的物化视图时根据主键进行更新,因此,主表必须有主键。
6.查询刷新情况
对于完全刷新(Complete),刷新耗时会记录在DBA_MVIEW_ANALYSIS的FULLREFRESHTIM列中。 而对于可快速刷新(Fast)的时间,会记录在INCREFRESHTIM列中。 这两个值的单位都是秒。
SELECT mview_name, last_refresh_date, fullrefreshtim, increfreshtim
FROM dba_mview_analysis
WHERE owner='JOHN';