折磨我两天的 tuxedo buildserver 编译服务启动挂起问题终于解决,不容易啊,为了让有过类似经历的人省下点时间,现记录如下:
故障现象:
准备将原系统 redflag4.0+tuxedo8.0+oracle 8.1.7的系统移植到
redfalg5.0+tuxedo8.1+oracle10g
开发环境:proc,gcc3.4.6
好,部署软件环境,修改环境变量,更改tuxedo的某些oracle的头文件,如slqda.h等...
在此不详细说明,网上有不少相关文档,可以查看.
经过一番折腾,buildserver终于将服务编译通过,happy!go on!
tmboot -y..........
CMDTUX_CAT:819: INFO: Process id=16218 Assume started (pipe).
查看ULOG,一些扯淡的话
142508.kaifa!BBL.14662.3086919904.0: 09-03-2004: Tuxedo Version 8.1, 32-bit, Patch Level 099
142508.kaifa!BBL.14662.3086919904.0: LIBTUX_CAT:1434: ERROR: Invalid trace specification; ignored
142508.kaifa!BBL.14662.3086919904.0: LIBTUX_CAT:1434: ERROR: Invalid trace specification; ignored
142508.kaifa!BBL.14662.3086919904.0: LIBTUX_CAT:577: ERROR: Unable to register because the slot is
already owned by another process
142508.kaifa!BBL.14662.3086919904.0: LIBTUX_CAT:248: ERROR: System init function failed, Uunixerr =
142508.kaifa!BBL.14662.3086919904.0: CMDTUX_CAT:26: INFO: The BBL is exiting system
............
142508.kaifa!GWADM.14726.3086341824.0: LIBTUX_CAT:262: INFO: Standard main starting
142508.kaifa!DMADM.11747.3086805376.0: CMDGW_CAT:3250: ERROR: Cannot send config to GWADM group=LDMGRP_1
142508.kaifa!GWADM.14726.3086341824.0: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
没用,继续找
tpsvrinit中连接数据库hang,问题就出在这
这个环境没有用xa连接,直接EXEC SQL CONNECT
好,拿sqlplus手工连接测试,没问题阿。
那好,直接写个带proc连接数据库的干净的(不加载一些乱七八糟的库)可执行文件,测试,成功。
那用buildclient写个可执行文件,测试,成功。
那就是buildserver不行阿 ,好,拿tuxedo提供的sample编译个服务,测试,失败。
原来跟我没关系阿,就是tuxedo和oracle之间的问题了
上网goooooooooooooogle
不好找阿,好不容易有点感觉了,得出猜测:tuxedo8.1和oracle10g 某些库冲突,tuxedo8.1 需要打补丁,
(tuxedo9.1也有这中情况),可是这个补丁就是找不到阿,快崩溃了
期间请教了n个师傅无果,无意中又找到n+1个师傅,终于.......
问题出在这 ;
libclntsh.so.10.1,记住这个so
$ORACLE_HOME/lib下有这个动态链接库
同样/usr/lib下也有这个动态库,删掉,问题解决。
但是有点疑问,环境变量写死指向ORACLE的库了,ldd 可执行文件 也指向了ORACLE的库了,虽说/usr/lib下的优先级高,但是可执行文件在运行加载动态库时怎么找到/usr/lib下的冲突的这个库libclntsh.so.10.1的呢