三、数据库XA设置
3.1 ORACLE XA
1.在附件中提供了rm文件,另外建议运行oracle的demo文件获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中.
2.ubb 文件中 *GROUP节 TMSNAME=TMS_ORA TMSCOUNT=3 OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTM=120+LogDir=.+SqlNet=abcde"
具体在Oracle联机文档Application Development->oracle8 Application Development's
Guild->Oracle XA->Defining the xa_open String中提供了解释
3.在oracle一侧需运行xaview.sql,并且scott用户有操作权限,运行结果会记录trc文件里.(在oracle8.0.5这一步不是必须的)
4.运行 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracle_XA
5. 在 tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中 EXEC SQL DISCONNECT...改成tpclose(); 实际可拷贝$TUXDIR/apps/bankapp/appinit.c
6.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
7.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
8.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
3.2 SYBASE XA
1.在RM文件,运行sybase获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件���:Sybase_XA:???????.
2.ubbconfig 文件中 *GROUP节 TMS_NAME=TMS_SYB TMSCOUNT=3 OPENINFO="?????"
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_SYB -r Sybase_XA
4. 在 tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中 EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
3.3 INFORMIX XA
1. 运行esql -lib获得要连接的所有lib库的名称.然后将这些名称全部加到RM文件中INFORMIX- OnLine:infx_xa_switch{INFORMIXDIR}/lib/esql/libinfxxa.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixsql.a /usr/informix/lib/libixasf.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixgls.a -lnsl_s -lm -lV3 -lcl -lsec /usr/informix/lib/esql/libixglx.a
2.ubbconfig 文件中
*GROUP节 TMS_NAME=TMS_INFO TMSCOUNT=3 OPENINFO="INFORMIX-OnLine:test_tux"
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_INFO -r INFORMIX-OnLine
4. 在 tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中 EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
四、Tuxedo多机方式配置要点
tuxedo多机方式配置有两个方面
4.1启动tlisten
tlisten在tuxedo启动时扮演控制者的角色,在非master机上由tlisten启动bbl和应用服务器,tlisten的启动方法为
tlisten -l //host:ipport
注意这里的ipport必须和ubb文件中NETWORK域的NLSADDR一致
tlisten必须在所有的机器上启动,启动后才能运行tmboot.建议操作系统启动时就运行tlisten.
4.2 ubb文件配置
对于多机模式一般就是指单一domain管理的多台机器,所有机器上仅需要一个ubb文件,以下是ubb文件的模板
*RESOURCES
IPCKEY 80952
MAXACCESSERS 40
MAXSERVERS 35
MAXSERVICES 75
MASTER SITE1,SITE2
OPTIONS LAN,MIGRATE
MODEL MP
*MACHINES
<SITE1's uname> LMID=SITE1
TUXDIR="<TUXDIR1>"
APPDIR="<APPDIR1>"
TUXCONFIG="<APPDIR1>/tuxconfig"
TYPE="<machine type1>"
ULOGPFX="<APPDIR1>/ULOG"
<SITE2's uname> LMID=SITE2
TUXDIR="<TUXDIR2>"
APPDIR="<APPDIR2>"
TLOGDEVICE="<APPDIR2>/TLOG"
TLOGNAME=TLOG
TUXCONFIG="<APPDIR2>/tuxconfig"
TYPE="<machine type2>"
ULOGPFX="<APPDIR2>/ULOG"
#
*GROUPS
*NETWORK
SITE1 NADDR="<network address of SITE1>"
BRIDGE="<device of provider1>"
NLSADDR="<network listener address of SITE1>"
SITE2 NADDR="<network address of SITE2>"
BRIDGE="<device of provider2>"
NLSADDR="<network listener address of SITE2>"
*SERVERS
DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"
#
*SERVICES
4.3管理
只能在master机上运行tmadmin进行管理。要获得统计信息在tmadmin中应运行default –m命令。
例如:
tmadmin
>default –m SITE1
>printservice
Windows NT/2000下要注意的问题:
1.由于NT机器上MAXACCESSORS受IPC的限制通常较小,因此建议在MACHINES部分单独设置MAXACCESSORS.
2.在MACHINES部分要单独设置UID=0和GID=0
3.和其他类型的CPU机器互连时,在MACHINES部分一定要指定TYPE.否则将提示tlisten版本不匹配。
TUXEDO在SERVER和CLIENT之间进行数据交换缺省进行数据翻译,但一个domain的server之间缺省不进行数据翻译!
4.tlisten password应该相同.我发现%TUXDIR%\udataobj\tlisten.pw中密码相同的条件应将回车考虑在内.
5.有时LANG环境变量无法改变为C, 可以在 %TUXDIR%\locale创建文件夹 mkdir %LANG%.
6.RM文件使用中发现有效的RM后一定要有回车,否则将报RM不存在.