tuxedo与数据库的联系非常密切,而且与多种主流数据库的连接区别的配置过程不大,在下文中介绍Tuxedo8.1与DB2的连接配置。
试验环境:Tuxedo8.1, DB2 v8,Windows平台
试验步骤:
设置环境变量
设置DB2INSTANCE环境变量,以引用包含您希望Tuxedo使用的数据库实例。在本例中,我使用DB2样本数据库SAMPLE,它位于DB2这个 数据库实例中,所以我的环境变量设置就是SET DB2INSTANCE=DB2,如果应用中的配置保持一定,也可以将其写入用户环境变量中。
在PATH环境变量中加入C:\IBM\BIN(C:\IBM为DB2的安装路径)
确认可以在当前用户下连接DB2数据库,即在DB2命令窗口中敲入DB2 CONNECT TO SAMPLE可以连接成功
配置DB2数据库程序参数TP_MON_NAME
在DB2命令窗口中键入DB2 GET DBM CFG,会列出当前数据库的配置参数,其中有一项为TP_MON_NAME,需要更新使用命令
>DB2 UPDATE DBM CFG USING TP_MON_NAME TUXEDO
要使更改生效,需要重起实例,所以需要继续敲入下列命令:
>DB2STOP
>DB2START
将DB2的定义添加至Tuxedo资源管理器程序的定义文件中,在下面的示例中,UDB_XA是为DB2在本地的定义的Tuxedo资源管理程序名,而db2xa_switch是类型为xa_switch_t的一个结构的DB2定义的名称
2 对于AIX,在文件{TUXDIR}/udataobj/RM中,添加定义:
# DB2 UDB
UDB_XA:db2xa_switch:-L{DB2DIR} /lib -ldb2
其中,{TUXDIR}是安装了Tuxedo的目录,而{DB2DIR}是DB2实例目录。
2 对于Window NT,在文件%TUXDIR%\udataobj\rm中,添加定义:
# DB2 UDB
UDB_XA;db2xa_switch;%DB2DIR%libdb2api.lib
其中,%TUXDIR%是安装了Tuxedo的目录,而%DB2DIR%是DB2实例目录。
为DB2构建Tuxedo事务监控程序服务器程序:
2 对于AIX:
{TUXDIR}/bin/buildtms -r UDB_XA -o {TUXDIR}/bin/TMS_UDB
其中,{TUXDIR}是安装了Tuxedo的目录。
2 对于Windows NT:
%TUXDIR%binbuildtms -r UDB_XA -o %TUXDIR%binTMS_UDB
操作成功后,会在%TUXDIR%\bin下产生一个TMS_UDB.exe
注:buildtms命令不接受带空格的命令。我原本安装DB2的标准安装,把DB2安装在C:\ Program Files\IBM\SQLLIB中,但是在buildtms中,总是不能通过,所以我重新将DB2安装在C:\IBM下,buildtms命令顺利通过。
构建应用服务器,在下面的示例中,-r选项指定资源管理程序名,-f选项(使用的一次或多次)指定包含应用程序服务的文件,-s选项指定此服务器的应用程序服务名,而-o选项指定输出服务器文件名:
编写DB2的嵌入式Sql文件DB2.sqc,嵌入式sql语法和Oracle基本一致
预编译DB2嵌入式Sql文件,在DB2命令窗口中键入如下命令:
>DB2 PREP %APPDIR%DB2.SQC BINDFILE
生成DB2.c文件,和一个用于和数据库绑定的DB2.BND文件
将数据库与应用绑定,在DB2命令窗口中键入如下命令:
>DB2 BIND %APPDIR%DB2.BND
成功后即可将应用与数据库绑定
编译生成Tuxedo Server:
需要先修改一些DB2和Tuxedo冲突的头文件:
1.TUXEDO安装路径include目录下的下面文件
把sqlca.h 改名为 sqlca.h.bbb
把sqlcode.h 改名为 sqlcode.h.bbb
把sqlda.h 改名为 sqlda.h.bbb
2.重命名TUXEDO安装路径lib目录下的下面文件
把libsql.lib 改名为 libsql.lib.bbb
2 对于AIX:
{TUXDIR}/bin/buildserver -r UDB_XA -f svrFile.c -s svcName -o UDBserver
其中%TUXDIR%是安装了Tuxedo的目录
2 对于Window NT:
%TUXDIR%binbuildserver -r UDB_XA -f svrFile.c -s svcName -o UDBserver
其中%TUXDIR%是安装了Tuxedo的目录。
设置Tuxedo配置文件以引用DB2服务器。
在UBBCONFIG文件的*GROUPS的小节中,添加类似如下的项:
UDB_GRP LMID=simp GRPNO=3
TMSNAME=TMS_UDB TMSCOUNT=2
OPENINFO="UDB_XA:db=sample,uid=db2_user,pwd=db2_user_pwd"
其中,TMSNAME参数指定您先前构建的事务监控程序的服务器程序,而OPENINFO参数指定资源管理器程序名。其后是数据库名称和DB2用户和口令,其中口令可以输入*****,在tmloadcf过程中会提示你输入相应密码。
在*SERVERS节中加入您先前构建的应用服务器,如本例中的Tuxedo Server名为DB2,所以设置:
*SERVERS
DEFAULT:
CLOPT="-A"
DB2 SRVGRP=GROUP1 SRVID=1
启动Tuxedo:
先用tmadmin创建TLOG文件,TUXEDO用一个文件TLOG记录对数据库操作的日志。用于协调分布式数据库的提交与回滚.
>tmadmin
>crdl -b 500 -z %APPDIR%TLOG
>q
tmboot -y
在该命令完成之后,Tuxedo信息应指示服务器已启动。