1 Tuxedo CLIENT 连接不到server 端的网络问题?
如果网络是通的,那么还有一个问题:
就是如果你的网络部太好,就是ping(默认是64 bytes)大的包(例如:512,
1024bytes)不通(或者丢包率太大),也不行。因为这个跟你写的程序有关。如果
在网络传输时要求网络特别好,那么这个地方也容易出现问题。
另外你 client 设置的WSNADDR 的IP and Port 必须没有问题,否则也会出现这
样的问题,这个跟我以前说的问题是一样的。就是网络不通。
2 分多次返回数据的问题
(1) Conversation 的方式是可行的,只要在客户端做好控制,就不会出现等待
太久的情况(比如用循环连续地把结果分多次取完),队列方面BBL 会处
理,只是资源使用肯定会比同步方式多,还有如果返回量太大,需要经过
长时间分多次传送,就要注意ubb 中的关于超时的设置,否则会出现13
的超时错误。
(2) 使用tpcall 方式。客户端多次tpcall 取回所需要的数据。
3 tmshutdown -y 出错?
关于这个问题,我也遇到过,无法shutdown,后来只有kill掉,但是这样的话tmboot
的时候会有问题,因为kill 的时候IPC 没有被释放,有两个办法:换一个IPC 值
(2^15+1--2^18)或者用ipcrm(UNIX)将原来的IPC 释放掉。
4 如何用 TUXEDO 同步调用存储过程?
#if defined(__STDC__)||defined(__cplusplus)
QUERY(TPSVCINFO *rqst)
#else
QUERY(rqst)
TPSVCINFO *rqst;
#endif
{
................
EXEC SQL BEGIN DECLARE SECTION;
sql_cursor sys_cursor;
.......
EXEC SQL VAR error IS STRING(ERRINFO_LEN);
EXEC SQL END DECLARE SECTION;
......
transftemp =(FBFR *)rqst->data;
transf = (FBFR *)tpalloc("FML32",NULL,10240);
if (transf == (FBFR *)NULL)
{
tpreturn(TPFAIL,0,(char *)transf,0L,0);
}
Finit(transf,(FLDLEN)Fsizeof(transf));
EXEC SQL ALLOCATE :test_cursor;
EXEC SQL EXECUTE
BEGIN
proc_query(:test_cursor,:error,:iRet);
END;
END-EXEC;
5 TMS 老是启动不了的问题?
错误原因不是权限的问题!
是因为我的 setenv 中设置
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280
set NLS_DATE_FORMAT='YYYY-MM-DD'
我的 DB 字符集为SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280
可能在 WIN2000 下不能设置NLS_LANG 和NLS_DATE_FORMAT(但是UNIX
中可以)
去掉这两句后就可以启动 TMS 了!
6 tuxedo 中XA 错误解析
如果 tuxedo 中使用XA,出现如下错误的解决方法:
Tuxedo ULOG
144225.rs43p!BBL.24850: LIBTUX_CAT:262: INFO: Standard main starting
144240.rs43p!TMS_ORACLE.36242: 101300: TUXEDO Version 6.4 AIX 2 4
007025954C00. 144240.rs43p!TMS_ORACLE.36242: LIBTUX_CAT:262: INFO:
Standard main starting 144240.rs43p!TMS_ORACLE.36242: LIBTUX_CAT:466:
ERROR: tpopen TPERMERR xa_open re turned XAER_INVAL 144240.rs43p!
TMS_ORACLE.36242: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
144240.rs43p!tmboot.39820: 101300: TUXEDO Version 6.4 AIX 2 4
007025954C00. 144240.rs43p!tmboot.39820: CMDTUX_CAT:825: ERROR:
Process TMS_ORACLE at SITE1 fa iled with /T tperrno (TPERMERR -
resource manager error) 144240.rs43p!TMS_ORACLE.38768: 101300: TUXEDO
Version 6.4 AIX 2 4 007025954C00. 144240.rs43p!TMS_ORACLE.38768:
LIBTUX_CAT:262: INFO: Standard main starting 144240.rs43p!
TMS_ORACLE.38768: LIBTUX_CAT:466: ERROR: tpopen TPERMERR xa_open
returned XAER_INVAL 144240.rs43p!TMS_ORACLE.38768: LIBTUX_CAT:250:
ERROR: tpsvrinit() failed 144240.rs43p!tmboot.39820: CMDTUX_CAT:825:
ERROR: Process TMS_ORACLE at SITE1 fa iled with /T tperrno (TPERMERR -
resource manager error)
有三个问题导致出现这样的错误:
(1)你的RM 配置文件是否有错误,通过buildtms 就可以测试出来。如果
buildtms 成功,则证明RM 配置没有问题。如果不能正确 buildtms 成功,请先
配置正确的RM 文件。
(2)XA 配置文件中Open string 配置出现错误,正确的格式:
OPENINFO="Oracle_XA:Oracle_XA+SqlNet=alias+Acc=P/un/pw+SesTm=10+Log
Dir=<xxx>"
(3)tuxedo device 没有正确的建立,请重新建立一遍。使用如下命令(例子,请
使用符合你的实际要求的做):
crdl -b 2000 -z /home/tuxedo/TLOG
crlog -m LMID
7 编译客户端程序,运行时调用tpinit 出错?
你未使用 cb 时候,你肯定没有使用WS 方式,现在你使用WS 方式,所以你必
须配置WSNADDR 环境变量和buildclient 使用-w 参数
8 tuxedo 与sybase 如何联结怎么连接?自己写连接?还
是采用tuxedo 的XA 直连?
在应用 XA Interface 编译执行TUXEDO 应用时,应注意的几个问题
本文所针对的应用环境:
OS:Win2000
ASE:ASE125(安装路径e:\sybase)
OCS:Open Client125(安装路径e:\sybase\ocs-12_5)
TUXEDO:Tuxedo8.0(安装路径e:\program files\tuxedo8.0)
1.Open Client125 要求必须安装EBF10420 或者EBF10419 补丁
2.修改RM TUXEDO 文件
#----------NT-----------begin--------
SYBASE_XA_SERVER;sybase_TUX_xa_switch;E:\sybase\OCS-12_5\lib\libxadtm.lib E:\sybase\OCS-12_5\lib\libcobct.lib
E:\sybase\OCS-12_5\lib\libct.lib E:\sybase\OCS-12_5\lib\libcs.lib
#----------NT-----------end----------
注意必须放在同一行.
3.修改UBB 文件
OPENINFO="SYBASE_XA_SERVER: -Nconnection1 -Uuserid1 -
Ppassword1 -Le:\SYBASE\ocs-12_5\sample\xadtm\
tuxedo\simprpc.ct\xa_log -V125 -Tall"
注意-V -T 参数的使用
测试Open Client125 自带样本应用simprpc 时,
4.修改makefile 文件,并使用"nmake - fmakefile all"命令进行编译
CFLAGS= -I$(SYBASE)OCS-12_5include -I$(TUXDIR)include
RM= SYBASE_XA_SERVER
TMS= tms_simprpc
all: simprpc simpsrv
clean:
rm -f *.o simprpc simpsrv $(TMS)
.SUFFIXES: .c .o
.c.o:
$(CC) $(CFLAGS) -c $*.c
simpsrv: simpsrv.o
set CFLAGS=$(CFLAGS);
$(TUXDIR)binbuildserver -s SIMPSRV -o simpsrv - f simpsrv.c -r
$(RM)
$(TUXDIR)binbuildtms -o $(TMS) -r $(RM)
simprpc: simprpc.o
set CFLAGS=$(CFLAGS);
$(TUXDIR)binbuildclient -o simprpc - f simprpc.c
5.修改simpsrv.c 文件
if (cs_ctx_global(CS_VERSION_125, &ctx) != CS_SUCCEED)
return (NULL);
注意版本信息:CS_VERSION_125