jinfeng_wang

G-G-S,D-D-U!

BlogJava 首页 新随笔 联系 聚合 管理
  400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
http://blog.csdn.net/liwei_cmg/archive/2006/05/28/759301.aspx

http://blog.csdn.net/liwei_cmg/archive/2006/05/29/759803.aspx


Windows下Tuxedo的安装与配置-数据库

草木瓜 2005-5-18

一、准备数据库环境

  这里使用的是Linux+Oracle9的虚拟机数据库环境。本机配置Tuxedo服务器。在上篇无数据库配置
  基础上,配置Tuxedo服务器连接Oracle理解起来就相对简单了。这里采用XA方式连接数据库。

二、准备客户端,服务端的应用程序
 
  这里是自已写的代码。
 
  client.c
 
#include <stdio.h>
#include <atmi.h>  /* TUXEDO  Header File */

main(int argc, char *argv[])
{
 char *sendbuf;
 long sendlen=1024;
 int ret;

 
 if(argc != 2) {
  (void) fprintf(stderr, "args not exist\n");
  exit(1);
 }

 /* 与服务器建立连接 */
 if (tpinit((TPINIT *) NULL) == -1)
 {
  (void) fprintf(stderr, "Tpinit failed\n");
  exit(1);
 }

 /* 分配发送缓冲 */
 sendbuf = (char *) tpalloc("STRING", NULL, sendlen);
 if (sendbuf== (char *)NULL)
 {
  (void) fprintf(stderr,"Error allocating send buffer\n");
  tpterm();
  exit(1);
 }

 (void) strcpy(sendbuf, argv[1]);
 (void) fprintf(stdout, "InputValue: %s\n", argv[1]);

 /* 向服务发送请求 */
 ret = tpcall("DBSERV", (char *)sendbuf, 0L, (char **)&sendbuf, &sendlen, 0L);
 if(ret == -1) {
  (void) fprintf(stderr, "Can't send request to service DBREAD\n");
  (void) fprintf(stderr, "Tperrno = %d\n", tperrno);
  tpfree(sendbuf);
  tpterm();
  exit(1);
 }

 (void) fprintf(stdout, "Returned string is: %s\n", sendbuf);
 
 /* Free Buffers & Detach from System/T */
 tpfree(sendbuf);
 tpterm();
 return(0);
}

  server.pc 这里用到了ProC的一些方法
 
#include <stdio.h>
#include <ctype.h>
#include <atmi.h> /* TUXEDO Header File */
#include <userlog.h> /* TUXEDO Header File */

EXEC SQL INCLUDE sqlca;

EXEC SQL BEGIN DECLARE SECTION;

VARCHAR ora_no[2];
VARCHAR ora_value[10];
EXEC SQL END DECLARE SECTION;

DBREAD(TPSVCINFO *rqst)
{

 strcpy(ora_no.arr,(char *)rqst->data);
 ora_no.len=strlen(ora_no.arr);
 ora_no.arr[ora_no.len]='\0';
 
 userlog("ERRSRV: %s",ora_no.arr);
 EXEC SQL select name into :ora_value from tuxedo_test where id=:ora_no;
 if(sqlca.sqlcode!=0)
 {
  userlog("ERRSRV: select name from tuxedo_test where id=, sqlcode=%ld \n",sqlca.sqlcode);
  tpreturn(TPFAIL, 0, rqst->data, 0L, 0);
 }

 strcpy(rqst->data,ora_value.arr);
 tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0);
}

三、编译客户端,服务端代码

  buildclient -o client -f client.c -v
 
  对pc文件,须首先编译为c,然后再编译为服务。在proc编译的过程,会出现link错误,这是因为tuxedo本身
  带的sqlca.h与oracle proc冲突,将C:\bea\tuxedo9.0\include\sqlca.h改名即可。
  proc server.pc include=%TUXDIR%/include
  buildserver -o server -f server.c -r Oracle_XA -s DBREAD -v

 
四、配置Tuxedo的RM文件

  本地Tuxedo9.0安装路径为C:\bea\tuxedo9.0。
  打开C:\bea\tuxedo9.0\udataobj路径下的rm文件。找到Oracle_XA:这句,可以注释掉,然后增加下面内容。
  Oracle_XA;xaosw;E:\oracle\ora92\rdbms\XA\ORAXA9.LIB E:\oracle\ora92\precomp\lib\orasql9.lib
  注:本机如果没有装服务版的Oracle,可能找不到对应库文件,可从服务器端复制过来即可。
 
  这两个lib是用于编译tms文件的,tuxedo通过TMS_ORA9i与Oracle数据库进行XA通讯。
  修改完rm文件,运行命令buildtms -o C:\bea\tuxedo9.0\bin\TMS_ORA9i -r Oracle_XA编译生成TMS_ORA9i。
 
 
五、修改ubbconfig文件

  在*GROUP下添加下面语句。liwei/liwei@linux是连接数据库的tns配置。TMSCOUNT=2表示启动两个TMS服务。
 
  OPENINFO="Oracle_XA:Oracle_XA+Acc=P/liwei/liwei+SqlNet=linux+SesTm=600+MaxCur=5+LogDir=."
  TMSNAME="TMS_ORA9i" TMSCOUNT=2
 
  另外在*MACHINES添加日志的处理,语句如下。
  TLOGDEVICE = "F:\Liwei\Tuxedo\dbread\TLOG"
 TLOGNAME = TLOG
 TLOGSIZE = 100
 
 因为编译的服务文件名是server,*SERVERS下改为server
 因为生成的服务是DBREAD,所以*SERVICES下也要改成DBREAD。
 
 修改后文件如下:
  
#Liwei

*RESOURCES
IPCKEY  123456
DOMAINID liweiapp
MASTER  lw
MAXACCESSERS 5
MAXSERVERS 5
MAXSERVICES 5
MODEL  SHM
LDBAL  N

*MACHINES
LWYM
 LMID = lw
 TUXDIR = "C:\bea\tuxedo9.0"
 TUXCONFIG = "F:\Liwei\Tuxedo\dbread\tuxconfig"
 APPDIR = "F:\Liwei\Tuxedo\dbread"
 
 TLOGDEVICE = "F:\Liwei\Tuxedo\dbread\TLOG"
 TLOGNAME=TLOG
 TLOGSIZE = 100
 #ULOGPFX = "F:\Liwei\Tuxedo\dbread\ULOG"
 
*GROUPS
GROUP1 LMID=lw GRPNO = 1
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/liwei/liwei+SqlNet=linux+SesTm=600+MaxCur=5+LogDir=."
TMSNAME="TMS_ORA9i" TMSCOUNT=2

*SERVERS
DEFAULT:
  CLOPT="-A"
server SRVGRP=GROUP1 SRVID=1
*SERVICES
DBREAD

  编译日志后不能立刻tmboot运行,需要先用tmadmin创建TLOG。方法如下:
 
  C:\>tmadmin
  >crdl -b 500 -z F:\Liwei\Tuxedo\dbread\TLOG
  >crlog -m lw

  注:lw是ubbconfig里面的LMID。
 
六、Oracle的设置
 
  Linux:
 
  sqlplus /nolog
  conn sys/*** as sysdba
 
  执行xaview.sql 创建v$xatrans$和 v$pending_xatrans$两个视图
  @...../rdbms/admin/xaview.sql
 
  并把两个视图的select权限授给连接用户如liwei。
 
  grant select on v$xatrans$ to liwei with grant option;
  grant select on v$pending_xatrans$ to liwei with grant option;
 
  最后
 
  grant select any table to liwei;
 
 
七、运行tmboot

  你会发现有个TMS_ORA9i启动不起来,没关系,将*RESOURCES max系列的设大点,tmshutdown,并且
  结束掉tuxipc,重新编译config然后tmboot就ok了。
 
  client 1
  执行就会返回数据库结果了。

=========================

Windows下Tuxedo的安装配置-数据库补充

草木瓜 2006-5-28

一、序

《Windows下Tuxedo的安装配置-数据库》一文中介绍了通过XA方法连接数据库,步骤比较多,当然也可以采
用另一种方法,在服务程序里面直接写入连接数据库的命令。

二、服务端程序

小作修改

EXEC SQL BEGIN DECLARE SECTION;
VARCHAR ora_no[2];
VARCHAR ora_value[10];
VARCHAR ora_cn[30];               //新增
EXEC SQL END DECLARE SECTION;

EXEC SQL INCLUDE sqlca;


//新增以下内容,tpsvinit,tpsrdone是tuxedo默认构造和析构函数。
tpsvrinit()
{
  strcpy(ora_cn.arr,"liwei/liwei@windb");
  ora_cn.len = strlen(ora_cn.arr);
  ora_cn.arr[ora_cn.len]='\0';
  EXEC SQL CONNECT :ora_cn;
  return(0);
}
tpsrvdone()
{
  EXEC SQL COMMIT WORK RELEASE;
}

三、配置文件

注释掉与XA相关项,由于客户端与服务器是同一台机器,WSL要不要无所谓。这里也注释掉。

*GROUPS

GROUP1 LMID=lw GRPNO = 1

#OPENINFO="Oracle_XA:Oracle_XA+Acc=P/liwei/liwei+SqlNet=linux+SesTm=600+MaxCur=5+LogDir=."
#TMSNAME="TMS_ORA9i" TMSCOUNT=2


*SERVERS
server SRVGRP=GROUP1 SRVID=1

#WSL SRVGRP=GROUP1  SRVID =300
#CLOPT="-A -- -n //192.168.98.166:5898 -d/dev/tcp -m1 -M5 -x 10"

*SERVICES
DBREAD

四、编译服务端的命令

修改如下:

proc server.pc include=%TUXDIR%\include
buildserver -o server -f server.c -s DBREAD -v

如果在编译过程中出现error LNK2001: unresolved external symbol _sqlcxt类似的错误,那是因为
找不到orasql9.lib文件。设置环境变量lib,加上e:\oracle\ora92\precomp\lib,修改命令:

buildserver -o server -f server.c -s DBREAD -v -l orasql9.lib

五、编译config文件,运行tmboot

六、补充说明

Tuxedo配置一般如下步骤:

1 设置环境变量。
2 准备服务端客户端程序。
3 服务端客户端编译(buildclient buildserver)。
4 准备tuxedo的config文件。
5 编译config文件(tmload)。
6 如果config文件包含日志,必须通过tmadmin生成日志文件(crdl,crlog),如出错须将原日志文件删除。
7 启动tuxedo服务(tmboot)。

posted on 2009-05-26 14:00 jinfeng_wang 阅读(2497) 评论(0)  编辑  收藏 所属分类: ZZtuxedo

只有注册用户登录后才能发表评论。


网站导航: