如果TUXEDO配置的有问题,在启动的时候,会有各种报错信息来提示,请看下面:
序号 | 问题描述 | 可能的解决方法 |
1 | tmboot: internal error: CMDTUX_CAT:4578: ERROR: Unlicensed System Binary | 查看$TUXDIR/udataobj/lic.txt 文件及权限 |
2 | exec BBL -A : Failed. tmboot: WARN: No BBL available on site BSX0. Will not attempt to boot server processes on that site. | 重新创建TLOG,查看ubb文件中的TUXDIR路径是否正确。命令为:crdl –b 3000 –z “/BSMesWare/BSM1/Ulog/TLOG” 或者可能IPCKEY重复 |
3 | Could not load program TMS_ORA: Dependent module libclntsh.a(shr.o) could not be loaded. Could not load module libclntsh.a(shr.o). | 查看环境变量中的LIBPATH,是否包含$ORACLE_HOME/lib 查看环境变量中的ORACLE相关的路径是否正确 查看$TUXDIR/udataobj/RM文件中的Oracle配置,尝试重建TMS_ORA,新建命令:buildtms -o TMS_ORA -r Oracle_XA |
4 | CMDTUX_CAT:819: INFO: Process id=675936 Assume started (pipe). | 两个环境xlC的版本是否一致 缺少程序需要的动态库 两个环境的Oracle的版本是否一致 |
5 | exec TMS_ORA -A : Failed. | 配置的数据库用户名和账号等是否正确 是否授权,授权语句:grant select on dba_pending_transactions to public (此语句需要使用SYS来执行) |
6 | exec TMS_ORA -A : Could not load program TMS_ORA: The l_nimpid field in the .loader section header is not positive. Examine the .loader section header with the 'dump -Hv' command. CMDTUX_CAT:819: INFO: Process id=148314 Assume started (pipe). | TMS_ORA文件可能有问题 查找$APPDIR目录下面是否存在TMS_ORA,有则删除 尝试重建TMS_ORA |
7 | tmboot –y的时候,有些SERVER启动了,有些SERVER启动失败了 exec p_es_80 -A : process id=659534 ... Started. exec p_es_100 -A : Failed. | 检查UBB配置文件中的MAXSERVERS 和 MAXSERVICES 检查操作系统或者数据库的进程数是否足够 |
8 | exec TMS_ORA –A CMDTUX_CAT:816: ERROR: Cannot exec, executable file not found | 重新建立TMS_ORA,$TUXDIR/udataobj |
另记录一遇到的问题:
Tuxedo的TMS服务启动时无响应的情况,一般都是TMS服务正在连接详单数据库,停滞在下面的语句:
SELECT formatid, globalid, branchid
FROM SYS.dba_pending_transactions
ORDER BY formatid, globalid, branchid;
由于SYS.dba_pending_transactions同全局事务相关,所以可能由于系统资源被占用或者系统异常锁而导致SYS.dba_pending_transactions无法被正常访问。
一般用下面语句可以查到不同session相互间执行语句锁定情况
select machine,terminal,username,status,program,sql_hash_value,prev_hash_value,
(select sql_text from v$sqlarea where hash_value = sql_hash_value) hash_sql,
(select sql_text from v$sqlarea where hash_value = prev_hash_value) prev_sql
from v$session where sid in
(
select sid from v$lock kk where
block = 1
);
可以再数据库中杀掉此session,然后到操作系统上杀掉此session对应的spid的进程,即可解决此问题
若以上均不行,可尝试重启数据库解决!