1. 程式人生 > >DB2資料庫聯邦(跨庫查詢)

DB2資料庫聯邦(跨庫查詢)

實驗目的

在本地資料庫 sample 中直接查詢遠端資料庫remoteDb的表:tab_test

1、檢視資料庫版本配置

– 本地資料庫:sample

db2licm -l
產品名: “DB2 Express-C”
許可證型別: “無擔保”
到期日期: “永久”
產品標識: “db2expc”
版本資訊: “10.5”
最大 CPU 數目: “2”
最大記憶體量 (GB): “16”
強制策略: “軟停止”

– 遠端資料庫:[email protected]

db2licm -l
產品名: “DB2 Express-C”
許可證型別: “無擔保”
到期日期: “永久”
產品標識: “db2expc”
版本資訊: “9.7”
最大 CPU 數目: “2”
最大記憶體量(GB): “2”

2、資料庫編目

db2 catalog TCPIP node n_102 remote 192.168.1.102 server 50000
db2 catalog db remoteDb as remoteDb200 at node n_102

db2 list node directory
db2 list db directory

3、確認本地dbm的配置項 federated 開啟

db2 get dbm cfg | find /i “fed”
db2 update dbm cfg using federated yes
– 設定完成後,需要重啟例項

4、登入DB2資料庫後,查詢當前使用者的使用者模式

select current schema from sysibm.dual ;

5、建立DRDA包裝器(WRAPPER)

CREATE WRAPPER DRDA OPTIONS (DB2_FENCED ‘N’) ;

6、建立伺服器(SERVER)

– 語法:

create server <server_name>
type DB2/UDB version 9.7 wrapper “DRDA”
authorization <對方使用者> password <對方密碼>
options (NODE ‘<node_name>’,dbname ‘<對方資料庫>’)

– 示例:

CREATE SERVER tempserver
TYPE DB2/UDB
VERSION 9.7
WRAPPER DRDA
AUTHORIZATION “remote_user_name”
PASSWORD “remote_user_pwd”
OPTIONS (node ‘n_102’, DBNAME ‘remoteDb200’);

7、建立使用者對映Mapping

– 語法:

create user mapping for <本地使用者> server <server_name>
options (remote_authid ‘<對方使用者>’, remote_password ‘對方密碼’)

– 示例:

CREATE USER MAPPING FOR admin
SERVER tempserver
OPTIONS
(REMOTE_AUTHID ‘remote_user_name’
,REMOTE_PASSWORD ‘remote_user_pwd’
);

8、建立聯邦關係表

– 語法:

create nickname <schema.table_alias_name> for <server_name.對方使用者名稱.table>

– 示例:

CREATE NICKNAME tab_test FOR tempserver.remote_user_name.tab_test;

9、資料查詢

– 語法:

select * from <schema.table_alias_name> ;

– 示例:

SELECT * FROM tab_test

10、測試結果清理:

– 語法:

DROP NICKNAME nickname;
DROP USER MAPPING FOR authorization_name SERVER server_name;
DROP SERVER server_name[@[email protected]];
DROP WRAPPER wrapper_name;

– 示例:

DROP nickname tab_test;
DROP USER mapping FOR admin SERVER tempserver;
DROP SERVER tempserver;
DROP wrapper drda;

參考:

https://blog.csdn.net/liufuwu1/article/details/70761475
https://www.cnblogs.com/OliverQin/p/6068411.html