ubuntu 7.04下面tuxedo 9.1 + oracle 9i总算搭好了

本来以为 tuxedo 9.1 + oracle 10g client 安装完毕,配置也搞定,接着就可以写应用了。谁知道,天有不测风云,TMS_ORA 总是无法启动,一启动就挂了。现象是:
tmboot -y
看上去正常
tmboot -y
Booting all admin and server processes in /tuxedo/tuxedo9.1/samples/me/tuxconfig
INFO: BEA Tuxedo, Version 9.1, 32-bit, Patch Level (none)
INFO: Serial #: 454493271161-2352601647706, Expiration 2007-10-15, Maxusers 100
INFO: Licensed to: BEA Evaluation Customer

Booting admin processes ...

exec BBL -A :
        process id=7120 ... Started.

Booting server processes ...

exec TMS_ORA -A :
        CMDTUX_CAT:819: INFO: Process id=7121 Assume started (pipe).
exec TMS_ORA -A :
        CMDTUX_CAT:819: INFO: Process id=7124 Assume started (pipe).
这个一看就觉得不对劲了,什么叫假设启动了?
exec simpserv -A :
        process id=7127 ... Started.
exec testbcsrv -A :
        CMDTUX_CAT:819: INFO: Process id=7128 Assume started (pipe).
exec WSL -A -- -n //192.168.1.6:7200 -m 5 -M 10 -x 10 :
        process id=7131 ... Started.
6 processes started.
但是tmadmin看了一下状态就不对了:
> psr
Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
---------      ----------  --------      -- ------ --------- ---------------
BBL            123456      simple         0      0         0 (  IDLE )
simpserv       00001.00001 GROUP1         1      0         0 (  IDLE )
TMS_ORA        GROUP1_TMS  GROUP1     30001      0         0 ( DEAD )
testbcsrv      00001.00002 GROUP1         2      0         0 ( DEAD )
TMS_ORA        GROUP1_TMS  GROUP1     30002      0         0 ( DEAD )
WSL            00001.00130 GROUP1       130      0         0 (  IDLE )

> psc
Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
------------ ------------ ---------  --------  --    -------  ------ ------
TOUPPER      TOUPPER      simpserv   GROUP1     1     simple       0 AVAIL
TMS          TMS          TMS_ORA    GROUP1 30001     simple       0 AVAIL
TEST         TEST         testbcsrv  GROUP1     2     simple       0 AVAIL
TMS          TMS          TMS_ORA    GROUP1 30002     simple       0 AVAIL

怎么有几个都是DEAD状态呢?
再看ULOG
111612.redegao!BBL.7150.3080271552.0: 08-26-2007: Tuxedo Version 9.1, 32-bit, Patch Level (none)
111612.redegao!BBL.7150.3080271552.0: LIBTUX_CAT:262: INFO: Standard main starting
111612.redegao!TMS_ORA.7152.3064080064.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111612.redegao!TMS_ORA.7152.3064080064.0: LIBTUX_CAT:262: INFO: Standard main starting
111613.redegao!TMS_ORA.7155.3064075968.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111613.redegao!TMS_ORA.7155.3064075968.0: LIBTUX_CAT:262: INFO: Standard main starting
111614.redegao!simpserv.7158.3080566464.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111614.redegao!simpserv.7158.3080566464.0: LIBTUX_CAT:262: INFO: Standard main starting
111614.redegao!simpserv.7158.3080566464.0: Welcome to the simple server
111614.redegao!simpserv.7158.3080566464.0: LIBTUX_CAT:6205: WARN: Server initialization function did not call tx_open() or tpopen() or this call failed
111614.redegao!testbcsrv.7159.3063944896.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111614.redegao!testbcsrv.7159.3063944896.0: LIBTUX_CAT:262: INFO: Standard main starting
111615.redegao!WSL.7162.3081299648.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111615.redegao!WSL.7162.3081299648.0: LIBTUX_CAT:262: INFO: Standard main starting
111615.redegao!WSH.7163.3080517840.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111615.redegao!WSH.7163.3080517840.0: WSNAT_CAT:1030: INFO: Work Station Handler joining application
111615.redegao!WSH.7164.3080296656.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111615.redegao!WSH.7164.3080296656.0: WSNAT_CAT:1030: INFO: Work Station Handler joining application
111615.redegao!WSH.7165.3081222352.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111615.redegao!WSH.7165.3081222352.0: WSNAT_CAT:1030: INFO: Work Station Handler joining application
111615.redegao!WSH.7166.3080628432.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111615.redegao!WSH.7166.3080628432.0: WSNAT_CAT:1030: INFO: Work Station Handler joining application
111615.redegao!WSH.7167.3080464592.0: 08-26-2007: Tuxedo Version 9.1, 32-bit
111615.redegao!WSH.7167.3080464592.0: WSNAT_CAT:1030: INFO: Work Station Handler joining application

是不是:
111614.redegao!simpserv.7158.3080566464.0: LIBTUX_CAT:6205: WARN: Server initialization function did not call tx_open() or tpopen() or this call failed
这个的原因呢?

最后搜遍BAIDU GOOGLE,最后在DEV2DEV上找到了某人出现了类似的现象:
http://dev2dev.bea.com.cn/bbs/th ... =37488&tstart=0
coredump的现象一模一样。
最后的结论是
“把tuxedo打一下最新的patch。这个问题是由于Tuxedo和Oracle有些库相互冲突造成的,软件本身没有问题。”
我连TUXEDO的patch都没找到,狂汗啊。哪位知道的一定告诉我。

最后没辙了,卸载了oracle 10g client 重装了9i client(三张光盘大小,太胖~~),经过一番折腾,终于装好了,过程大概说一下:

文件解出来后,有三个目录 Disk1 Disk2 Disk3
切换到Disk1/install/linux
运行 ./runInstaller
出错,ubuntu缺省不能启动xhost +
修改配置文件/etc/X11/gdm/gdm.conf
将DisallowTCP=true 改为 false。
再在root 下面执行xhost + OK。
好了。这下应该出现安装界面了。
安装到最后 net config就无法继续了,只得退出来,手工设置
>cd $ORACLE_HOME
>cd bin
>./netmgr
Exception in thread "main" java.lang.VerifyError: (class: oracle/net/mgr/servicename/DBPanel$1, method: actionPerformed signature
进行下面的修改
# Run Net Manager$JRE -classpath $CLASSPATH oracle.net.mgr.container.NetApplication oracle.net.mgr.container.NetApplication改为:# Run Net Manager$JRE -noverify -classpath $CLASSPATH oracle.net.mgr.container.NetApplication oracle.net.mgr.container.NetApplication
就可正常运行了。
>./netca
/u01/oracle/product/9.2.0.1/JRE/bin/jre:101:Syntax error: word unexpected (expecting ")")
是JAVA虚拟机版本问题,解决办法:
>cp netca netca.bak
>vi netca
找到unset JAVA_HOME,前面加上#
找到JRE=...
改为JRE=$JAVA_HOME/bin/java(前面netmgr也是如此)
再运行一次 OK。

配置oracle net manager,sqlplus 试一下工作正常。

配置RM文件:
TUXEDO/D:tuxd_switch:-lrms -lfs
TUXEDO/SQL:tuxsql_switch:-lsql -lusort -lrms -lfs
NONE:tmnull_switch:
TUXEDO/QM:tuxq_switch:-lqm -ltmib
#
# BEA makes no attempt to keep the information in the following samples
# up to date.  To make sure you have correct and complete information for
# your platform and RM version, please consult your RM vendor.
#
# ORACLE 10g
#Oracle_XA:xaosw:-L${ORACLE_HOME}/lib ${ORACLE_HOME}/precomp/lib/cobsqlintf.o -lclntsh
Oracle_XA:xaosw:-L${ORACLE_HOME}/lib ${ORACLE_HOME}/precomp/lib/cobsqlintf.o -lclntsh
TimesTen:tt_xa_switch:-L/home/oracle/TimesTen/tt60/lib -ltten

重新编译生成TMS_ORA ,哈,启动正常
Booting admin processes ...

exec BBL -A :
        process id=15357 ... Started.

Booting server processes ...

exec TMS_ORA -A :
        process id=15360 ... Started.
exec TMS_ORA -A :
        process id=15361 ... Started.
exec simpserv -A :
        process id=15362 ... Started.
exec testbcsrv -A :
        CMDTUX_CAT:816: ERROR: Cannot exec, executable file not found
exec WSL -A -- -n //192.168.1.6:7200 -m 5 -M 10 -x 10 :
        process id=15364 ... Started.
5 processes started.

下面就可以写应用来测试了。
说到这有些问题不明白,知道的朋友一定告诉我
用proc 预编译*.pc文件时怎么让它不要在c文件中生成extern "C"?有什么选项吗?要不用gcc编译不了。
用g++ 编译也会出现下面的错误
test.cpp:286: error: ISO C++ forbids declaration of 'TEST' with no type
呵呵。狂汗中。
最后手工去掉extern "C"编译通过。

>proc code=c iname=test.pc include=$TUXDIR/include include=/usr/include/linux include=/usr/lib/gcc/i486-linux-gnu/4.1.2/include

>buildserver -bnoquiet -v -o testbcsrv -f test.c -r Oracle_XA -s TEST

tmboot -y