先說一下硬件和操作系統(tǒng)環(huán)境:
機器:IBM的某型號刀片機,
操作系統(tǒng):RED HAT LINUX 64bit企業(yè)版
業(yè)務(wù)數(shù)據(jù)庫:Oracle
WMB6.1,安裝在WMQ6之上,使用DB2 9作為代理數(shù)據(jù)庫
以上軟件都是安裝在同一臺刀片機上
另外,WMBT6.1安裝在我自己的windows機器上,用于開發(fā)MB程序,并遠程部署到服務(wù)器上
按理說參考資料應該是放在最后面的,只是我的這些安裝心得都是來自這些參考資料,為防止我的個人經(jīng)驗誤導讀者的安裝過程,所以先列出以下資料。有空慢慢看的話,還是應該以這些官方資料為準
《messagebroker_Configuration_Administration_and_Security》
這本是權(quán)威了,除了對應的版本有些舊(WMB 6.0),整體內(nèi)容還是很詳細的,幾乎所有平臺上的MB安裝、配置都有詳細的介紹。只是內(nèi)容多得讓人看起來眼暈。
MB info center
內(nèi)容和上面那本書差不多,比較精煉,但如果配置出了問題,未必能找到詳細的解答
最后,強烈建議,如果是linux菜鳥(像我這種),趕緊補習一些linux的基本知識,比如環(huán)境變量怎么設(shè)置
其實安裝過程還是比較簡單的,先安裝MQ,再安裝MB。MQ比較麻煩一點,要用rpm,而MB則帶有一個Eclipse的安裝界面,和windows上和相似,跟著向?qū)ё呔托辛?。安裝好之后,會發(fā)現(xiàn)db2也隨著MB一起裝好了
默認安裝路徑(注意大小寫):
MB:/opt/ibm/mqsi
DB2:/opt/ibm/db2
紅皮書上已經(jīng)有詳細說明,我就偷個懶,copy并解釋一下
1. Log on as root.
2. Create a database instance. Use the commands shown here for guidance for the different platforms.
a. On AIX:
/usr/lpp/db2_08_01/instance/db2icrt -u fence_userID username
b. On Linux, Solaris, or HP-UX:
/opt/IBM/db2/V8.1/instance/db2icrt -u fence_userID username
其實,fence_userID 和username我也不太清楚是什么,你可以參考紅皮書,或者找個db2高手問問。反正我當時使用root創(chuàng)建是不行的,一定要選擇其他賬號,比如你自己的用戶名
3. Log on as username
4. Create a database (in this example called WBRKBKDB) using the following commands (on some platforms, an explicit path name is required). You must insert a space between the starting period and the tilde character in the first command shown here:
. ~/sqllib/db2profile
db2start
db2 create database WBRKBKDB
db2 connect to WBRKBKDB
db2 bind ~/sqllib/bnd/@db2cli.lst grant public CLIPKG 5
重點說明的是:. ~/sqllib/db2profile 這句命令,前面要有一個“.”和空格,否則沒用。執(zhí)行了這條命令后,如果你對db2命令不熟悉,可以直接敲入“db2cc”,啟動db2的圖形管理界面,在里面創(chuàng)建數(shù)據(jù)庫,省去了敲命令的麻煩
最后一步,在某些平臺上需要修改db2的DBHEAP屬性,至少900,才能滿足MB運行的需要,否則會造成性能低下。
由于在64位機器上跑MB,所以ODBC DSN是要32位還是64位是很頭疼的問題,因為不同硬件平臺、操作系統(tǒng)的組合都有不同的要求。比如,在windows上是肯定沒有64bit支持的,而在某些操作系統(tǒng)(貌似是AIX),即使你全部用64bit的產(chǎn)品,也要配置32bit的ODBC。具體的可以參考紅皮書,里面有詳細的列表,在這里我只針對我使用的平臺介紹配置過程,在此特別聲明,未必適用于讀者的環(huán)境
總體思路:linux的ODBC是通過一個配置文件來描述的,在該配置文件中寫入相應的信息,然后在環(huán)境變量中設(shè)置 ODBCINI=“配置文件的絕對路徑”
編輯ODBC配置文件
1. 從你的MB安裝目錄下的ODBC64/V5.2 ,拷貝一份樣例配置文件:odbc64.ini,到某個目錄(比如mqm用戶的根目錄)
2. 修改該文件。在這里我只保留DB2和ORACLE的DSN,其他的統(tǒng)統(tǒng)刪了
3. 修改你的odbc64.ini的權(quán)限:
Ensure that the odbc64.ini file has file ownership of mqm:mqbrkrs and has the same permissions as the supplied sample file.
4. 修改ODBCINI環(huán)境變量指向你的odbc64.ini
5. 修改linux的庫路徑:LD_LIBRARY_PATH,指向db2和oracle的32位和64位odbc鏈接庫的路徑,比如我的配置如下:
LD_LIBRARY_PATH=$ORACLE_BASE/lib32:$DB2_BASE/lib32:$DB2_BASE/lib64:${LD_LIBRARY_PATH}
6. 如前所述,我對使用32還是64bit的DSN也是有點混亂,干脆就把下面兩個環(huán)境變量也加上,以防萬一:
# for MB 64bit execution group
MQSI_LIBPATH64=/opt/ibm/db2/V9.1/lib64:${MQSI_LILPATH64}
# 32bit database lib may be needed
MQSI_LILPATH32=/opt/ibm/db2/V9.1/lib32:${MQSI_LILPATH32}
7. 最后是修改odbc64.ini文件的內(nèi)容,具體的看書吧,下面是我的例子:
[ODBC Data Sources]
BRK1_DB=IBM DB2 ODBC Driver
M
###########################################
###### Individual data source stanzas #####
###########################################
# DB2 stanza
[BRK1_DB]
DRIVER=libdb2Wrapper64.so
Description=DB2DB DB2 ODBC Database
Database=BRK1_DB
# Oracle stanza
[OracleDB]
Driver=/opt/ibm/mqsi/6.1/ODBC64/V5.2/lib/UKora22.so
Description=DataDirect 5.2 64bit Oracle Wire Protocol
HostName=192.168.0.110
PortNumber=1521
SID=orcl
CatalogOptions=0
EnableStaticCursorsForLongData=0
ApplicationUsingThreads=1
EnableDescribeParam=1
OptimizePrepare=1
WorkArounds=536870912
ProcedureRetResults=1
ColumnSizeAsCharacter=1
##########################################
###### Mandatory information stanza ######
##########################################
[ODBC]
Trace=0 # To turn on ODBC trace set = 1
TraceFile=/var/mqm/log/odbctrace64.out
TraceDll=/opt/ibm/mqsi/6.1/ODBC64/V5.2/lib/odbctrac.so
InstallDir=/opt/ibm/mqsi/6.1/ODBC64/V5.2
UseCursorLib=0
IANAAppCodePage=4
UNICODE=UTF-8
補充幾點注意的地方:
1. DB2的driver是不用路徑的,只寫驅(qū)動名字即可
2. DB2的Database屬性(即是數(shù)據(jù)庫的名字),要和DSN的名字一樣(即是方括號中的內(nèi)容)
3. 沒事不要打開trace,會很慢
準備工作 打開一個終端,運行命令之前,先輸入: . /opt/ibm/mqsi/6.1/bin/mqsiprofile 和前面的db2命令一樣,開頭要有“.”和“空格” 你可以把這句話加到linux用戶根目錄的“.bashrc”文件,那樣每次打開終端都會自動執(zhí)行這個腳本,以設(shè)置一些環(huán)境變量,否則你是無法使用MB命令的。 確保MQ和DB2都在運行 可以通過dspmq查看MQ組件的運行狀態(tài),如果隊列管理器沒有啟動,則通過strmqm命令啟動之。 按照前面介紹的方法,利用db2cc圖形界面查看數(shù)據(jù)庫是否運行,否則啟動之;也可以用db2start命令,記得要切換用戶到你創(chuàng)建db2時使用的賬號,比如: su db2usr –c “db2start” 創(chuàng)建配置管理器 mqsicreateconfigmgr ConfigMgr -i root -a xxxxx -q QM 創(chuàng)建代理 mqsicreatebroker BRK1 -i root -a xxxxx -q QM -n BRK1_DB -u db2usr -p xxxxx 創(chuàng)建代理時,要指定代理數(shù)據(jù)庫的DSN名稱,同時指定連接ODBC的數(shù)據(jù)庫用戶名密碼 如果一切ok,創(chuàng)建好代理后,在db2數(shù)據(jù)庫中會看到多了很多表,那基本上就沒問題了 如果出問題,通常都是數(shù)據(jù)庫連接,對照紅皮書檢查你的ODBC配置(這個過程很痛苦),以及訪問數(shù)據(jù)庫的用戶名、是否擁有足夠權(quán)限。實在不行,找IBM的支持吧….. 以上是連接代理數(shù)據(jù)庫,如果要連接用戶的oracle數(shù)據(jù)庫,請參考我之前寫的第六篇筆記,利用這條命令: mqsisetdbparms brokerName -n dataSourceName [-u dataSourceUserId] -p dataSourcePassword 最后用mqsistart啟動一下,一切ok的話,就算完成萬里長征第一步了。 單純安裝好MB還是不夠的,你還要用WMBT開發(fā)、部署和調(diào)試消息流,有誰喜歡坐在風扇轟鳴、充滿輻射的機房里coding呢?所以接下來講述如何配置WMB和WMBT,使得開發(fā)者可以遠程連接MB并進行調(diào)試 在此之前,可以參考這篇文章,實現(xiàn)遠程管理你的MQ http://blog.csdn.net/Justin4wd/archive/ 首先在MQ中建立監(jiān)聽器和服務(wù)器連接通道,具體請參考我的第三篇筆記 http://blog.csdn.net/wangchengsi/archive/2008/07/08/2625598.aspx 如果MB和WMBT是在同一臺機器,這樣做已經(jīng)足夠了,但如果是遠程連接,直接連接會報告以下錯誤,則還需要在MB那里配置ACL(訪問權(quán)限列表) 從上圖可以獲得你的機器名和用戶名 在linux打開一個終端,輸入以下命令 mqsicreateaclentry 配置管理器 -u 用戶名 -m 機器名 -x F –p -x F表示訪問程度,F表示完全訪問 -p表示訪問Proxy,即ConfigManagerProxy,相當于可以訪問所有資源,比如代理 再次從toolkit連接MB,就可以了 之后,開發(fā)、部署、調(diào)試的過程都和本地的機器一樣,讀者可以看我之前寫的關(guān)于調(diào)試功能的配置 注意,6.0以前的MB需要安裝RAC(Rational Agent Controller)才能遠程調(diào)試,6.1開始已經(jīng)不用了創(chuàng)建MB的運行實例
WMBT遠程開發(fā)、調(diào)試