TUXEDO oracle xa_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3455 | 回复: 0   主题: TUXEDO oracle xa        下一篇 
fendy
注册用户
等级:新兵
经验:51
发帖:58
精华:0
注册:2011-7-21
状态:离线
发送短消息息给fendy 加好友    发送短消息息给fendy 发消息
发表于: IP:您无权察看 2014-10-10 11:36:45 | [全部帖] [楼主帖] 楼主

其实网上已经有很多关于Tuxedo通过XA连接Oracle的文章了,这里参考着前人的文档结合自己的实验整理一下,只是作为记录,怕自己过几天忘了 :P

实验环境:

Windows XP Professional SP2
Tuxedo 8.1 32-bit RP303
Oracle 9i (9.2.0.8) for Windows,Schema:scott


1. 安装Oracle Client

在运行Tuxedo的主机上,至少要安装Oracle Client。如果是开发用,那么在安装的时候还需要选择"Oracle Programmer",该组件包含了Pro*C所需的头文件以及LIB包

2. 配置TNS别名

在运行Tuxedo的主机上,配置TNS别名,连接到Oracle。配置好之后,最好使用sqlplus命令测试一下,配置是否正确。我的实验TNS别名是laborcl

3. 创建XA相关视图

使用system或者其他DBA用户登录到Oracle,运行${ORACLE_HOME}\rdbms\admin\xaview.sql,该SQL脚本创建2个视图:v$pending_xatrans$ 和 v$xatrans$

4. 给XA相关视图授权

使用system或者其他DBA用户登录到Oracle,进行授权,(一定要用internat 账户登陆才能建立视图)

grant select on DBA_PENDING_TRANSACTIONS to public;
grant select on v$pending_xatrans$ to public;
grant select on v$xatrans$ to public;


5. 配置RM文件

编辑文件${TUXDIR}\udataobj\RM。该文件中已经包含了一个For Oracle 7的配置,要使用其他版本的Oracle数据库,则需要自行配置。

Oracle 7 (RM自带):
Oracle_XA:xaosw:-L${ORACLE_HOME}/lib -lxa ${ORACLE_HOME}/lib/libsql.a -lora -lsqlnet -lcore -lnlsrtl -lcore ${ORACLE_HOME}/lib/osntab.o -lsqlnet -lcv6 -lora -lm -lsocket
Oracle 8i for NT:
Oracle_XA;xaosw;%ORACLE_HOME%RDBMSXAORAXA8.LIB %ORACLE_HOME%PRECOMPLIBMSVCORASQL8.LIB %ORACLE_HOME%PRECOMPLIBMSVCORASQX8.LIB %ORACLE_HOME%OCILIBMSVCOCI.LIB %ORACLE_HOME%OCILIBMSVCOCIW32.LIB
Oracle 8i for Unix:
Oracle_XA:xaosw:-L$/lib -lclntsh
Oracle 9i: Oracle_XA;xaosw;%ORACLE_HOME%\rdbms\XA\ORAXA9.LIB


其实RM文件主要是告诉buildtms命令在编译的时候要链接的库以及其他信息。这里需要注意的是在Windows平台上要使用分号(;)分隔,在Unix平台上要使用冒号(:)分隔,如果写错了,可能在buildtms的时候报出错误:

GP_CAT:1102: ERROR: Cannot find RM Oracle_XA in file d:\bea\tux81\tuxedo8.1\udataobj\RM


并且注意环境变量的引用符号,在Windows上是一对%%,在Unix上是$符号。

6. buildtms

使用buildtms命令: buildtms -o TMS_ORA9i -r Oracle_XA

其中-o参数是输出的TMS可执行程序,-r就是在RM文件中的名称,即第一个分号前面的部分。可以将TMS输出文件放到APPDIR的目录下。

7. 编写简单的UBB配置文件

*RESOURCES
IPCKEY 48800
DOMAINID jadedom1
MASTER jade1
MAXACCESSERS 100
MAXSERVERS 50
MAXSERVICES 100
MODEL SHM
LDBAL Y
SCANUNIT 10
SANITYSCAN 6
BLOCKTIME 8
MAXGTT 10
*MACHINES
DEFAULT:
APPDIR="d:\MyCode\ProC\"
TUXCONFIG="d:\MyCode\ProC\tuxconfig"
TUXDIR="d:\bea\tux81\tuxedo8.1"
MAXWSCLIENTS=10
TLOGDEVICE="d:\mycode\ProC\MyTLOGDevice"
TLOGNAME=MYTLOG
TLOGSIZE=200
YYUAN01 LMID=jade1
*GROUPS
GROUP1
LMID=jade1 GRPNO=1
TMSCOUNT=2
TMSNAME="TMS_ORA9i"
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=120+MaxCur=5+LogDir=.+SqlNet=laborcl"
CLOSEINFO="NONE"
*SERVERS
DEFAULT:
CLOPT="-A"
*SERVICES


其中GROUP段最重要的是OPENINFO串,Oracle几个版本的OPENINFO变化不大,其中P/scott/tiger分别是帐号和口令,如果要使用密文口令,则把口令部分填写为五个*,在tmloadcf的时候,要求手工输入:

D:\MyCode\ProC>tmloadcf -y ubbdemo
Password for OPENINFO (SRVGRP=GROUP1):


tmunloadcf出来:

OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/@@75980d546f4248f1@@+SesTm=120+MaxCur=5+LogDir=.+SqlNet=laborcl"


这里可以看出OPENINFO中口令已经被加密。

OPENINFO中的SqlNet为你在tuxedo所在主机上配置的连接Oracle的TNS别名

TMSCOUNT参数默认为3,最小2,最大10。

然后使用tmloadcf编译ubb配置文件

8. 创建TLOG Device及TLOG

如果忘了创建TLOGDevice及TLOG,那么在tmboot的时候会出现如下错误:

123357.YYUAN01!tmloadcf.2128.384.-2: 01-03-2008: Tuxedo Version 8.1, 32-bit
123357.YYUAN01!tmloadcf.2128.384.-2: CMDTUX_CAT:872: INFO: TUXCONFIG file d:\MyCode\ProC\tuxconfig has been updated
123906.YYUAN01!BBL.1936.3272.0: 01-03-2008: Tuxedo Version 8.1, 32-bit, Patch Level 303
123906.YYUAN01!BBL.1936.3272.0: LIBTUX_CAT:296: ERROR: _tlog_open: _gp_tblopen: VTOC not initialized
123906.YYUAN01!BBL.1936.3272.0: LIBTUX_CAT:319: ERROR: Log start cannot open tlog
123906.YYUAN01!BBL.1936.3272.0: LIBTUX_CAT:248: ERROR: System init function failed, Uunixerr =
123906.YYUAN01!BBL.1936.3272.0: CMDTUX_CAT:26: INFO: The BBL is exiting system
123906.YYUAN01!tmboot.2460.2916.-2: 01-03-2008: Tuxedo Version 8.1, 32-bit
123906.YYUAN01!tmboot.2460.2916.-2: CMDTUX_CAT:825: ERROR: Process BBL at jade1 failed with /T tperrno (TPESYSTEM - internal system error)
123906.YYUAN01!tmboot.2460.2916.-2: WARN: No BBL available on site jade1.
Will not attempt to boot server processes on that site.


使用tmadmin命令,此时由于Tuxedo尚未启动,所以可以看到No bulletin board exists. Entering boot mode.的信息

> crdl -b 1024 -z d:\mycode\ProC\MyTLOGDevice


创建TLOG Device,这里-z要和UBB文件中的MACHINE段的TLOGDEVICE保持一致。block通常设置为RESOUCE段的MAXGTT+50,并且不小于MACHINE段的TLOGSIZE设置

然后创建TLOG:

>crlog -m jade1


-m参数为主机的逻辑名称,即ubb中的MACHINE段的LMID。

9. 启动Tuxedo

tmboot -y


启动之后就可以在Oracle看到从TMS_ORA9i连接的TMSCOUNT个Session了。

proc db_server.pc include=$TUXDIR/include
buildserver -o db_server -f db_server.c -r Oracle_XA -f "-L$ORACLE_HOME/lib -lclntsh" -s TEST


10重命名下列文件,因为下列文件名与ORACLE带的文件名有冲突,所以要改名。

1.TUXEDO安装路径include目录下的下面文件

把sqlca.h 改名为 sqlca.h.bbb

把sqlcode.h 改名为 sqlcode.h.bbb

把sqlda.h 改名为 sqlda.h.bbb

2.重命名TUXEDO安装路径lib目录下的下面文件

把libsql.lib 改名为 libsql.lib.bbb

buildserver -o db_server -f db_server.c -r Oracle_XA -s TEST


附加一份ubbsimple文件

#cmfubb
*RESOURCES
IPCKEY   124888
#IPCKEY的值必须在32,768到262,143之间
DOMAINID   FUNDDOMAIN
#   DOMAINID指明TUXEDO的服务域名
MASTER   SITE
#   MASTER命名当前运行TUXEDO的服务主机的名称
MAXACCESSERS   100
MAXSERVERS       30
MAXSERVICES     40
MODEL       SHM
*MACHINES
DEFAULT:
TUXDIR= "C:\bea\tuxedo8.0 "
APPDIR= "D:\oaking\app1\bin "
TUXCONFIG= "D:\oaking\app1\bin\tuxconfig "
ULOGPFX= "D:\oaking\app1\logs\ulog "
TLOGDEVICE= "D:\oaking\app1\logs\tlog "
TLOGNAME=tlog
TLOGSIZE=200
ZHANGLEI   LMID=SITE
MAXWSCLIENTS=20
#HOUGANG为机器名,必须为大写字母(因为WINDOWS环境下只认大写的主机名)
#LMID为前面命名的MASTER主机名
#MAXWSCLIENTS为可以连接的最多客户端数
*GROUPS
GROUP1
LMID=SITE   GRPNO=1   #命名服务程序组名
TMSNAME=TMS_ORA   #命名本地主机标识   组号
TMSCOUNT=2
OPENINFO= "Oracle_XA:Oracle_XA+Acc=P/swbl_ds/swbl_ds+SesTm=600+MaxCur=200+LogDir=.+SqlNet=fund "
#ZFSALES为Oracle数据库用户名,swds为用户口令,FUNDDEV为Oracle本地命名服务名
CLOSEINFO= " "
GROUP2
LMID=SITE
GRPNO=2   TMSNAME=TMS_ORA
TMSCOUNT=2
OPENINFO= "Oracle_XA:Oracle_XA+Acc=P/swbl_ta/swbl_ta+SesTm=600+MaxCur=200+LogDir=.+SqlNet=fund "
CLOSEINFO= " "
JOLTGRP   LMID=SITE   GRPNO=3   OPENINFO=NONE
JREPGRP   LMID=SITE   GRPNO=4
RDMGRP
LMID=SITE   GRPNO=5
RGWGRP
LMID=SITE   GRPNO=6
*SERVERS
DEFAULT:
CLOPT= "-A "
DMADM       SRVGRP=RDMGRP   SRVID=1000
GWADM   SRVGRP=RGWGRP   SRVID=1000
GWTDOMAIN   SRVGRP=RGWGRP   SRVID=1500   REPLYQ=Y
WSL   SRVGRP=GROUP1   SRVID=1
CLOPT= "-A   --   -c   4096   -N   60   -n   //ZHANGLEI:4000 "
ts_business       SRVGRP=GROUP1   SRVID=100   MIN=1
ts_query         SRVGRP=GROUP1   SRVID=200   MIN=1
ts_lquery         SRVGRP=GROUP1   SRVID=300   MIN=1
ts_lfetch         SRVGRP=GROUP1   SRVID=400   MIN=1
ts_tabusiness     SRVGRP=GROUP2   SRVID=500   MIN=1
ts_taquery         SRVGRP=GROUP2   SRVID=600   MIN=1
JSL   SRVGRP=JOLTGRP   SRVID=900
CLOPT= "-A   --   -n   //172.16.4.177:2777   C:\bea\tuxedo8.0\udataobj\jolt\repository\jrepository "
JREPSVR   SRVGRP=JOLTGRP   SRVID=1000
CLOPT= "-A   --   -W   -P   C:\bea\tuxedo8.0\udataobj\jolt\repository\jrepository "
#服务程序名   服务程序所属组   服务程序标识号
*SERVICES




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论