db2 提供了联邦的功能以实现不同数据库表数据的互相访问,这对数据的迁移有很多的好处
下面就简要介绍一下联邦功能的使用
假 定有两个数据库 A,B,现在想要在A库上直接访B问库的数据,那么可以通过如下方法实现
1)首先要打开数据的联邦功能命令如下
db2 update dbm cfg using FEDERATED YES
2)如果A,B不在同一个主机那么首先在A数据库上编目B数据库
1)db2 catalog tcpip node 节点名 remote B数据库所在的远程主机的ip地址 server 端口(默认50000)
2)db2 catalog db B数据库名 as B数据库别名 at node 节点名
编目后测试编目是否可用,之后执行以下命令
3)如果A,B在一个主机上那么直接执行以下语句
1)包装器
windows:
CREATE WRAPPER DRDA LIBRARY 'libdb2drda.a'【注意不同操作系统不同】;
linux:
CREATE WRAPPER DRDA LIBRARY 'libdb2drda.so'【注意不同操作系统不同】;
2)创建服务器
CREATE SERVER 服务的名称(随便命名不要和以前的重复) TYPE DB2/UDB VERSION '9.1'
WRAPPER DRDA AUTHID "B数据库用户名" PASSWORD "密码" OPTIONS( ADD DBNAME 'B数据库别名');
3)用户映射
CREATE USER MAPPING FOR IBSS SERVER 2)中服务的名称 OPTIONS ( ADD REMOTE_AUTHID 'B数据库用户名', ADD REMOTE_PASSWORD '密码') ;
4)建立昵称
CREATE NICKNAME 模式名.表名(不要和本地表名重复) FOR 服务的名称 .要访问的B数据库的表的模式名.远程表名;
--------------------------------------------------------------------------------------------------------------------------
db2 提供了联邦的功能以实现不同数据库表数据的互相访问,这对数据的迁移有很多的好处
下面就简要介绍一下联邦功能的使用
假定有两个数据库 A,B,现在想要在A库上直接访B问库的数据,那么可以通过如下方法实现
1)首先要打开数据的联邦功能命令如下
db2 update dbm cfg using FEDERATED YES
2)如果A,B不在同一个主机那么首先在A数据库上编目B数据库
1)db2 catalog tcpip node 节点名 remote B数据库所在的远程主机的ip地址 server 端口(默认50000)
2)db2 catalog db B数据库名 as B数据库别名 at node 节点名
编目后测试编目是否可用,之后执行以下命令
3)如果A,B在一个主机上那么直接执行以下语句
1)包装器
CREATE WRAPPER DRDA LIBRARY 'libdb2drda.a';
2)创建服务器
CREATE SERVER 服务的名称(随便命名不要和以前的重复) TYPE DB2/UDB VERSION '9.1'
WRAPPER DRDA AUTHID "B数据库用户名" PASSWORD "密码" OPTIONS( ADD DBNAME 'B数据库别名');
3)用户映射
CREATE USER MAPPING FOR IBSS SERVER 2步骤中服务的名称 OPTIONS ( ADD REMOTE_AUTHID 'B数据库用户名', ADD REMOTE_PASSWORD '密码') ;
4)建立昵称
CREATE NICKNAME 模式名.表名(不要和本地表名重复) FOR 服务的名
称 .要访问的B数据库的表的模式名.远程表名;
经过以上步骤数据的联邦功能就已经建立完毕,现在就可以在A数据库通过昵称访问B数据库的相应的表的数据了。
--------------------------------------------------------------------------------------------------------------------------
[疑问&故障] DB2联邦配置测试
联邦联邦
DB2联邦配置测试
平台环境:
远程数据库:sample44库;版本:DB2V9.1;操作系统:AIX
本地数据库:sample库;版本:DB2V9.1;操作系统:windowsXP
1. 修改远程源数据库和本地目标数据库的DBM实例参数,启用联邦访问支持(修改后需重启实例生效)
db2 "UPDATE DBM CFG USING FEDERATED YES"
db2 stop
db2 start
2. 将远程源数据库sample44在本地编目
db2 catalog tcpip node sample44 remote 130.30.15.44 server 50000
db2 catalog db sample as sample44 at node sample44
db2 terminate
3. 本地目标库上创建联邦访问所需的数据库对象
a. 连接到本地目标数据库
db2 connect to sample
b. 创建包装器
DB2 CREATE WRAPPER DRDA LIBRARY 'db2drda.dll'
c. 创建服务器
DB2 CREATE SERVER SAMPLE44 TYPE DB2/UDB VERSION '9.7' WRAPPER DRDA AUTHID \"db2inst1\" PASSWORD \"db2inst1\" OPTIONS( ADD DBNAME 'SAMPLE44')
d. 创建用户映射
DB2 CREATE USER MAPPING FOR FENGSH SERVER SAMPLE44 OPTIONS ( ADD REMOTE_AUTHID 'db2inst1', ADD REMOTE_PASSWORD 'db2inst1')
e. 创建别名
DB2 CREATE NICKNAME FENGSH.STAFF44 FOR SAMPLE44.DB2INST1.STAFF
f.通过nickname访问远程表
DB2 SELECT * FROM FENGSH.STAFF44
--------------------------------------------------------------------------------------------------------------------------
联邦数据库访问远程DB2
假定两个环境host1和host2
host1,本机
IP: 192.168.1.192
DB2 instance: db2inst1
DB2 db: local_db
host2,远程被访问机器
IP: 192.168.1.195
DB2 instance: db2inst1(port=50000,pwd=db2inst1)
DB2 db: remote_db
table: t_usertable
现在需要在host1的local_db数据库中访问远程host2上的表t_usertable
首先需要在host1上把host2节点和remote_db库编目进来
db2 catalog tcpip node node_195 remote 192.168.1.195 server 50000
db2 catalog db remote_db as remote_db_195 at node node_195
db2 TERMINATE (必须使用该命令否则可能导致catalog更新不能生效)
然后在host1上测试到host2的连通性
db2 connect to remote_db_195 user db2inst1 using db2inst1
db2 connect reset
修改host1和host2的实例配置参数,需要重起实例
db2 update dbm cfg using FED_NOAUTH yes
db2stop
db2start
然后连接到host1机器上的local_db数据库中
db2 connect to local_db
(本地为unix环境)create wrapper DRDA;
(本地为windows环境) create wrapper "DRDA" LIBRARY 'db2drda.dll' OPTIONS( ADD DB2_FENCED 'N');
create server remoteserver_195 TYPE DB2/UDB VERSION '8.2' WRAPPER DRDA AUTHORIZA
TION "db2inst1" PASSWORD "db2inst1" OPTIONS( DBNAME 'remote_db_195', PASSWORD 'Y');
CREATE USER MAPPING FOR "db2inst1" SERVER remoteserver_195 OPTIONS ( ADD REMOTE_AUTHID 'db2inst1', ADD REMOTE_PASSWORD 'db2inst1');
CREATE NICKNAME remote_t_usertable FOR remoteserver_195.db2inst1.t_usertable; db2数据库安装
(其中,wrapper使用DB2数据源的缺省名称DRDA server名称是remoteserver_195,t_usertable表在local_db数据库中的nickname是remote_t_usertable)
在缺省的db2inst1模式下 然后可以在host1机器上,登陆进local_db,对remote_t_usertable表进行查询等操作了
db2 'select * _t_usertable'
db2 connect reset
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论