轉:DB2聯合資料庫(FEDERATED DATABASE)配置例項

lenx2000發表於2011-03-04
http://www.cppblog.com/prayer/archive/2008/12/22/70037.html


使用DB2聯合資料庫,您可以使用一條SQL語句查詢多個資料來源中的資料。奇妙的是,這些資料來源可以多種多樣:即可以是多種關聯式資料庫系統,也可以是非關聯式資料庫系統,比如Microsoft Excel、xml等。本文將首先探討多個關聯式資料庫之間的聯合訪問。

我們不如先來動手配置一個簡單的聯合資料庫例項來培養一下您的成就感,這樣可以為您理解聯合資料庫所設計的概念及繁多的引數選項增加一點信心。我一向喜歡這種文章風格,我相信很多人也會喜歡的。

要進行下面的試驗,您必須先安裝DB2 v8.2 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 '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資料庫中的表或檢視建立暱稱來訪問他們,很好玩吧。:)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11134849/viewspace-688440/,如需轉載,請註明出處,否則將追究法律責任。

相關文章