﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-soak-随笔分类-Tuxedo</title><link>http://www.cppblog.com/soak/category/18876.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 22 Mar 2012 04:21:31 GMT</lastBuildDate><pubDate>Thu, 22 Mar 2012 04:21:31 GMT</pubDate><ttl>60</ttl><item><title>Tuxedo连接数据库bug解决</title><link>http://www.cppblog.com/soak/archive/2012/03/20/168417.html</link><dc:creator>cpp</dc:creator><author>cpp</author><pubDate>Tue, 20 Mar 2012 09:15:00 GMT</pubDate><guid>http://www.cppblog.com/soak/archive/2012/03/20/168417.html</guid><wfw:comment>http://www.cppblog.com/soak/comments/168417.html</wfw:comment><comments>http://www.cppblog.com/soak/archive/2012/03/20/168417.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/soak/comments/commentRss/168417.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/soak/services/trackbacks/168417.html</trackback:ping><description><![CDATA[<br />
编译服务端程序，报错信息如下：<br />
[oracle@informix ora]$ buildserver -o test -f test.c -f${ORACLE_HOME}/lib/libclntsh.so -s TEST<br />
test.c: In function `TEST':<br />
test.c:294: structure has no member named `sqlerrm'<br />
test.c:295: structure has no member named `sqlerrm'<br />
test.c:346: structure has no member named `sqlerrm'<br />
test.c:347: structure has no member named `sqlerrm'<br />
CMDTUX_CAT:1832: ERROR: can't execute cc -m32   -I$TUXDIR/include -o test BS-2557.c  -L${TUXDIR}/lib test.c /u01/oracle/lib/libclntsh.so  -ltux -lbuft   -lfml -lfml32 -lengine -ldl -lpthread  <br />
<br />
【解决方法】<br />
经过查找。原来是这个原因：<br />
重命名下列文件，因为下列TUXEDO文件名与ORACLE带的文件名有冲突，所以要改名。 <br />
（1）TUXEDO安装路径include目录下的下面文件 <br />
把sqlca.h 改名为 sqlca.h.bbb <br />
把sqlcode.h 改名为 sqlcode.h.bbb <br />
把sqlda.h 改名为 sqlda.h.bbb <br />
（2）重命名TUXEDO安装路径lib目录下的下面文件 <br />
把libsql.a 改名为 libsql.a.bbb <br />
把libsql.so 改名为 libsql.so.bbb <br />
<br />
<p>
希望对大家有用！<br />
</p>
<p><br />
</p>
<p><br />
</p>
<p>【报错信息】tmboot报错如下：<br />
Booting admin processes ...<br />
<br />
exec BBL -A :<br />
process id=6993 ... Started.<br />
<br />
Booting server processes ...<br />
<br />
exec TMS_ORA -A :<br />
Failed.<br />
exec TMS_ORA -A :<br />
Failed.<br />
exec test -A :<br />
Failed.<br />
1 process started.<br />
<br />
【查看日志】<br />
查找ULOG和xa_NULL*.trc发现日值这样描述：<br />
084519.6668.0:<br />
xaogetmod: XAER_INVAL; Invalid xa_info string.<br />
<br />
ORACLE XA: Version 10.2.0.1.0. RM name = 'Oracle_XA'.<br />
<br />
【分析原因】<br />
显然是我的ubb中的OPENINFO这行配置有问题。<br />
查看我ubb配置如下：<br />
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tigger+SesTm=600+MaxCur=5+LogDir=.+DbgFl=" <br />
<br />
DbgFl不能等于空，要么指定数字，要么不写这个选项。<br />
【解决问题】<br />
修改ubb配置如下：<br />
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tigger+SesTm=600+MaxCur=5+LogDir=.+DbgFl=15" <br />
或者<br />
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tigger+SesTm=600+MaxCur=5+LogDir=."<br />
</p>
<img src ="http://www.cppblog.com/soak/aggbug/168417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/soak/" target="_blank">cpp</a> 2012-03-20 17:15 <a href="http://www.cppblog.com/soak/archive/2012/03/20/168417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo通过XA接口与Oracle数据库互联</title><link>http://www.cppblog.com/soak/archive/2012/03/20/168401.html</link><dc:creator>cpp</dc:creator><author>cpp</author><pubDate>Tue, 20 Mar 2012 07:20:00 GMT</pubDate><guid>http://www.cppblog.com/soak/archive/2012/03/20/168401.html</guid><wfw:comment>http://www.cppblog.com/soak/comments/168401.html</wfw:comment><comments>http://www.cppblog.com/soak/archive/2012/03/20/168401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/soak/comments/commentRss/168401.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/soak/services/trackbacks/168401.html</trackback:ping><description><![CDATA[我的系统环境：<br />
1.LINUX：RHEL 5.0<br />
2.ORACLE：10g<br />
3.TUXEDO服务器和ORACLE服务器在同一台机器上<br />
<br />
一、ORACLE配置<br />
<br />
用sysdba帐户登陆，<br />
SQL&gt; conn / as sysdba<br />
SQL&gt; @$ORACLE_HOME/rdbms/admin/xaview.sql<br />
DROP VIEW v$xatrans$<br />
*<br />
ERROR at line 1:<br />
ORA-00942: table or view does not exist<br />
<br />
DROP VIEW v$pending_xatrans$<br />
*<br />
ERROR at line 1:<br />
ORA-00942: table or view does not exist<br />
<br />
View created.<br />
View created.<br />
<br />
SQL&gt; grant select on v$xatrans$ to public with grant option;<br />
<br />
Grant succeeded.<br />
<br />
SQL&gt; grant select on v$pending_xatrans$ to public with grant option;<br />
<br />
Grant succeeded.<br />
<br />
SQL&gt; grant select any table to public;<br />
<br />
Grant succeeded.<br />
<br />
二、TUXEDO的配置<br />
<br />
1、修改$TUXDIR/udataobj/RM文件<br />
把原来的以Oracle_XA:xaosw:开头的屏蔽掉、<br />
添加Oracle_XA:xaosw:-L${ORACLE_HOME}/lib -lclntsh<br />
<br />
2、创建TMS文件:TMS_ORA10g，TUXEDO通过TMS_ORA10g与ORACLE数据库采用XA协议进行通讯 <br />
<br />
buildtms -o $TUXDIR\bin\TMS_ORA10g -r Oracle_XA<br />
<br />
这个地方要注意权限问题。<br />
[tuxedo@brady udataobj]$ buildtms -o $TUXDIR/bin/TMS_ORA10g -r Oracle_XA<br />
/usr/bin/ld: cannot find -lclntsh<br />
collect2: ld returned 1 exit status<br />
CMDTUX_CAT:1832: ERROR: can't execute cc    -I$TUXDIR/include -o /home/tuxedo/beahome/tuxedo9.1/bin/TMS_ORA10g BS-124c.c -L${TUXDIR}/lib <br />
<br />
/home/tuxedo/beahome/tuxedo9.1/lib/TMS.o -ltux -lbuft -L${ORACLE_HOME}/lib -lclntsh -lfml -lfml32 -lengine -ldl -lpthread /usr/lib/libcrypt.a <br />
CMDTUX_CAT:530: ERROR: Cannot execute $TUXDIR/bin/buildserver -r Oracle_XA -o /home/tuxedo/beahome/tuxedo9.1/bin/TMS_ORA10g -S -s TMS -s..TMS:TMS -f <br />
$TUXDIR/lib/TMS.o <br />
我觉得写得没错，指定了库的路径，不应该出这个问题。<br />
但是<br />
[tuxedo@brady udataobj]$ ll $ORACLE_HOME/lib/libclntsh.so<br />
ls: /home/oracle/oracle/product/10.2.0/db_1/lib/libclntsh.so: Permission denied<br />
这时我才意识到 我的tuxedo用户没有权限啊。<br />
于是用root用户来进行操作。<br />
[root@brady tuxedo9.1]# buildtms -o $TUXDIR/bin/TMS_ORA10g -r Oracle_XA<br />
<br />
3、配置UBBCONFIG文件<br />
下面是我的配置文件，粗体部分是需要关注的位置。<br />
*RESOURCES<br />
IPCKEY          56778<br />
<br />
DOMAINID        xaapp<br />
MASTER          xamh<br />
MAXACCESSERS    10<br />
MAXSERVERS      5<br />
MAXSERVICES     10<br />
MODEL           SHM<br />
LDBAL           N<br />
<br />
*MACHINES<br />
"brady.domain" LMID=xamh<br />
APPDIR="/home/tuxedo/beahome/appdir/xaapp"<br />
TUXCONFIG="/home/tuxedo/beahome/appdir/xaapp/tuxconfig"<br />
TUXDIR="/home/tuxedo/beahome/tuxedo9.1"<br />
TLOGDEVICE = "/home/tuxedo/beahome/appdir/TLOG"<br />
TLOGNAME=TLOG<br />
TLOGSIZE=100<br />
#如果这个地方不设置的话，会出现一下错误：<br />
#[tuxedo@brady xaapp]$ tmloadcf -y ubbconfig<br />
#CMDTUX_CAT:1352: ERROR: GROUP entry GROUP1 has TMS specified and LMID xamh does not have TLOGDEVICE<br />
#CMDTUX_CAT:867: ERROR: tmloadcf: Above errors found during syntax checking<br />
<br />
*GROUPS<br />
GROUP1<br />
LMID=xamh<br />
GRPNO=1<br />
OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+sqlNet=ORCL+SesTm=100+LogDir=..+MaxCur=5"<br />
CLOSEINFO=""<br />
TMSNAME="TMS_ORA10g"<br />
#OPENINFO中P/scott/tiger+sqlNet=ORCL<br />
#scott/tiger是用户名/密码,sqlNet=ORCL是本地命名的服务别名<br />
#需要根据实际情况自定义<br />
<br />
*SERVERS<br />
DEFAULT:<br />
CLOPT="-A"<br />
<br />
axserv SRVGRP=GROUP1 SRVID=1<br />
<br />
*SERVICES<br />
TEST<br />
4、重命名下列文件，因为下列文件名与ORACLE带的文件名有冲突，所以要改名。 <br />
（1）TUXEDO安装路径include目录下的下面文件 <br />
把sqlca.h 改名为 sqlca.h.bbb <br />
把sqlcode.h 改名为 sqlcode.h.bbb <br />
把sqlda.h 改名为 sqlda.h.bbb <br />
（2）重命名TUXEDO安装路径lib目录下的下面文件 <br />
把libsql.lib 改名为 libsql.lib.bbb <br />
<br />
三、你可以编写服务器端和客户端程序了<br />
<br />
注意：<br />
1、在编译服务器端程序的时候，用到proc命令而且还有一些oracle的库，所以要注意权限问题。<br />
2、在启动服务器之前，要确保ORACLE服务器已经启动，且监听器也已经正常启动。<br />
我的Oracle数据库的监听器一开始没有正常启动，出现如下错误：<br />
[root@brady xaapp]# tmboot -y<br />
Booting all admin and server processes in /home/tuxedo/beahome/appdir/xaapp/tuxconfig<br />
INFO: BEA Tuxedo, Version 9.1, 32-bit, Patch Level (none)<br />
INFO: Serial #: 454493271161-2655514326743, Expiration NONE, Maxusers 1000000<br />
INFO: Licensed to: Customer<br />
<br />
Booting admin processes ...<br />
<br />
exec BBL -A :<br />
process id=5539 ... Started.<br />
<br />
Booting server processes ...<br />
<br />
exec TMS_ORA10g -A :<br />
Failed.<br />
exec TMS_ORA10g -A :<br />
Failed.<br />
exec TMS_ORA10g -A :<br />
Failed.<br />
exec axserv -A :<br />
Failed.<br />
1 process started.<br />
在ULOG文件中记录的错误是TPERMERR - resource manager error<br />
<br />
我弄了差不多一个小时，没有弄好，上网搜也没有没有搜到什么原因。<br />
然后我检查了下oracle。才发现监听器没有正常启动。<br />
[oracle@brady xa]$ lsnrctl stop<br />
[oracle@brady xa]$ lsnrctl start<br />
再次 启动TUXEDO服务器时：<br />
[root@brady xaapp]# tmboot -y<br />
Booting all admin and server processes in /home/tuxedo/beahome/appdir/xaapp/tuxconfig<br />
INFO: BEA Tuxedo, Version 9.1, 32-bit, Patch Level (none)<br />
INFO: Serial #: 454493271161-2655514326743, Expiration NONE, Maxusers 1000000<br />
INFO: Licensed to: Customer<br />
<br />
Booting admin processes ...<br />
<br />
exec BBL -A :<br />
process id=5603 ... Started.<br />
<br />
Booting server processes ...<br />
<br />
exec TMS_ORA10g -A :<br />
CMDTUX_CAT:819: INFO: Process id=5606 Assume started (pipe).<br />
exec TMS_ORA10g -A :<br />
CMDTUX_CAT:819: INFO: Process id=5610 Assume started (pipe).<br />
exec TMS_ORA10g -A :<br />
CMDTUX_CAT:819: INFO: Process id=5613 Assume started (pipe).<br />
exec axserv -A :<br />
CMDTUX_CAT:819: INFO: Process id=5616 Assume started (pipe).<br />
5 processes started.<br />
<img src ="http://www.cppblog.com/soak/aggbug/168401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/soak/" target="_blank">cpp</a> 2012-03-20 15:20 <a href="http://www.cppblog.com/soak/archive/2012/03/20/168401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo Domains通讯</title><link>http://www.cppblog.com/soak/archive/2012/03/20/168400.html</link><dc:creator>cpp</dc:creator><author>cpp</author><pubDate>Tue, 20 Mar 2012 07:18:00 GMT</pubDate><guid>http://www.cppblog.com/soak/archive/2012/03/20/168400.html</guid><wfw:comment>http://www.cppblog.com/soak/comments/168400.html</wfw:comment><comments>http://www.cppblog.com/soak/archive/2012/03/20/168400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/soak/comments/commentRss/168400.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/soak/services/trackbacks/168400.html</trackback:ping><description><![CDATA[使用TUXEDO组件/DOMAINS时，需要对管理配置作一些改变。在以下例子中，会创建一个独立的测试应用环境(DOMAINID是TEST)，它可以读取/请求另一个应用的交易（ProdCust）的数据。<br />
服务GWTDOMAIN(GWT)负责响应域间通讯。GWADM和DMADM是处理管理交易和域服务的管理服务。这些服务必须配置在UBBCONFIG文件中。配置信息必须在远程和本地应用环境中定义。<br />
服务GWTDOMAIN通过TCP/IP协议与其他域进行通讯。物理上远程的域的应用位置是透明的。<br />
服务GWTDOMAIN是双向的：可以处理远程域发来的请求也可以向远程域发出请求。<br />
除UBBCONFIG外，配置/DOMAINS还需要一些信息。这些信息在DMCONFIG文件中。DMCONFIG的文本文件通过BDMCONFIG编译成二进制文件。<br />
<br />
过程 <br />
第一步：UBBCONFIG应作相应改动<br />
为/DOMAIN建立的新组应该和其他应用组隔离开。其一用于管理，其他是网关服务。<br />
UBBCONFIG<br />
*RESOURCES<br />
IPCKEY                                 49152<br />
MAXACCESSERS 2<br />
MAXSERVERS                   25<br />
MASTER                               SITE1<br />
MODEL                                 SHM<br />
*MACHINES<br />
class2                                                LMID=SITE1<br />
TUXDIR=&#8221;/usr/tuxedo&#8221;<br />
APPDIR=&#8221;/usr/apps/atmapp&#8221;<br />
TUXCONFIG=&#8221;/usr/apps/atmapp/atmapp.tux&#8221;<br />
*GROUPS<br />
LDMGRP                              LMID=SITE1  GRPNO=20<br />
LGWGRP                              LMID=SITE1  GRPNO=30<br />
#下一行用于&#8216;prod&#8217;域<br />
APP1                                     LMID=SITE1 GRPNO=10<br />
*SERVERS<br />
DMADM                                SRVGRP=LDMGRP            SRVID=200<br />
GWADM                               SRVGRP=LGWGRP            SRVID=310<br />
GWTDOMAIN                       SRVGRP=LGWGRP            SRVID=320<br />
#下一行用于&#8216;prod&#8217;域<br />
CUSTOMER             CLOPT=&#8221;-A&#8221;  SRVGRP=APP1(对应上面的group)         SRVID=100<br />
*SERVICES<br />
#下一行用于&#8216;prod&#8217;域<br />
ProdCust<br />
<br />
第二步：为域间请求创建DMCONFIG<br />
下文的ASCII数据存在的文件一般称为DMCONFIG，由此生成的二进制格式文件称为BDMCONFIG。以下的DMCONFIG存在于&#8220;TEST&#8220;域，用来请求远程的&#8221;prod&#8220;域的&#8221;ProdCust&#8220;交易。<br />
DMCONFIG on TEST DOMAIN<br />
*DM_LOCAL_DOMAINS<br />
test                                  GWGRP=LGWGRP<br />
TYPE=TDOMAIN<br />
DOMAINID=&#8221;TEST&#8221;<br />
DMTLOGDEV=&#8221;/usr/apps/atmapp/logs/DLOG&#8221;<br />
*DM_REMOTE_DOMAINS<br />
production                  TYPE=TDOMAIN<br />
DOMAINID=&#8221;prod&#8221;<br />
*DM_TDOMAIN<br />
prod                            NWADDR=&#8221;//lcspn1:3070&#8221;<br />
NWDEVICE=&#8221;/dev/xti/tcp&#8221;<br />
TEST                          NWADDR=&#8221;//lcspn2:3070&#8221;<br />
NWDEVICE=&#8221;/dev/xti/tcp&#8221;<br />
*DM_REMOTE_SERVICES<br />
ProdCust<br />
*DM_LOCAL_SERVICES<br />
第三步：创建DMCONFIG指定对域外提供的交易<br />
下文的DMCONFIG位于域&#8217;prod&#8217;，该域将向其他域提供可调用交易：ProdCust。<br />
域&#8216;prod&#8217;上的DMCONFIG<br />
#本地域信息<br />
*DM_LOCAL_DOMAINS<br />
#LMID<br />
production                  GWGRP=LGWGRP<br />
#域描述：TDOMAIN即TUXEDO DOMAINS<br />
TYPE=TDOMAIN      <br />
#域的唯一标识符<br />
DOMAINID=&#8221;prod&#8221;<br />
#交易的日志<br />
DMTLOGDEV=&#8221;/usr/apps/atmapp/logs/DLOG&#8221;<br />
#远程域信息<br />
*DM_REMOTE_DOMAINS<br />
test                              TYPE=TDOMAIN<br />
DOMAINID=&#8221;TEST&#8221;<br />
*DM_TDOMAIN<br />
#地址和设备名<br />
prod                            NWADDR=&#8221;//lcspn1:3070&#8221;<br />
NWDEVICE=&#8221;/dev/xti/tcp&#8221;<br />
TEST                          NWADDR=&#8221;//lcspn2:3070&#8221;<br />
NWDEVICE=&#8221;/dev/xti/tcp&#8221;<br />
*DM_REMOTE_SERVICES<br />
*DM_LOCAL_SERVICES<br />
#远程域可以使用的交易<br />
ProdCust<br />
<br />
第四步：设定环境变量<br />
/DOMAIN进程需要额外的环境变量去访问/DOMAINS配置信息<br />
export BDMCONFIG=/usr/apps/atmapp/atmapp.bdm<br />
<br />
第五步：编译ubbconfig<br />
本过程是从两个域中相同的UBBCONFIG生成二进制文件TUXCONFIG。在本例中，UBBCONFIG的信息位于&#8217;ubbconfig&#8217;。<br />
tmloadcf &#8211;y ubbconfig<br />
第六步：编译dmconfig<br />
本过程是创建二进制DOMAINS配置文件，BDMCONFIG，在两个域中相同；而两者都有的文件&#8216;dmconfig&#8217;内容是不同的。<br />
dmloadcf &#8211;y dmconfig<br />
<img src ="http://www.cppblog.com/soak/aggbug/168400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/soak/" target="_blank">cpp</a> 2012-03-20 15:18 <a href="http://www.cppblog.com/soak/archive/2012/03/20/168400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo 9.0 for AIX与Oracle 10 XA连接</title><link>http://www.cppblog.com/soak/archive/2012/03/20/168399.html</link><dc:creator>cpp</dc:creator><author>cpp</author><pubDate>Tue, 20 Mar 2012 07:15:00 GMT</pubDate><guid>http://www.cppblog.com/soak/archive/2012/03/20/168399.html</guid><wfw:comment>http://www.cppblog.com/soak/comments/168399.html</wfw:comment><comments>http://www.cppblog.com/soak/archive/2012/03/20/168399.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/soak/comments/commentRss/168399.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/soak/services/trackbacks/168399.html</trackback:ping><description><![CDATA[系统说明<br />
TUXEDO版本:9.0 安装目录 /opt/bea/tuxedo9.0 <br />
ORACLE版本:10.2.0.1 安装目录 /u01/app/oracle<br />
一、Tuxedo 9 for AIX的安装<br />
1、创建一个用户为Tuxedo，用户组为bea<br />
2、创建/opt/bea为tuxedo的安装目录，<br />
$mkdir /opt/bea<br />
$chown tuxedo.bea /opt/bea<br />
$chmod 770 /opt/bea<br />
#bootinfo -k<br />
64<br />
$ sh tuxedo9_aix53_64.bin -i console<br />
Preparing to install...<br />
WARNING: /tmp does not have enough disk space!<br />
Attempting to use /home/tuxedo for install base and tmp dir.<br />
Extracting the JRE from the installer archive...<br />
Unpacking the JRE...<br />
Extracting the installation resources from the installer archive...<br />
Configuring the installer for this system's environment...<br />
Launching installer...<br />
Preparing CONSOLE Mode Installation...<br />
===============================================================================<br />
Choose Locale...<br />
----------------<br />
-&gt;1- English<br />
CHOOSE LOCALE BY NUMBER: 1<br />
===============================================================================<br />
(created with InstallAnywhere by Zero G)<br />
-------------------------------------------------------------------------------<br />
<br />
<br />
===============================================================================<br />
Introduction<br />
------------<br />
<br />
BEA End User Clickwrap 001205<br />
Copyright (c) BEA Systems, Inc.<br />
All Rights Reserved.<br />
<br />
<br />
DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): y<br />
<br />
===============================================================================<br />
Choose Install Set<br />
------------------<br />
Please choose the Install Set to be installed by this installer.<br />
-&gt;1- Full Install<br />
2- Server Install<br />
3- Full Client Install<br />
4- Jolt Client Install<br />
5- ATMI Client Install<br />
6- CORBA Client Install<br />
7- Customize...<br />
ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS &lt;ENTER&gt; TO ACCEPT THE DEFAULT<br />
: 1<br />
<br />
===============================================================================<br />
Choose BEA Home<br />
---------------<br />
<br />
1- Create new BEA Home<br />
2- Use existing BEA Home<br />
Enter a number: 2<br />
1- /opt/bea<br />
Existing BEA Home directory: 1<br />
<br />
===============================================================================<br />
Choose Product Directory<br />
------------------------<br />
<br />
1- Modify Current Selection (/opt/bea/tuxedo9.0)<br />
2- Use Current Selection (/opt/bea/tuxedo9.0)<br />
Enter a number: 2<br />
<br />
===============================================================================<br />
Pre-Installation Summary<br />
------------------------<br />
Please Review the Following Before Continuing:<br />
Product Name:<br />
Tuxedo 9.0<br />
Install Folder:<br />
/opt/bea/tuxedo9.0<br />
Link Folder:<br />
/home/tuxedo<br />
Disk Space Information (for Installation Target): <br />
Required:  386,803,702 bytes<br />
Available: 2,625,392,640 bytes<br />
PRESS &lt;ENTER&gt; TO CONTINUE: <br />
<br />
===============================================================================<br />
Ready To Install<br />
----------------<br />
InstallAnywhere is now ready to install Tuxedo 9.0 onto your system at the <br />
following location:<br />
/opt/bea/tuxedo9.0<br />
PRESS &lt;ENTER&gt; TO INSTALL: <br />
<br />
===============================================================================<br />
Installing...<br />
-------------<br />
[==================|==================|==================|==================]<br />
[------------------|------------------|------------------|------------------]<br />
<br />
===============================================================================<br />
Configure tlisten Service<br />
-------------------------<br />
Password: tuxedo<br />
Verify Password: tuxedo<br />
Password Accepted! Press "Enter" to continue.<br />
<br />
===============================================================================<br />
SSL Installation Choice.<br />
------------------------<br />
Would you like to install SSL Support?<br />
-&gt;1- Yes<br />
2- No<br />
ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS &lt;ENTER&gt; TO ACCEPT THE DEFAULT:<br />
: 2<br />
<br />
<br />
===============================================================================<br />
License Installation Choice<br />
---------------------------<br />
Would you like to install your license now?<br />
-&gt;1- Yes<br />
2- No<br />
ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS &lt;ENTER&gt; TO ACCEPT THE DEFAULT:<br />
: 2<br />
<br />
<br />
===============================================================================<br />
Installation Complete<br />
---------------------<br />
Congratulations. Tuxedo 9.0 has been successfully installed to:<br />
/opt/bea/tuxedo9.0<br />
PRESS &lt;ENTER&gt; TO EXIT THE INSTALLER: <br />
安装完毕，需要把license文件重命名为lic.txt copy到$TUXDIR/udataobj/<br />
二、TUxedo 9 连接 Oracle 10g配置<br />
前提是在Tuxedo 9 上安装Oracle 10g client还有安装C编译器（不一定要用Visual Age C/C++ 7,这里我用的是pro c），设置Tuxedo用户能够通过sqlplus连接oracle数据库<br />
<br />
<br />
1、ORACLE的的配置<br />
sqlplus system@testcrm<br />
SQL&gt; @$ORACLE_HOME\rdbms\admin\xaview.sql<br />
SQL&gt;grant select on v$xatrans$ to public with grant option; <br />
SQL&gt;grant select on v$pending_xatrans$ to public with grant option; <br />
SQL&gt;grant select EMP to Scott<br />
SQL&gt;GRANT SELECT ON DBA_PENDING_TRANSACTIONS TO Scott;<br />
注：scott默认为lock，需要用alter user scott account unlock，解锁。<br />
<br />
2、设置Tuxedo用户的.profile文件<br />
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.TH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin<br />
/X11:/sbin:.<br />
TUXDIR=/opt/bea/tuxedo9.0<br />
APPDIR=/opt/bea/tuxedo9.0/test<br />
<br />
TUXCONFIG=$APPDIR/tuxconfig<br />
<br />
CCOMP=/usr/vac/bin<br />
PATH=$PATH:$TUXDIR/bin:$CCOMP<br />
:$ORACLE_HOME/bin<br />
export ORACLE_BASE=/home/oracle<br />
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/client_1<br />
export ORACLE_SID=ORCL<br />
export ORACLE_TERM=vt100<br />
export NLS_LANG="AMERICAN_America.ZHS16GBK"<br />
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data<br />
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/network/lib:/usr/lib:$ORACLE_HOME/lib:$TUXDIR/lib<br />
export PATH APPDIR TUXDIR TUXCONFIG CCOMP<br />
if [ -s "$MAIL" ]           # This is at Shell startup.  In normal<br />
then echo "$MAILMSG"        # operation, the Shell checks<br />
fi  <br />
<br />
3、修改$TUXDIR\udataobj目录下的RM文件<br />
把以Oracle_XA:xaosw:开头的一行用#注释掉，并加入一行：<br />
Oracle_XA:xaosw:-L${ORACLE_HOME}/lib ${ORACLE_HOME}/precomp/lib/cobsqlintf.o -lclntsh <br />
注意空格<br />
3、在TUXEDO用户下创建TMS文件:TMS_ORA10g，TUXEDO通过TMS_ORA10g与ORACLE数据库采用XA协议进行通讯<br />
buildtms -o $TUXAPP/TMS_ORA10g -r Oracle_XA<br />
<br />
4、配置 UBBCONFIG<br />
#ghts Reserved.<br />
#ident  "@(#) samples/atmi/simpapp/ubbsimple    $Revision: 1.5 $"<br />
#Skeleton UBBCONFIG file for the TUXEDO Simple Application.<br />
#Replace the &lt;bracketed&gt; items with the appropriate values.<br />
*RESOURCES<br />
IPCKEY          32770<br />
#DOMAINID       simpapp<br />
MASTER          simple<br />
MAXACCESSERS    100<br />
MAXSERVERS      50<br />
MAXSERVICES     100<br />
MODEL           SHM<br />
LDBAL           N<br />
*MACHINES<br />
"Server" LMID=simple<br />
APPDIR="/opt/bea/tuxedo9.0/test"<br />
TUXCONFIG="/opt/bea/tuxedo9.0/test/tuxconfig"<br />
TUXDIR="/opt/bea/tuxedo9.0"<br />
TLOGDEVICE = "/opt/bea/tuxedo9.0/test/TLOG"<br />
TLOGNAME=TLOG<br />
TLOGSIZE=100<br />
*GROUPS<br />
GROUP1 LMID=simple GRPNO=1 OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/scott+sqlNet=ORCL+SesTm=100+LogDir=.+MaxCur=5"<br />
TMSNAME="TMS_ORA10g" TMSCOUNT=2<br />
*SERVERS<br />
DEFAULT:<br />
CLOPT="-A"<br />
test SRVGRP=GROUP1 SRVID=1<br />
*SERVICES<br />
注意OPENINFO中P/scott/scott+sqlNet=ORCL需要根据实际情况自定义,还有机器名&#8220;server&#8221;，必须与uname -n显示的机器名一致<br />
使用<br />
$tmloadcf -y ubbsimple 生产TUXCONFIG文件<br />
<br />
<br />
5、用TMADMIN创建TLOG文件，TUXEDO用一个文件TLOG记录对数据库操作的日志。用于协调分布式数据库的提交与回滚。<br />
$tmadmin<br />
&gt;crdl -b 500 -z $TUXAPP/TLOG<br />
&gt;crlog -m simple<br />
&gt;q<br />
<br />
<br />
6、重命名下列文件，因为下列文件名与ORACLE带的文件名有冲突<br />
TUXEDO安装路径$TUXDIR/include目录下的下面文件<br />
把sqlca.h 改名为 sqlca.h.bak<br />
把sqlcode.h 改名为 sqlcode.h.bak <br />
把sqlda.h 改名为 sqlda.h.bak<br />
<br />
<br />
7、服务端的程序：test.pc，功能:根据客户端传的EMPNO到表EMP中取ENAME的值，并把它返回给客户端<br />
编写客户端程序: testcli.c 功能:调用TUXEDO服务端的服务TEST，取EMPNO=7900所对应的ENAME的值，并显示出来<br />
这里为没有写代码，因为我发现我到网搜索的测试代码都没法通过。<br />
五、编译服务端程序<br />
1.用ORACLE的PROC把test.pc 文件预编译成test.c文件<br />
$ proc test.pc include=$TUXDIR\include<br />
2.用buildserver把test.c编译成可执行文件，注意-r 后带的Oracle_XA 与RM文件中的一致。<br />
$ buildserver -o test -f test.c -r Oracle_XA -s TEST<br />
编译客户端程序<br />
$ buildclient -o testcli -f testcli.c<br />
<br />
8、用 tmboot &#8211;y 启动TUXEDO<br />
应能看到所有的SERVER都启动成功。这时，我们的服务端程序test 会自动与ORACLE数据库建立连接，并一直保持这个连接，<br />
直到TUXEDO系统或ORACLE数据库关闭。所以在我们的程序test.pc中看不到与数据库连接的语句，因为现在与数据库的连接由TUXEDO自动管理。<br />
如果TMS_ORA10g启动失败会在当前目录生成一个*.trc文件，记录失败的原因，同时TUXEDO的ULOG文件中也会有一些错误信息。可参考这些错误信息进行错误分析。<br />
$ tmboot -y<br />
Booting all admin and server processes in /opt/bea/tuxedo9.0/test/tuxconfig<br />
INFO: BEA Tuxedo, Version 9.0, 64-bit, Patch Level 002<br />
INFO: Serial #: 454493271161-2143645176821, Expiration NONE, Maxusers 5<br />
INFO: Licensed to: Shenzhen Edensoft Information<br />
Booting admin processes ...<br />
exec BBL -A :<br />
process id=409822 ... Started.<br />
Booting server processes ...<br />
exec TMS_ORA10g -A :<br />
process id=282686 ... Started.<br />
exec TMS_ORA10g -A :<br />
process id=401624 ... Started.<br />
exec test -A :<br />
process id=397522 ... Started.<br />
4 processes started.<br />
<br />
9、运行客户端程序<br />
运行后应能看到服务端返回的结果。<br />
$ testcli<br />
如果编写的程序没有问题，就能返回值<br />
<br />
<br />
<img src ="http://www.cppblog.com/soak/aggbug/168399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/soak/" target="_blank">cpp</a> 2012-03-20 15:15 <a href="http://www.cppblog.com/soak/archive/2012/03/20/168399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 10g及pro*c相关问题及解决方法</title><link>http://www.cppblog.com/soak/archive/2012/03/20/168394.html</link><dc:creator>cpp</dc:creator><author>cpp</author><pubDate>Tue, 20 Mar 2012 06:29:00 GMT</pubDate><guid>http://www.cppblog.com/soak/archive/2012/03/20/168394.html</guid><wfw:comment>http://www.cppblog.com/soak/comments/168394.html</wfw:comment><comments>http://www.cppblog.com/soak/archive/2012/03/20/168394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/soak/comments/commentRss/168394.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/soak/services/trackbacks/168394.html</trackback:ping><description><![CDATA[最近一直在进行ORACLE 10g和PRO*C的学习。<br />
其中遇到了不少的问题：<br />
现列于此，已备他用。<br />
<br />
[注：我的linux版本是RHEL 5,Oracle版本是10g]<br />
<br />
1、在ORACLE 10g 安装准备的过程中：缺少libXp.so.6依赖<br />
上网搜过不少文章，但是都不是很好的解决<br />
我自己摸索出一个解决方法：<br />
在RHEL5的安装盘中找到libXp-1.0.0-8.i386.rpm，进行安装后，便可解决。<br />
<br />
2、在ORACLE 10g 安装过程中Xlib: connection to ":0.0" refused by server<br />
<br />
Xlib: connection to ":0.0" refused by server<br />
Xlib: No protocol specified<br />
Error: Can't open display: :0.0<br />
<br />
以root用户登陆，在shell中运行<br />
[root@brady ~]# xhost local:oracle<br />
non-network local connections being added to access control list<br />
然后oracle身份就可以运行X程序了。<br />
<br />
man xhost中有这样一段<br />
A complete name has the syntax &#8216;&#8216;family:name&#8217;&#8217; where the families are as follows:<br />
inet      Internet host (IPv4)<br />
inet6     Internet host (IPv6)<br />
dnet      DECnet host<br />
nis       Secure RPC network name<br />
krb       Kerberos V5 principal<br />
local     contains only one name, the empty string<br />
si        Server Interpreted<br />
<br />
其中local那个是用来解决同一台机器的不同用户访问X的问题的。<br />
<br />
3.proc: error while loading shared libraries: libclntsh.so.10.1: <br />
cannot open shared object file: No such file or directory<br />
解决方法：<br />
在/etc/profile中添加<br />
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib;<br />
export LD_LIBRARY_PATH<br />
然后可以用source /etc/profile 生效一下<br />
<br />
4、PCC-S-02201错误<br />
<br />
在用proc进行编译的时候（proc iname=test.pc） 出错<br />
错误信息有很多：<br />
PCC-S-02201, Encountered the symbol "&lt;eof&gt;;" when expecting one of the following....<br />
发生 PCC-S-02201 错误时有两种解决办法：<br />
1)升级编译器<br />
2)修改$ORACLE_HOME/precomp/admin/pcscfg.cfg<br />
<p>&#160;
设置 parse=none</p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">sys_include</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(</span><span style="color: #000000; ">/</span><span style="color: #000000; ">app</span><span style="color: #000000; ">/</span><span style="color: #000000; ">oracle</span><span style="color: #000000; ">/</span><span style="color: #000000; ">product</span><span style="color: #000000; ">/</span><span style="color: #000000; ">db1</span><span style="color: #000000; ">/</span><span style="color: #000000; ">precomp</span><span style="color: #000000; ">/</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">,</span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">include,</span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">lib</span><span style="color: #000000; ">/</span><span style="color: #000000; ">gcc</span><span style="color: #000000; ">-</span><span style="color: #000000; ">lib</span><span style="color: #000000; ">/</span><span style="color: #000000; ">x86_64</span><span style="color: #000000; ">-</span><span style="color: #000000; ">redhat</span><span style="color: #000000; ">-</span><span style="color: #000000; ">linux</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3.2</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">/</span><span style="color: #000000; ">include,</span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">lib64</span><span style="color: #000000; ">/</span><span style="color: #000000; ">gcc</span><span style="color: #000000; ">-</span><span style="color: #000000; ">lib</span><span style="color: #000000; ">/</span><span style="color: #000000; ">x86_64</span><span style="color: #000000; ">-</span><span style="color: #000000; ">suse</span><span style="color: #000000; ">-</span><span style="color: #000000; ">linux</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3.3</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">/</span><span style="color: #000000; ">include,</span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">lib</span><span style="color: #000000; ">/</span><span style="color: #000000; ">gcc</span><span style="color: #000000; ">/</span><span style="color: #000000; ">x86_64</span><span style="color: #000000; ">-</span><span style="color: #000000; ">redhat</span><span style="color: #000000; ">-</span><span style="color: #000000; ">linux</span><span style="color: #000000; ">/</span><span style="color: #000000; ">4.1</span><span style="color: #000000; ">.</span><span style="color: #000000; ">1</span><span style="color: #000000; ">/</span><span style="color: #000000; ">include,</span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">lib64</span><span style="color: #000000; ">/</span><span style="color: #000000; ">gcc</span><span style="color: #000000; ">/</span><span style="color: #000000; ">x86_64</span><span style="color: #000000; ">-</span><span style="color: #000000; ">suse</span><span style="color: #000000; ">-</span><span style="color: #000000; ">linux</span><span style="color: #000000; ">/</span><span style="color: #000000; ">4.1</span><span style="color: #000000; ">.</span><span style="color: #000000; ">0</span><span style="color: #000000; ">/</span><span style="color: #000000; ">include)<br />
ltype</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">short</span><span style="color: #000000; "><br />
define</span><span style="color: #000000; ">=</span><span style="color: #000000; ">__x86_64__</span></div>
<br />
更正后的命令：proc iname=test.pc parse=none <br />
结果生成test.c文件<br />
<br />
5、error: sqlca.h: No such file or directory<br />
<br />
执行gcc -o test test.c时：<br />
test.c:152:19: error: sqlca.h: No such file or directory<br />
sqlca.h在$ORACLE_HOME/precomp/public/下<br />
更正后的命令：gcc -o test test.c -I $ORACLE_HOME/precomp/public<br />
<br />
6、undefined reference to `sqlcxt'<br />
<br />
执行5中的命令时出现错误如下：<br />
test.c:(.text+0x5e5): undefined reference to `sqlcxt'<br />
需要用到$ORACLE_HOME/lib/libclntsh.so<br />
<br />
故需加上 -L $ORACLE_HOME/lib -l clntsh<br />
更正后的命令为：<br />
gcc -o test test.c -I /home/oracle/oracle/product/10.2.0/db_1/precomp/public -L $ORACLE_HOME/lib -l clntsh<br />
OK!至此编译成功!<br />
<br />
但是这样写太麻烦<br />
<br />
7、error while loading shared libraries: $ORACLE_HOME/lib/libnnz10.so: <br />
cannot restore segment prot after reloc: Permission denied<br />
<br />
执行程序（./test）时提示错误：<br />
error while loading shared libraries: $ORACLE_HOME/lib/libnnz10.so: <br />
cannot restore segment prot after reloc: Permission denied<br />
相关的文章：<br />
Topic:<br />
Some Linux distributions with SELinux enabled may prevent IDL from running under the default security context. This TechTip is a workaround for CR#41937<br />
<br />
Discussion: <br />
Newer Linux distributions have enabled new kernel security extensions from the SELinux project at the NSA. These extensions allow finer-grained control over system security. However, SELinux also changes some default system behaviors, such as shared library loading, that can be problematic to third party programs.If you receive the error message "cannot restore segment prot after reloc: Permission denied" when launching IDL, then your SELinux configuration is preventing IDL from launching.<br />
<br />
To rectify this issue, you can either:<br />
（1）Change the default security context for IDL by issuing the command:<br />
chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so<br />
<br />
（2）Disabling SELinux altogether by setting the line<br />
SELINUX=disabled<br />
in your /etc/sysconfig/selinux file.<br />
<br />
我使用的解决办法：chcon -t texrel_shlib_t $ORACLE_HOME/lib/*.so<br />
<img src ="http://www.cppblog.com/soak/aggbug/168394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/soak/" target="_blank">cpp</a> 2012-03-20 14:29 <a href="http://www.cppblog.com/soak/archive/2012/03/20/168394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dmconfig 错误</title><link>http://www.cppblog.com/soak/archive/2012/03/20/168384.html</link><dc:creator>cpp</dc:creator><author>cpp</author><pubDate>Tue, 20 Mar 2012 05:13:00 GMT</pubDate><guid>http://www.cppblog.com/soak/archive/2012/03/20/168384.html</guid><wfw:comment>http://www.cppblog.com/soak/comments/168384.html</wfw:comment><comments>http://www.cppblog.com/soak/archive/2012/03/20/168384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/soak/comments/commentRss/168384.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/soak/services/trackbacks/168384.html</trackback:ping><description><![CDATA[重编译dmconfig时报错：<br />
dmloadcf dmconfig<br />
Initialize BDMCONFIG file: /home/rpttest/etc/bdmconfig [y, q] ? y<br />
CMDGW_CAT:1558: ERROR: Can't create _DM_RESOURCE_SECT<br />
问题解决方法很简单，因为有个文件重复了，重编译没有自动更新机制，因此要手动删掉下述文件：<br />
BDMCONFIG 然后再编译就行了。<br />
<img src ="http://www.cppblog.com/soak/aggbug/168384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/soak/" target="_blank">cpp</a> 2012-03-20 13:13 <a href="http://www.cppblog.com/soak/archive/2012/03/20/168384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>