原网址:https://www.cnblogs.com/jijm123/p/11598515.html

第一步、创建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

第八步、访问测试

扩展:

(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)) --xxx.xxx.xxx.xxx 代表的是Oracle数据库服务地址
(connect_data=(SID=SID名称)) (HS=OK) )'; --SID名称即:

注意:采用上面的合并方式,则不受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’

 
listener文件中添加的地址:

(SID_DESC =
(SID_NAME = odbc_test)
(ORACLE_HOME = E:\app\Administrator\product\12.2.0\dbhome_1)
(PROGRAM = dg4odbc)
)

创建链接服务器代码

create public database link test_sql connect to "sa" identified by "sa.123" using '(description=
(address= (protocol=tcp)(host=localhost)(port=1521))
(connect_data=(SID=odbc_test))
(HS=OK)
)';

select * from dbo.Task_Main@test_sql;

Oracle通过ODBC链接SqlServer数据库的更多相关文章

  1. ORACLE链接SQLSERVER数据库数据操作函数范例

    ORACLE链接SQLSERVER数据库数据操作函数范例 create or replace function FUN_NAME(LS_DJBH IN varchar2 ,LS_ITM varchar ...

  2. 关于在Java中链接SQLServer数据库中失败的原因分析

    首先声明:笔者是Java的初学者,并且一值是走在自学的道路上,长久以来只有“度娘”相伴.(加入了各种Java学习群,基本没有热心帮人解决问题的.可以理解-_-!!!)大神级的人物就不必看拙文了,没有什 ...

  3. jtds链接SqlServer数据库(整合)

    先前使用的时候没做汇总,现在结合遇到的问题总结下. 开始使用jdbc驱动配置调用SqlServer不合适,根据网上的资料修改成了jtds配置方式. 当时使用的maven配置,配置如下: <spa ...

  4. 使用vbScript 链接SQLserver数据库和基础操作

    使用vbs链接SQLserver数据库 数据库的创建.设计使用 management studio完成 1.本地链接数据库 set oCon = server.createObject("a ...

  5. oracle直接读写ms sqlserver数据库(一)如何下载oracle database gateway for sqlserver

    想从Oracle实时同步数据到Ms Sqlserver,需要在Oracle里面直连Sqlserver进行数据的读写,可以在Oracle服务器上安装oracle database gateway for ...

  6. php7.0.12 laravel 链接sqlserver数据库

    https://www.microsoft.com/en-us/download/details.aspx?id=20098 下载最后一个,然后这个工具可以将dll扩展下载下来,选择一个空白的文件夹就 ...

  7. laravel----------php7.0.12 laravel 链接sqlserver数据库

    https://www.microsoft.com/en-us/download/details.aspx?id=20098 下载最后一个,然后这个工具可以将dll扩展下载下来,选择一个空白的文件夹就 ...

  8. window 10 下 --excel | power query 通过 ODBC链接 mysql 数据库

    excel链接到mysql的方法有几种,今天主要介绍如何通过ODBC链接 odbc是 "开放数据库连接",你可以通过下载插件使得自己的excel可以连接到不同的数据库. 关于版本的 ...

  9. 使用 ASP.NET Core 创建 Web API及链接sqlserver数据库

    创建 Web API https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.0& ...

随机推荐

  1. !!a标签和button按钮只允许点击一次,防止重复提交

    button 方法:加上属性disabled = “disabled” 或者 disabled = “true” <button id="btn" disabled=&quo ...

  2. Navicat Premium连接MySQL 1251错误

    Navicat Premium连接MySQL 1251错误 MySQL Installer 8.0.17 ​ 出现上述错误的原因是版本MySQL 8.0.17即8.0开始的MySQL版本,因为采用新的 ...

  3. GCN: Graph Convolutional Network

    从CNN到GCN的联系与区别: https://www.zhihu.com/question/54504471/answer/332657604 更加详解Laplacian矩阵: https://ww ...

  4. Facebook 对 PHP 的改进

    PHP 是传统意义上的解释型语言,而不是编译型语言. 因此,在命令行或 Web 服务器调用解释器解释 PHP 代码之前,PHP 代码就是 PHP 代码.PHP 解释器会解释 PHP 脚本,把代码转换为 ...

  5. ArrayAdapter和ListView

    利用ArrayAdapter向ListView中添加数据 <?xml version="1.0" encoding="utf-8"?> <Li ...

  6. C2678 二进制“>>”: 没有找到接受“std::stringstream”类型的左操作数的运算符(或没有可接受的转换)

    C2678 二进制“>>”: 没有找到接受“std::stringstream”类型的左操作数的运算符(或没有可接受的转换)

  7. Dart中排除空的情况:

    但是dart的string类型还有另一个方法isNotEmpty,此时这样写: if (str?.isNotEmpty()) { // str is not empty, do something } ...

  8. Spring cloud微服务安全实战-4-2微服务安全的新挑战

    微服务的环境下,我的业务逻辑不再是在一个单一的进程里,而是分散了很多的进程里.订单.物流.库存.价格.每一个tomcat都是一个进程. 每一个进程,每一个tomcat都有自己的入口点.那么就导致我防范 ...

  9. Qt编写气体安全管理系统6-地图监控

    一.前言 地图监控主要是提供一个地图(可以是平面的也可以是立体彩色的,一般建议鸟瞰图,有3D感),然后设备在对应的地图上,可以切换地图来查看对应区域的设备,一般来说一个区域会有一个地图文件,设备在地图 ...

  10. php nginx window系统 gettext方式实现UTF-8国际化多语言(i18n)

    开始应用: 步骤一:搭建环境(服务器已经完成,环境已经搭建好了) 1.首先查看你的php扩展目录下是否有php_gettext.dll这个文件,如果没有,这就需要你下载一个或是从其他地方拷贝一个,然后 ...