cobra - 2008-3-14 13:42:00
文/cobra 出处/拼吾爱
最近公司一个项目,涉及到异地、异构数据库服务器的数据同步问题,搜集了一些资料并经过大量测试,总结了一套方案出来,希望对有相同业务需求的开发人员有所帮助:)
工作环境:SQL Server2000(Windows XP)、Oracle 8i(Windows 2003)、
准备工作:使用Oracle的Net8 Configuration Assistant工具注册目标服务器;
一、建立链接目标服务器:SQL语句:
创建:
sp_addlinkedserver '别名', 'Oracle', 'MSDAORA', '服务名'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='oracle用户名',@rmtpassword='密码'
删除:
IF EXISTS (SELECT srvname FROM master.dbo.sysservers srv WHERE srvid != 0 AND srvname = N'链接服务器别名') EXEC master.dbo.sp_dropserver @server=N'链接服务器别名', @droplogins='droplogins'
二、创建发布服务器企业管理器——复制——右键点发布内容选择新建发布,具体根据下面图示完成;

附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件 您可能对 [SQL Server] 的这些文章也感兴趣:
cobra - 2008-3-14 14:07:00
三、创建订阅服务器
企业管理器——复制——右键点发布内容选择配置发布、订阅服务器和分发,里面选择订阅服务器项,点新建——选择OLE DB数据源确定——里面选择链接服务器——在下面输入建立链接服务器时的用户和密码(如果没有可以空着)——应用确定,具体根据下面图示完成;

附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件注意这里:是点新建按钮到下一步,上图显示的打勾的选项是在下面步骤完成后才会出现。
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件注意这里:如果准备工作里的注册目标服务器顺利完成的话,上图的选择框里应该有注册的服务器选项,选择后在下面的订阅服务器登录里输入帐号和密码确定即可,如果准备工作没有进行则直接点击添加到下一步。
附件:
您所在的用户组无法下载或查看附件注意这里:提供程序名称里选择OLE DB提供的ORACLE程序。其他按照注册服务器相关资料填写即可。完成后会出现类似步骤二的提示窗口出现。
cobra - 2008-3-14 14:25:00
四、连接订阅服务器企业管理器——复制——右键点发布内容里面的刚才创建的发布服务器选择强制新订阅——点下一步——选择刚才配置的订阅服务器点下一步下来,具体按下面图示完成;

附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件注意这里:选择上面步骤创建的订阅服务器。
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件注意这里:如果你在目标服务器上已经建立与源服务器相同的库结构、表结构,则如图选择否,否则选择是。
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
cobra - 2008-3-14 14:28:00
五、修改代理程序属性企业管理器——复制——右键点发布内容里面的刚才创建的发布服务器选择属性——选择状态项——选择代理程序属性——选择调度项——编辑需要的调度作业时间保存,具体请按下面图示完成;

附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件
附件:
您所在的用户组无法下载或查看附件上述过程全部顺利完成后,不要忘了一些小细节,比如启动作业或者解决SQL Server与Oracle字段类型不一致等问题,祝你好运!
licaiks - 2008-4-17 15:36:00
晕
还是我实现 的
搂主 应该给我加分
cobra - 2008-4-17 15:45:00
原帖由 licaiks 于 2008-4-17 15:36:00 发表
晕
还是我实现 的
搂主 应该给我加分
我的灵感,,,
cobra - 2008-7-29 23:42:00
上述方案里在实际操作中需要注意几点:
一、该方案最好应用于局域网,在互联网上受限于带宽,大数据量下效率低得几乎失去同步的意义;
二、实施过程中需要注意的几点:
1、Win2000+Oracle8i客户端实施该方案还要修改注册表:
[hkey_local_machine\software\microsoft\msdtc\mtxoci
"oraclexalib"="oraclient8.dll"
"oraclesqllib"="orasql8.dll"
"oracleocilib"="oci.dll"
2、解决报错“ole db提供程序MSDAORA报错”:
连接SQL:sp_addlinkedserver 'goldwl', 'Oracle', 'MSDAORA', 'goldwl'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname='goldwl',@useself='false',@locallogin=null,@rmtuser='system',@rmtpassword='manager'
3、解决报错“请提供@job_id或@job_name来标识作业”:
重建MASTER:运行Program Files\Microsoft SQL Server\80\Tools\Binn\里的Rebuildm.exe。
基于互联网的数据同步解决稍后我会公布一个更具实际操作价值的方案出来:default7:
licaiks - 2008-9-11 16:42:00
顶!
现在都搞忘记了,部署的时间需要改的东西是不是很多?
cobra - 2008-9-11 17:14:00
这个方案已经被证明不能应用于互联网数据同步,有个新方案:
异地、异构数据库高效率同步解决方案(新),才能适用于异地数据同步,而且效率不错喔:)
zhangzxy161723 - 2008-10-10 10:10:00
我是新手,刚接触想问两个问题
问题1:下面的SQL语句(就是第一步的SQL语句)是在哪执行的。
SQL语句:
创建:
sp_addlinkedserver '别名', 'Oracle', 'MSDAORA', '服务名'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='oracle用户名',@rmtpassword='密码'
删除:
IF EXISTS (SELECT srvname FROM master.dbo.sysservers srv WHERE srvid != 0 AND srvname = N'链接服务器别名') EXEC master.dbo.sp_dropserver @server=N'链接服务器别名', @droplogins='droplogins'
问题2:
我看完整个过程后,感觉始终是在一台服务器上执行操作。
我想问一下是在一台服务器还是两台服务器上操作的?能给出一个说明吗。
小弟现在正要做一个这样的方案,希望striver老大能点拨一下。3Q:default7:
cobra - 2008-10-10 10:22:00
问题1:
在查询分析器里,数据库选择你使用的库
问题2:
确定只需要在一台服务器上完成,例子中是SQLSERVER库所在服务器,建立连接之前需要安装ORACLE 的客户端连接上ORACLE服务器才行。
licaiks - 2008-10-13 13:13:00
给你这样说把 !
sqlserver 和orcle 同步解决方案
一台是sqlserver服务器,另外一台是oracle服务器,两者的数据要保持一致