当前位置:首页 » 编程语言 » sqlserver同步oracle

sqlserver同步oracle

发布时间: 2022-12-10 12:11:49

sqlserver数据库与oracle数据库实现数据同步

能实现,
sqlserver 到oracle可以用触发器实现,前提是你需要先在sql server上创建到oracle的连接。
之后oracle 到外网你可用通过程序或别的方法实现。

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

软件说明



通过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流程

结论

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

③ 如何把sql server一张表的数据实时同步到Oracle数据库

1. SQLSERVER服务器上面安装oracle客户端,配置服务命名(假设为 test)
2. 在SQLSERVER服务器上面建立链接服务器,脚本如下

SQL code?
SQL code-- Adding linked server:

exec sp_addlinkedserver @server = 'test' ,
@srvproct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --数据库用户
@rmtpassword = 'password' --密码
3. 建立一个作业,通过作业调度存储过程,存储过程使用类似的语句将oracle的数据插入到sqlserver表中

SQL code?
insert into sqlserver表 select * from test..oracle表名
4. 如果要球ORACLE数据是实时增加的,并且ORACLE记录上有递增的字段,可以在SQLSERVER上面建立一个表记录上次插入的id,然后下次可以从上次的ID+1开始继续插入

SQL code?
insert into sqlserver表 select * from test..oracle表名 where id>@id
5. 防止sqlserver同步的时候oracle仍在不断的插入,每次要取一个结束ID

SQL code?
select @endid=max(id) from test..oracle表名.

④ 如何把sql server一张表的数据实时同步到Oracle数据库

如何把sql
server一张表的数据实时同步到oracle数据库
1.
sqlserver服务器上面安装oracle客户端,配置服务命名(假设为
test)
2.
在sqlserver服务器上面建立链接服务器,脚本如下
sql
code?
sql
code--
adding
linked
server:
exec
sp_addlinkedserver
@server
=
'test'
,
@srvproct
=
'oracle',
@provider
=
'msra',
@datasrc
=
'test'

⑤ 如何同步ORACLE和sqlserver的数据

有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:
SELECT *
FROM msdb.dbo.MSdatatype_mappings

SELECT *
FROM msdb.dbo.sysdatatypemappings
来查看SQLServer和其他数据库系统的数据类型对应关系。第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。

SQLServer和Oracle的对应

2.建立链接服务器。我们将Oracle系统作为SQLServer的链接服务器加入到SQLServer中。
具体做法参见我以前的文章http://www.cnblogs.com/studyzy/archive/2006/12/08/690307.html
3.使用SQL语句通过链接服务器将SQLServer数据写入Oracle中。
比如我们建立了链接服务器MIS,而Oracle中在MIS用户下面建立了表contract_project,那么我们的SQL语句就是:
DELETE FROM MIS..MIS.CONTRACT_PROJECT
--清空Oracle表中的数据
INSERT into MIS..MIS.CONTRACT_PROJECT--将SQLServer中的数据写到Oracle中
SELECT contract_id,project_code,actual_money
FROM contract_project

如果报告成功,那么我们的数据就已经写入到Oracle中了。用
SELECT *
FROM MIS..MIS.CONTRACT_PROJECT
查看Oracle数据库中是否已经有数据了。
4.建立SQLAgent,将以上同步SQL语句作为执行语句,每天定时同步两次。
这样我们的同步就完成了。
这里需要注意的是MIS..MIS.CONTRACT_PROJECT 这里必须要大写,如果是小写的话会造成同步失败。

⑥ 如何同步ORACLE和sqlserver的数据

有时候项目开发的需要,必须将sqlServer中的某县表同步到Oracle数据库汇总,有其他系统来读取这些数据,不同数据库类型之间的数据同步我们可以使用连接服务器和sqlAgent来实现。加入我们泽凯有一个和听合同管理系统,其中有表contract和contract_project是需要同步到一个MIS系统中的ORACLE,那么我们可以按照以下步骤实现数据的同步
1.在oracle数据库中建立对应的contract和contract_project表,需要同步那些数据字段我们就建立那些字段到oralce表中
需要注意哦的是oralce的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系,我们可以再sqlServer下运行:
SELECT *
FROM msdb.dbo.MSdatatype_mappings

来查看sqlServcer和oralce数据库的的类型类型对应
2.建立连接服务器,我们将oralce系统作为SQLserver的链接服务器加入到SQLserver中
有时候我们需要在sqlsercer下访问另外一个sqlserver数据库上的数据或者访问其他oracel数据库就上的数据吗,想要完成这些操作,我首先要创建一个数据库链接。
数据库链接能够让本地的一个sqlservwer登录用户勇摄到远程的一个数据库服务器上,并且像操作本地数据库一样,那么怎样创建数据库链接?
创建一个sqlserver对应的oracle的数据库链接,

⑦ 如何同步ORACLE和sqlserver的数据

1. 自己编程,或者第三方工具
2. 在sqlserver中,使用linkedserver,访问oracle,然后编写job什么的进行数据同步
3. 在oracle中,使用透明网关,访问sqlserver,进行数据同步。

⑧ SQL SERVER2012同步Oracle数据

我理解的是,你的需求是将oracle中变化的数据同步到sqlserver中。

我提供的解决方案是使用oracle的ogg,就是goldengate来实现。

首先,这个需求是跨库跨平台的,一般sqlserver都装在win上,而oracle都装在linux上(当然,也有linux版的sqlserver,oracle也能装在win上,但是实现的方法和结果是一样的),但是对于ogg来讲无所谓,ogg的特点就是可以跨库跨平台跨版本来同步数据。

源端是oracle,目标端是sqlserver,可以使用11版本的ogg来同步数据,该版本功能够用,bug也相对少了,我做运维也经常用。

使用ogg的注意事项如下:

  1. 源端oracle库的同步表必须有主键。

  2. 源端oracle库必须是force logging,必须开附加日志。

  3. 初始化数据的时候,可以使用ogg自己的initload功能,省的还得用sqlserver的同步助手,费劲。

  4. oracle和sqlserver支持的字段类型不要太特殊了,比如oracle的lob字段,sqlserver的各种text字段啥的,这些特有的字段,ogg支持不是很好,而对于int、varchar等通用的字段就没问题了。

    最后,希望能帮到你,但是ogg这个东西对你来说可能是新的,所以你要用的话,得先学学,有问题可以问我。

⑨ 如何实现sqlserver中的部分表的数据定时同步到oracle

可以写个客户端同时连接2个db定时同步,这是最简单的直观的
因为数据量不多,所以不必考虑性能问题。
1
在sqlserver中建立linkedserver,
以便可以从sqlserver中直接访问oracle。
2
在sqlserver中建立dts/ssis数据传输任务,并进行定数调度。

热点内容
做解压橡皮 发布:2025-01-21 15:03:06 浏览:990
双系统win访问mac 发布:2025-01-21 14:53:52 浏览:484
安卓车机系统如何安装carplay 发布:2025-01-21 14:52:24 浏览:589
sql操作手册 发布:2025-01-21 14:46:08 浏览:312
青橙脚本 发布:2025-01-21 14:44:05 浏览:219
东风本田crv时尚版是什么配置 发布:2025-01-21 14:20:04 浏览:219
安卓如何多开软件每个机型不一样 发布:2025-01-21 14:15:29 浏览:501
iis配置php5 发布:2025-01-21 14:08:19 浏览:274
凯叔讲故事为什么联系不到服务器 发布:2025-01-21 13:56:50 浏览:387
linux镜像文件下载 发布:2025-01-21 13:34:36 浏览:218