IBM Message Broker笔记系列(八)

  本来这一篇要写 ESQL 的一些语法细节的,但是过几天就要去客户那里部署系统了,上周也花了一个礼拜时间,一边学 linux ,一边学怎么在 linux 上部署 MB 。所以这一篇先讨论如何在 linux 上安装、配置 WMB

 

准备

先说一下硬件和操作系统环境:

机器:IBM的某型号刀片机, 4G 内存

操作系统:RED HAT LINUX 64bit企业版

业务数据库:Oracle 10g

 

WMB6.1,安装在WMQ6之上,使用DB2 9作为代理数据库

以上软件都是安装在同一台刀片机上

 

另外,WMBT6.1安装在我自己的windows机器上,用于开发MB程序,并远程部署到服务器上

 

参考资料

按理说参考资料应该是放在最后面的,只是我的这些安装心得都是来自这些参考资料,为防止我的个人经验误导读者的安装过程,所以先列出以下资料。有空慢慢看的话,还是应该以这些官方资料为准

 

messagebroker_Configuration_Administration_and_Security

这本是权威了,除了对应的版本有些旧(WMB 6.0),整体内容还是很详细的,几乎所有平台上的MB安装、配置都有详细的介绍。只是内容多得让人看起来眼晕。

 

MB info center

内容和上面那本书差不多,比较精炼,但如果配置出了问题,未必能找到详细的解答

 

最后,强烈建议,如果是linux菜鸟(像我这种),赶紧补习一些linux的基本知识,比如环境变量怎么设置

 

安装

其实安装过程还是比较简单的,先安装MQ,再安装MBMQ比较麻烦一点,要用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的图形管理界面,在里面创建数据库,省去了敲命令的麻烦

 

最后一步,在某些平台上需要修改db2DBHEAP属性,至少900,才能满足MB运行的需要,否则会造成性能低下。

配置ODBC连接

由于在64位机器上跑MB,所以ODBC DSN是要32位还是64位是很头疼的问题,因为不同硬件平台、操作系统的组合都有不同的要求。比如,在windows上是肯定没有64bit支持的,而在某些操作系统(貌似是AIX),即使你全部用64bit的产品,也要配置32bitODBC。具体的可以参考红皮书,里面有详细的列表,在这里我只针对我使用的平台介绍配置过程,在此特别声明,未必适用于读者的环境

 

总体思路:linuxODBC是通过一个配置文件来描述的,在该配置文件中写入相应的信息,然后在环境变量中设置 ODBCINI=“配置文件的绝对路径”

 

编辑ODBC配置文件

1.      从你的MB安装目录下的ODBC64/V5.2 ,拷贝一份样例配置文件:odbc64.ini,到某个目录(比如mqm用户的根目录)

2.      修改该文件。在这里我只保留DB2ORACLEDSN,其他的统统删了

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,指向db2oracle32位和64odbc链接库的路径,比如我的配置如下:

LD_LIBRARY_PATH=$ORACLE_BASE/lib32:$DB2_BASE/lib32:$DB2_BASE/lib64:${LD_LIBRARY_PATH}

6.      如前所述,我对使用32还是64bitDSN也是有点混乱,干脆就把下面两个环境变量也加上,以防万一:

# 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 2M _OracleDB=DataDirect 5.2 64bit Oracle Wire Protocol

 

###########################################

###### 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.      DB2driver是不用路径的,只写驱动名字即可

2.      DB2Database属性(即是数据库的名字),要和DSN的名字一样(即是方括号中的内容)

3.      没事不要打开trace,会很慢

 

创建MB的运行实例

准备工作

打开一个终端,运行命令之前,先输入:

. /opt/ibm/mqsi/6.1/bin/mqsiprofile

和前面的db2命令一样,开头要有“.”和“空格”

你可以把这句话加到linux用户根目录的“.bashrc”文件,那样每次打开终端都会自动执行这个脚本,以设置一些环境变量,否则你是无法使用MB命令的。

 

确保MQDB2都在运行

可以通过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的话,就算完成万里长征第一步了。

 

WMBT远程开发、调试

单纯安装好MB还是不够的,你还要用WMBT开发、部署和调试消息流,有谁喜欢坐在风扇轰鸣、充满辐射的机房里coding呢?所以接下来讲述如何配置WMBWMBT,使得开发者可以远程连接MB并进行调试

在此之前,可以参考这篇文章,实现远程管理你的MQ

http://blog.csdn.net/Justin4wd/archive/ 2008/07/16 /2661131.aspx

 

首先在MQ中建立监听器和服务器连接通道,具体请参考我的第三篇笔记

http://blog.csdn.net/wangchengsi/archive/2008/07/08/2625598.aspx

 

如果MBWMBT是在同一台机器,这样做已经足够了,但如果是远程连接,直接连接会报告以下错误,则还需要在MB那里配置ACL(访问权限列表)

IBM Message Broker笔记系列(八)_第1张图片

从上图可以获得你的机器名和用户名

 

linux打开一个终端,输入以下命令

mqsicreateaclentry 配置管理器 -u 用户名 -m 机器名 -x F –p

-x F表示访问程度,F表示完全访问

-p表示访问Proxy,即ConfigManagerProxy,相当于可以访问所有资源,比如代理

 

再次从toolkit连接MB,就可以了

 

之后,开发、部署、调试的过程都和本地的机器一样,读者可以看我之前写的关于调试功能的配置

 

注意,6.0以前的MB需要安装RACRational Agent Controller)才能远程调试,6.1开始已经不用了

你可能感兴趣的:(oracle,数据库,linux,db2,IBM,64bit)