dblink创建_「oracle单向同步」虚拟机——阿里云——dblink(单向同步)+快照

概述

分享下之前因为项目需要,在虚拟机和阿里云上通过dblink和快照触发器结合做的一个单向同步,下面写一下大致步骤和整体的一个思路。


一、创建dblink

1、在虚拟机数据库配置tnsnames.ora($oracle_home/network/admin)

bihuan = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = nwppdb) ) )[oracle@Oracle11g admin]$ tnsping bihuanTNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 30-JUL-2018 21:15:17Copyright (c) 1997, 2011, Oracle. All rights reserved.Used parameter files:Used TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = nwppdb))) OK (40 msec)

2、在虚拟机数据库创建dblink_aliyun (test用户执行)

conn test/123456;drop database link dblink_aliyun;create database link dblink_aliyun connect to xxxx identified by xx using 'bihuan';

二、创建快照

1、先在虚拟机数据库导入阿里云数据库的表结构,再同步阿里云表的数据到虚拟机

drop table test--不创建主键后面无法建立快照create table test(id number primary key ,name varchar2(12)); 
19bb3bbcf4bf457e9bef3fd537b4c837.png
2ed089d35662437e8d75d879cad58902.png

---往阿里云test表插入数据

insert into test values(1,'a');insert into test values(2,'b');commit;

---同步阿里云表的数据到虚拟机

insert into test select * from test@dblink_aliyun

--同步虚拟机表的数据到阿里云

insert into test@dblink_aliyun select * from test

2、测试dblink_aliyun(虚拟机执行)

select * from test@dblink_aliyun;

select * from test;

90a36716ad41dfdddaea06695a155ee6.png

3、在阿里云数据库创建要同步表的快照日志(基于表级别)

create snapshot log on test; --test表必须有主键

4、在虚拟机数据库创建快照(前提是阿里云数据库服务启动)

create snapshot sn_test as select * from test@dblink_aliyun;

5、设置快照刷新时间

--快速刷新

Alter snapshot sn_test refresh fast start with sysdate next sysdate+1/1440;

6、测试快照

在阿里云插入数据:

insert into test values(3,'c');

insert into test values(2,'b');

84fcbd1e63b9533f1f7436a7b0615c32.png
0c59390b53b80913e87630474b6151a9.png

上面建立好后大家可以写个触发器来单向同步,这里我就不提供了,大家根据需求改下就行,主要思路是当源数据库表改变时,目的数据库表跟着改变,但目的数据库表改变时,源数据库表不改变。


总结:

上面单向同步的方式是基于表级别,主要思路是:

1.首先创建一个dblink,可以访问远程数据库

2.在本地创建一个快照,映射远程数据表,当远程数据表有变化时,会反应到快照中.

3.由于快照类似于视图表,所以在本地为快照创建一个触发器,当快照有变化时,会触发相应事件.

4.在触发器中写同步数据的代码.

后面会分享更多dba方面的内容,大家有什么想看的也可以在下方留言哦,我这边后面也会发类似的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值