详解在DB2中如何联合Oracle数据
创始人
2024-06-22 16:31:06
0

【51CTO独家特稿】DB2联合Oracle数据步骤

1、安装DB2

2、安装关系连接器

或者安装InfoSphere DB2(InfoSphere DB2是一个受限的DB2版本,它具有关系连接器,可以连接到其它关系数据库,如SQL Server,Oracle,Sybase等),你不需要安装IBM的DataDirect ODBC驱动来连接Oracle,因为我们要安装Oracle客户端,从DB2服务器连接到Oracle(InfoSphere DB2一向被视为IBM Webspehere Federation Server)。

安装Oracle客户端

下载正确的Oracle客户端,将其安装在zLinux DB2服务器上。参照一下步骤让Oracle和DB2可以正确地相互通信。

1、找出创建DB2实例的组,可以在你的DB22 Home目录下使用ls –l命令找出组名,如果你使用默认的组名,那就是db2iadm1,我们将使用这个组名创建Oracle用户;

2、为Oracle客户端创建一个用户id,如oracle,并指定与DB22实例相同的组名,我们这么做的目的是不修改Oracle客户端安装目录下的文件权限,保证DB2实例可以访问Oracle客户端的文件;

3、启动Oracle客户端GUI安装程序开始安装Oracle客户端,打上Oracle推荐的补丁;

4、安装完成后,向你Oracle DBA要tnsnames.ora,以便将其中的内容复制到tnsnames.ora文件中,如果你不知道如何做,请咨询你的Oracle DBA;

5、以Oracle用户登录,输入tnsping命令,从zLinux能ping通Oracle数据库;

6、输入$ echo $ORACLE_HOME,注意输出的信息,因为后面在配置联合Oracle表时会用到;

7、以DB2实例用户登录,在.bashrc文件中增加以下内容:

  1. export ORACLE_HOME=/opt/oracle/product/10.2/db_1  
  2. export PATH=$ORACLE_HOME/bin:$PATH 

将ORACLE_HOME修改为第6步中输出的路径。

8、注销,再以DB2实例用户登录,输入tnsping,你应该能成功ping通;

9、使用SQL*Plus连接到你的Oracle数据库。

当你从DB2成功连接到Oracle后,现在就可以安装Oracle关系连接器了,然后在DB2中为Oracle表创建别名。

安装InfoSphere DB2或DB2/关系连接器

在现有DB2实例上,你要么安装IBM InfoSphere DB2,要么安装DB2关系连接器,然后才能从DB2联合其它数据源,如SQL Server或Oracle。

跟着InfoSphere DB2的GUI安装向导,或在现有DB2实例上安装关系连接器时,在“选择安装功能”屏幕上,仅选择Oracle数据源支持。

GUI安装完后,安装程序会创建libdb2net8F.so库,但如果GUI安装程序找不到g++命令,库的创建就会失败。

进入~/sqllib/lib64目录,你将会看到主要的库文件Oracle libdb2net8.so,其它两个文件是libdb2net8F.so和libdb2net8U.so。

进入$HOME/sqllib/cfg目录,检查db2dj.ini文件的内容,如果你在安装期间设置的信息有点不对,现在你可以手工进行修改。

  1. $ cat db2dj.ini  
  2. DJX_ODBC_LIBRARY_PATH=/opt/ibm/WSII/odbc/lib  
  3. ODBCINI=/home/db2inst1/odbc.ini  
  4. ORACLE_HOME=/opt/oracle/product/10.2/db_1 

确保ORACLE_HOME与你在.bashrc文件中指定的.bashrc完全匹配,DJX_ODBC_LIBRARY_PATH和ODBCINI是为SQL Server准备的。

如果你修改了db2dj.ini文件,请重启实例。

  1. $ db2stop force 
  2. $ db2start 

现在可以创建Oracle封装器了,最简单且不容易犯错的方法是使用DB2控制中心工具,你可以将每一步的命令保存到文件中,以便将来需要时直接调用。

1、首先将DBM CFG参数设置为FEDERATED=YES

  1. $ db2 get dbm cfg | grep -i federate  
  2.  Federated Database System Support           (FEDERATED) = YES 

2、在服务器或客户端上启动db2cc,编目DB2系统,实例和数据库名。

A)创建一个封装器,在变量窗口指定ORACLE_HOME的值。

B)创建一个服务器定义,指定NODE名与Oracle服务名或SID一致,对于正确建立连接这些很重要。

C)创建用户映射。

D)创建别名,你应该能够发现Oracle表名,如果不行,重复上述步骤,确保你的ORACLE_HOME,SID定义正确。

现在你已经有了Oracle表的别名了,你就可以在DB2中任意使用了。

原文名:Federation of Oracle Data in DB2

作者:Vikram Khatri

【编辑推荐】

  1. 在DB2中正确导出LOB数据
  2. DB2外部文件格式浅析
  3. DB2数据库设计的三个建议
  4. 解析DB2与非DB2数据库之间远程复制
  5. DB2数据库基本操作指令30条

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...