1 错误: NLS:4: Cannot open message catalog GP_CAT, set 1, num 1102; check TUXDIR=/tuxedo8, LANG=zh_CN.gb18030
解决办法:重新设置环境变量,LANG=C
export LANG=C
2 错误: /tuxedo8/bin/buildserver -v -r -o testtux -f TestTux.o \
-f "-L. -L/ora11/product/11.2.0/lib -lclntsh -L/usr/local/lib -L/tuxedo8/lib -L/timesten7/TimesTen/tt70/lib -ltten -L/project/abp01/abp_bill/src/billing/ tools/lib -L/project/abp01/release/lib -L/project/abp01/abp_bill/src/billing/release/lib -L/project/abp01/abp_acct/src/acct/release/lib -ldeamon_base - ldeamon_client -llog -llogproc -lacclient -lacserver -lshm -lcommon -lmdbutil -lrdbutil -lplatform -lACE -lncftp -lsio -lStrn -lAsn -lgiconv" \
-s TESTTUXSVC
GP_CAT:1102: ERROR: Cannot find RM -o in file /tuxedo8/udataobj/RM
*** Error exit code 1
说明: buildserver 的-r选项表示指定XA连接数据库的类型,-r后面需要紧带RM(资源文件中的内容)文件中连接串, 如-r Oralce_XA等。
现在因为-r 后面是-o,所以把-o认为是RM文件中的内容了。
解决办法:
如果不是XA的方式连oracle,把-r去掉即可;
如果是XA的方式,那么就是把连接串加上,如-r Oracle_XA (Oracle_XA在RM文件中有定义)
3 在tuxedo的ULOG日志里面经常会看到tperrno = 6这样的错误,这样错误一般都是由于tpcall()所调用的SERVICE无法找到所致。
一般来讲,可能是提供的该服务的进程都异常退出所致,比如core dump。
但是有些时候,需要定位是那个服务无法找到,这个时候需要一个TUXEDO的调试环境变量辅助定位问题。
在环境变量增加设置TMULOGUSINGSERVICENAME=YES,在ULOG中就可以看到无法调用的服务的名称。
4 WSNAT_CAT:1287: WARN: Forced shutdown of client
这个问题主要可能的原因有三个:
一是Client端由于长时间连接Server,但却没有作任何的请求,这时,他会被断掉;
二是由于Server在处理Client的请求时,发生超时引起的;
三是由于在处理Client发起的事务时,超过tpbegin所制定的时间,也会报告这个信息。这个问题所有tuxedo机器上都有发现。解决办法:及时断开连接,增加BLOCKTIME的时间和tpbegin的时间。
5 在tmamdin中敲 pclt命令,发现一个应用程序有很多连接(应该是没有释放)
>pclt
LMID User Name Client Name Time Status Bgn/Cmmt/Abrt
--------------- --------------- --------------- -------- ------- -------------
tydic40 abp_bill WSH 1:09:54 IDLE 0/0/0
tydic40 abp_bill WSH 1:09:54 IDLE 0/0/0
tydic40 abp_bill WSH 1:09:54 IDLE 0/0/0
tydic40 abp_bill WSH 1:09:54 IDLE 0/0/0
tydic40 abp_bill WSH 1:09:54 IDLE 0/0/0
tydic40 0:00:04 IDLE/W 0/0/0
tydic40 0:00:01 IDLE/W 0/0/0
tydic40 0:00:02 IDLE/W 0/0/0
tydic40 0:00:04 IDLE/W 0/0/0
tydic40 0:00:02 IDLE/W 0/0/0
tydic40 0:00:04 IDLE/W 0/0/0
发现一个应用程序有很多连接(应该是没有释放),对应的状态也是IDLE/W,经过验证发现,如果在TPMULTICONTEXTS模式下,每次tpinit都会多一个连接,必须通过tpterm能释放掉。
检查代码发现,tpinit和tpterm没有对应上,所以出现了上面的情况,同时也导致客户端阻塞的现场(因为连接满了)。