oracle 数据库跨库同步表有很多种方式可以实现, 比如触发器, materialized view(mv), stream, goldengate 等
materialized view(物化视图)是包括一个查询结果的数据库对像, 它是远程数据的的本地副本, 或者用来生成基于数据表求和的汇总表. 物化视图存储基于远程表的数据, 也可以称为快照. 这个基本上就说出了物化视图的本质, 它是一组查询的结果, 这样势必为将来再次需要这组数据时大大提高查询性能.下面就介绍使用 materialized view + job 的方式来双向同步表,具体步骤如下:
1. 在源数据库 a 和目标数据库 b 上分别建立 table
create table test
(
id varchar2(10) not null primary key,
name varchar2(20),
status varchar2(1),
updatedate date
)
2. 在数据库上分别建立 dblink
create database link dblink_to_b
connect to userid identified by password
using '(description =
(address_list =
(address = (protocol = tcp)(host = ipaddress)(port = 1521))
)
(connect_data =
(service_name = sid)
)
)';
create database link dblink_to_a
connect to userid identified by password
using '(description =
(address_list =
(address = (protocol = tcp)(host = ipaddress)(port = 1521))
)
(connect_data =
(service_name = sid)
)
)';
3. 在源数据库 a 上建立 materialized view 以及 materialized view log
create materialized view log on test with rowid
create materialized view mv_test refresh fast on demand with rowid
as select * from test@dblink_to_b
,
