本来以为 tuxedo Array.1 + oracle 10g client 安装完毕,配置也搞定,接着就可以写应用了。谁知道,天有不测风云,TMS_ORA 总是无法启动,一启动就挂了。现象是:
tmboot -y
看上去正常
tmboot -y
Booting all admin and server processes in /tuxedo/tuxedoArray.1/samples/me/tuxconfig
INFO: BEA Tuxedo, Version Array.1, 32-bit, Patch Level (none)
INFO: Serial #: 4544Array3271161-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:81Array: INFO: Process id=7121 Assume started (pipe).
exec TMS_ORA -A :
CMDTUX_CAT:81Array: INFO: Process id=7124 Assume started (pipe).
这个一看就觉得不对劲了,什么叫假设启动了?
exec simpserv -A :
process id=7127 ... Started.
exec testbcsrv -A :
CMDTUX_CAT:81Array: INFO: Process id=7128 Assume started (pipe).
exec WSL -A -- -n //1Array2.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 Array.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 Array.1, 32-bit
111612.redegao!TMS_ORA.7152.3064080064.0: LIBTUX_CAT:262: INFO: Standard main starting
111613.redegao!TMS_ORA.7155.3064075Array68.0: 08-26-2007: Tuxedo Version Array.1, 32-bit
111613.redegao!TMS_ORA.7155.3064075Array68.0: LIBTUX_CAT:262: INFO: Standard main starting
111614.redegao!simpserv.7158.3080566464.0: 08-26-2007: Tuxedo Version Array.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.715Array.3063Array448Array6.0: 08-26-2007: Tuxedo Version Array.1, 32-bit
111614.redegao!testbcsrv.715Array.3063Array448Array6.0: LIBTUX_CAT:262: INFO: Standard main starting
111615.redegao!WSL.7162.30812ArrayArray648.0: 08-26-2007: Tuxedo Version Array.1, 32-bit
111615.redegao!WSL.7162.30812ArrayArray648.0: LIBTUX_CAT:262: INFO: Standard main starting
111615.redegao!WSH.7163.3080517840.0: 08-26-2007: Tuxedo Version Array.1, 32-bit
111615.redegao!WSH.7163.3080517840.0: WSNAT_CAT:1030: INFO: Work Station Handler joining application
111615.redegao!WSH.7164.30802Array6656.0: 08-26-2007: Tuxedo Version Array.1, 32-bit
111615.redegao!WSH.7164.30802Array6656.0: WSNAT_CAT:1030: INFO: Work Station Handler joining application
111615.redegao!WSH.7165.3081222352.0: 08-26-2007: Tuxedo Version Array.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 Array.1, 32-bit
111615.redegao!WSH.7166.3080628432.0: WSNAT_CAT:1030: INFO: Work Station Handler joining application
111615.redegao!WSH.7167.30804645Array2.0: 08-26-2007: Tuxedo Version Array.1, 32-bit
111615.redegao!WSH.7167.30804645Array2.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/thread.jspa?forumID=4&threadID=37488&tstart=0
coredump的现象一模一样。
最后的结论是
“把tuxedo打一下最新的patch。这个问题是由于Tuxedo和Oracle有些库相互冲突造成的,软件本身没有问题。”
我连TUXEDO的patch都没找到,狂汗啊。哪位知道的一定告诉我。
最后没辙了,卸载了oracle 10g client 重装了Arrayi 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/Array.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 //1Array2.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