一 Tuxedo 是什么?
Tuxedo是BEA公司(现已被Oracle公司收购)的一个客户机/服务器的“中间件”产品,它在客户机和服务器之间进行调节,以保证正确地处理事务。它用C语言技术开发的并且有很高性能。
TUXEDO是在、Internet 这样的分布式运算环境中开发和管理三层结构的客户/服务器型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。
二 Tuxedo 的主要作用是:
*屏蔽分布式环境中各种通信协议、硬件体系结构、操作系统、数据库和其它应用服务等方面的差异,使分布于网络节点上的应用程序的各个单元部件之间能够进行互操作,并协调操作的一致性和完整性,最大限度地节省系统资源,提高系统性能。
* Tuxedo 已经广泛地应用于金融、电信、制造业等各行各业的核心业务系统。
三 Tuxedo安装
3.1下载地址
http://www.oracle.com/technetwork/cn/middleware/tuxedo/downloads/index.html
Oracle Tuxedo 11gR1 (11.1.1.3.0)
适用于 Linux x86-64(64 位)(86,027,903 字节)
3.2创建用户
[root@localhost tuxedo]# useradd tuxedo//为安装程序创建有一个用户
[root@localhost home]# passwd tuexdo//为创建的用户设置密码
[root@localhost tuxedo]# chmod 755 tuxedo111120_32_Linux_01_x86.bin //添加权限
[root@localhost etc]# chown -R tuxedo:tuxedo tuxedo/ 更改目录所属用户
3.3 确认安装成功
[tuxedo@localhost tuxedo]$ ./tuxedo111120_32_Linux_01_x86.bin -i console
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
Launching installer...
Preparing CONSOLE Mode Installation...
==========================================================================
Choose Locale...
----------------
1- English
CHOOSE LOCALE BY NUMBER: 1 // 缺省只能选择1回车
==========================================================================
Tuxedo 11.1.1.2.0 (created with InstallAnywhere by Macrovision)
--------------------------------------------------------------------------
==========================================================================
Introduction
------------
InstallAnywhere will guide you through the Tuxedo 11.1.1.2.0 installation.
It is strongly recommended that you quit all programs before continuing with
this installation.
Enter "next' to proceed to the next screen. Enter "back" to modify the previous
screen.
You may cancel this installation at any time by typing "quit".
WARNING: "Quitting" creates an incomplete Tuxedo 11.1.1.2.0 installation.You
must re-install Tuxedo 11.1.1.2.0. For more information, see "Preparing to
Install the Oracle Tuxedo System" in the Tuxedo 11.1.1.2.0 Installation Guide.
PRESS <ENTER> TO CONTINUE:
===============================================================================
Choose Install Set
------------------
Please choose the Install Set to be installed by this installer.
->1- Full Install
2- Server Install
3- Full Client Install
4- Jolt Client Install
5- ATMI Client Install
6- CORBA Client Install
7- Customize...
ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS <ENTER> TO ACCEPT THE DEFAULT
: 1 //选择1
=========================================================================
Choose Oracle Home
------------------
1- Create new Oracle Home
Enter a number: 1 //选择1 ,把服务器与客户端都装好
Specify a new Oracle Home directory: /home/tuxedo //指定安装的目录
=========================================================================
Choose Product Directory
------------------------
1- Modify Current Selection (/home/tuxedo/tuxedo11gR1)
2- Use Current Selection (/home/tuxedo/tuxedo11gR1)
Enter a number: 2 // 1修改目录,选择2 项,默认目录。
Install Samples (Y/N): y // y 回车
=========================================================================
Pre-Installation Summary
------------------------
Please Review the Following Before Continuing:
Product Name:
Tuxedo 11.1.1.2.0
Install Folder:
/home/tuxedo/tuxedo11gR1
Link Folder:
/home/oracle
Disk Space Information (for Installation Target):
Required: 209,943,511 bytes
Available: 5,742,436,352 bytes
PRESS <ENTER> TO CONTINUE: //上面罗列安装目录信息,这里回车即可
==========================================================================
Ready To Install
----------------
InstallAnywhere is now ready to install Tuxedo 11.1.1.2.0 onto your system at
the following location:
/home/tuxedo/tuxedo11gR1
PRESS <ENTER> TO INSTALL:
==========================================================================
Installing...
-------------
[==================|==================|==================|==============]
[------------------|------------------|------------------|------------------]
=========================================================================
Configure tlisten Service
-------------------------
Password:
Verify Password:
Password Accepted! Please wait...
===============================================================================
SSL Installation Choice.
------------------------
Would you like to install SSL Support? //你想安装的SSL支持吗?
->1- Yes
2- No
ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS <ENTER> TO ACCEPT THE DEFAULT:
: 2 // 这里选择不支持
===============================================================================
Installation Complete
---------------------
Congratulations. Tuxedo 11.1.1.2.0 has been successfully installed to:
/home/tuxedo/tuxedo11gR1
PRESS <ENTER> TO EXIT THE INSTALLER: // 这里回车,安装完成
3.4 确认安装成功
切换到tuxedo安装目录下,为tux.env文件添加执行权限。
[oracle@localhost tuxedo11gR1]$ chmod 755 tux.env
[oracle@localhost tuxedo11gR1]$ . ./tux.env 注意:有两个点
[oracle@localhost tuxedo11gR1]$ env | grep TUX
TUXDIR=/hzh/tuxedo/tuxedo11gR1
[oracle@localhost tuxedo11gR1]$ tmadmin -v
INFO: Oracle Tuxedo , Version 11.1.1.2.0, 32-bit , Patch Level (none)
四 运行示例程序:转换大小写
在..../simpapp目录下共有4个文件,分别是README simpserv.c(客户端源程序) simpcl.c(服务器端源程序) ubbsimple(配置文件)
4.1. 设置环境变量
4.1.1 tux.env内容如下
TUXDIR=/home/tuxedo/tuxedo11gR1; export TUXDIR
JAVA_HOME=$TUXDIR/jre; export JAVA_HOME
JVMLIBS=$JAVA_HOME/lib/amd64/server:$JAVA_HOME/jre/bin
PATH=$TUXDIR/bin:$JAVA_HOME/bin:$PATH; export PATH
COBCPY=:$TUXDIR/cobinclude; export COBCPY
COBOPT="-C ANS85 -C ALIGN=8 -C NOIBMCOMP -C TRUNC=ANSI -C OSEXT=cbl"; export COBOPT
SHLIB_PATH=$TUXDIR/lib:$JVMLIBS:$SHLIB_PATH; export SHLIB_PATH
LIBPATH=$TUXDIR/lib:$JVMLIBS:$LIBPATH; export LIBPATH
LD_LIBRARY_PATH=$TUXDIR/lib:$JVMLIBS:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
WEBJAVADIR=$TUXDIR/udataobj/webgui/java; export WEBJAVADIR
LANG=C;export LANG
APPDIR=$TUXDIR/applications/simpapp;export APPDIR
TUXCONFIG=$APPDIR/tuxconfig; export TUXCONFIG
执行:$. ./setenv
4.1.2 .bash_profile 内容如下
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export TUXDIR=/home/tuxedo/tuxedo11gR1
TUXDIR=/home/tuxedo/tuxedo11gR1; export TUXDIR
TUXCONFIG=/home/tuxedo/tuxedo11gR1/applications/simpapp/tuxconfig; export TUXCONFIG
JAVA_HOME=$TUXDIR/jre; export JAVA_HOME
JVMLIBS=$JAVA_HOME/lib/amd64/server:$JAVA_HOME/jre/bin
4.2. 配置文件
除了客户端和服务起程序以外,tuxedo还需要一个配置文件来描述一个tuxedo应用系统所包含的系统资源。修改simpapp下的ubbsimple的内容,改好后为:(注意红色部分)
# (c) 2003 BEA Systems, Inc. All Rights Reserved.
#ident "@(#) samples/atmi/simpapp/ubbsimple $Revision: 1.7 $"
#Skeleton UBBCONFIG file for the TUXEDO Simple Application.
#Replace the <bracketed> items with the appropriate values.
*RESOURCES
IPCKEY 123456
#Example:
#IPCKEY 123456
DOMAINID simpapp
MASTER simple
MAXACCESSERS 10
MAXSERVERS 5
MAXSERVICES 10
MODEL SHM
LDBAL N
*MACHINES
DEFAULT:
APPDIR="/home/tuxedo/tuxedo11gR1/applications/simpapp"
TUXCONFIG="/home/tuxedo/tuxedo11gR1/applications/simpapp/tuxconfig"
TUXDIR="/home/tuxedo/tuxedo11gR1"
#Example:
# APPDIR="/home/me/simpapp"
# TUXCONFIG="/home/me/simpapp/tuxconfig"
# TUXDIR="/usr/tuxedo"
#
#注意:下面的机器名用hostname 查出来的,不能带特殊符号
localhost LMID=simple
#Example:
#beatux LMID=simple
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
simpserv SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER
如果没改直接进行第3步,常有以下错误提示:
2.1 IPCKEY <
syntax error
CMDTUX_CAT:866: ERROR: tmloadcf: Severe error found. Stop syntax checking.
解决方法:对<>按照example进行修改
2.2 CMDTUX_CAT:868: ERROR: tmloadcf cannot run on a non-master node
解决方法:ubbsimple 文件中将<Machine-name>改为你的机器名,在windows下使用
echo %computername% 显示机器名,在unix下使用 uname -n 。注意在windows 下,通过hostname 或者 %COMPUTERNAME% 查出来的机器名不论是大小写,在ubb中设置成大写.其实我用小写也执行成功了。
3. 编译与执行
3.1 生成二进制配置文件,长出现问题看2.1 2.2
$tmloadcf -y ubbsimple
3.2 编译客户端程序
$buildclient -o simpcl -f simpcl.c
3.3 编译服务器程序
$buildserver -o simpserv -f simpserv.c -s TOUPPER
此处生成的可执行文件名要与ubbsimple中的相匹配
否则,出项错误 Can't send request to service TOUPPER
3.4 启动tuxedo应用系统
$tmboot -y
3.5 运行客户端
$./simpcl hello
显示Returned string is: HELLO表示测试成功
3.6 关闭tuxedo应用
$tmshutdown -y
五 监测运行情况
5.1进程间通信设施的状态
[tuxedo@localhost simpapp]$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0001e240 557056 tuxedo 600 563004 2
------ Semaphore Arrays --------
key semid owner perms nsems
0x0001e240 98306 tuxedo 600 3
0x00000000 163843 tuxedo 600 31
------ Message Queues --------
key msqid owner perms used-bytes messages
0x0001e240 32769 tuxedo 600 0 0
0x00000000 65538 tuxedo 600 0 0
5.2 tuxedo监测
[tuxedo@localhost simpapp]$ tmadmin
tmadmin - Copyright (c) 1996-2010 Oracle.
Portions * Copyright 1986-1997 RSA Data Security, Inc.
All Rights Reserved.
Distributed under license by Oracle.
Tuxedo is a registered trademark.
> 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 1 50 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TOUPPER TOUPPER simpserv GROUP1 1 simple 1 AVAIL
> pq
Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
--------- ------------------- --------- -------- -------- -------
simpserv 00001.00001 1 - 0 - simple
BBL 123456 1 - 0 - simple
>q 退出
5.3 tmadmin 命令解释-
===================================================================
tmadmin 中的pq psr pclt等命令的中文解释。
主要有以下两个管理工具:
² 使用图形界面的图形管理接口(Graphical Administration Interface―GAI)
² tmadmin
通常管理工作有以下3类:
² 监视运行系统
一般监视以下信息:应用、服务、客户端、交易、队列、组、会话、网络等。
² 动态修改服务或交易参数
使用GAI 或tmadmin可以动态进行以下调整:
――交易可以挂起、恢复、发布和取消
――交易参数可以修改,如:LOAD和PRIORITY
――指定交易的超时时间
――交易口令
² 进行启动,关闭,移动服务等管理员的任务
服务信息
来自GAI的信息本处略去。
以下是tmadmin命令的printserver(简写为psr)的简单输出。
列号 描述
1. 服务的可执行文件名
2. 服务连接的队列名
3. 组名
4. 服务的数字id
5. 服务已经处理的请求数
6. 服务处理的全部请求的参数和
服务正在处理的交易,若为IDLE则服务当前是空闲
ccsmis:/home2/ccsmis>tmadmin
tmadmin - Copyright (c) 1996 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.
> printserver
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
rz_Ecsb 00004.04000 APGP2 4000 0 0 ( IDLE )
BBL 70020 simple 0 1 50 ( IDLE )
IFMTMS APGP2_TMS APGP2 30001 1 50 ( IDLE )
ftpserv32 00002.00001 FTPGP 1 60 3000 ( IDLE )
WSL 00001.00001 SYSGP 1 0 0 ( IDLE )
IFMTMS APGP2_TMS APGP2 30002 12 600 ( IDLE )
ftpserv32 00002.00002 FTPGP 2 0 0 ( IDLE )
IFMTMS APGP2_TMS APGP2 30003 11 550 ( IDLE )
CCS_QUANBIA_60 00004.06004 APGP2 6004 0 0 ( IDLE )
CCS_SCBB_4099 00004.04099 APGP2 4099 2 100 ( IDLE )
CCS_GEKEZI_300 00004.03000 APGP2 3000 0 0 ( IDLE )
:
交易信息
来自GAI的信息本处略去。
以下是tmadmin命令的printservice(简写为psc)的简单输出。
列号 描述
1. 交易名
2. 交易函数名
3. 服务可执行文件名
4. 服务所在组名
5. 服务的数字id
6. 提供交易的机器的LMID
7. 交易已经执行的次数
8. 交易当前状态
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
416701 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
416601 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
416501 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
416401 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
416201 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
416301 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
416101 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
416001 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
415901 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL
:
队列信息
以下是tmadmin命令的printqueue(简写为pq)[qaddress]的简单输出。如果不指定address,所有队列信息将被输出。
列号 描述
1. 队列连接的服务的可执行文件名
2. 字符队列名,是RQADDR参数或一个随机值
3. 连接的服务数
4. 当前队列的所有请求的参数和
5. 实际请求数
6. 平均队列长度
7. 队列所在机器的LMID
> pq 00004.05062
1Prog Name 2Queue Name # 3Serve Wk Queued # Queued Ave. Len 7Machine
--------- ------------------- --------- -------- -------- -------
CCS_GEDAIPC_50 00004.05062 1 0 0 0.0 simple
客户端信息
来自GAI的信息本处略去。
以下是tmadmin命令的printclient(简写为pclt)的输出,来自TUXEDO系统的日志信息。主要有以下信息:
客户端id,用户名和当前状态
登录的LMID和进程号(PID)
服务组和上一访问过的服务组
交易(启动/提交/中断)和会话的统计数字
中继队列id,通知方法和提交控制
列号 描述
1. 已经登录的客户端机器的LMID
2. 用户名,由tpinit()提供的
3. 客户端名,由tpinit()提供的
4. 客户端连接后经过的时间
5. 客户端状态
6. IDLE――表示客户端目前没有任何交易在工作
7. IDLET――表示客户端启动了一个交易
8. BUSY――表示客户端在工作中
9. BUSYT――表示客户端正在交易控制下工作
10. 启动/提交/中断的交易数
> pclt
LMID User Name Client Name Time Status Bgn/Cmmt/Abrt
--------------- --------------- --------------- -------- ------- -------------
simple ccsmis WSH 17:42:47 IDLE 0/0/0
simple ccsmis tmadmin 0:44:28 IDLE 0/0/0
用tmadmin写脚本
输出所有服务/交易/队列信息
$tmadmin 2>&1<<!
echo
verbose
psr
psc
pq
!
挂起bankapp内所有AUDIT交易
(tmadmin 2>&1 <<!
pq
!
) |
awk ‘BEGIN { print "tmadmin <<! \necho"}
{if ( $1 == "AUDIT") print "susp ?q" , $2, "-S $1"}
END {print "q\n!"}' |
/bin/sh
辅助类命令:
help 命令名 显示该操作命令的帮助
berbose 要不要显示更详细的信息
page 要不要分页显示
查询类命令
psr:命令会显示该系统所有的server的信息
psc:命令会显示该系统所有的service的信息
pq:命令会显示该系统的队列情况
pclt:当前连接到该tuxedo应用系统的客户端的状态
动态修改配置:
suspend:可以把某个group、server的service挂起
resume:可以把已挂起的某个group、server的service重新投入可用。
adv:可以发布某个service
unadv:取消某个service的发布
changeload:可以修改某个service的负载因子
changepriority:可以修改某个service的优先级
管理类命令:
bbclean:当bbl进行定时检测时,它会自动把死掉的service进程所占用的资源释放
pclean:清空某台服务器上的资源
broadcast:向某用户或者某类用户发消息