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