龙空技术网

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

波波说运维 761

前言:

如今朋友们对“oracle用dblink连接数据库”大约比较注重,大家都想要剖析一些“oracle用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)); 

---往阿里云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;

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');

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

总结:

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

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

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

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

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

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

标签: #oracle用dblink连接数据库 #oracle同步表结构 #oracle数据同步 #虚拟机oracle数据库快照 #oracle添加dblink