您好,登錄后才能下訂單哦!
如果您需要使用所有不同的數據庫,包括選擇、插入、更新和刪除,就象所有的表都位于單個數據庫中那樣,那么將獲得非常高的工作效率。數據庫聯邦就是要做到這一點:使所有表看起來象是在同一個數據庫中
那么,數據庫聯邦是怎么工作的?
“聯邦者(federator)”系統對遠程系統“被聯邦者(federatee)”中的表進行操作。遠程表在“Federator”數據庫中作為虛擬表出現。客戶機應用程序可以對“Federator”數據庫中的虛擬表執行操作,但是真正的持久性存儲位于遠程數據庫中。
每個“被聯邦者”都將“聯邦者”看成是另一個數據庫客戶機連接。“Federatee”只是處理數據庫操作的客戶機請求。“聯邦者”需要用客戶機軟件來訪問每個遠程數據庫。要訪問每種被聯邦者,則需要安裝 IBM Informix?、Sybase、Oracle 等等的客戶機軟件。
數據庫聯邦的應用程序接口是 SQL。與必須學習新接口相比,這大大地提高了工作效率。使用與對本地表進行選擇、插入、更新和刪除相同的語法來訪問遠程表。當然也并不是可以進行所有表操作。
下面我們通過實際操作來看看如何配置聯邦數據庫:
我們先準備好前期工作,創建一個本地數據庫和遠程數據庫來做實驗——
本地數據庫 :
數據庫:LOCALDB
IP地址:192.168.20.138
端口號:60000
用戶名:db2inst1
密碼:db2inst1
遠程數據庫 :
數據庫:REMOTEDB
IP地址:192.168.20.145
端口號:70000
用戶名:db2inst2
密碼:db2inst2
另外確保遠程數據庫的全局設置如下——
現在,我們首先是添加編目節點——
然后編目數據庫——
db2 catalog database REMOTEDB as REMOTEDB at node NODE1
查看編目節點及編目數據庫結果——
db2 list node directory
db2 list db directory
顯示編目已成功
接下來執行創建數據庫聯邦的步驟,首先創建WRAPPER——
備注:如果自定義了wrapper的名字,那么 library 就要加上,不同的系統lib的后綴不同,
AIX 是 .a
Linux 是 .so
注意:db2 "create wrapper db2_wrapper library 'libdb2drda.a'" 雙引號!
可以通過 uname -a 去查看當前是什么操作系統
(注意創建wrapper之前必須先連接本地數據庫:
db2 connect to dbname)
從上面可以看到報錯了,說的是未對指定的操作啟用數據庫的實例
我們查看Federated(聯邦)的功能是否打開,只需要開啟本地的聯邦功能即可,看到顯示是NO
我們將Federated打開,并重啟數據庫使其生效——
現在可以看到創建成功了——
現在開始連接遠程數據庫,記得連接前確保遠程的系統已關閉防火墻——
創建連接對方數據的SERVER——
$ db2 "create server remotedb1svr type DB2/UDB version 10.5 wrapper "DRDA" authorization \"db2inst2\" password \"db2inst2\" options( NODE 'NODE01', DBNAME 'REMOTEDB')"
如果報錯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
重啟數據庫生效
創建MAPPING——
$ db2 "create user mapping for \"db2inst1\" server remotedb1svr options (remote_authid 'db2inst2',remote_password 'db2inst2')"
創建聯邦關系表(首先需要確認遠程的庫有對應的表已存在于數據庫中)——
$ db2 "create nickname db2inst1.testtable for remotedb1svr.db2inst2.testtable"
通過在本地查看聯邦數據庫的表
可以看到可以正常顯示
我們再測試一下插入操作是否可行——
執行成功,并且成功插入數據。
數據庫聯邦可以使我們不再需要構建數據集市了!還有個前提,就是如果要查詢的量不是很大,并且如果匯總表通常就可以滿足查詢的要求,那么就不需要數據集市、不需要相應地創建新服務器和移動大量的數據等,這樣可以大大地提高工作效率。當然,對于需要訪問最低級別的詳細信息的忙碌繁重的查詢而言,數據集市或數據倉庫是首選的解決方案。
注:如果數據庫實例用戶密碼(聯邦中定義的用戶及密碼,也可以不是實例用戶,只要是遠端存在的用戶即可)需要進行修改的話,需要對聯邦中的密碼一并修改,否則聯邦會失效。特別要注意的一點,實例用戶密碼修改之后,最好執行一次重啟,否則你會發現不修改聯邦中的用戶密碼也不影響,但是一旦數據庫重啟后密碼就會使用最新的用戶密碼。
修改聯邦中的用戶或密碼的方法如下:
(修改表聯邦用戶):
db2 "ALTER USER MAPPING FOR \"db2inst1\" SERVER remotedb1svr OPTIONS (SET remote_authid 'db2inst2')"
(修改表聯邦密碼):
db2 "ALTER USER MAPPING FOR \"db2inst1\" SERVER remotedb1svr OPTIONS (SET remote_password 'db2inst2')"
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。