db2 联邦 mysql_DB2联邦数据库及配置方法(及联邦密码修改)
如果您需要使用所有不同的數據庫,包括選擇、插入、更新和刪除,就象所有的表都位于單個數據庫中那樣,那么將獲得非常高的工作效率。數據庫聯邦就是要做到這一點:使所有表看起來象是在同一個數據庫中
那么,數據庫聯邦是怎么工作的?
“聯邦者(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 "" 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')"
總結
以上是生活随笔為你收集整理的db2 联邦 mysql_DB2联邦数据库及配置方法(及联邦密码修改)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使mysql编码格式_Mysql设置
- 下一篇: mysql数据库表名批量改为小写,MyS