暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DB2联邦查询配置

IT那活儿 2022-05-16
2459

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!

 

1

需求:使用一条SQL语句查询多个数据源中的数据。
在主机1数据库中连接查询主机2数据库中数据。 

2

环境准备
主机1:192.168.1.21  DB1
主机2:192.168.1.22  DB2
数据库版本:V11.5 

3

在两台主机实例下创建两个不同的数据库,并在不同的数据库下创建不同的表
DB201:
db2 "create db db1 on '/db2data/db1' using codeset UTF-8 territory CN"db2 connect to db1db2 "create table db1_t1 (name varchar(50))"db2 "insert into db1_t1 values ('aaa')"db2 "insert into db1_t1 values ('bbb')"db2 "insert into db1_t1 values ('ccc')"db2 commit;db2 "select * from db1_t1"NAME--------------------------------------------------aaabbbccc3 record(s) selected.
DB202:
db2 "create db db2 on '/db2data/db2' using codeset UTF-8 territory CN"db2 connect to db2db2 "create table db2_t2 (name varchar(50))"db2 "insert into db2_t2 values ('111')"db2 "insert into db2_t2 values ('222')"db2 "insert into db2_t2 values ('333')"db2 commit;db2 "select * from db2_t2"NAME--------------------------------------------------1112223333 record(s) selected.

4

启动联邦功能
两个库要打开联邦,断开所有连接,重启生效。
db2 update dbm cfg using FEDERATED YESdb2 force applications alldb2stop forcedb2startdb2 get dbm cfg |grep FEDERATED

5

DB2在本地配置连接远程数据库节点
我主机1上的db1数据库要去连接主机2上的db2数据库。
配置要连接的数据库实例信息(在DB1上配置连接DB2)。
db2 catalog tcpip node db2 remote 192.168.1.22 server 50000db2 catalog db db2 at node db2db2 connect to db2 user db2inst1 using db2inst1
db2 list db directory –查看数据目录信息,能识别到remote库。
 

6

创建wrapper包
连接本地数据库DB1,在DB1上配置:
db2 connect to db1db2 create wrapper drda

7

创建连接对方数据库的server服务定义
在本地DB1服务器操作:
db2 "create server db2srv type DB2/UDB version 11.5 wrapper "DRDA" authorization \"db2inst1\" password \"db2inst1\" options( NODE 'db2', DBNAME 'db2')"

 

8

创建用户映射mapping
在本地DB1服务器操作:
db2 "create user mapping for \"db2inst1\" server db2srv options 
(remote_authid 'db2inst1',remote_password 'db2inst1')"

 

9

创建联邦关系表(别名表)
在本地DB1服务器操作(本地数据库上不能有这个别名表db2_t2_bm)。
db2 "create nickname db2inst1.db2_t2_bm for db2srv.db2inst1.db2_t2"
--如果两个数据库中还有更多的表要做联邦查询:
--db2 "create nickname db2inst1.表3 for db2srv.db2inst1.别名表"

 

10

测试使用联邦查询功能
在本地DB1主机上操作查询。
---能查到主机2上的数据:
db2 "select * from db2inst1.db2_t2_bm ";
此时在主机2的数据库表中新增数据:
db2 connect to db2db2 "insert into db2_t2 values ('bbb')"db2 "insert into db2_t2 values ('ccc')"
可以看到联邦查询的结果:
db2 "select * from db2inst1.db1_t1 a1,db2inst1.db2_t2_bm a2 
where a1.name=a2.name";

END



本文作者:戚传海

本文来源:IT那活儿(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论