我的应用场景:

项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;

我的测试开发环境为64bitwin7PC机,本机上装有64位Oracle11g和32位Oracle11g;

本文以32位Oracle为例,通过配置ODBC数据源连接虚拟机上的Sql Server;

第一步、创建ODBC数据源

这一步要考虑数据源是32位还是64位的问题,其实就是选择不同的exe打开上面的界面,

win764位操作系统的64-bit ODBC 默认的位置:

C:\Windows\System32\odbcad32.exe

win764位操作系统的32-bit ODBC 默认的位置:

C:\Windows\SysWOW64\odbcad32.exe

添加数据源:

测试通过代表数据源配置成功

第二步、检查DG4ODBC驱动是否已经安装

方法如下:

在Oracle服务器上,cmd窗口中执行命令(dg4odbc或hsodbc)

上图代表安装了DG4ODBC驱动(如果没有安装,需自行下载安装,此处不介绍具体操作)

第三步、配置hsodbc

此目录下默认存在initdg4odbc.ora,复制这个文件,粘贴到上图目录中,并将后复制的文件改名为initodbc_test.ora,用记事本打开就该配置并保存如下图

注:每个使用DG4ODBC的实例,都必须单独一个"init*.ora"文件,文件命名规则:init+<网关sid>+.ora

HS_FDS_CONNECT_INFO = ODBC数据源管理中的DSN名称【本实验为testodbc】

HS_FDS_TRACE_LEVEL = OFF 【追踪级别参数,出于性能影响一般不配置或者配置为"OFF",若遇到网关问题需要跟踪日志,

则配置为"Debug",跟踪日志文件存放在"ORACLE_HOME\hs\trace"目录下】

第四步、配置lisenter(服务端透明网关监听)

第五步、重启监听

在命令提示符窗口依次输入如下命令

停止监听:lsnrctl stop

启动监听:lsnrctl start

一般停止监听没有问题,但是如果启动不了监听(启动监听服务失败),多半说明第四部字符串配置有错误,注意检查。

第六步、配置TNS(客户端服务命名)

第七步、创建oracle的DBLINK

在PLsql中或者sqlplus和环境下运行上述sql命令创建DataBase Link

第八步、访问测试

=======================================================================

OK!搞定!

扩展:

(1) 、六、七两步可以合并,直接创建dblink

create public database link test_sql connect to "sqlserver用户名" identified by "sqlserver密码" using '(description=
        (address= (protocol=tcp)(host=xxx.xxx.xxx.xxx)(port=1521))
        (connect_data=(SID=SID名称))
        (HS=OK)
)';

注意:采用上面的合并方式,则不受tnsnames.ora配置文件的限制,推荐使用,推荐是因为,tnsnames.ora的配置是客户端的,这样要求所有客户端都需要这样配置第六步,如果采用推荐方式,因为databaselink的配置文件是在服务端的,服务端配置一次,所有客户端都可以用了。

(2)、如果要把oracle这边的时间类型插到SQLserver类型为datatime的字段中,需要采用to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')的方式,就是转成字符串;

(3)、不仅仅可以连接SQL Server,其他类型ODBC数据源也可以,如mysql等;

(4)、如果32位应用环境,配置ODBC数据源的时候也必须配置32ODBC数据源,否则报错如下:

[ODBC 驱动程序管理器]在指定的DNS中,驱动程序和应用程序之间的体系结构不匹配{IM014};

(5)、如果报错找不到ODBC数据源,很可能是以上步骤中数据源名称错误,或者创建的ODBC数据源不是系统DSN,而是错选了用户DSN。

如上是我在借鉴搜索引擎上oracle连接odbc数据源的一些文章的过程中个人理解后整理,以作备忘,如有错误或不妥欢迎指教。

(6)、上面的步骤配置完,发现可以像使用oracle的表一样使用,select * from 表名/视图名@linkname,但是 select id from 表名@linkname 会报id标识符无效,也就是可以用*查询所有列,但是不能用列名查询指定列,解决办法是将列名用双引号引起来,并且双引号内列名区分大小写,如select "id" from 表名/视图名@linkname where“id”=‘A01’

Oracle数据库链接SQLServer数据库相关推荐

  1. mysql数据库单用户_SQLServer数据库之SqlServer数据库单用户模式无法删除的处理

    本文主要向大家介绍了SQLServer数据库之SqlServer数据库单用户模式无法删除的处理,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 今天在删除一个数据库时,一直 ...

  2. 【数据库】SQLServer数据库、附加数据库时出错。有关详细信息,请单击“消息”列中的超链接

    [数据库]SQLServer数据库.附加数据库时出错.有关详细信息,请单击"消息"列中的超链接 这个问题ex了我好久好久,让我刚开始以为是版本问题,2019运行出现了这个错误,以前 ...

  3. 如何将oracle数据库中的表结构导入到sqlserver中,Oracle转换成SqlServer数据库的步骤...

    1 背景 ITM系统目前支持MysqL.Oracle数据库,由于现在需要和CA产品进行结合,用CA产品的采集功能进行数据采集,因此需要使用CA产品的sqlServer数据库,为了使得系统支持sqlse ...

  4. MyEclipse链接SQLSERVER数据库时18456的问题

    用MYECLIPSE连接SQLSERVER数据库 首先要确定SQLSERVER的TP/ICP协议打开   选配置工具-SQL SERVER CONFIGURATION MANAGER-SQLSERVE ...

  5. 数据库:SQLServer数据库备份方式介绍

    今天小编给大家梳理一下数据库备份的相关知识,希望对大家能有所帮助! 1.完整备份 完整备份相当于针对整个数据库备份,包含数据库的全部内容.数据库完整备份可以将数据库的所有内容备份为一个.Bak文件.后 ...

  6. JDBC连接oracle,mysql,sqlserver数据库

    JDBC的全称是:Java Database Connectivity,即Java数据库连接. JDBC可以通过载入不同的数据库的"驱动程序"而与不同的数据库进行连接.所以JDBC ...

  7. oracle 怎么备份sqlserver数据库,Oracle和sqlserver数据库的备份与恢复

    Oracle 数据库的备份与恢复 当我们使用一个数据库时,总希望数据库的内容是可靠的.正确的,但由于计算机系统的故障(包括机器故障.介质故障.误操作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据 ...

  8. linux备份sqlserver数据库,Linux sqlServer数据库还原办法

    一.mdf文件方式 一.拷贝文件到对应目录 /var/opt/mssql/data/ 二.给文件授权(xxx是指数据库文件名) chmod 777 xxx* 三.执行命令 USE [master] G ...

  9. 使用事务码DBCO实现SAP链接外部数据库以及读取例程

    一.链接SQLServer数据库 执行事务码DBCO,点新条目按钮,填写如下图所示信息 这里的连接信息很接近 Sql Server 的连接字符串,但是参数名略有不同.指定主机IP.数据库名即可. 二. ...

最新文章

  1. OSChina 周日乱弹 —— 做一只舔狗,开心时就去舔她,不开心时就舔自己
  2. Cocoapods安装过程【转载】
  3. 据说一般人轻易做不了技术支撑…
  4. 分布式系统的那些事儿(六) - SOA架构体系
  5. JSON.stringify() 方法
  6. 认识Java异步编程
  7. 企业应用的Ant模组编译环境
  8. oracle11g的tnstimeout,redhat下oracle11g 配置listener.ora
  9. 目标检测标注格式转换:labelme2yolo yolo2labelme
  10. 视频编解码(六):264解码器学习
  11. mysql redo log 几个组_必须了解的mysql三大日志,你知道几个?
  12. Web编程学习一: 使用JSF来创建Web应用
  13. 常用NMEA0183的报文解析
  14. 教务管理系统乱码服务器不可,青果教务管理系统Post登录(二)
  15. python整形_Python中的最大整型数值
  16. 发现一个提供免费英文软件类书籍的网站[xgluxv]
  17. AdGuard常规设置的介绍
  18. Substrate区块链框架学习小组
  19. STM32 AT24C64 Hal库写入错误
  20. 【2018慢性病与信息大会】曲晓杰:智能健康养老政策解读

热门文章

  1. Erlang快速入门(一)
  2. java 最大递减数_华为机试题:最大递减数
  3. ISE软件的基本操作
  4. 【重磅】2017中国互联网运营大会,你们想要的送票福利来啦!
  5. 登陆ins未能连接服务器,ins未能连接到服务器
  6. GnuCash 3.5 发布,跨平台财务管理软件
  7. PS光影神仙笔刷200款,样机大合集,让你的设计更美
  8. 大一的生活分享以及给予新生的有力建议
  9. ssm用ajax校验用户名,SSM之检验用户名是否重复
  10. 第K小的数BFPRT算法