Tuxedo服务无法启动的问题解决(涉及MP下tlisten和TLOG的报错)

今天同事说有一个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服务

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.往往一个报错解决了,会跟着另一个报错,层层推进,“兴奋-打击-兴奋”的循环,或许这么解决问题后,才会带来一股酸爽的感觉。

时间: 2024-07-30 16:17:07

Tuxedo服务无法启动的问题解决(涉及MP下tlisten和TLOG的报错)的相关文章

Hbase配置:修改了配置文件的JDK路径,但启动时系统还是使用默认的路径,并且报错

问题描述 Hbase配置:修改了配置文件的JDK路径,但启动时系统还是使用默认的路径,并且报错 解决方案 解决方案二: 解决方案三: http://blog.chinaunix.net/uid-26275986-id-3850260.html 解决方案四: 看过这篇博客,解决不了我的问题,谢过! 解决方案五: 你直接在/etc/profile文件里加上JAVA_HOME的目录,出现上述的原因可能是,执行脚本时,用的不是当前用户环境,而是系统环境

rc local-在 rc.local 中添加shell脚本开机启动后,如果需要用到数据库,会报错,怎么解决

问题描述 在 rc.local 中添加shell脚本开机启动后,如果需要用到数据库,会报错,怎么解决 会出现这样的报错,感觉是数据库还没启动完. OperationalError: (2006, 'MySQL server has gone away') 但是已经加了非常长的延时,还是不行,开机后自己手动启动的话就不会出现在这个问题,怎么解决 解决方案 你需要放在数据库启动之后.不然你的脚本启动的时候,数据库还没有启动 解决方案二: 你明白出错的原因啊,放在数据库启动完了之后在执行这个脚本就OK

mysql服务无法启动(1067)解决办法

  mysql教程服务无法启动(1067)解决办法 把mysql程序卸载后, 重装, 结果mysql服务启动不了, 解决方法: 1: 先卸载mysql, 手动将其安装目录里没有删除干净的文件全部删除. 2: 将C:ProgramDataMySQL 里有关mqsql的文件全部删除. 3: 重新安装 mysql 程序. mysql服务就可以正常启动了 MySQL服务无法启动(1067)问题解决 1,安装目录,将my.ini中的datadir的值更改为:"%安装目录%/data/" 2,进入

启动报错-使用dubbo写测试例子出现问题,无法启动,求弄过dubbo的高手帮忙看看

问题描述 使用dubbo写测试例子出现问题,无法启动,求弄过dubbo的高手帮忙看看 启动提供方没什么问题,启东消费方就是报错,如下 这是怎么回事啊,急急急 解决方案 参考Dubbo 入门实例 本地伪集群测试Demo 没有提供者,就是说程序没有把服务注册到zookeeper 解决方案二: 提供者配置的端口有没有暴露出来

.net 应用程式启动报错,IP地址无效

问题描述 程序在服务器上启动,iis发布都没问题,数据库在服务器08上,把程序拿到本机上,<endpointaddress="net.tcp://192.168.0.8:9010/SecurityService"behaviorConfiguration="Systom......把ip改了,启动报错ATCPerror(10049:在其上下文中,该请求的地址无效.)occurredwhilelisteningonIPEndpoint=192.168.0.8:9010.

Windows ICS 服务无法启动问题解决方法_win服务器

防火墙打不开肯定是"windows Firewall"服务没有启动.ICS服务启动不了可以通过以下方法解决:1.找到本地连接,单击左键--属性--共享--勾选(√)--确定,如以上步骤不能开启ICS服务,则需进行如下操作2.运行--输入"services.msc"--找到"internet connection services"--属性--依存关系(查询四个依存的服务是否启动,没启动的,手动启动)--Application Layer Gate

win7无线服务无法启动的解决办法

  win7无线服务无法启动怎么办            Windows 7 操作系统无法启动WLANAutoConfig服务的解决方案.启动类型是自动,而服务状态却是已停止,点击启动按钮也不能按照正常的方法启动无线服务,最后使用命令开启了无线服务. Win7无法启动"WLAN AutoConfig"服务的解决方案 操作系统不能上无线网络,一般是先检查无线网卡驱动程序是否正常,然后检查无线服务是否开启.用操作系统中自带网络诊断之后,显示此计算机上没有运行的windows无线服务. 开始

web service-axis2 调用 tuxedo服务 服务端返回的错误报文接口不到(正确的报文可以正常接收)???

问题描述 axis2 调用 tuxedo服务 服务端返回的错误报文接口不到(正确的报文可以正常接收)??? public String invoke(OMElement head,OMElement body,String methodName,String routedestsys, String wsdl) { String returnXml=""; try { Options options = new Options(); // 指定调用WebService的URL Endp

dubbo-DUBBO启动报错找不到服务

问题描述 DUBBO启动报错找不到服务 ERROR 10:16:41,178 AbstractClient: - [DUBBO] Failed to start NettyClient caedmon-PC/192.168.0.234 connect to the server /60.191.124.236:21890 (check == false, ignore and retry later!), cause: client(url: dubbo://60.191.124.236:218