Sqlserver2000连接Oracle11G数据库进行数据实时同步

 Sqlserver2000连接Oracle11G数据库进行数据实时同步

1,前提条件

已经有sqlserver2000环境,已经存在oracle11g环境,准备这两个数据库,建立各自的访问账号,两者之间需要ping通,telnet端口也要能通,目的是将sqlserver里面的数据自动同步到oracle数据库里面去。Sqlserver里面有链路服务器(linked server)可以实现。

2,在sqlserver上面建立odbc数据源

有2种方式:“Microsoft ODBC for Oracle”选项以及“Oracle inOraDb10g_home3”选项

2.1,“Microsoft ODBC for Oracle”驱动方式

进入“控制面板”->“管理工具”->“数据源 (ODBC)”,双击打开。

进入“系统 DSN”,点击“添加”按钮,在弹出的“选择你想为其安装数据源的驱动程序”选择框里面,选择在列表框中选择“Microsoft ODBC for Oracle”选项,单击“完成”按纽。

PS:这里不要选择安装oracle客户端时候生成的“Oracle in OraDB10g_home3”这个驱动。

如下图1.png所示:

之后在弹出的界面里面,设置

Data Source Name:这里就是数据源名称,是tnsnames.ora里面配置的数据源名称,可以用tnsping xxx能测试ok的数据源名称。

Description:描述,随意填写

User Name:用户,连接oracle数据库的用户名,比如scott

Server:软件服务器,默认为Oracle

这里,根据自己的实际情况,设置如下图2.png所示:

之后点击“确定”按钮,就会生成新的ODBC数据源。

2.2,“Oracle in OraDb10g_home3”驱动选项

进入“控制面板”-> “管理工具”->“数据源 (ODBC)”,双击打开。

进入“系统 DSN”,点击“添加”按钮,在弹出的选择框里面,选择在“选择你想为其安装数据源的驱动程序”列表框中选择“Oracle in OraDb10g_home3”选项,单击“完成”按纽。如下图3.png所示:

之后再弹出的界面,设置

Data Source Nam:随便输入一个名字,这个名字就要后面sqlserver要用到的

Description:描述,随意填写

TNS Service Name:下拉列表中就是oracle中配置好的TNS信息,如果你开始没有配置的话这里就为空的.你选一个TNS名字后,可以点下test connection验证下看连接上了不.

User ID:就是连接oracle数据库的用户名,比如scott。

如下图5.png所示:

点击“Test Connection”按钮,输入连接oracle数据库的用户名密码,如果成功就会弹出“Connection successful”的提示框。之后点击“OK”按钮,完成创建,在“ODBC 数据源管理器”界面就会生成新的TEST数据源,如下图6.png所示:

3,在“企业管理器”创建连接oracle数据库的链路服务器

在前面创建好ODBC数据源之后,就可以开始建立连接oracle数据库的链路服务器了,进入sqlserver企业管理器“控制台目录”-> “SQL Server组”->“(LOCAL) (Windows NT)”-> “安全性”->“链路服务器”。在右边的空白窗口界面,右键点击选择“新建链路服务器”,开始设置:

在常规标签界面里面:

(0),定义连接名称;
(1),选其他数据源;指定程序名称为:Microsoft OLE DB Provider for Oracle; 
(2),产品名称可不填; 
(3),数据源指定刚才ODBC中定义好的数据源名称; 
(4),提供程序字符串按 
以下格式填写:UserID=username;PassWord=userpasswd
(或者按如下格式:UID=username;PWD=userpasswd),
这里的用户名和密码对应所要连接的oracle数据库中的用户名和密码。

在安全性标签页里:

设置用此安全上下文进行,并录入oracle的数据库用户名和密码。

服务器选项标签页:可默认,

最后点击“确定”按钮完成链路服务起的建立工作,如下图7.png所示:

4,验证链路服务器

进入sqlserver企业管理器“控制台目录”-> “SQL Server组”->“(LOCAL) (Windows NT)”-> “安全性”->“链路服务器”->“TEST”,点击表,即可在右边窗口看到该oracle数据库用户拥有的的所有表名,如下图8.png所示:

5,在sqlserver的查询分析器窗口验证链路服务器

-- 执行查询

SELECT * FROM OPENQUERY(TEST_ORCL, ‘SELECT* FROM SCOTT.ZZZ_TEST‘) ;

-- 录入数据

insert into openquery(TEST_ORCL,‘SELECT *FROM SCOTT.ZZZ_TEST‘)

values(2,‘b‘);

SELECT * FROM OPENQUERY(TEST_ORCL, ‘SELECT* FROM SCOTT.ZZZ_TEST‘) ;

--删除数据

DELETE FROM openquery(TEST_ORCL,‘SELECT *FROM SCOTT.ZZZ_TEST‘)

WHERE ID=2;

SELECT * FROM OPENQUERY(TEST_ORCL, ‘SELECT* FROM SCOTT.ZZZ_TEST‘) ;

-- 修改数据

UPDATE openquery(TEST_ORCL,‘SELECT * FROM SCOTT.ZZZ_TEST‘)SET NAME=‘A2‘ WHERE ID=1;

SELECT * FROM OPENQUERY(TEST_ORCL, ‘SELECT* FROM SCOTT.ZZZ_TEST‘) ;

6,查看后台的链路服务器的ddl语句

在sqlserver的企业管理器里面看不到,可以通过SQL Manager 2008 for SQL Server工具来查看,你可以不通过sqlserver的管理器来操作,可以直接使用ddl语句来创建,ddl语句如下所示:

EXEC master.dbo.sp_addlinkedserver @server= N‘TEST_ORCL‘,
 @srvproduct = ‘Oracle‘,
 @provider = ‘MSDAORA‘, @datasrc = ‘TEST_ORCL‘,
 @location = ‘‘,
 @provstr = ‘UID=username;PWD=paxxx‘,
 @catalog = ‘‘
GO

EXEC master.dbo.sp_serveroption @server =N‘TEST_ORCL‘,
 @optname = ‘collation compatible‘,
 @optvalue = ‘false‘
GO

 EXECmaster.dbo.sp_serveroption @server = N‘TEST_ORCL‘,
 @optname = ‘collation name‘,
  @optvalue= ‘null‘
GO

EXEC master.dbo.sp_serveroption @server =N‘TEST_ORCL‘,
 @optname = ‘data access‘,
 @optvalue = ‘true‘
GO

EXEC master.dbo.sp_serveroption @server =N‘TEST_ORCL‘,
 @optname = ‘connect timeout‘,
 @optvalue = ‘0‘
GO

EXEC master.dbo.sp_serveroption @server =N‘TEST_ORCL‘,
 @optname = ‘query timeout‘,
 @optvalue = ‘0‘
GO

EXEC master.dbo.sp_serveroption @server =N‘TEST_ORCL‘,
 @optname = ‘rpc‘,
 @optvalue = ‘false‘
GO

EXEC master.dbo.sp_serveroption @server =N‘TEST_ORCL‘,
 @optname = ‘rpc out‘,
 @optvalue = ‘false‘
GO

EXEC master.dbo.sp_serveroption @server =N‘TEST_ORCL‘,
 @optname = ‘use remote collation‘,
 @optvalue = ‘true‘
GO

EXEC [email protected] = N‘TEST_ORCL‘,
 @locallogin = NULL,
 @useself = ‘false‘,
 @rmtuser = N‘username‘,
 @rmtpassword = ‘password‘
GO

7,一些报错信息汇总

错误 7399: OLE DB 提供程序 MSDAORA‘ 报错。

OLEDB 错误跟踪 [OLE/DB Provider ‘MSDAORA‘ IDBInitialire::Initializereturned 0x80004005:  ]。

如下图:20150310/1.png

第一种解决方案:

代理中的sQl server 连接的问题,不能用windows身份验证,得用sysadmin登陆,

具体设置方法如下:在企业管理器中->管理->SQL Server 代理->右键菜单"属性"->分页选项卡上选"连接"->"使用SQL

Server 身份验证",之后"应用"跟"确定"就可以了。

第二种解决方案:

在建立odbd数据源的时候,不要用默认oracle客户端的“Oracle in OraDb10g_home3”驱动选项,要用“MicrosoftODBC for Oracle”驱动选项。

时间: 2024-08-10 23:26:57

Sqlserver2000连接Oracle11G数据库进行数据实时同步的相关文章

Rsync+inotify完整备份及数据实时同步

Rsync+inotify数据实时同步 客户端IP:192.168.1.10         服务端IP:192.168.1.20 1.什么是Rsync? Rsync(remote synchronize)是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据镜像同步备份优秀工具,他适用于unix/Linux/Windows多系统操作平台, 2.Rsync的特性 1.支持拷贝特殊文件入链接.设备等 2.可以有排除执行文件或目录同步的功能相当于打包命令tar的排除功能 3.可以做到保持源

cwRsyncServer从windows下数据实时同步到linux服务器上的实现过程

由于公司有两台windows服务器,开发在操作时一般也都是在这两台服务器上上传一些数据或修改一些东西,而Linux上的服务器也要跟windows上的数据要保持一致而又不需要人为的实现这个过程,基于此过程,昨天花了点时间,完成了基本的测试实现过程,今天就把这过程给记录下来,方便以后查看,以希望可以帮到还在困惑的朋友们. 第一步:在windows上的安装cwRsyncServer4.1.0以及配置过程: 在windows上下载安装包cwRsyncServer4.rar,这个不多解析,大家都懂,要是在

Linux Debian8 Rsync+Sersync实现数据实时同步

Rsync+sersync实现数据实时同步Rsync??Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.Rsync的基本特点如下:?1.可以镜像保存整个目录树和文件系统:?2.可以很容易做到保持原来文件的权限.时间.软硬链接等:?3.无须特殊权限即可安装:?4.优

centos7服务搭建常用服务配置之二:Rsync+sersync实现数据实时同步

目录 1.RSYNC数据备份 1.1 rsync服务简介 1.2 rsync特点和优势 1.3 rysnc运行模式简介 1.4 数据同步方式 2 Rsync实验测试 2.1 实验环境说明 2.2 服务安装 2.3 Rsync命令详解 2.3 实验一使用rsync命令备份数据 2.4 实验二使用rsyncd服务进行数据备份 3.Rsync+sersync实现数据实时同步 3.1 rsync+sersync架构作用 3.2 rsync+inotify-tools与rsync+sersync架构的区别

sersync基于rsync+inotify实现数据实时同步

一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192.168.1.243 实时同步/var/atlassian目录到从服务器. 二.实施 1.从服务器192.168.1.243 rsync服务搭建 1.1安装软件包 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz tar xf r

rsync + inotify 用来实现数据实时同步

一.简介 1.rsync 比其cp.tar备份的方法,rsync的优点是,安全性高.备份迅速.支持增量备份.只能做对实时性要求不高的数据备份,例如:备份文件服务到远端从服务器.在本地磁盘上做数据镜像等 增量备份:就是rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.但是对于大量文件达到千万量级别时,扫描所有文件是非常耗时的. 如果发生改变的只是其中的一小部分的话,这是非常低效的方式. rsync 不能实时的去监测,同步数据,虽然它可以通过 linux 守护进程的方式进行触发同步,两

rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

rsync与inotify实现数据实时同步

Rsync与Inotify 单一的rsync只可以进行数据同步,单一的inotify只可以实时监控文件,两者结合使用刚好满足数据实时同步的需求,下面就用一个数据发布服务器和两个web服务器实例解析rsync+inotify实现实时同步. 数据发布服务器 192.168.1.5 (rsync+inotify) web服务器 192.168.1.6 192.168.1.7 (rsync) 首先在web服务器上部署rsync 192.168.1.6配置 [[email protected]~]# yu

Linux下Rsync+Inotify-tools实现数据实时同步

说明: 一.先安装好rsync的服务端和客户端: http://douya.blog.51cto.com/6173221/1573968 二.安装,使用inotify-tools,实时同步 1.查看服务器内核是否支持inotify ll /proc/sys/fs/inotify   #列出文件目录,出现下面的内容,说明服务器内核支持inotify -rw-r--r-- 1 root root 0 Mar  7 02:17 max_queued_events -rw-r--r-- 1 root r