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

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

为记录,怕自己过几天忘了 

实验环境:

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,进行授权

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了。




赞(0)    操作        顶端 
koei123
注册用户
等级:大校
经验:4196
发帖:16
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei123 加好友    发送短消息息给koei123 发消息
发表于: IP:您无权察看 2014-9-29 14:26:49 | [全部帖] [楼主帖] 2  楼

如果使用XA的话,Tuxedo服务端的代码也需要配合:

就是通用的

EXEC SQL CONNECT

要换成

tpopen()



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