XA与oracle数据库连接.doc

上传人:自*** 文档编号:126211498 上传时间:2020-03-23 格式:DOC 页数:11 大小:47.45KB
返回 下载 相关 举报
XA与oracle数据库连接.doc_第1页
第1页 / 共11页
XA与oracle数据库连接.doc_第2页
第2页 / 共11页
XA与oracle数据库连接.doc_第3页
第3页 / 共11页
XA与oracle数据库连接.doc_第4页
第4页 / 共11页
XA与oracle数据库连接.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《XA与oracle数据库连接.doc》由会员分享,可在线阅读,更多相关《XA与oracle数据库连接.doc(11页珍藏版)》请在金锄头文库上搜索。

1、TUXEDO与ORACLE数据库的互连(来源:http:/) 前言 在银行、电信、金融等行业的大型计算机应用系统中,中间件的使用日益普及,中间件已与操作系统、数据库并列为三大基础软件。BEA Tuxedo作为最优秀的中间件产品,在我国的很多行业中广泛使用,本文通过一个简单的例子介绍如何在TUXEDO中访问ORACLE数据库。 在两层的C/S结构中,客户端直接访问数据库,当采用TUXEDO中间件后,形成三层结构。这时,客户端不直接访问数据库,而是改为调用中间件TUXEDO服务端上的服务,由TUXEDO服务端访问数据库,并把结果返回给客户端。TUXEDO服务端可以和ORACLE在同一台服务器上,也

2、可以在不同的机器上,如果在不同的机器上,在TUXEDO的服务端所在的机器要安装一个ORACLE的客户端。 TUXEDO服务端与ORACLE数据库连接有两种方式: 1、不通过XA接口直接互连。适用于整个系统只有一个数据库的情况。 2、通过XA接口互连,对整个系统有一个数据库或多个数据库都适用,建议采用,本文介绍这种互连的配置方法。 系统说明 TUXEDO版本:7.1 安装目录 d:tuxedo71 ORACLE版本:8.1.5 安装目录 d:ora81 操作系统: win2000 配置的步骤 一、ORACLE的的配置 1用internal用户(缺省的口令是oracle)进入SQLPLUS C:s

3、qlplus internal/oracle 注意:在9i数据库需要用如下方法进入E: sqlplus /nologSQL connect sys as sysdba请输入口令:已连接。2运行ORACLE的安装路径下的/rdbms/admin/xaview.sql SQL d:ora81rdbmsadminxaview.sql 9i数据库SQL E:oracleora90rdbmsadminxaview.sql3授权 SQLgrant select on v$xatrans$ to public with grant option; SQLgrant select on v$pending_x

4、atrans$ to public with grant option; grant select on pending_trans$ to public;grant select on dba_2pc_pending to public;grant select on dba_pending_transactions to public;4. 用system用户(缺省的口令是manager)连接并授权 SQLconnect system/manager SQLgrant select any table to public; 二、TUXEDO的配置 1修改TUXEDO安装路径的udataob

5、j目录下的RM文件,把以Oracle_XA:xaosw:开头的一行用#注释掉,并加入一行: Oracle_XA;xaosw;d:ora81rdbmsxaoraxa8.lib d:ora81precomplibmsvcorasql8.lib 8i: Oracle_XA;xaosw;Oracle_Homerdbmsxaoraxa8.lib Oracle_Homeprecomplibmsvcorasql8.lib9i: Oracle_XA;xaosw;Oracle_Homerdbmsxaoraxa9.lib Oracle_Homeprecomplibmsvcorasql9.lib如果是在UNIX环境

6、下,则为: Oracle_XA:xaosw:-L$ORACLE_HOME/lib -lclntsh 2. 在TUXEDO用户下创建TMS文件:TMS_ORA8i,TUXEDO通过TMS_ORA8i与ORACLE数据库采用XA协议进行通讯 buildtms -o d:tuxedo71binTMS_ORA8i -r Oracle_XA 注意:如果TUXEDO 服务端与ORACLE数据库不在同一台服务器上,可能会提示找不到 库文件oraxa8.lib和orasql8.lib,可到ORACLE数据库的服务端相应目录下把这两个文件拷到当前机器ORACLE的客户端下的对应目录下。 3. 配置 UBBCON

7、FIG (1)在*MACHINES节中增加: TLOGDEVICE = /home/oracle/temp/simpdb/TLOG TLOGNAME=TLOG TLOGSIZE=200 (2)改*GROUPS节的配置为:(scott/tiger为本数据库所采用的用户及口令,可根据需要更改) *GROUPS GROUP1 LMID=simple GRPNO=1 OPENINFO=Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=. TMSNAME=TMS_ORA8i TMSCOUNT=2 修改后的配置文件ubb内容如下

8、,用tmloadcf -y ubb重新生成tuxconfig IPCKEY 123456 DOMAINID simpapp MASTER simple MAXACCESSERS 100 MAXSERVERS 50 MAXSERVICES 100 MODEL SHM LDBAL N *MACHINES server LMID=simple APPDIR=d:test TUXCONFIG=d:testtuxconfig TUXDIR=d:tux71 TLOGDEVICE = d:testTLOG TLOGNAME=TLOG TLOGSIZE=100 *GROUPS GROUP1 LMID=simp

9、le GRPNO=1 OPENINFO=Oracle_XA:Oracle_XA+Acc=P/scott/*+SesTm=600+MaxCur=5+LogDir=. TMSNAME=TMS_ORA8i TMSCOUNT=2 *SERVERS DEFAULT: CLOPT=-A test SRVGRP=GROUP1 SRVID=1 *SERVICES 4.重命名下列文件,因为下列文件名与ORACLE带的文件名有冲突,所以要改名。 (1)TUXEDO安装路径include目录下的下面文件 把sqlca.h 改名为 sqlca.h.bbb 把sqlcode.h 改名为 sqlcode.h.bbb 把s

10、qlda.h 改名为 sqlda.h.bbb (2)重命名TUXEDO安装路径lib目录下的下面文件 把libsql.lib 改名为 libsql.lib.bbb 5.用TMADMIN创建TLOG文件,TUXEDO用一个文件TLOG记录对数据库操作的日志。用于协调分布式数据库的提交与回滚。 D:tmadmin crdl -b 500 -z d:testTLOG crlog -m simple q 三、服务端的程序:test.pc 功能:根据客户端传的EMPNO到表EMP中取ENAME的值,并把它返回给客户端 #include #include #include EXEC SQL INCLUDE

11、 sqlca; EXEC SQL BEGIN DECLARE SECTION; long al_empno=0; char ac_ename11=; EXEC SQL VAR ac_ename IS STRING(11); EXEC SQL END DECLARE SECTION; TEST(TPSVCINFO *rqst) /*接收客户端来的数据*/ al_empno = (FBFR32 *)rqst-data; EXEC SQL select ename into :ac_ename from EMP where empno=:al_empno; if(sqlca.sqlcode!=0)

12、userlog(select from EMP failure,sqlcode=%ld, sqlerr=%sn,sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc); strcpy(rqst-data,sqlca.sqlerrm.sqlerrmc); tpreturn( TPFAIL, 0, rqst-data, 0, 0 ); /*把取出的结果返回给客户端*/ strcpy(rqst-data,ac_ename); tpreturn( TPSUCCESS, 0, rqst-data, 0, 0 ); 四、编写客户端程序: testcli.c 功能:调用T

13、UXEDO服务端的服务TEST,取EMPNO=1000所对应的ENAME的值,并显示出来 #include #include atmi.h main(argc, argv) long reqlen=1024; char *reqbuf; /* 与TUXEDO服务端建立连接 */ if (tpinit(TPINIT *) NULL) = -1) (void) fprintf(stderr, Tpinit failedn); exit(1); /* 分配发送缓冲区*/ reqbuf = (char *)tpalloc(STRING,NULL,reqlen); if ( reqbuf = (char *)NULL) printf(tpalloc failedn); tpterm(); strcpy(reqbuf,1000); /*调用TUXEDO的服务TEST*/ if (tpcall(TEST, (char *)reqbuf, 0L, (char *)&reqbuf, (long *)&reqlen, 0 proc test.pc include=%TUXDIR%/include 2.用buildserver把test.c编译成可执行文件,注意-r 后带的Oracle_XA 与RM文件中的一致。 d:test buildser

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号