最近的一个项目有个需求:其中A项目采用的DB2数据库,B项目采用的是oracle数据库,它们用到彼此当中的一些数据,而且必须是接近实时的数据.
我的实践步骤:
1. 所需环境
a) 准备好两台机器(一台也可以),假设为A机器,B机器;
b) 在A机器上安装好的oracle 数据库,并且可以连通(实践用的是oracle9i)
1)在sqlplus中使用具有创建另一个用户的权限的帐户连接至 Oracle 之后,执行命令:
SQL> CREATE USER fsww_zx IDENTIFIED BY a;
SQL> GRANT RESOURCE TO jmyb_zx;
SQL> GRANT CREATE SESSION TO fsww_zx;
2)建测试表
SQL> create table TEST
(
XM VARCHAR2(50),
GMSFHM VARCHAR2(25)
);
c) 在B机串上安装好oracle客服端,备配好连接,测试是否可以连接A机器上的oracle数据库
(略)
d) 在B机器上安装好的DB2数据库,并可以连通(实践用的是DB2 for Linux, UNIX and Windows)
(略)
2. 准备所需软件
a)下载Websphere Information Integrator Relational Wrappers
在http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg21255394 下载对应版本.
注意: Websphere Information Integrator Relational Wrappers 所属版本必须与DB2 管理工具相关标示一一对应,否则安装不了.
如:
============================================================
Websphere Information Integrator Relational Wrappers
============================================================
PTF number: WR21392
Build level: s070719
Prerequisite: V9.1 GA
Signature: 9.1.300.257
Release Date:15 Aug 2007
============================================================
关于 DB2 管理工具环境
============================================================
DB2 管理工具级别:
产品标识 SQL09013
级别标识 01040107
级别 DB2 v9.1.300.257
构件级别 s070719
PTF WR21392
b) 安装(这里只选择oracle包装器):
2. 配置
在上一步安装 Websphere Information Integrator Relational Wrappers 之后,在 DB2安装目录/IBM/cfg
目录下的 db2dj.ini
文件应该已有环境变量 ORACLE_HOME
被设置为您的 Oracle 安装的 ORA92
文件夹。如果没有则手工设置. 下面是实践时 db2dj.ini
文件内容的屏幕快照:
a) 连接到DB2数据库(假设已有用户herong 密码wskaps )
db2 => connect to toolsdb user herong using wskaps
b 创建包装器
db2 => CREATE WRAPPER NET8 LIBRARY 'db2net8.dll'
NET8 为包装器名
c) 创建服务定义
CREATE SERVER FSWW_ZX TYPE ORACLE VERSION '9i' WRAPPER NET8 OPTIONS( ADD NODE '164')
上述语法遵循下面这段一般形式的语法:
CREATE SERVER " oraserver" TYPE datasource VERSION ' x.y' WRAPPER " wrappername" OPTIONS (NODE ' net_service_name') |
oraserver
是 Oracle 数据库相对于 DB2 联邦服务器的名称。datasource
指的是我们配置要访问的数据源服务器的类型。在我们的例子中,我们使用的是 Oracle。x.y
指的是我们要访问的 Oracle 数据库服务器的版本。wrappername
指的是在本文的前面我们在 CREATE WRAPPER 语句中指定的名称。net_service_name
指的是我们在前面看到的tnsnames.ora
文件中出现的 Net Service Name。
d) 创建用户影射
DB2=>CREATE USER MAPPING FOR HERONG SERVER FSWW_ZX OPTIONS ( ADD REMOTE_AUTHID 'fsww_zx', ADD REMOTE_PASSWORD 'a')
其中:HERONG 为DB2登录用户名
FSWW_ZX 为上一步创建的服务定义名
'fsww_zx' 为oralce 登录用户名
'a' 为oralce 登录用户密码
e) 创建昵称
DB2=>CREATE NICKNAME HERONG.DB2TEST FOR FSWW_ZX.FSWW_ZX.TEST
其中:HERONG.TEST 格式为:DB2用户名.要创建的昵称名
FSWW_ZX.FSWW_ZX.TEST 格式为:服务定义名.oracle用户名.表名
3. 测试
上述步骤都完成了之后,测试一下.
DB2=> select * from db2test;
JDBC 简单测试: