Oracle的物化视图增量刷新机制定时将数据库A上的某个表的数据同步到另一个数据库B上
首先在数据库A上确认该表有主键,然后建立在这个表上建立物化视图日志如
“CREATE MATERIALIZED VIEW LOG ON
T_tablename;”
再到数据库B上创建数据库链接和快速刷新的物化视图如“
create materialized view mv_tablename refresh
fast on demand start with sysdate next sysdate+1/288 as select * from
[email protected]_name;”
然后赋权
grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC
DATABASE LINK to scott;
grant CREATE MATERIALIZED VIEW to
scott;
eg.
库A
--scott_a
create table T_MV_TEST ( A DATE, B DATE,
C DATE );
alter table T_MV_TEST
add constraint PK_T_MV_TEST primary key (A,B);
CREATE MATERIALIZED VIEW LOG ON
T_MV_TEST ;
但是这个日志表只能捕获到主键字段的删除和增加操作,如果非主键字段值发生改变,则不会同步过去
库B
--scott_b
在数据库B上创建定时增量更新的物化视图,方法如下:
-- Drop existing database link
drop public database link
connA;
-- Create database link
create public database
link connA
connect to connA
using ‘(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =
orcl) ) )‘;
这是增量更新机制的物化视图的最简单的创建方法,定时检查数据库A上此表的主键字段的删除和插入操作而将变化的记录同步到另一个数据库B中
create materialized view T_MV_TEST
REFRESH fast on demand START with sysdate next
sysdate+1/1440
AS SELECT * from
[email protected]
select *
from T_MV_TEST
MATERIALIZED VIEW