Oracle DBLink跨数据库访问SQL server数据同步 踩坑实录

  项目需求:这里暂且叫A公司吧,A公司有一套人事管理软件,需要与我们公司的软件做人员信息同步,A公司用的是SQL server数据库,我们公司用的Oracle,接口都不会开发(一万句“fuck you”),就单单给我们公司提供了一个SQL server的账户和密码,还有一个视图。后来百度一番,可以通过DBLink跨数据库访问,然后做数据信息同步功能。

  安装过程中,踩了不少的坑,需要配置很多的东西,QQ群里也请教不少人,都很少人听说还有这玩意,现在做数据对接,都是走到接口,传JSON字符串过来,回答我的人,也是寥寥无几,一万句“fuck you”,真的是坑啊,最终花了一天的时间把捣鼓出来,所以把整个安装步骤记录下来。

  第一步:需要去下载一个透明网管,相当于一个中间件(我们用的Oracle 11g,可能不同的数据库版本要安装不同的透明网管)

需要的朋友请到我的百度云盘上下载

链接:https://pan.baidu.com/s/1pLsPI8jw7e5JiTazPJpFwQ
提取码:m7od   

  第二步:安装透明网关

1、解压安装包后,点击setup.exe安装

2、下一步(注:貌似一定要和Oracle数据库安装目录一致,第一次安装的时候,就和Oracle安装在不同地方了,最终百度很久发现,要和Oracle安装同一个位置)

3、选择组建,选择SQL Server

4、填写SQL SERVER的主机名和数据库名称

5、开始安装

6、安装完成后就退出,然后开始配置监听,下面是重点!!!!

  第三步:透明网关配置

 配置说明:

本地Oracle安装目录:D:\Oracle\product\11.2.0\dbhome_1

本地DBLink安装目录:D:\Oracle\product\11.2.0\dbhome_1

SQL Server:账号:sa;密码:password;IP地址:127.0.0.1

1、来到:D:\Oracle\product\11.2.0\dbhome_1\dg4msql\admin;打开initdg4msql.ora

1 这个目录下可以看到以下initdg4msql.ora文件,上面在安装透明网关的时候有配置的要链接SQL SERVER数据的地址和数据库名称,在这里都可以体现:

配置文件:initdg4msql.ora

 1 # This is a customized agent init file that contains the HS parameters
 2 # that are needed for the Database Gateway for Microsoft SQL Server
 3
 4 #
 5 # HS init parameters
 6 #
 7 HS_FDS_CONNECT_INFO=[127.0.0.1]:1433//DEMO   注:连接其他的SQL Server可修改此处
 8 HS_FDS_TRACE_LEVEL=OFF
 9 HS_FDS_RECOVERY_ACCOUNT=RECOVER
10 HS_FDS_RECOVERY_PWD=RECOVER

检查一下HS_FDS_CONNECT_INFO是否是我们想要链接的地址,格式为:目标数据库的IP地址:端口//数据库名。SQL SERVER的默认端口是1433。

配置文件:listener.ora.sample(localhost是监听的IP地址,这里我们连的是本地,127.0.0.1也是可以的)

 1 # This is a sample listener.ora that contains the NET8 parameters that are
 2 # needed to connect to an HS Agent
 3
 4 LISTENER =
 5  (ADDRESS_LIST=
 6       (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
 7  )
 8
 9 SID_LIST_LISTENER=
10   (SID_LIST=
11       (SID_DESC=
12          (SID_NAME=dg4msql)
13          (ORACLE_HOME=D:\Oracle\product\11.2.0\dbhome_1)
14          (PROGRAM=dg4msql)
15       )
16   )
17
18 #CONNECT_TIMEOUT_LISTENER = 0 

配置文件:tnsnames.ora.sample

1 # This is a sample tnsnames.ora that contains the NET8 parameters that are
2 # needed to connect to an HS Agent
3
4 dg4msql  =
5   (DESCRIPTION=
6     (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
7     (CONNECT_DATA=(SID=dg4msql))
8     (HS=OK)
9   ) 

2、配置透明网关的监听,来到:D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN(开始配置这3个文件)

配置文件:listener.ora

 1 # This is a sample listener.ora that contains the NET8 parameters that are
 2 # needed to connect to an HS Agent
 3 SID_LIST_LISTENER =
 4   (SID_LIST =
 5     (SID_DESC =
 6       (SID_NAME = CLRExtProc)
 7       (ORACLE_HOME = D:\Oracle\product\11.2.0\dbhome_1)
 8       (PROGRAM = extproc)
 9       (ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
10     )
11     (SID_DESC=
12          (SID_NAME=dg4msql)
13          (ORACLE_HOME=D:\Oracle\product\11.2.0\dbhome_1)
14          (PROGRAM=dg4msql)
15     )
16   )
17
18 LISTENER =
19   (DESCRIPTION_LIST =
20     (DESCRIPTION =
21       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
22       (ADDRESS = (PROTOCOL = TCP)(HOST = YRDLG5GS4G3ODYI)(PORT = 1521))
23       (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))
24     )
25   )
26
27 ADR_BASE_LISTENER = D:\Oracle
28
29 #CONNECT_TIMEOUT_LISTENER = 0 
1 这里需要注意的主要是一下几点:
2 PROGRAM为dg4msql:因为实例的配置文件在dg4msql目录下,就是上面的initdg4msql.ora文件所在的目录
3 SID_NAME为dg4msql:这个sid就是上面的文件名中的sid,initdg4msql.ora的sid为dg4msql
4 ORACLE_HOME就是我们透明网关的安装目录
5 ORACLE的监听端口是1521,我的oracle和透明网关是安装在同一台机器上的,所以透明网关的监听端口设置为1522。
6 一个initSID.ora文件就对应一个SID_DESC,可以根据想要链接的数据库来配置。

配置文件:sqlnet.ora

 1 # sqlnet.ora Network Configuration File: D:\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
 2 # Generated by Oracle configuration tools.
 3
 4 # This file is actually generated by netca. But if customers choose to
 5 # install "Software Only", this file wont exist and without the native
 6 # authentication, they will not be able to connect to the database on NT.
 7
 8 SQLNET.AUTHENTICATION_SERVICES= (NONE)
 9
10 NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

配置文件:tnsnames.ora

 1 # This is a sample tnsnames.ora that contains the NET8 parameters that are
 2 # needed to connect to an HS Agent
 3 ORCL =
 4   (DESCRIPTION =
 5     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
 6     (CONNECT_DATA =
 7       (SERVER = DEDICATED)
 8       (SERVICE_NAME = orcl)
 9     )
10   )
11
12 dg4msql  =
13   (DESCRIPTION=
14     (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))
15     (CONNECT_DATA=(SID=dg4msql))
16     (HS=OK)
17   ) 

配置完之后,一定不要忘记重启监听!!!!!!一定不要忘记重启监听!!!!!!一定不要忘记重启监听!!!!!!

1 命令:lsnrctl reload

查看监听状态:

  第四步:Oracle配置DBLink

1、先查看哪些用户可以使用DBLink,没有则创建权限

赋权限配置命令

1 如:grant create public database link to system ;
2 格式:grant create public database link to 用户名 ;

2、建立DBLink(用户要一定要权限才可以继续往下执行哦!没有的往上看,给用户配置权限)

 1 create database link DBTEST1
 2   connect to SA identified by "password"
 3   using ‘dg4msql‘;
 4
 5
 6
 7 格式:
 8 create database link DBLink名称
 9   connect to SQL Server账户 identified by "SQL Server密码"
10   using ‘SID‘;

搞定!!!!

下面这个报错信息,QQ群问一个遍,很少人知道DBLink这玩意,百度上资料也很少,捣鼓一下午,终于搞定了

出现这个问题是因为这6个文件导致的!!!!!!

捣鼓一下午,问题找到是因为这6个文件配置出问题了,这次就不再叙述了,修改那个配置文件了,配置文件因人而异,剩下的自己百度去查吧~~~~好了,捣鼓一天了,洗洗睡了,拜~~

原文地址:https://www.cnblogs.com/chenyanbin/p/11291752.html

时间: 2024-10-23 20:51:08

Oracle DBLink跨数据库访问SQL server数据同步 踩坑实录的相关文章

SQL Server 复制 - 发布订阅(SQL Server 数据同步)

原文:SQL Server 复制 - 发布订阅(SQL Server 数据同步) SQL Server的同步是通过SQL Server自带的复制工具来实现的,分发布和订阅2大步. A,复制-发布 发布之前,需要设置好几个前置条件,发布属性和快照位置.发布主要是设置发布数据库,如未设置,所有的发布,订阅可正常进行,也可通过快照同步,但是却无法在后面的修改中实时同步. 其次,设置快照位置.快照位置设置是在“分发服务器属性”中的发布服务器设置.如果设置的位置不能被订阅机访问,订阅是最好采用发布机推送订

sql server数据同步方案-日志传送

1 功能描述 本方案采用日志传送模式,把核心数据库(主数据库)定期同步到灾备数据库(辅助服务器)及备份库(辅助服务器,便于其他系统使用,减轻主数据压力),期间,如果发生异常导致无法同步,将以电子邮件.短信方式通知管理人员. 2 系统环境 2.1硬件 主数据库: SQLHA 灾备库服务器:DisaterDBSVRA 备份库服务器:BackupDataSVR 2.2软件 主数据库: Win2008 x64 SQL2005 SP4 x64 灾备库: Win2008 x64 SQL2005 SP4 x6

Windows Server 2012搭建SQL Server Always On踩坑全记录

Windows Server 2012搭建SQL Server Always On踩坑全记录 环境信息: Windows Server 2012 R2 Sql Server 2012 整个搭建集群的过程主要分为3步: 1.配置预控,并把机器加域. 2.配置windows故障转移集群(Windows Failover Cluster) 3.配置SQL Server Always On High Availability Group(AG) 踩坑全记录 预控配置 比较好配置,需要注意的是非预控机器在

Oracle GoldenGate 12c实时捕获SQL Server数据

在Oracle GoldenGate 12c中,对一些最新的数据库提供了支持,比如SQL Server 2012/2014,当然12c也支持sql server 2008.主要新增特性有: 捕获进程可以读取sql server压缩的本地备份日志: 当第三方日志备份工具限制读取交易日志时,OGG的捕获进程仍然能实现数据复制: OGG支持无主键表的数据捕获(在ogg 11g中对无主键的表,如要复制,会有一些要求): OGG可在sql server和其它异构数据库之间实时同步数据: OGG 捕获进程可

SQL Server数据同步到Oracle

一.分别配置SQL Server和oracle数据库的连接信息并测试连接. 二.新增数据同步任务,配置规则,运行任务,查看日志. 支持数据自动定时抽取,转换,汇聚同步.支持一对多,多对一,多对多等数据同步场景.支持多表级联,数据转换,数据清洗,数据脱敏等需求. 数据源.同步目标.抽取规则.调度计划直接通过web页面配置,同步日志详实记录. 三.输入SQL语句执行,查询数据,验证数据同步结果. 原文地址:https://www.cnblogs.com/treesoft/p/11629721.htm

两台SQL Server数据同步解决方案

复制的概念 复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式.使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据.复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性. SQL复制的基本元素包括 出版服务器.订阅服务器.分发服务器.出版物.文章 SQL复制的工作原理 SQL SERVER 主要采用出版物.订阅的方式来处理复制.源数据所在的服务器是出版服务器,负责发表数据.

Microsoft SQL Server on Linux 踩坑指南

微软用 SQL Server 在 2016 年的时候搞了一个大新闻,宣传 Microsoft ?? Linux 打得一众软粉措手不及.但是这还是好事情,Linux 上也有好用的 SQL Server 啦,但是从预览版开始 SQL Server on Linux 的配置要求蜜汁高,大部分云主机用户都望而却步.另外,SQL Server on Linux 对于文件系统有限制,仅支持 Ext3 以及 XFS 文件格式系统,对于某些云服务商默认提供的云镜像限制 Ext3 文件格式系统的用户而言也是足够让

Oracle Gateways透明网关访问SQL Server

自己的本机安装了Oracle 12c,公司的平台需要同时支持Oracle与SQL Server,很多时候都有将数据从Oracle同步到SQL Server的需求.通过SQL Server的link Server可以达到目的,但是因为SQL Server都是64位版本,试过很多次都失败了.再安装32位SQL Server也懒得折腾.因Oracle是12c, 安装的Gateways也是12c.尝试过在Oracle数据库服务器(本机)安装11g的gateways, 但是配置都失败了.    Oracl

.NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库

今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将运行在Linux上的示例站点(http://about.cnblogs.com)升级到了ASP.NET 5 RC1,并且增加了数据库访问功能——基于Entity Framework 7 RC1访问SQL Server数据库. 示例站点页面左侧的导航是从数据库读取数据动态加载的,数据库服务器用的是阿里