DB2联合数据库和昵称等概念

来源:互联网 发布:vm linux克隆账号 编辑:程序博客网 时间:2024/04/30 20:39

今天项目(无奈的是项目组在海南,只好要日志,当然这已经逼的习惯了)上有出现一个异常如下:

本以为是框架的问题,我把打出来的日志文件大体浏览了一遍(法宝啊,必须的),当然上面的只是数兆日志文件里的一小段,框架的源码不是我写的,于是把源码找来看了看,大体了解了一些,修改源码,增加日志,编译发文件,进过一系列的操作还是无济于事啊,郁闷(加上应用重启的时间又长,更是郁闷)。有经过几次重复动作后,突然听项目上的人说好了,菜单出来了,但其他地方还是有同样的问题。???这是什么问题呢,我修改的文件起作用了?可又为什么有的好了有的没好?他说还给数据库表加了个昵称。昵称?昵称是什么玩意?没搞过?到底是哪个起作用了呢?经过验证发现还就是这个所谓的昵称的问题。菜鸟我是闻所未闻啊,还等什么,百度,GOOGLE了一把,看了个皮毛。偶然从列表中打开了一个链接,看到了如下文章,感谢哥们的这个文章让我了解了一点,现分享出来,比较易懂,感兴趣的看看。


使用DB2联合数据库,您可以使用一条SQL语句查询多个数据源中的数据。奇妙的是,这些数据源可以多种多样:即可以是多种关系数据库系统,也可以是非关系数据库系统,比如Microsoft Excel、xml等。

要进行下面的试验,您必须先安装DB2 ESE (Enterprise Server Edition) for Windows。

假如您的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 '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 '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数据库中的表或视图创建昵称来访问他们。

原文出自:http://jetway.iteye.com/blog/128760