Oracle物化视图,物化视图日志,增量刷新同步远程数据库

时间:2023-03-08 17:20:38
Oracle物化视图,物化视图日志,增量刷新同步远程数据库

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';