Etl工具将sqlserver数据同步到oracle设计说明

Etl工具将sqlserver数据同步到oracle设计说明,第1张

软件说明

通过etl工具定时将SqlServer指定的表数据同步到oracle数据库

在数据库建立增删改的触发器。触发器将变更放到临时表里。

通过etl工具读取临时表同步给oracle

优点:比较实时

缺点:影响到业务系统,因为需要在业务系统建立触发器

实例说明:

例如在sqlserver有一张用户表(sys_user)需定时同步oracle数据库的用户表,

包括新增、删除、修改同步

给同步的表建三类触发器:

insert触发器:向表中插入数据时被触发;

update触发器:修改表中数据时被触发;

delete触发器:从表中删除数据时被触发。

以sqlserver的用户表举例,

Sqlserver的sys_user表,有两个字段id,name

具体流程:

以新增数据举例

Ø 一、在sqlserver新建触发器trigger_sysuser_insert

if (object_id('trigger_sysuser_insert') is not null)

drop trigger trigger_sysuser_insert

go

create trigger trigger_sysuser_insert

on sys_user --表名

for insert --插入后触发

--instead of insert --插入前触发,使用插入前触发时,不执行默认插入

as

--开始执行逻辑

declare @id int, @name varchar(20);

select @id = id, @name = name from sys_user; -------------- inserted 存放了当前插入的值

--select @name,@age

---创建临时表

if not exists (select from sysobjects where id = object_id('##sys_user_insert')

and OBJECTPROPERTY(id, 'IsUserTable') = 1)

create table ##sys_user_insert

(

id int,

name varchar(32)

);

insert into ##sys_user_insert (id,name) values(@id,@name);

go

在sys_user新增数据时会被触发,将新增的数据加入临时表##sys_user_insert,此时

的临时表 ##sys_user_insert会增加一条记录

Ø 二、配置elt流程

节点1 从临时表读取数据,写入数据流

节点2 从数据流获取数据写入oracle

节点3 从sqlserver的临时表删除已经被同步的记录

Ø 三、建立作业调度

设置调度周期

适用增量数据同步

在要同步的源表里有时间戳字段,每当数据发生新增,时间戳会记录发生变化的时间,etl工具根据时间范围定时同步数据

优点:基本不影响业务系统

缺点:要求源表必须有时间戳这一列,适用增量场景,修改、删除不太适用

定时清空oracle数据源,将sqlserver的数据全盘拷贝到oracle数据源。一般用于数据量不大,实时性要求不高的场景。

优点:基本不影响业务系统,开发、部署都很简单

缺点:效率低

Etl流程

结论

准能现场数据同步,涉及增、删、改的同步,比较适用触发器的方式进行数据同步,但触发器仍会存在失效的情况,若现场有数据质量系统,定期数据稽核,查缺补漏,保证两边数据库的一致性;

用RSYNC同步的化需要用sersync这样的软件,这样可以保证在文件块级同步,但是这样还是会存在数据库的不一至性,所以如果你想做数据库同步的方案,还是做dataguard这样的方案比较好一点,

能实现,

sqlserver 到oracle可以用触发器实现,前提是你需要先在sql server上创建到oracle的连接。

之后oracle 到外网你可用通过程序或别的方法实现。

有时候项目开发的需要,必须将sqlServer中的某县表同步到Oracle数据库汇总,有其他系统来读取这些数据,不同数据库类型之间的数据同步我们可以使用连接服务器和sqlAgent来实现。加入我们泽凯有一个和听合同管理系统,其中有表contract和contract_project是需要同步到一个MIS系统中的ORACLE,那么我们可以按照以下步骤实现数据的同步

1在oracle数据库中建立对应的contract和contract_project表,需要同步那些数据字段我们就建立那些字段到oralce表中

需要注意哦的是oralce的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系,我们可以再sqlServer下运行:

SELECT

FROM msdbdboMSdatatype_mappings

来查看sqlServcer和oralce数据库的的类型类型对应

2建立连接服务器,我们将oralce系统作为SQLserver的链接服务器加入到SQLserver中

有时候我们需要在sqlsercer下访问另外一个sqlserver数据库上的数据或者访问其他oracel数据库就上的数据吗,想要完成这些 *** 作,我首先要创建一个数据库链接。

数据库链接能够让本地的一个sqlservwer登录用户勇摄到远程的一个数据库服务器上,并且像 *** 作本地数据库一样,那么怎样创建数据库链接?

创建一个sqlserver对应的oracle的数据库链接,

你这听人说的步骤就是导出导入就完事啊

1,删除级联用户,drop user user_name cascade;为了就是防止测试库有这个用户

2,创建用户,create user user_name profile default identified by password default tablespace 表空间 temporary tablespace 临时表空间 account unlock;删了之后再重新建一个用户,用对应的表空间

3,导入正式库的dmp imp system/password file=x:\xxxdmp fromuser=正式库导出用户 touser=测试库导入用户

以上就是关于Etl工具将sqlserver数据同步到oracle设计说明全部的内容,包括:Etl工具将sqlserver数据同步到oracle设计说明、linux下ORACLE数据库可以用rsync实现同步么、sqlserver数据库与oracle数据库实现数据同步等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9335973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存