1/3页123 跳转到查看:6997
发新话题 回复该主题
键盘左右键可以进行前后翻页操作
帮助

异地SQL Server与Oracle数据同步解决方案

异地SQL Server与Oracle数据同步解决方案


文/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] 版块的最新发帖也感兴趣:
• SQL SERVER2005 分区表几何倍数提高网站性能 • WEB版的SQL Server 企业管理器
• 细说Sql Server中的视图(下) • SQLSever2005之Output子句用法
• 细说Sql Server中的视图(上) • Inside Microsoft SQL Server 2005: T-SQL Programming
• SqlConnection的dispose和close方法差异和using的使用选择 • 基于数据库元数据和模板的代码生成器2.29的demo
• NHibernate in Action • 利用对象池优化数据库操作
• linux mono 调用windows sqlServer 2005 • 异地SQL Server与Oracle数据同步解决方案
• SQL Server 2008 Query Performance Tuning Distilled • 通过CLR同步SQL Server和Sharepoint List数据(四)
• SQLServer2005数据库被置为“可疑” • 由partition看窗口函数
• 监视SQLServer数据库镜像 • SQL Server 2008 数据库快照
• 创建集成含有SQL Server 2008 RTM + Service Pack 1 的安装 • SQLServer的数据库镜像

TOP

 

回复: 异地SQL Server与Oracle数据同步解决方案

三、创建订阅服务器
企业管理器——复制——右键点发布内容选择配置发布、订阅服务器和分发,里面选择订阅服务器项,点新建——选择OLE DB数据源确定——里面选择链接服务器——在下面输入建立链接服务器时的用户和密码(如果没有可以空着)——应用确定,具体根据下面图示完成;

 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!
注意这里:是点新建按钮到下一步,上图显示的打勾的选项是在下面步骤完成后才会出现。


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!
注意这里:如果准备工作里的注册目标服务器顺利完成的话,上图的选择框里应该有注册的服务器选项,选择后在下面的订阅服务器登录里输入帐号和密码确定即可,如果准备工作没有进行则直接点击添加到下一步。


 附件: 该内容需注册用户才可浏览,感谢您的支持!
注意这里:提供程序名称里选择OLE DB提供的ORACLE程序。其他按照注册服务器相关资料填写即可。

完成后会出现类似步骤二的提示窗口出现。

TOP

 

回复: 异地SQL Server与Oracle数据同步解决方案

四、连接订阅服务器
企业管理器——复制——右键点发布内容里面的刚才创建的发布服务器选择强制新订阅——点下一步——选择刚才配置的订阅服务器点下一步下来,具体按下面图示完成;


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!
注意这里:选择上面步骤创建的订阅服务器。


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!
注意这里:如果你在目标服务器上已经建立与源服务器相同的库结构、表结构,则如图选择否,否则选择是。


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!

TOP

 

回复: 异地SQL Server与Oracle数据同步解决方案

五、修改代理程序属性
企业管理器——复制——右键点发布内容里面的刚才创建的发布服务器选择属性——选择状态项——选择代理程序属性——选择调度项——编辑需要的调度作业时间保存,具体请按下面图示完成;

 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!


 附件: 该内容需注册用户才可浏览,感谢您的支持!

上述过程全部顺利完成后,不要忘了一些小细节,比如启动作业或者解决SQL Server与Oracle字段类型不一致等问题,祝你好运!

TOP

 

回复: 异地SQL Server与Oracle数据同步解决方案


还是我实现 的
搂主 应该给我加分

TOP

 

回复: 异地SQL Server与Oracle数据同步解决方案



引用:
原帖由 licaiks 于 2008-4-17 15:36:00 发表

还是我实现 的
搂主 应该给我加分


我的灵感,,,

TOP

 

回复:异地SQL Server与Oracle数据同步解决方案

上述方案里在实际操作中需要注意几点:
一、该方案最好应用于局域网,在互联网上受限于带宽,大数据量下效率低得几乎失去同步的意义;

二、实施过程中需要注意的几点:
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。

基于互联网的数据同步解决稍后我会公布一个更具实际操作价值的方案出来

TOP

 

回复:异地SQL Server与Oracle数据同步解决方案

顶!
现在都搞忘记了,部署的时间需要改的东西是不是很多?

TOP

 

回复: 异地SQL Server与Oracle数据同步解决方案

这个方案已经被证明不能应用于互联网数据同步,有个新方案:异地、异构数据库高效率同步解决方案(新),才能适用于异地数据同步,而且效率不错喔:)

TOP

 

回复:异地SQL Server与Oracle数据同步解决方案

我是新手,刚接触想问两个问题

问题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

TOP

 
1/3页123 跳转到
发表新主题 回复该主题