tuxedo基本命令详细说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 tmloadcf
➢检查UBBCONFIG文件的内容及格式
➢将文本格式的UBBCONFIG文件编译生成二进制文件
➢必须在主机上运行
➢格式
tmloadcf [-n] [-y] [-c] [-b blocks] {UBBCONFIG_file | -}
➢参数
-c 计算最小的IPC需求
-n 仅仅进行UBBCONFIG文件的内容检查,不生成二进制文件
-y 覆盖已有的二进制文件之前不提示
-b blocks 如果环境变量TUXCONFIG所指的文件存放在一个裸设备上,建议使用该参数;如果该文件存放在文件系统上,则不需要
2 tmunloadcf
➢将二进制TUXCONFIG文件反编译为文本格式
3 tmipcrm
➢清除本机上的IPC资源
➢自动根据TUXCONFIG_file参数查找相应的IPC资源
➢一般在Tuxedo非正常停止的情况下用来清理残留IPC资源
➢格式
tmipcrm [-y] [-n] [TUXCONFIG_file]
➢参数
-y 对命令运行过程中的询问回答y
-n 不清除IPC资源,只是列出IPC资源
TUXCONFIG_file Tuxedo的配置文件。

如果不指定,则使用环境变量TUXCONFIG
4 tmboot
➢启动Tuxedo
➢格式
tmboot [-l lmid] [-g grpname] [-i srvid] [-s aout] [-o sequence]
[-S] [-A] [-b] [-B lmid] [-T grpname] [-e command] [-w] [-y] [-g]
[-n] [-c] [-M] [-d1]
➢参数
-l lmid 启动所有绑定到这个逻辑主机的服务,包括应用Server、TMS、Gateway等等
-g grpname 启动grpname包含的所有服务,包括应用Server、TMS等
-i srvid 启动所有SRVID为srvid的服务
-s aout 启动Server名字为aout的服务,也可以用来启动TMS、Gateway等服务。

通常和-g选项联合使用
-o sequence 启动SERVERS段中SEQUENCE参数为sequence的服务
-S 启动SERVERS段中的所有Server
-A 启动管理Server,例如DBBL、BBL、BRIDGE等
-b 从BACKUP主机上启动服务
-B lmid 启动逻辑主机lmid上的BBL服务
-M 启动主机上的管理服务
-d1 将命令行参数打印在stdout,一般多用来调试应用时给出更多的信息
-T grpname 启动grpname组上的TMS服务
-e command 在启动过程中,如果某个服务没有启动成功,则执行command,可以是可执行程序、脚本等
-w 通知tmboot启动另外一个服务,不必等待初始化的完成。

该选项要慎用,因为某些服务是存在依赖关系的,例如BBL和DBBL,应用的Server和BBL等
-y 在命令执行过程中遇到询问,回答y
-q 不在stdout上显示执行顺序
-n 只显示启动时的执行顺序,不执行真正的启动
-c 显示最小的IPC需求
5 tmshutdown
➢停止Tuxedo
➢参数
-w delay 向Server发出停止信息,等待delay秒后,如果没有正确停止,则向Server发送一个SIGTERM,然后再发送一个SIGKILL消息
-k {TERM|KILL} 向需要停止的Server发送SIGTERM或者SIGKILL消息
➢其他参数请参考tmboot
6 tmadmin
➢Tuxedo命令行管理终端
➢格式
tmadmin [ -r ] [ -c ] [ -v ]
➢参数
-r tmadmin以客户端的身份连入Tuxedo,而不是以管理员身份连入。

以客户端身份连入时,很多管理命令无法使用
-c 进入配置模式
-v 显示Tuxedo的版本及许可证信息
6.1 tmadmin - bbp
➢bbparms (bbp)
➢显示BB参数的一个概要信息
➢示例
> bbp
Bulletin Board Parameters:
MAXSERVERS: 50
MAXSERVICES: 100
MAXACCESSERS: 100
MAXGTT: 100
MAXCONV: 1
MAXBUFTYPE: 16
MAXBUFSTYPE: 32
MAXOBJECTS: 1000
MAXINTERFACES: 150
IPCKEY: 123456
MASTER: simple
MODEL: SHM
LDBAL: N
SCANUNIT: 10
SANITYSCAN: 6
DBBLWAIT: 2
BBLQUERY: 30
BLOCKTIME: 8
Shared Memory ID: 0
6.2 tmadmin - psr
➢printserver (psr)
➢显示Server的信息
➢格式
printserver (psr) [-m machine] [-g groupname] [-i srvid] [-q qaddress]
➢参数
-m machine 指定逻辑主机名称
-g groupname 指定组名
-i srvid 指定Server ID
-q qaddress 指定队列名称
➢列说明
✧Prog Name: Server的名字
✧Queue Name: 对应队列的名字
✧Grp Name: 该Server所属的组名称
✧ID: Server的ID
✧RqDone: 已经请求的次数,包括成功的和失败的请求
✧Load Done: RqDone×Server的权重因子,权重因子默认为50
✧Current Service: 当前正在执行的Service,IDLE表示空闲
6.3 tmadmin - psc
➢printservice (psc)
➢显示Service信息
➢格式
printservice (psc) [-m machine] [-g groupname] [-i srvid] [-a { 0 | 1 | 2 }]
[-q qaddress] [-s service]
➢参数
-m machine 指定逻辑主机名称
-g groupname 指定组名
-i srvid 指定Server ID
-q qaddress 指定队列名称
-s service 指定service名称
-a { 0 | 1 | 2 } -a0显示应用Service,-a1显示应用Service和系统Service中可以被应用直接
调用的,-a2显示显示应用Service和系统Service中可以被应用直接调用的以及可以被Tuxedo系统调用的
➢列说明
✧Service Name: 发布出来的服务名
✧Routine Name: 服务对应的方法名,或者函数名
✧Prog Name: 服务所在的Server名字
✧Grp Name: 服务所在的组名字
✧ID: 服务所在的Server ID
✧Machine: 服务所在逻辑主机名字
✧#Done: 服务被调用的次数
✧Status: 服务当前状态
6.4 tmadmin - pclt
➢printclient (pclt)
➢显示连接到Tuxedo的客户端信息
➢格式
printclient (pclt) [-m machine] [-u usrname] [-c cltname]
➢参数
-m machine 指定主机名称
-u usrname 指定用户名称
-c cltname 指定客户端名称
➢列说明
✧LMID: 逻辑主机名称
✧User Name: 用户名称
✧Client Name: 客户端名称
✧Time: 客户端连接的时间
✧Bgn/Cmmt/Abrt: 开始的、已提交的、中断的事务数量
➢关于结构体tpinfo_t
tuxedo客户端使用tpinit连接tuxedo服务器时,tpinit函数有一个参数,类型为tpinfo_t,pclt命令中看到的User Name, Client Name都是来自该结构体
6.5 tmadmin - pq
➢printqueue (pq)
➢显示请求队列信息
➢格式
printqueue (pq) [qaddress]
➢参数
qaddress 指定队列名称
➢列说明
✧Prog Name: Server的名字
✧Queue Name: 队列名称
✧# Server: 该队列上Server的数量
✧Wk Queued: 队列中的请求数×权重系数,缺省是50
✧# Queued: 排队的请求数,此数量包括正在处理的请求
Ave. Len: 按照一定的时间,对排队的数量取得平均值
一、Tuxedo基本命令
#1.设置环境变量TUXDIR,APPDIR,TUXCONFIG,LANG(跟OS相关),LD_LIBRARY_PATH(跟OS相关)
#2.编译ubb文本生成二进制配置文件:tmloadcf –y ubbconfig
#3.所有机器上运行tlisten,具体见文档中NETWORK一节
#4.启动tmboot –y
#5.关闭tmshutdown –y
参数:
-A 在所有机器上启动/关闭管理的Server进程
-M 只在MASTER机器上启动/关闭管理的Server进程
-i srvid 启动/关闭某个server id指定的Server进程
-g grpname 启动/关闭某个server group名字指定的Server Group
-S 启动/关闭所有应用服务器(LMID)
-s server-name 启动/关闭某个server名字指定的Server进程
-l lmid option 在指定的机器上启动/关闭所有TMS进程和应用服务器(LMID)
-T grpname 启动/关闭指定的server group中所有的TMS进程
-B lmid 在指定的机器上启动/关闭BBL进程
-e command 指定一个程序可以当在MASTER机器上启动任何一个进程失败时执行
-c 计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源
#用tmunloadcf > generated.ubb 可以得出目前配置得UBB文件所有得参数值(没有设置的有缺省值)
#用tmloadcf –c或tmboot –c可以计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC 资源。

二、UBB文件配置说明
UBB配置文件分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若干节。

DEFAULT表示该节中所有对象共有的缺省属性。

*RESOURCES
#RESOUCES节提供整个系统的基本参数。

IPCKEY 55555 (32767-262143)
#进行IPC通讯的key值
DOMAINID unicom
#DOMAIN的ID值
MASTER unicom1,unicom2
#指定DOMAIN中的管理主机为unicom1,运行过程中unicom1若出现问题,管理主机切换至unicom2
MAXACCESSERS 1000
#这里该值表示整个系统中每个机器上可以访问TUXEDO的Client和Server的总数(可以访问 BBL的最大进程数),应大于license用户数+server数(副本应记入)。

该字段会被MACHINE部分的MAXACCESSERS覆盖。

#系统核心参数中SEMAPHORE的数目(SEMMNS)要大于这里的MAXACCESSERS数目,而ipc消息个数(MSGMAX)应大于MAXACCESSERS数+所有带REPL YQ的SERVER的个数。

MAXSERVERS 80
#最大的server数(副本应记入)
MAXSERVICES 200
#最大的service数(多个server重复记入)
MAXGTT 20
#系统最多的并发的全局交易数目
MODEL MP
#表示cluster方式,否则为SHM
OPTIONS LAN,MIGRATE
#多机cluster方式时必须指定为LAN方式,MIGRA TE表示可以以组为单位进行机器间SERVER的迁移。

LDBAL Y
#允许负载均衡
SCANUNIT 10
#SCANUNIT 是BBL在所有服务请求中定期扫描以寻找超时的交易和被阻塞德调用和德间隔时间(秒)。

这个参数指定BBL扫描间隔时间的基本单位,它会影响在tpbegin中指定的交易超时时间和用BLOCKTIME指定的请求阻塞超时时间的精确程度。

SANITYSCAN, BBLQUERY, DBBLWAIT, BLOCKTIME等参数都是SCANUNIT的倍数,而不是实际秒数。

而作为时间单位SCANUNIT必须是5的倍数,并且满足0<SCANUNIT<60。

SANITYSCAN 12
#SANITYSCAN的值指定在每个MACHINE上BBL自动检测所有进程的时间间隔,以SCANUNIT为单元。

缺省值满足(SCANUNIT*SANITYSCAN)约为120秒。

DBBLWAIT 2
#DBBLWAIT的值指定DBBL扫描BBL时等待所有BBL应答的最大时间,以SCANUNIT 为单元,即超过DBBLWAIT*SCANUNIT(秒)就超时。

每一次DBBL将请求转发给它的BBL时,BBL会在请求返回结果之前先回复一个肯定的应答。

这样可以定时检测死掉或不正常的BBL。

缺省值满足(SCANUNIT*DBBLWAIT)的值等于SCANUNIT和20秒两者之间的最大者。

BBLQUERY 30
#BBLQUERY指定DBBL对所有BBL进行状态检查的时间间隔,它也是以SCANUNIT为计算单位。

如果DBBL的状态询问没有回答,该BBL就被‘隔离’了。

缺省值满足(SCANUNIT * BBLQUERY) 约为 300秒。

BLOCKTIME 6
#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间,以SCANUNIT为计算单位。

缺省值满足(SCANUNIT * BLOCKTIME) 约为60秒。

*MACHINES
DEFAULT:
#该部分对各主机进行描述。

unicom2 LMID=unicom2
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXACCESSERS=100
unicom1 LMID=unicom1
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXWSCLIENTS=50
#unicom2, unicom1为网络主机名用hostname获得。

#LMID:Logical Machines ID 为tuxedo对主机的内部逻辑命名。

#APPDIR要求放置SERVER的可执行文件。

#TUXCONFIG为全路径的二进制配置文件,要求和环境变量TUXCONFIG相同。

对于master 机tuxconfig文件是由tmloadcf生成的,而非master机则是由tmboot启动后由tlisten从master 机上拷贝获得。

#TUXDIR为tuxedo安装目录,要求和环境变量TUXDIR相同。

#MAXWSCLIENTS表示可连接client的最大个数。

*GROUPS
#GROUP1为组名,LMID表示该组运行的主机,GRPNO为组号,OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。

GROUP1 LMID=unicom2 GRPNO=1 OPENINFO=NONE
GROUP2 LMID=unicom3 GRPNO=2 OPENINFO=NONE
*SERVERS
#这里描述应用服务器。

SRVGRP的该SERVER所属组名,SRVID为服务器ID号,MIN表示该服务器CLOPT提供运行的相关参数,要求是”-A -- ….”,可以在应用服务器的srvinit函数中获得这些参数。

DEFAULT:
CLOPT="-A"
BillServer SRVGRP=GROUP1 SRVID=1 MIN=2 MAX=4
RQADDR=QNAME REPLYQ=Y
CLOPT="-A -o ./out.log –r -e ./err.log --
-p [L][low_water][,[terminate_time]][:[high_water][,create_time]]
如果MAX>1,并且使用了MSSQ(RQADDR, RQPERM)的Server可以配置-p来控制进程的增加和减少。

控制算法如下:如果请求队列中的请求个数大于high_water 后超过create_time 秒,就增加该服务的一个新进程;如果请求队列中的请求个数小于low_water 后超过terminate_time 秒, 就停止该服务的一个进程。

low_water 缺省是平均每个服务进程有一个请求消息或者workload 50;high_water 缺省是平均每个服务进程有两个请求消息或者workload 100. create_time 缺省是50, and terminate_time 缺省是60。

注意;使用TUXEDO的服务进程池时,用户自己在程序中如果用alarm()等系统调用来停止进程是不起作用的,但也不会报错。

[L] 标记意味着增减服务进程基于负载而不是请求队列的长度。

仅用于SHM模式下并且LDBAL=Y,否则会报错 (LIBTUX_CAT:1542) ,服务进程也不会增减。

WSL SRVGRP=GROUP2 SRVID=1
CLOPT="-A -- -n //130.36.0.103:8889 -m 3 -M 10 -x 10 -T 10"
#WSL用于和client端进行连接。

-n 表示出接入点为IP:PORT方式,-m –M 表示最小和最大启动多少个WSH和前端通讯,-x则表示一个WSH和几个client端连接。

-T 10表示如果client 端和server连接后10分钟内没有交易请求则关闭连接。

*SERVICES
#不要求将所有的service在这里描述,当某个service有特别参数时才在SERVICE节中说明。

TOUPPER
*NETWORK
#NETWORK节对多机之间如何进行网络连接进行描述。

#cluster方式下要求先启动tlisten。

事实上,对于非master机启动应用服务器是由tlisten完成的。

#tlisten的启动方式为
#unicom1: tlisten –l //130.36.1.101:8891
#unicom2: tlisten –l //130.36.0.102:8891
#NADDR指定网络连接的接入点。

#NLSADDR则指定tlisten的接入点。

#BRIDGE则指TCP连接所用的设备文件。

unicom2
NADDR="//130.36.0.102:8899"
NLSADDR="//130.36.0.102:8891"
BRIDGE="/dev/streams/xtiso/tcp"
unicom1
NADDR="//130.36.0.101:8899"
NLSADDR="//130.36.0.101:8891"
BRIDGE="/dev/streams/xtiso/tcp"
三、数据库XA设置
3.1 ORACLE XA
1.在附件中提供了rm文件,另外建议运行oracle的demo文件获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中.
2.ubb 文件中 *GROUP 节 TMSNAME=TMS_ORA TMSCOUNT=3 OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scot t/tiger+SesTM=120+LogDir=.+SqlNet=abcde"
具体在Oracle联机文档Application Development->oracle8 Application Development's
Guild->Oracle XA->Defining the xa_open String中提供了解释
3.在oracle一侧需运行xaview.sql,并且scott用户有操作权限,运行结果会记录trc文件里.(在oracle8.0.5这一步不是必须的)
4.运行 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracle_XA
5. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可拷贝$TUXDIR/apps/bankapp/appinit.c
6.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
7.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
8.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
3.2 SYBASE XA
1.在RM文件,运行sybase获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中:Sybase_XA:???????.
2.ubbconfig 文件中 *GROUP 节 TMS_NAME=TMS_SYB TMSCOUNT=3 OPENINFO="?????"
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_SYB -r Sybase_XA
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
3.3 INFORMIX XA
1.运行esql -lib获得要连接的所有lib库的名称.然后将这些名称全部加到RM文件中
INFORMIX-OnLine:infx_xa_switch:${INFORMIXDIR}/lib/esql/libinfxxa.a /usr/informix/lib/esq l/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixsql.a /usr/informix/lib/libixas f.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixgls.a -lnsl_s -lm -lV3 -lcl -lsec /usr/informix/lib/esql/libixglx.a
2.ubbconfig 文件中
*GROUP
节 TMS_NAME=TMS_INFO TMSCOUNT=3 OPENINFO="INFORMIX-OnLine:test_tux"
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_INFO -r INFORMIX-OnLine
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=100
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
四、Tuxedo多机方式配置要点
tuxedo多机方式配置有两个方面
4.1启动tlisten
tlisten在tuxedo启动时扮演控制者的角色,在非master机上由tlisten启动bbl和应用服务器,tlisten的启动方法为
tlisten -l //host:ipport
注意这里的ipport必须和ubb文件中NETWORK域的NLSADDR一致
tlisten必须在所有的机器上启动,启动后才能运行tmboot.建议操作系统启动时就运行tlisten.
4.2 ubb文件配置
对于多机模式一般就是指单一domain管理的多台机器,所有机器上仅需要一个ubb文件,以下是ubb文件的模板
*RESOURCES
IPCKEY 80952
MAXACCESSERS 40
MAXSERVERS 35
MAXSERVICES 75
MASTER SITE1,SITE2
OPTIONS LAN,MIGRATE
MODEL MP
*MACHINES
<SITE1's uname> LMID=SITE1
TUXDIR="<TUXDIR1>"
APPDIR="<APPDIR1>"
TUXCONFIG="<APPDIR1>/tuxconfig"
TYPE="<machine type1>"
ULOGPFX="<APPDIR1>/ULOG"
<SITE2's uname> LMID=SITE2
TUXDIR="<TUXDIR2>"
APPDIR="<APPDIR2>"
TLOGDEVICE="<APPDIR2>/TLOG"
TLOGNAME=TLOG
TUXCONFIG="<APPDIR2>/tuxconfig"
TYPE="<machine type2>"
ULOGPFX="<APPDIR2>/ULOG"
#
*GROUPS
*NETWORK
SITE1 NADDR="<network address of SITE1>"
BRIDGE="<device of provider1>"
NLSADDR="<network listener address of SITE1>"
SITE2 NADDR="<network address of SITE2>"
BRIDGE="<device of provider2>"
NLSADDR="<network listener address of SITE2>"
*SERVERS
DEFAULT: RESTART=Y MAXGEN=5 REPL YQ=Y CLOPT="-A"
#
*SERVICES
4.3管理
只能在master机上运行tmadmin进行管理。

要获得统计信息在tmadmin中应运行default –m 命令。

例如:
tmadmin
>default –m SITE1
>printservice
Windows NT/2000下要注意的问题:
1.由于NT机器上MAXACCESSORS受IPC的限制通常较小,因此建议在MACHINES部分单独设置MAXACCESSORS.
2.在MACHINES部分要单独设置UID=0和GID=0
3.和其他类型的CPU机器互连时,在MACHINES部分一定要指定TYPE.否则将提示tlisten 版本不匹配。

TUXEDO在SERVER和CLIENT之间进行数据交换缺省进行数据翻译,但一个domain的server之间缺省不进行数据翻译!
4.tlisten password应该相同.我发现%TUXDIR%\udataobj\tlisten.pw中密码相同的条件应将回车考虑在内.
5.有时LANG环境变量无法改变为C, 可以在 %TUXDIR%\locale创建文件夹 mkdir %LANG%.
6.RM文件使用中发现有效的RM后一定要有回车,否则将报RM不存在.
以下是一个ubb的例子.
*MACHINES
SUN LMID=SITE1 TYPE="SUN" MAXACCESSORS=10 #here is NT configuration NT LMID=SITE2
UID=0
GID=0
TYPE="NT" MAXACCESSORS=10。

相关文档
最新文档