标签:using div mil art 插入 实现 tran 习惯 host
近日公司有一个9i 的Oracle数据库,运行效率低下。想要将其升级到11G. 但是升级之前 要将数据进行同步,好在表不是很多。只有三张表。业务压力也不大,就想到了使用物 化视图的方式将数据同步过来。
数据库主机 | IP地址 | TNS | DB_LINK | ORACLE 版本 |
---|---|---|---|---|
db2 | 10.100.99.114 | to_118 | 11G | |
db1 | 10.100.99.118 | 9iG |
上面是本次操作测试的环境。说明: 将9i 数据库中的表实时同步到11G.
配置tns 方便创建dblink。当然不配置也可以创建。此步完全依赖于个人爱好。 我习惯配置,在创建dblink时,会更简洁一些。TNS如下:
t118 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.99.114)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ktdb) ) )
create public database link to_118 connect to test identified by test123 using ‘t118‘;
create table test(id number,name varchar2(20)); alter table test add constraint pk_testid primary key(id); create materialized view log on test with primary key;
对于有主键的表,日志依赖于主键。
create materialized view log on test with primary key;
对于无主键的表,依赖于rowid
create table test_noprimarykey(id number,name varchar2(20)); create materialized view log on test_noprimarykey with rowid;
分布式查询中(也就是使用db_link), 不能以on commit 方式指定刷新方式,创建时会遇到ORA-12054.
CREATE MATERIALIZED VIEW dbmon.test
(id,name)
REFRESH force
start with sysdate next sysdate+1/1440 # 指定刷新频率为1分钟
AS
SELECT id,name FROM dbmon.test@to_118;
CREATE MATERIALIZED VIEW test_noprimarykey
(id,name)
REFRESH force
start with sysdate next sysdate+1/1440 # 指定刷新频率为1分钟
WITH rowid
AS
SELECT id,name FROM dbmon.test_noprimarykey@to_118;
在db1数据库插入数据后,稍等 1分钟,然后连到db2数据库查看结果。
在db1 上向表中插入一行数据:
insert into test values(1,‘aaa‘); commit;
insert into test values(1,‘bbb‘);
commit;
物化视图(materialized view) 实现数据迁移、数据定时同步
标签:using div mil art 插入 实现 tran 习惯 host
原文地址:https://www.cnblogs.com/halberd-lee/p/10757376.html