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

其实网上已经有很多关于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)    操作        顶端 
联动大白
注册用户
等级:新兵
经验:56
发帖:0
精华:0
注册:2015-5-27
状态:离线
发送短消息息给联动大白 加好友    发送短消息息给联动大白 发消息
发表于: IP:您无权察看 2016-5-28 2:00:00 | [全部帖] [楼主帖] 2  楼

为了方便大家阅读,我对文章中错误号来解释一下吧!

Error Id: CMDTUX_CAT:26

Title: INFO: The BBL is exiting system

Description:

The BBL process has been shut down.


Error Id: CMDTUX_CAT:825

Title: ERROR: Process a.out at lmid failed with /T tperrno (tperrno_val)

Description:

This message prints out a BEA TUXEDO system /T error that has occurred in the process a.out while booting on the machine lmid.


Error Id: CMDTUX_CAT:87

Title: ERROR: MAXSERVICES parameter must be > 0 and < 32767

Description:

The value for MAXSERVICES as specified in the RESOURCES section of the UBBCONFIG file, is less than or equal to 0 or greater than or equal to 32768. MAXSERVICES must be greater than 0 and less than 32768.


Error Id: CMDTUX_CAT:872

Title: INFO: TUXCONFIG file filename has been updated

Description:

While executing tmloadcf, the input UBBCONFIG file has been processed and an existing TUXCONFIG file or device has been updated with the information.


Error Id: GP_CAT:1102

Title: ERROR: Cannot find RM rmname in file filename

Description:

While searching $TUXDIR/udataobj/RM, an entry for the specified RM, rmname, could not be found.


Error Id: LIBTUX_CAT:248

Title: ERROR: System init function failed, Uunixerr = errno_val

Description:

The server has failed to join the application.


Error Id: LIBTUX_CAT:296

Title: ERROR: funcname: VTOC not initialized

Description:

An attempt to access the VTOC has failed because the existing VTOC has not been properly initialized.


Error Id: LIBTUX_CAT:319

Title: ERROR: Log start cannot open tlog

Description:

An error occurred attempting to open the transaction log with read and write access.


也许你已明白,但对一个人有用也是我存在的理由!^_^ By:持之以恒的大白

-- 来自: 北京联动北方科技有限公司



赞(0)    操作        顶端 
一个路过的
版主
等级:中校
经验:1975
发帖:34
精华:2
注册:2015-9-2
状态:离线
发送短消息息给一个路过的 加好友    发送短消息息给一个路过的 发消息
发表于: IP:您无权察看 2016-5-28 23:55:01 | [全部帖] [楼主帖] 3  楼

正想学习



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