[+]
本来这一篇要写ESQL的一些语法细节的,但是过几天就要去客户那里部署系统了,上周也花了一个礼拜时间,一边学linux,一边学怎么在linux上部署MB。所以这一篇先讨论如何在linux上安装、配置WMB
准备先说一下硬件和操作系统环境: 机器:IBM的某型号刀片机, 操作系统:RED HAT LINUX 64bit企业版 业务数据库:Oracle WMB6.1,安装在WMQ6之上,使用DB2 9作为代理数据库 以上软件都是安装在同一台刀片机上 另外,WMBT6.1安装在我自己的windows机器上,用于开发MB程序,并远程部署到服务器上 参考资料按理说参考资料应该是放在最后面的,只是我的这些安装心得都是来自这些参考资料,为防止我的个人经验误导读者的安装过程,所以先列出以下资料。有空慢慢看的话,还是应该以这些官方资料为准 《messagebroker_Configuration_Administration_and_Security》 这本是权威了,除了对应的版本有些旧(WMB 6.0),整体内容还是很详细的,几乎所有平台上的MB安装、配置都有详细的介绍。只是内容多得让人看起来眼晕。 MB info center 内容和上面那本书差不多,比较精炼,但如果配置出了问题,未必能找到详细的解答 最后,强烈建议,如果是linux菜鸟(像我这种),赶紧补习一些linux的基本知识,比如环境变量怎么设置 安装其实安装过程还是比较简单的,先安装MQ,再安装MB。MQ比较麻烦一点,要用rpm,而MB则带有一个Eclipse的安装界面,和windows上和相似,跟着向导走就行了。安装好之后,会发现db2也随着MB一起装好了 默认安装路径(注意大小写): MB:/opt/ibm/mqsi DB2:/opt/ibm/db2 创建代理数据库红皮书上已经有详细说明,我就偷个懒,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创建是不行的,一定要选择其他账号,比如你自己的用户名 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 这句命令,前面要有一个“.”和空格,否则没用。执行了这条命令后,如果你对db2命令不熟悉,可以直接敲入“db2cc”,启动db2的图形管理界面,在里面创建数据库,省去了敲命令的麻烦 最后一步,在某些平台上需要修改db2的DBHEAP属性,至少900,才能满足MB运行的需要,否则会造成性能低下。 配置ODBC连接由于在64位机器上跑MB,所以ODBC DSN是要32位还是64位是很头疼的问题,因为不同硬件平台、操作系统的组合都有不同的要求。比如,在windows上是肯定没有64bit支持的,而在某些操作系统(貌似是AIX),即使你全部用64bit的产品,也要配置32bit的ODBC。具体的可以参考红皮书,里面有详细的列表,在这里我只针对我使用的平台介绍配置过程,在此特别声明,未必适用于读者的环境 总体思路:linux的ODBC是通过一个配置文件来描述的,在该配置文件中写入相应的信息,然后在环境变量中设置 ODBCINI=“配置文件的绝对路径” 编辑ODBC配置文件 1. 从你的MB安装目录下的ODBC64/V5.2 ,拷贝一份样例配置文件:odbc64.ini,到某个目录(比如mqm用户的根目录) 2. 修改该文件。在这里我只保留DB2和ORACLE的DSN,其他的统统删了 3. 修改你的odbc64.ini的权限: Ensure that the odbc64.ini file has file ownership of mqm:mqbrkrs and has the same permissions as the supplied sample file. 4. 修改ODBCINI环境变量指向你的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也是有点混乱,干脆就把下面两个环境变量也加上,以防万一: # 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文件的内容,具体的看书吧,下面是我的例子: [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是不用路径的,只写驱动名字即可 2. DB2的Database属性(即是数据库的名字),要和DSN的名字一样(即是方括号中的内容) 3. 没事不要打开trace,会很慢
准备工作 打开一个终端,运行命令之前,先输入: . /opt/ibm/mqsi/6.1/bin/mqsiprofile 和前面的db2命令一样,开头要有“.”和“空格” 你可以把这句话加到linux用户根目录的“.bashrc”文件,那样每次打开终端都会自动执行这个脚本,以设置一些环境变量,否则你是无法使用MB命令的。 确保MQ和DB2都在运行 可以通过dspmq查看MQ组件的运行状态,如果队列管理器没有启动,则通过strmqm命令启动之。 按照前面介绍的方法,利用db2cc图形界面查看数据库是否运行,否则启动之;也可以用db2start命令,记得要切换用户到你创建db2时使用的账号,比如: su db2usr –c “db2start” 创建配置管理器 mqsicreateconfigmgr ConfigMgr -i root -a xxxxx -q QM 创建代理 mqsicreatebroker BRK1 -i root -a xxxxx -q QM -n BRK1_DB -u db2usr -p xxxxx 创建代理时,要指定代理数据库的DSN名称,同时指定连接ODBC的数据库用户名密码 如果一切ok,创建好代理后,在db2数据库中会看到多了很多表,那基本上就没问题了 如果出问题,通常都是数据库连接,对照红皮书检查你的ODBC配置(这个过程很痛苦),以及访问数据库的用户名、是否拥有足够权限。实在不行,找IBM的支持吧….. 以上是连接代理数据库,如果要连接用户的oracle数据库,请参考我之前写的第六篇笔记,利用这条命令: mqsisetdbparms brokerName -n dataSourceName [-u dataSourceUserId] -p dataSourcePassword 最后用mqsistart启动一下,一切ok的话,就算完成万里长征第一步了。 单纯安装好MB还是不够的,你还要用WMBT开发、部署和调试消息流,有谁喜欢坐在风扇轰鸣、充满辐射的机房里coding呢?所以接下来讲述如何配置WMB和WMBT,使得开发者可以远程连接MB并进行调试 在此之前,可以参考这篇文章,实现远程管理你的MQ http://blog.csdn.net/Justin4wd/archive/ 首先在MQ中建立监听器和服务器连接通道,具体请参考我的第三篇笔记 http://blog.csdn.net/wangchengsi/archive/2008/07/08/2625598.aspx 如果MB和WMBT是在同一台机器,这样做已经足够了,但如果是远程连接,直接连接会报告以下错误,则还需要在MB那里配置ACL(访问权限列表)
从上图可以获得你的机器名和用户名 在linux打开一个终端,输入以下命令 mqsicreateaclentry 配置管理器 -u 用户名 -m 机器名 -x F –p -x F表示访问程度,F表示完全访问 -p表示访问Proxy,即ConfigManagerProxy,相当于可以访问所有资源,比如代理 再次从toolkit连接MB,就可以了 之后,开发、部署、调试的过程都和本地的机器一样,读者可以看我之前写的关于调试功能的配置 注意,6.0以前的MB需要安装RAC(Rational Agent Controller)才能远程调试,6.1开始已经不用了 |
|