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

DB2 联邦数据库(db2 federated)

tnan1986 2024-01-06
1005

       使用DB2联合数据库,您可以使用一条SQL语句查询多个数据源中的数据。奇妙的是,这些数据源可以多种多样:即可以是多种关系数据库系统,也可以是非关系数据库系统,比如Microsoft Excel
、xml等。本文将首先探讨多个关系数据库之间的联合访问。
       我们不如先来动手配置一个简单的联合数据库实例来培养一下您的成就感,这样可以为您理解联合数据库所设计的概念及繁多的参数选项增加一点信心。我一向喜欢这种文章风格,我相信很多人也会喜欢的。要进行下面的试验,您必须先安装DB2 v9.7 ESE (Enterprise Server Edition) for Windows。DB2的安装不是本文的讨论范围。
       假如您的DB2已经安装好了,那就开始吧。
      (1) 使用windows管理员权限的用户登陆windows,笔者用的是Administrator。
      (2) 为了完成下面的演示,您还需要另外一个windows用户,笔者使用安装DB2的时候自动创建的db2admin用户。您当然也可以使用其他windows用户。
      (3) 确保您已经创建了至少一个可用的实例。笔者使用缺省创建的DB2实例。您可以通过在命令窗口运行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) 运行DB2CE命令打开DB2命令编辑器,并在这儿完成下面的步骤。
    (8) 连接到sample数据库,并创建DRDA包装器(WRAPPER).
   CONNECT TO SAMPLE;
   CREATE WRAPPER DRDA;

   (9) 创建服务器(SERVER)
   CREATE SERVER TESTDB TYPE DB2/UDB VERSION '9.7' WRAPPER "DRDA" AUTHID "db2admin" PASSWORD "db2admin" OPTIONS( ADD DBNAME 'TESTDB', PASSWORD 'Y');
   (10) 创建用户映射
   CREATE USER MAPPING FOR "ADMINISTRATOR" SERVER "TESTDB" OPTIONS ( ADD REMOTE_AUTHID 'db2admin', ADD REMOTE_PASSWORD 'db2admin') ;
   (11) 使用db2admin用户连接到TESTDB数据库、创建表WORKITEM、并插入样本数据。
   CONNECT TO TESTDB USER db2admin USING db2admin;
   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;

   到此为止,SAMPLE数据库就已经变成了联合数据库,您通过在SAMPLE数据库中为TESTDB数据库中的表或视图创建昵称来访问他们.

   总结
   我们可以使用几行BAT脚本快速实现db2联邦功能如下:
db2lianbang.bat ---以db2 V9.7版本为例
######################################################################
db2start
db2 connect to SAMPLE
db2 CREATE SERVER TESTDB TYPE DB2/UDB VERSION '9.7' WRAPPER "DRDA" AUTHID " db2admin" PASSWORD "db2admin" OPTIONS( ADD DBNAME 'testdb', PASSWORd 'Y')
db2 CREATE USER MAPPING FOR "administrator" SERVER "TESTDB" OPTIONS ( ADD REMOTE_AUTHID ' db2admin', ADD REMOTE_PASSWORD 'db2admin')
db2 CREATE NICKNAME administrator.TABLE1 FOR TESTDB.db2admin.TABLE1
db2 CREATE NICKNAME administrator.TABLE2 FOR TESTDB.db2admin.TABLE2
db2 CREATE NICKNAME administrator.TABLE3 FOR TESTDB.db2admin.TABLE3
db2 connect reset
exit
#####################################################################

最后修改时间:2024-01-06 10:24:53
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论