Oracle连接Db2
因为有个业务场景需要访问客户DB2数据库的数据,我们使用的Oracle,百度一下是有方法的,本来以为很简单,没想到搞了一天,因为数据库版本都太老,使用的也少走了不少弯路,在此记录下来给需要的人借鉴。
我们客户使用的是DB2 V9.7,我需要自己先本地测试再去连接客户数据库。IBM官网已经不再提供DB2 V9.7,网上找了很久找到一个这个版本IBM.DB2.Express-C.9.7数据库.db2exc_970_WIN_x86,将就用。win10系统安装不了,我是虚拟机win7安装成功。
按步骤安装好DB2。Oracle连接DB2是通过ODBC然后创建dblink连接,而且DB2 9.7 最高只支持Oracle 11C连接。
配置ODBC
解压并把驱动放到自己想安装到目录,进入到目录下的
\clidriver\bin路径里打开CMD执行命令安装驱动
db2oreg1.exe -i
如果是powellshell则是
./db2oreg1.exe -i
安装成功后通过win7的搜索打开ODBC可以看到刚才已经安装的驱动,如下图

添加系统DSN
选择对应的驱动添加

添加ip、端口、数据库名称

测试连接是否成功

连接成功。
添加cfg配置文件,如果没有这个文件,在dblink连接时会报错:连接ORACLE到非Oracle系统时返回此信息:
[IBM][CLI Driver] SQL1531N...
找到刚才安装odbc驱动的主目录下找到
\clidriver\cfg路径下新建一个db2dsdriver.cfg配置文件,内容如下<!-- db2dsdriver.cfg data source -->
<configuration>
<dsncollection>
<!-- alias=odbc数据源名称 其他自己依自己的情况填写 -->
<dsn alias="testdb2" name="test" host="localhost" port="50000">
<parameter name="UserID" value="***"/>
<parameter name="Password" value="***"/>
</dsn>
</dsncollection>
</configuration>
文件创建好后重启DB2,测试文件是否无误,打开CMD进入到驱动安装目录下的
\clidriver\bin# 停止
db2stop
# 启动
db2start
# 检查配置 后面的testdb2自己改成自己的数据源名称
db2cli validate -dsn testdb2
出现如下提示说明无误,不然请根据提示排查问题
[ Parameters used for the connection ] Keywords Valid For Value
---------------------------------------------------------------------------
DATABASE CLI,.NET,ESQL test
HOSTNAME CLI,.NET,ESQL localhost
PORT CLI,.NET,ESQL 50000
USERID CLI,.NET ********
PASSWORD CLI,.NET ********
配置Oracle连接
配置
initdg4odbc.ora找到Oracle安装目录下
\product\11.2.0\dbhome_1\hs\admin路径的initdg4odbc.ora复制一份命名为inittestdb2.ora,名称就用init+数据源名称.ora。配置内容如下:# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC #
# HS init parameters
#
HS_FDS_CONNECT_INFO = testdb2 # 自己配置的odbc数据源名称
HS_FDS_TRACE_LEVEL = off # 是否开启日志记录 on off #
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>配置
listener.ora找到Oracle安装目录下
\product\11.2.0\dbhome_1\NETWORK\ADMIN路径的listener.ora文件打开,里面原来的配置不要动在标识后面添加一条配置。配置内容如下:# listener.ora Network Configuration File: C:\**\**\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools. SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\**\**\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\**\**\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
# 在这里添加一条配置
(SID_DESC=
(SID_NAME=testdb2) # 这里改成自己配置的inittestdb2.ora文件里的名称
(ORACLE_HOME=C:\**\**\product\11.2.0\dbhome_1) # **号自己替换成自己的路径
(PROGRAM=dg4odbc)
)
# 这里结束
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
) ADR_BASE_LISTENER = C:\app\Administrator配置
tnsnames.ora找到Oracle安装目录下
\product\11.2.0\dbhome_1\NETWORK\ADMIN路径的tnsnames.ora文件打开,里面原来的配置不要动在标识后面添加一条配置。配置内容如下:# tnsnames.ora Network Configuration File: C:\**\**\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools. LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
) ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
# 这里添加一条配置
testdb2 = # 名称可以自定义
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) # 不用修改
(CONNECT_DATA=(SID=testdb2)) # sid改成和listener.ora配置文件一样的sid名称
(HS=OK)
)测试配置文件是否都正常
打开CMD依次执行如下指令重启Oracle监听服务,如果没有报错就是正常的
lsnrctl stop
lsnrctl start
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "testdb2" 包含 1 个实例。
实例 "testdb2", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
创建dblink并测试连接
创建dblink
-- 参数依次为:dblink名称、用户名、密码、tnsnames.ora文件配置的服务名称
create database link "oradb2" connect to "user" identified by "pwd" using 'testdb2';测试连接
select * from dual@oradb2
查询到数据,大功告成。
自己整了好久才搞定,因为找资料很多都是不太一样的,所以记录下来给需要的人参考。
参考内容
Oracle连接Db2的更多相关文章
- Jmeter连接DB2/ORACLE/MYSQL数据库
连接DB2 1.将db2数据库驱动db2java.jar.db2jcc.jar放入jmeter的lib/下,同时也要放入本地jdk目录下例如:C:\Program Files\Java\jdk1.7. ...
- Oracle与DB2的区别
系统结构概述 首先,我们需要理解 Oracle 使用的架构,并理解它与 DB2 的不同之处.图 1 展示了 Oracle 的系统结构.将该图与 图 2 进行比较,后者显示了 DB2 的系统结构.在阅读 ...
- Oracle、DB2、MySql、SQLServer JDBC驱动
四种数据库JDBC驱动,还列出了连接的Class驱动名和Url Pattern,DB2包括Type 2.Type 3和Type 4三种模式.注意驱动包名称的大小写. Oralce连接驱动包名和URL ...
- 万能数据库连接类-Oracle、DB2 、Access 、Sql Server
package cc.apps.report; import java.sql.Connection; import java.sql.DriverManager; import java.sql ...
- oracle与DB2
1.体系结构,DB2的实例和数据库分开的做法,我个人还是比较喜欢的,因为实例可以创建多个,数据库的恢复直接恢复到实例下就可以了,相对ORACLE简单多了. 2.管理工具,DB2的管理工具做得太简陋了, ...
- (转)Oracle与DB2在数据库高可用技术上的相同与差异探讨
原文:http://www.talkwithtrend.com/Article/178339 数据库建设过程中,高可用是每一个企业数据中心数据库建设过程中至关重要的一个关注点,直接关系到业务连续性和稳 ...
- oracle与DB2的一些架构
首先,我们需要理解 Oracle 使用的架构,并理解它与 DB2 的不同之处.图 1 展示了 Oracle 的系统结构.将该图与 图 2 进行比较,后者显示了 DB2 的系统结构.在阅读本文的时候,为 ...
- Oracle连接odbc数据源
Oracle连接odbc数据源 说明 oracle连接ODBC数据源有两种方式,hsodbc和dg4odbc,简单说dg4odbc是hsodbc的升级.两种连接方法大致一样,现将连接步骤说明如下: 检 ...
- ORACLE连接SQLSERVER
一.实验(实验成功) 1.实验目标:ORACLE连接SQLSERVER以及查询数据 2.搭建的环境: oracle 9i 9.0.2.0.1 地址:192.168.40.139 sql2000 的数据 ...
随机推荐
- vue2.0+mint-ui 仿资讯类顶导航内容联动优化
<template><div><div class="navbox"><div class="nav" id=&quo ...
- 如何在npm发布轮子
我们在前端工程开发中通常使用npm这个包管理器来安装各种好用的轮子(当然也有用yarn的),不安分的码工就想,也发布一个试试,哪怕只是一个小时候滚的铁环而不是轮子. 首先,要在 npmjs官网注册自己 ...
- ForkJoinPool分支合并框架-工作窃取
Fork/Join 框架 Fork/Join 框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成 若干个小任务(拆到不可再拆时), 再将一个个的小任务运算的结果进行 join 汇总 For ...
- SpringBoot系列—简单的邮件系统
1. 效果发送效果图 2. 邮件开发准备工作 3. springboot引入mail服务 4. 启动应用,开始4种邮件发送测试 1. 效果发送效果图 连续发送了四封邮件:普通文本邮件,带附件的邮件,内 ...
- 记录B端和C端产品的理解
C 为:Consumer.Client,我们每天都在接触C端产品,为消费者.个人用户或终端用户,比如:微信.头条.抖音.美团等等. B 为:Business,作为职场人士也会经常接触B端产品,通常为企 ...
- Rocket - debug - Periphery
https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw 简单介绍Periphery的实现. 1. ExportDebugDMI/ExportDebugJTA ...
- 程序员的脑袋系列---利用ffmpeg命令提取音频
今日各大播放器的版权控制越来越严格.导致很多歌曲无法听,但是MV却可以听.这样很蛋疼有木有? 然而,我们可以利用ffmpeg工具提取MV的音频,比如做成MP3格式,这样就可以听了.--哈哈(邪恶地笑) ...
- Java实现 LeetCode 632 最小区间(又是先序队列,官方给的是堆)
632. 最小区间 你有 k 个升序排列的整数数组.找到一个最小区间,使得 k 个列表中的每个列表至少有一个数包含在其中. 我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a ...
- Java实现基础练习十进制转十六进制
基础练习 十进制转十六进制 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式.它有0,1,2,3,4,5,6, ...
- Java实现 LeetCode 506 相对名次
506. 相对名次 给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌.前三名运动员将会被分别授予 "金牌","银牌" 和" 铜牌&q ...