数据库操作
配置MB的用户数据库
 前面已经讲了在创建MB运行时实例时,配置数据库的基本过程了,但那里所指的数据库是MB自己运行时需要的数据库,用来存放诸如broker、执行组、消息流等的信息,而现在开发的企业应用程序,几乎没有不用到数据库来存放业务数据的,所以这里主要讲述如何配置用户数据库,也即你的应用程序使用的数据库。
 
下面以MB 6.1 + Oracle 10g为例,介绍配置过程
一、          ODBC数据源
MB是通过ODBC来操作数据库的,因此首先要配置好操作系统本身的ODBC数据源。Windows中配置ODBC很容易,在此不赘述细节。
需要注意的地方有三点:
1) 选择Oracle数据源驱动时,一定要选择下图所示的MB自带的Oracle驱动;
2) 配置时要勾上Advanced Tab里的Enable SQL Describe Param 和 Procedure Returns Results两个选项,Application Using Threads默认应该是勾上的,不用改;
3) 修改注册表,设置一个WorkArounds:
开始->运行->regedit, 在HKEY_LOCAL_MACHINE – SOFTWARE – ODBC – ODBC.INI – ODBC File DSN下面新建一个字符串型的WorkArounds标识,设置值为536870912
(有时不设置这个WorkArounds也能正常运行,你可以先不设,不果1) 2)步做完,不行再加上)
我在创建ODBC时,一开始没有在本机安装Oracle,结果ODBC无法使用,报告由于系统错误126,驱动程序无法加载,问了IBM的技术支持也没有答案,后来干脆在本机安装了一个Oracle(不必运行),问题就解决了,估计MB自带的Oracle驱动还是要调用Oracle本身的一些库的。我对Oracle本身基本不懂,具体用到了哪些库也不清楚,就先这么用着了。
 
二、          数据库设置
这里顺手提一下Oracle本身的设置。当你新建了OracleODBC数据源后,会发现数据源设置里面,没有IP和端口设置。我在网上搜了一下,最简单的方法是直接修改Oraclea文件,这个文件位于: $oracle_root\product\10.1.0\db_1\NETWORK\a 路径下,可以用记事本打开编辑。里面本身已经有样例了,参照着改很容易
 三、          消息流节点
MB中能和数据库打交道的节点有很多,包括filtercompute,和专门的数据库节点,如下图:
 基本上,凡是属性里面可以设置数据源的节点,都可以操作数据库。使用方法很简单,直接在数据源属性中填入操作系统的相应ODBC数据源名称即可。
 
四、           代理broker的设置 (设置用户名和密码!! 一定要做哦)
这是最后一处要设置的地方。前面的tns文件解决了ip和端口的问题,但是数据源本身的用户名和密码在消息流中并没有提及,其实这是通过MB的一个命令来设置的,格式如下:
mqsisetdbparms brokerName -n dataSourceName [-u dataSourceUserId] -p dataSourcePa
ssword
具体用法可以输入oracle 新建用户 mqsisetdbparms /h 获得参考
 配置完以上内容后,运行消息流应该不会有数据库连接的异常了。假如配置不正确,会在运行到使用了数据源的节点处抛出ODBC的一些异常
 
WMBT中创建数据库项目
 以上做的工作可以确保消息流能够正确操作用户数据库,但是当你在WMBT中编写SQL语句时,会出现很多警告,内容一般是无法解析数据库表引用:某字段。虽然不影响运行,但看着总是不太爽。
出现警告的原因很简单,你没有告诉WMBT你需要用到的数据库表的结构是什么,所以WMBT很尽职地告诉你可能有问题,我们只需引入数据库的定义,即可消除这些警告。