溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

發(fā)布時(shí)間:2020-05-17 11:53:11 來源:網(wǎng)絡(luò) 閱讀:8984 作者:amount1234 欄目:數(shù)據(jù)庫

如果您需要使用所有不同的數(shù)據(jù)庫,包括選擇、插入、更新和刪除,就象所有的表都位于單個(gè)數(shù)據(jù)庫中那樣,那么將獲得非常高的工作效率。數(shù)據(jù)庫聯(lián)邦就是要做到這一點(diǎn):使所有表看起來象是在同一個(gè)數(shù)據(jù)庫中

 

那么,數(shù)據(jù)庫聯(lián)邦是怎么工作的?

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

聯(lián)邦者(federator系統(tǒng)對遠(yuǎn)程系統(tǒng)被聯(lián)邦者(federatee中的表進(jìn)行操作。遠(yuǎn)程表在“Federator”數(shù)據(jù)庫中作為虛擬表出現(xiàn)。客戶機(jī)應(yīng)用程序可以對“Federator”數(shù)據(jù)庫中的虛擬表執(zhí)行操作,但是真正的持久性存儲位于遠(yuǎn)程數(shù)據(jù)庫中。

每個(gè)被聯(lián)邦者都將聯(lián)邦者看成是另一個(gè)數(shù)據(jù)庫客戶機(jī)連接。“Federatee”只是處理數(shù)據(jù)庫操作的客戶機(jī)請求。聯(lián)邦者需要用客戶機(jī)軟件來訪問每個(gè)遠(yuǎn)程數(shù)據(jù)庫。要訪問每種被聯(lián)邦者,則需要安裝 IBM Informix?、SybaseOracle 等等的客戶機(jī)軟件。

數(shù)據(jù)庫聯(lián)邦的應(yīng)用程序接口是 SQL。與必須學(xué)習(xí)新接口相比,這大大地提高了工作效率。使用與對本地表進(jìn)行選擇、插入、更新和刪除相同的語法來訪問遠(yuǎn)程表。當(dāng)然也并不是可以進(jìn)行所有表操作。

 

 

下面我們通過實(shí)際操作來看看如何配置聯(lián)邦數(shù)據(jù)庫:

 

我們先準(zhǔn)備好前期工作,創(chuàng)建一個(gè)本地?cái)?shù)據(jù)庫和遠(yuǎn)程數(shù)據(jù)庫來做實(shí)驗(yàn)——

本地?cái)?shù)據(jù)庫

數(shù)據(jù)庫:LOCALDB

IP地址:192.168.20.138

端口號:60000

用戶名:db2inst1

密碼:db2inst1

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)


遠(yuǎn)程數(shù)據(jù)庫

數(shù)據(jù)庫:REMOTEDB

IP地址:192.168.20.145

端口號:70000

用戶名:db2inst2

密碼:db2inst2

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

 

另外確保遠(yuǎn)程數(shù)據(jù)庫的全局設(shè)置如下——

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

 

現(xiàn)在,我們首先是添加編目節(jié)點(diǎn)——

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)


然后編目數(shù)據(jù)庫——

db2 catalog database REMOTEDB as REMOTEDB at node NODE1


查看編目節(jié)點(diǎn)編目數(shù)據(jù)庫結(jié)果——

db2 list node directory



db2 list db directory

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

顯示編目已成功

 


接下來執(zhí)行創(chuàng)建數(shù)據(jù)庫聯(lián)邦的步驟,首先創(chuàng)建WRAPPER——

備注:如果自定義了wrapper的名字,那么 library 就要加上,不同的系統(tǒng)lib的后綴不同,

AIX 是 .a

Linux 是 .so 

注意:db2 "create wrapper db2_wrapper library 'libdb2drda.a'" 雙引號!

可以通過 uname -a 去查看當(dāng)前是什么操作系統(tǒng)



(注意創(chuàng)建wrapper之前必須先連接本地?cái)?shù)據(jù)庫:

db2 connect to dbname)

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

從上面可以看到報(bào)錯(cuò)了,說的是未對指定的操作啟用數(shù)據(jù)庫的實(shí)例

 

我們查看Federated(聯(lián)邦)的功能是否打開,只需要開啟本地的聯(lián)邦功能即可,看到顯示是NO

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)


我們將Federated打開,并重啟數(shù)據(jù)庫使其生效——

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)


現(xiàn)在可以看到創(chuàng)建成功了——

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

 

現(xiàn)在開始連接遠(yuǎn)程數(shù)據(jù)庫,記得連接前確保遠(yuǎn)程的系統(tǒng)已關(guān)閉防火墻——

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

 

創(chuàng)建連接對方數(shù)據(jù)的SERVER——

$ db2 "create server remotedb1svr type DB2/UDB version 10.5 wrapper "DRDA" authorization \"db2inst2\" password \"db2inst2\" options( NODE 'NODE01', DBNAME 'REMOTEDB')"

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

如果報(bào)錯(cuò)SQL1101N  Remote database "dbname" on node "<unknown>" could not be accessed
with the specified authorization id and password.  SQLSTATE=08004

嘗試修改db2 get dbm cfg|grep AUTHENTICATION

 Database manager authentication        (AUTHENTICATION) = SERVER

重啟數(shù)據(jù)庫生效


創(chuàng)建MAPPING——

$ db2 "create user mapping for \"db2inst1\" server remotedb1svr options (remote_authid 'db2inst2',remote_password 'db2inst2')"

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)


創(chuàng)建聯(lián)邦關(guān)系表(首先需要確認(rèn)遠(yuǎn)程的庫有對應(yīng)的表已存在于數(shù)據(jù)庫中)——

$ db2 "create nickname db2inst1.testtable for remotedb1svr.db2inst2.testtable"

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)


通過在本地查看聯(lián)邦數(shù)據(jù)庫的表

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

可以看到可以正常顯示

 

我們再測試一下插入操作是否可行——

DB2聯(lián)邦數(shù)據(jù)庫及配置方法(及聯(lián)邦密碼修改)

執(zhí)行成功,并且成功插入數(shù)據(jù)。

 

 

數(shù)據(jù)庫聯(lián)邦可以使我們不再需要構(gòu)建數(shù)據(jù)集市了!還有個(gè)前提,就是如果要查詢的量不是很大,并且如果匯總表通常就可以滿足查詢的要求,那么就不需要數(shù)據(jù)集市、不需要相應(yīng)地創(chuàng)建新服務(wù)器和移動大量的數(shù)據(jù)等,這樣可以大大地提高工作效率。當(dāng)然,對于需要訪問最低級別的詳細(xì)信息的忙碌繁重的查詢而言,數(shù)據(jù)集市或數(shù)據(jù)倉庫是首選的解決方案。


注:如果數(shù)據(jù)庫實(shí)例用戶密碼(聯(lián)邦中定義的用戶及密碼,也可以不是實(shí)例用戶,只要是遠(yuǎn)端存在的用戶即可)需要進(jìn)行修改的話,需要對聯(lián)邦中的密碼一并修改,否則聯(lián)邦會失效。特別要注意的一點(diǎn),實(shí)例用戶密碼修改之后,最好執(zhí)行一次重啟,否則你會發(fā)現(xiàn)不修改聯(lián)邦中的用戶密碼也不影響,但是一旦數(shù)據(jù)庫重啟后密碼就會使用最新的用戶密碼。

修改聯(lián)邦中的用戶或密碼的方法如下:

(修改表聯(lián)邦用戶):

db2 "ALTER USER MAPPING FOR \"db2inst1\" SERVER remotedb1svr OPTIONS (SET remote_authid 'db2inst2')"

(修改表聯(lián)邦密碼):

db2 "ALTER USER MAPPING FOR \"db2inst1\" SERVER remotedb1svr OPTIONS (SET remote_password 'db2inst2')"


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI