创建物化视图

把数据从工厂拿到公司,需要在工厂的表上建物化视图日志,在公司创建dblink和物化视图

 

1、在工厂为表创建物化视图日志,要求这些表需要有主键
Create Materialized View Log
        On 表名
Tablespace Users
With Primary Key
Excluding New Values;

2、在公司创建dblink
create database link dblink名
connect to 工厂数据库用户名 identified by 工厂数据库密码
using '12.345.67.890:1521/ORCL';----工厂数据库地址

3、在公司创建物化视图
Create Materialized View  物化视图名
Build Immediate                          ----创建之后立即导入数据
Using Index                              
Refresh Force                             ----强制刷新
Next sysdate+1800/86400          ----刷新间隔时间,1800秒
As
Select *
From 工厂表名@dblink名;


刷新的模式有两种:ON DEMAND和ON COMMIT。

ON DEMAND指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新。

ON COMMIT指出物化视图在对基表的DML操作提交的同时进行刷新。

刷新的方法有四种:FAST、COMPLETE、FORCE和NEVER。

FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。

COMPLETE刷新对整个物化视图进行完全的刷新。

如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。

NEVER指物化视图不进行任何刷新。

默认值是FORCE/ON DEMAND;


如果自动刷新没有执行的话:

1、手动刷新的方式:在plsql的命令窗口执行  exec dbms_mview.refresh('物化视图名');

-------------------------------------------------------------------------------------------------------------------

2、创建存储过程
CREATE PROCEDURE 存储过程名 AS
BEGIN
     DBMS_MVIEW.refresh('物化视图名 ','C');--刷新 物化视图 C表示完全刷新
END;
 
  创建Job定时调用存储过程刷新物化视图
declare   
job number;      
BEGIN
----每10秒刷新一次 (如果时间到了 没调用完,下次调用同时进行?)
sys.dbms_job.submit(job,'存储过程名;',sysdate,'sysdate+1/24/60/6');
end;
----------------------------------------------------------------------------------
 
 
物化视图本身是会自动生成job的,要使物化视图自动定时刷新,job_queue_processes 必须大于或等于1。
 
job_queue_process表示oracle能够并发的job的数量,当job_queue_process值为0时表示全部停止oracle的job。

 

 

 
posted @ 2017-06-15 16:59  萌哒哒~  阅读(411)  评论(0编辑  收藏  举报