DB2联合数据库(Federated Database)配置实例
2013-11-12 19:13
253 查看
使用DB2联合数据库,您可以使用一条SQL语句查询多个数据源中的数据。本文将首先探讨多个关系数据库之间的联合访问。
要进行下面的试验,您必须先安装DB2 v8.2 。
LINUX平台上的DB2联合数据库(Federated Database)配置实验
一.两个数据库在不同的服务器上
1.环境描述
10.0.0.10:库名为:db_10
10.0.0.17: 库名为:db_17
2. 要在10.0.0.17的库db_17可查看库db_10的表数据
2.1,在10.0.0.17的数据库服务器
db2 update dbm cfg using FEDERATED YES
db2stop/db2stop force
db2start
2.2在10.0.0.17的数据库服务器在编目
db2 catalog tcpip node node_10 remote 10.0.0.10 server 50001
db2 catalog db db1 as db_10 at node node_10
db2 terminate
2.3 连接到db_17数据库,并创建DRDA包装器(WRAPPER),创建服务器(SERVER)
db2 "create wrapper "drda" library 'libdb2drda.so' options(add db2_fenced 'n')"
db2 " CREATE SERVER test TYPE DB2/UDB VERSION '9.7' WRAPPER DRDA AUTHID \"db2inst\" PASSWORD \"db2inst\" OPTIONS( ADD DBNAME 'REMOTE10') "
2.4 创建用户映射
db2 "CREATE USER MAPPING FOR "db2inst" SERVER "test" OPTIONS ( ADD REMOTE_AUTHID 'db2inst', ADD REMOTE_PASSWORD 'db2inst')"
2.5 建立别名
db2 connect to db_17
db2 "CREATE NICKNAME db2inst.tb FOR test.db2inst.tb";
2.6
db2 "select * from tb"
二.两个数据库在同一台机器上
1.两个库在同一个实例下
库名1为:dbps
库名2为:db1
2.现在要在dbps库上面查看db1库的表
2.1连接到dbps
db2 update dbm cfg using FEDERATED YES
db2stop
db2start
db2 connect to dbps
db2 "create wrapper "drda" library 'libdb2drda.so' options(add db2_fenced 'n')"
2.2 创建服务器(SERVER)
db2 " CREATE SERVER dbps_db1 TYPE DB2/UDB VERSION '9.7' WRAPPER DRDA AUTHID \"db2inst\" PASSWORD \"db2inst\" OPTIONS( ADD DBNAME 'db1') "
2.3 创建用户映射
db2 "CREATE USER MAPPING FOR "db2inst" SERVER "dbps_db1" OPTIONS ( ADD REMOTE_AUTHID 'db2inst', ADD REMOTE_PASSWORD 'db2inst')"
2.4 建立别名
db2 "CREATE NICKNAME db2inst.tb1 FOR dbps_db1.db2inst.tb1";
2.5 检查是否有表存在
db2 list tables
查看SEVER
db2 "select * from syscat.SERVERS"
1) 登录Linux。
2) 切换到db2实例帐号,su - db2inst。
3) db2start命令来启动实例
4) 在DB2命令窗口运行db2 GET DBM CFG 来查看当前实例的配置参数,并确保FEDERATED参数设置为YES,通过运行db2 UPDATE DBM CFG USING FEDERATED YES来设置这个参数。修改这个参数后,必须重新启动实例才会生效(db2stop/db2start)
5) 却保您已经创建了DB2样本数据库SAMPLE,如果您还没有创建,可以通过在DB2命令行窗口运行db2sampl命令来创建它。此样本数据库包含了一些样本表和数据,使用这个数据库作演示可以使我们节省一点时间。
6) 创建另外一个数据库,笔者使用名字TESTDB:
db2 CREATE DB TESTDB
7) 进入DB2命令编辑器,并在这儿完成下面的步骤。
8) 连接到sample数据库,并创建DRDA包装器(WRAPPER).
CONNECT TO SAMPLE;
CREATE WRAPPER DRDA;
9) 创建服务器(SERVER)
CREATE SERVER TESTDB TYPE DB2/UDB VERSION '8.2' WRAPPER "DRDA" AUTHID "db2admin" PASSWORD "db2admin" OPTIONS( ADD DBNAME 'TESTDB', PASSWORD 'Y');
10) 创建用户映射
CREATE USER MAPPING FOR "ADMINISTRATOR" SERVER "TESTDB" OPTIONS ( ADD REMOTE_AUTHID 'db2inst', ADD REMOTE_PASSWORD '[b]123QWE') ;[/b]
11) 使用db2inst用户连接到TESTDB数据库、创建表WORKITEM、并插入样本数据。
CONNECT TO TESTDB USER db2inst USING 123QWE;
CREATE TABLE WORKITEM (
ITEMNO CHAR(4) NOT NULL,
ITEMNAME VARCHAR(50) NOT NULL,
EMPNO CHAR(6),
PRIMARY KEY (ITEMNO)
);
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0001','测试程序模块1','000010');
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0002','完成模块2的开发','000020');
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0003','联系客户A','000030');
12) 连接到SAMPLE数据库,并为TESTDB数据库中的WORKITEM表创建昵称:
CONNECT TO SAMPLE;
CREATE NICKNAME ADMINISTRATOR.WORKITEM FOR TESTDB.DB2ADMIN.WORKITEM;
13) OK,现在我们就可以在SAMPLE数据库中使用TESTDB数据库中的WORKITEM表了,而且还可以和SAMPLE数据库的EMPLOYEE表联合查询:
SELECT * FROM WORKITEM;
我们来查询由谁来负责哪个工作项目:
SELECT A.ITEMNO,A.ITEMNAME,A.EMPNO,B.FIRSTNME,B.LASTNAME FROM WORKITEM A LEFT OUTER JOIN EMPLOYEE B ON A.EMPNO=B.EMPNO;
同一服务器上的两个实例:db2inst1 db2inst2 数据库分别是:mydb1 mydb2 (本地联邦和远程联邦同理,所以这里只演示远程联邦)
下面的操作在db2inst1上对db2inst2进行联邦,也就是可以在db2inst1上通过nickname访问db2inst2,所有操作都是在db2inst1下进行:
要进行下面的试验,您必须先安装DB2 v8.2 。
LINUX平台上的DB2联合数据库(Federated Database)配置实验
一.两个数据库在不同的服务器上
1.环境描述
10.0.0.10:库名为:db_10
10.0.0.17: 库名为:db_17
2. 要在10.0.0.17的库db_17可查看库db_10的表数据
2.1,在10.0.0.17的数据库服务器
db2 update dbm cfg using FEDERATED YES
db2stop/db2stop force
db2start
2.2在10.0.0.17的数据库服务器在编目
db2 catalog tcpip node node_10 remote 10.0.0.10 server 50001
db2 catalog db db1 as db_10 at node node_10
db2 terminate
2.3 连接到db_17数据库,并创建DRDA包装器(WRAPPER),创建服务器(SERVER)
db2 "create wrapper "drda" library 'libdb2drda.so' options(add db2_fenced 'n')"
db2 " CREATE SERVER test TYPE DB2/UDB VERSION '9.7' WRAPPER DRDA AUTHID \"db2inst\" PASSWORD \"db2inst\" OPTIONS( ADD DBNAME 'REMOTE10') "
2.4 创建用户映射
db2 "CREATE USER MAPPING FOR "db2inst" SERVER "test" OPTIONS ( ADD REMOTE_AUTHID 'db2inst', ADD REMOTE_PASSWORD 'db2inst')"
2.5 建立别名
db2 connect to db_17
db2 "CREATE NICKNAME db2inst.tb FOR test.db2inst.tb";
2.6
db2 "select * from tb"
二.两个数据库在同一台机器上
1.两个库在同一个实例下
库名1为:dbps
库名2为:db1
2.现在要在dbps库上面查看db1库的表
2.1连接到dbps
db2 update dbm cfg using FEDERATED YES
db2stop
db2start
db2 connect to dbps
db2 "create wrapper "drda" library 'libdb2drda.so' options(add db2_fenced 'n')"
2.2 创建服务器(SERVER)
db2 " CREATE SERVER dbps_db1 TYPE DB2/UDB VERSION '9.7' WRAPPER DRDA AUTHID \"db2inst\" PASSWORD \"db2inst\" OPTIONS( ADD DBNAME 'db1') "
2.3 创建用户映射
db2 "CREATE USER MAPPING FOR "db2inst" SERVER "dbps_db1" OPTIONS ( ADD REMOTE_AUTHID 'db2inst', ADD REMOTE_PASSWORD 'db2inst')"
2.4 建立别名
db2 "CREATE NICKNAME db2inst.tb1 FOR dbps_db1.db2inst.tb1";
2.5 检查是否有表存在
db2 list tables
查看SEVER
db2 "select * from syscat.SERVERS"
1) 登录Linux。
2) 切换到db2实例帐号,su - db2inst。
3) db2start命令来启动实例
4) 在DB2命令窗口运行db2 GET DBM CFG 来查看当前实例的配置参数,并确保FEDERATED参数设置为YES,通过运行db2 UPDATE DBM CFG USING FEDERATED YES来设置这个参数。修改这个参数后,必须重新启动实例才会生效(db2stop/db2start)
5) 却保您已经创建了DB2样本数据库SAMPLE,如果您还没有创建,可以通过在DB2命令行窗口运行db2sampl命令来创建它。此样本数据库包含了一些样本表和数据,使用这个数据库作演示可以使我们节省一点时间。
6) 创建另外一个数据库,笔者使用名字TESTDB:
db2 CREATE DB TESTDB
7) 进入DB2命令编辑器,并在这儿完成下面的步骤。
8) 连接到sample数据库,并创建DRDA包装器(WRAPPER).
CONNECT TO SAMPLE;
CREATE WRAPPER DRDA;
9) 创建服务器(SERVER)
CREATE SERVER TESTDB TYPE DB2/UDB VERSION '8.2' WRAPPER "DRDA" AUTHID "db2admin" PASSWORD "db2admin" OPTIONS( ADD DBNAME 'TESTDB', PASSWORD 'Y');
10) 创建用户映射
CREATE USER MAPPING FOR "ADMINISTRATOR" SERVER "TESTDB" OPTIONS ( ADD REMOTE_AUTHID 'db2inst', ADD REMOTE_PASSWORD '[b]123QWE') ;[/b]
11) 使用db2inst用户连接到TESTDB数据库、创建表WORKITEM、并插入样本数据。
CONNECT TO TESTDB USER db2inst USING 123QWE;
CREATE TABLE WORKITEM (
ITEMNO CHAR(4) NOT NULL,
ITEMNAME VARCHAR(50) NOT NULL,
EMPNO CHAR(6),
PRIMARY KEY (ITEMNO)
);
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0001','测试程序模块1','000010');
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0002','完成模块2的开发','000020');
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0003','联系客户A','000030');
12) 连接到SAMPLE数据库,并为TESTDB数据库中的WORKITEM表创建昵称:
CONNECT TO SAMPLE;
CREATE NICKNAME ADMINISTRATOR.WORKITEM FOR TESTDB.DB2ADMIN.WORKITEM;
13) OK,现在我们就可以在SAMPLE数据库中使用TESTDB数据库中的WORKITEM表了,而且还可以和SAMPLE数据库的EMPLOYEE表联合查询:
SELECT * FROM WORKITEM;
我们来查询由谁来负责哪个工作项目:
SELECT A.ITEMNO,A.ITEMNAME,A.EMPNO,B.FIRSTNME,B.LASTNAME FROM WORKITEM A LEFT OUTER JOIN EMPLOYEE B ON A.EMPNO=B.EMPNO;
同一服务器上的两个实例:db2inst1 db2inst2 数据库分别是:mydb1 mydb2 (本地联邦和远程联邦同理,所以这里只演示远程联邦)
下面的操作在db2inst1上对db2inst2进行联邦,也就是可以在db2inst1上通过nickname访问db2inst2,所有操作都是在db2inst1下进行:
db2 update dbm cfg using FEDERATED YES db2 connect to mydb1 --这里需要注意的是这个语句不能使用db2 ""执行,而是需要进入到db2 Command Line Processor 交互模式。这点是进行了很多尝试才发现的问题,注意问题是在password后面的字符串必须是双引号 --drda是默认的适配器
CREATE WRAPPER DRDA; db2 create server f_mydb2 type db2/udb version 9.7 wrapper drda authorization db2inst2 password "******" options(dbname 'mydb2') db2 "create user mapping for "db2inst1" server f_mydb2 options (add remote_authid 'db2inst2' , add remote_password '******')" --db2inst2中存在一个表tb2 db2 "create nickname mydb2_tb2 for f_mydb2.db2inst2.tb2" db2 "select * from mydb2_tb2" db2 "select * from tb1 a inner join mydb2_tb2 b on b.id = a.id"
相关文章推荐
- DB2联合数据库(Federated Database)配置实例
- DB2联合数据库(Federated Database)配置实例
- DB2联合数据库(Federated Database)配置实例
- DB2联合数据库(Federated Database)配置实例
- High Availability--keepalived详解篇(三)之keepalive配置实例-http
- vs2010下cppunit 配置和实例
- 使用裸设备配置Oracle ASM实例一例
- 综合网络配置实例系列之二
- maven配置项目实例.
- springAOP的配置及实例
- SAP传输系统TMS的配置和实例
- CCNA实验:全面的三层交换机配置实例
- 请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接
- 安全管理最佳实践系列:给ECS实例配置RAM角色
- Keepalived工作原理详解及配置实例
- DL580G4+MSA1000+RedHatAS4配置实例
- cisco 3550 三层交换机 vlan间路由配置实例
- shiro实例 环境准备 配置
- Linux入职基础-5.12_网络配置(命令实例)