<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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 閱讀(2523) 評論(0)  編輯  收藏 所屬分類: ZZtuxedo
    主站蜘蛛池模板: 成人毛片18女人毛片免费| 小日子的在线观看免费| 日本一道综合久久aⅴ免费| 色偷偷女男人的天堂亚洲网| 黄色永久免费网站| 亚洲综合伊人制服丝袜美腿| 欧美大尺寸SUV免费| 亚洲综合激情五月色一区| 日韩免费观看一级毛片看看| 精品久久久久久亚洲中文字幕 | 亚洲一级毛片免费观看| 亚洲视频小说图片| 国产在线观看麻豆91精品免费| 亚洲制服丝袜中文字幕| 德国女人一级毛片免费| 黄色a三级三级三级免费看| 亚洲国产午夜中文字幕精品黄网站 | 激情内射亚洲一区二区三区| 日韩免费观看一区| 亚洲成在人线电影天堂色| 成年女人看片免费视频播放器| 边摸边吃奶边做爽免费视频网站 | 久久亚洲春色中文字幕久久久| 1000部禁片黄的免费看| 中文无码亚洲精品字幕| 亚洲成?Ⅴ人在线观看无码| 怡红院免费的全部视频| 亚洲六月丁香六月婷婷色伊人| 国内精品免费视频自在线| 国产精品成人69XXX免费视频| 亚洲邪恶天堂影院在线观看| 成年大片免费视频| 抽搐一进一出gif免费视频| 亚洲视频一区在线| 免费在线精品视频| 69视频在线观看免费| 亚洲av无码专区在线观看亚| 亚洲成a人片在线观看日本| 最近免费中文字幕视频高清在线看| MM1313亚洲精品无码久久| 亚洲成在人天堂一区二区|