Tuxedo服务无法启动的问题解决(涉及MP下tlisten和TLOG的报错)
2016-10-10 12:32
507 查看
今天同事说有一个Tuxedo应用在做测试,但重启了机器和Tuxedo环境后,服务仍无法启动,这次的问题排查和处理比较典型,值得梳理一次。
应用环境:
OS:SunOS 5.9
Tuxedo:9.1,MP双机环境
问题现象:
由于服务不可用,之前有同事使用kill干掉了一些Tuxedo进程,但无法确定具体范围。重启了服务器和Tuxedo环境,问题依旧。
知识背景:
简单介绍下Tuxedo MP:
多机(MP)模式的配置
一个TUXEDO应用系统可以部署在多台服务器上,这些服务器通过网络连接,这种部署方式称为MP方式,在这些服务器中要选择一台服务器做MASTER服务器,在该服务器上有一个DBBL进程,负责整个TUXEDO应用系统的管理工作。在每台服务器上都有一个BBL进程,它与DBBL进程进行通信,管理各自服务器上的配置。每台服务器上还有一个名为BRIDGE的进程和一个名为TLISTEN的进程,他们负责服务器之间的通讯。
在一个MP方式的TUXEDO应用系统中,不同的服务器之间通过BRIDGE进程进行通讯,该BRIDGE的侦听IP地址及端口在NADDR中指定。在TUXEDO系统启动前,不同服务器之间的通讯是通过tlisten进程来进行的,因为这时还没有BRIDGE进程。NLSADDR为tlisten进程侦听的IP地址及端口。
问题解决:
1.尝试重启Tuxedo服务
回显报错:
从ULOG看第一批错误信息是:
这个错误的信息:
说明无法使用tlisten进程和远程节点通信。
建议是使用TUXCONFIG中NLSADDR值启动远程节点的tlisten进程。
查看ubb配置:
启动tlisten进程:
然后可以验证:
2.此时重启Tuxedo环境,依旧无法启动任何节点的服务,查看ULOG,出现了新的报错:
查看错误信息:
问题矛头基本指向了TLOG路径是否正确,是否有权限。查看了TLOG路径,文件存在。为了简便起见,直接重建TLOG。
查看ubb配置:
TLOG文件记录事务处理流程以便在错误发生时回滚事务操作,必须为参与事务处理的每台机器创建一个TLOG文件。创建TLOG时先进入tmadmin界面,用crdl命令创建设备文件,命令格式:
然后执行crlog命令创建TLOG, 命令格式为:
MASTER节点上执行:
查看TLOG生成时间已经是最新的了。
3.重启Tuxedo环境,MASTER节点服务基本正常了,但SLAVE节点的ULOG报错:
MASTER节点的ULOG报错:
tmboot -y指令回显报错:
说明SLAVE的BBL进程启动失败。
再看下SLAVE的TLOG产生时间还是旧的,且为空,说明可能和这个文件有关。
但SLAVE节点无法使用tmadmin登录执行TLOG创建:
此时学了一招,就是使用Tuxedo提供的示例脚本来辅助创建TLOG,
只需要将${TLOGDEVICE}换为ubb中对应值,SITE1换为xx2,然后执行:
4.重启Tuxedo环境,发现SLAVE仍无法启动服务,ULOG报错:
报错信息:
看来内存中的内容还是有些混乱,或许和之前的操作未清除干净有关。
执行清理IPC操作:
再次重启Tuxedo环境,此时主备环境服务均可以启动:
总结:
1.ULOG中的信息还是比较有价值,排查时需要。
2.Tuxedo的错误号含义,可以参考如下:
http://docs.oracle.com/cd/E13203_01/tuxedo/tux91/messages/index.htm
3.本案例问题主要先是tlisten进程未启动,然后需要创建TLOG(此处还有一种方法就是删除ubb中TLOG的配置),还要会操作SLAVE如何创建TLOG的方法,另外就是清理IPC资源的方法。本案例重启服务器和Tuxedo环境均为解决根本问题,所以重启大法未必所有场景可用。
4.往往一个报错解决了,会跟着另一个报错,层层推进,“兴奋-打击-兴奋”的循环,或许这么解决问题后,才会带来一股酸爽的感觉。
应用环境:
OS:SunOS 5.9
Tuxedo:9.1,MP双机环境
问题现象:
由于服务不可用,之前有同事使用kill干掉了一些Tuxedo进程,但无法确定具体范围。重启了服务器和Tuxedo环境,问题依旧。
知识背景:
简单介绍下Tuxedo MP:
多机(MP)模式的配置
一个TUXEDO应用系统可以部署在多台服务器上,这些服务器通过网络连接,这种部署方式称为MP方式,在这些服务器中要选择一台服务器做MASTER服务器,在该服务器上有一个DBBL进程,负责整个TUXEDO应用系统的管理工作。在每台服务器上都有一个BBL进程,它与DBBL进程进行通信,管理各自服务器上的配置。每台服务器上还有一个名为BRIDGE的进程和一个名为TLISTEN的进程,他们负责服务器之间的通讯。
在一个MP方式的TUXEDO应用系统中,不同的服务器之间通过BRIDGE进程进行通讯,该BRIDGE的侦听IP地址及端口在NADDR中指定。在TUXEDO系统启动前,不同服务器之间的通讯是通过tlisten进程来进行的,因为这时还没有BRIDGE进程。NLSADDR为tlisten进程侦听的IP地址及端口。
问题解决:
1.尝试重启Tuxedo服务
tmshutdown -y tmboot -y
回显报错:
exec BBL -A : on xx1 -> Failed. tmboot: WARN: No BBL available on site xx1. Will not attempt to boot server processes on that site. tmboot: WARN: internal error: CMDTUX_CAT:798: ERROR: Cannot boot remote BBL(xx2), no BRIDGE available on DBBLs node(xx1) Booting server processes ... tmboot: WARN: No BBL available on site xx2. Will not attempt to boot server processes on that site. 0 processes started.
从ULOG看第一批错误信息是:
152832.v490f3-tux!tmboot.24746.1.-2: 10-09-2016: Tuxedo Version 9.1, 32-bit 152832.v490f3-tux!tmboot.24746.1.-2: CMDTUX_CAT:1578: ERROR: Could not contact NLS on xx1 152832.v490f3-tux!tmboot.24746.1.-2: CMDTUX_CAT:1576: ERROR: No NLS available for remote machine xx1
这个错误的信息:
说明无法使用tlisten进程和远程节点通信。
建议是使用TUXCONFIG中NLSADDR值启动远程节点的tlisten进程。
查看ubb配置:
*NETWORK "XX1" NADDR="//x.x.x.x:23456" NLSADDR="//x.x.x.x:12345" "XX2" NADDR="//x.x.x.x:23456" NLSADDR="//x.x.x.x:12345"
启动tlisten进程:
$TUXDIR/bin/tlisten -l //x.x.x.x:12345
然后可以验证:
ps -ef|grep tl XX 5310 1 0 09:21:02 ? 0:00 ./tlisten -l //x.x.x.x:12345
2.此时重启Tuxedo环境,依旧无法启动任何节点的服务,查看ULOG,出现了新的报错:
093320.v490f3-tux!tlisten.5310.1.-2: CMDTUX_CAT:4209: INFO: Accepted request from //10.6.157.43:32816, seq # 3 093322.v490f3-tux!DBBL.3262.1.0: CMDTUX_CAT:4350: INFO: BBL started on xx1 - Release 9000 093322.v490f3-tux!BBL.5363.1.0: 10-10-2016: Tuxedo Version 9.1, 32-bit, Patch Level 119 093322.v490f3-tux!BBL.5363.1.0: LIBTUX_CAT:296: ERROR: _tlog_open: _gp_tblopen: VTOC not initialized 093322.v490f3-tux!BBL.5363.1.0: LIBTUX_CAT:319: ERROR: Log start cannot open tlog
查看错误信息:
问题矛头基本指向了TLOG路径是否正确,是否有权限。查看了TLOG路径,文件存在。为了简便起见,直接重建TLOG。
查看ubb配置:
*MACHINES "XX" LMID="xx" ... TLOGDEVICE="/opt/app/tuxapp/tuxxx/log/TLOG" TLOGNAME="TLOG" TLOGSIZE=200
TLOG文件记录事务处理流程以便在错误发生时回滚事务操作,必须为参与事务处理的每台机器创建一个TLOG文件。创建TLOG时先进入tmadmin界面,用crdl命令创建设备文件,命令格式:
crdl –b blocks –z config -b blocks 为设备文件的大小,以块(block)为单位 -z config 为设备文件名,应和配置文件中TLOGDEVICE相同TER节点上执行:
然后执行crlog命令创建TLOG, 命令格式为:
crlog –m machine为机器名
MASTER节点上执行:
> tmadmin > crdl -b 1024 -z //opt/app/tuxapp/tuxxx/log/TLOG Device created: //opt/app/tuxapp/tuxxx/log/TLOG > crlog -m hostname TMADMIN_CAT:132: ERROR: No such machine. 此处需要使用ubb中MACHINES节LMID值: > crlog -m xx1 crlog successfully completed.
查看TLOG生成时间已经是最新的了。
3.重启Tuxedo环境,MASTER节点服务基本正常了,但SLAVE节点的ULOG报错:
100150.v490f6-tux!tmadmin.5928.1.-2: 10-10-2016: Tuxedo Version 9.1, 32-bit 100150.v490f6-tux!tmadmin.5928.1.-2: LIBTUX_CAT:334: ERROR: No BBL 100150.v490f6-tux!tmadmin.5928.1.-2: LIBTUX_CAT:334: ERROR: No BBL
MASTER节点的ULOG报错:
092218.v490f3-tux!tmboot.5315.1.-2: WARN: internal error: CMDTUX_CAT:798: ERROR: Cannot boot remote BBL(xx2), no BRIDGE available on DBBLs node(xx1) 092218.v490f3-tux!tmboot.5315.1.-2: WARN: No BBL available on site xx2. Will not attempt to boot server processes on that site.
tmboot -y指令回显报错:
exec BBL -A : on xx2 -> Failed. tmboot: WARN: No BBL available on site xx2. Will not attempt to boot server processes on that site.
说明SLAVE的BBL进程启动失败。
再看下SLAVE的TLOG产生时间还是旧的,且为空,说明可能和这个文件有关。
但SLAVE节点无法使用tmadmin登录执行TLOG创建:
TMADMIN_CAT:196: ERROR: The boot mode is only available on the MASTER processor.
此时学了一招,就是使用Tuxedo提供的示例脚本来辅助创建TLOG,
cd $TUXDIR/samples/atmi/bankapp vi crtlog.sh # (c) 2003 BEA Systems, Inc. All Rights Reserved. #Copyright (c) 1990 Unix System Laboratories, Inc. #All rights reserved #ident "@(#) samples/atmi/bankapp/crtlog.sh $Revision: 1.5 $" if [ "${1}" = "-m" ] ; then # # If -m specified, create device and TLOG # tmadmin <<-! echo crdl -b 500 -z ${TLOGDEVICE} crlog -m SITE1 q ! elif [ -z "${1}" ] ; then # # If -m not specified, create device only # tmadmin -c <<-! echo crdl -b 500 -z ${TLOGDEVICE} q ! else # # If other things specified, error # echo "$0: usage: $0 [-m]" exit 2 fi if [ ${?} -eq 0 ] ; then echo "`basename ${0}` successful." exit 0 fi
只需要将${TLOGDEVICE}换为ubb中对应值,SITE1换为xx2,然后执行:
sh crtlog_k.sh tmadmin - Copyright (c) 1996-1999 BEA Systems, Inc. Portions * Copyright 1986-1997 RSA Data Security, Inc. All Rights Reserved. Distributed under license by BEA Systems, Inc. Tuxedo is a registered trademark. > Echo now on. > crdl -b 1024 -z //opt/app/tuxapp/tuxxx/log/TLOG Device created: //opt/app/tuxapp/tuxxx/log/TLOG > q crtlog_k.sh successful.
4.重启Tuxedo环境,发现SLAVE仍无法启动服务,ULOG报错:
103728.v490f6-tux!BSBRIDGE.5909.1.0: ERROR: msgrcv err(LIBTUX_CAT:666: ERROR: Message operation failed because the queue was removed): errno=36,qid=5620,buf=3639704,bytes=4572,type=0,flag=0 103728.v490f6-tux!BSBRIDGE.5909.1.0: CMDTUX_CAT:499: ERROR: Shutting down bridge, serious message receive error
报错信息:
看来内存中的内容还是有些混乱,或许和之前的操作未清除干净有关。
执行清理IPC操作:
eval `ipcs|grep -w tuxxx|awk '{print "ipcrm -" $1, $2 ";"}`
再次重启Tuxedo环境,此时主备环境服务均可以启动:
exec DBBL -A : on xx1 -> process id=5793 ... Started. exec BBL -A : on xx1 -> process id=5794 ... Started. exec BBL -A : on xx2 -> process id=6142 ... Started. Booting server processes ...
总结:
1.ULOG中的信息还是比较有价值,排查时需要。
2.Tuxedo的错误号含义,可以参考如下:
http://docs.oracle.com/cd/E13203_01/tuxedo/tux91/messages/index.htm
3.本案例问题主要先是tlisten进程未启动,然后需要创建TLOG(此处还有一种方法就是删除ubb中TLOG的配置),还要会操作SLAVE如何创建TLOG的方法,另外就是清理IPC资源的方法。本案例重启服务器和Tuxedo环境均为解决根本问题,所以重启大法未必所有场景可用。
4.往往一个报错解决了,会跟着另一个报错,层层推进,“兴奋-打击-兴奋”的循环,或许这么解决问题后,才会带来一股酸爽的感觉。
相关文章推荐
- Wamp5无法启动服务问题的解决
- 解决OracleDBConsoleorcl服务无法启动问题[转帖]
- SQL SERVER 2005服务无法启动问题的解决办法
- WIN7下解决因为Windows Time服务无法启动而造成的时间无法同步问题
- 解决Lync server 2013 持久聊天服务无法启动(启动后停止)的问题
- 解决OracleDBConsoleorcl服务无法启动问题(转)
- Windows installer 服务无法启动 问题解决方法
- win8怎么解决无法启动安全中心服务的问题(多种方案)
- ip修改后orcale服务无法启动问题解决
- SQL SERVER 2005服务无法启动问题的解决办法
- xp 真正解决PowerPoint 2007 无法输入中文问题(如果启动“高级文字服务”也无效,修改注册表)
- 如何解决win7中搜索服务无法启动的问题
- 问题解决!!! 无法启动服务.System.BadImageFormatException: 不是有效的 Win32 应用程序.
- 解决MySQL服务无法启动(1067)的问题
- Windows ICS 服务无法启动问题解决
- 解决windows下APACHE服务无法正常启动问题
- 今天解决了BXP4.1在windows server 2003下无法自动启动ardencepxe服务的问题
- 如何解决win7中搜索服务无法启动的问题
- 解决OracleDBConsoleorcl服务无法启动问题
- 关于IIS服务启动失败的问题:“IIS提示‘另一个程序正在使用此文件,进程无法访问’”,的解决方法