亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 我遇到和別人的帖子相同的問題,Tuxedo連接Oracle的問題。 [打印本頁]

作者: simhare    時間: 2009-06-27 06:01
標(biāo)題: 我遇到和別人的帖子相同的問題,Tuxedo連接Oracle的問題。
=======================================
原貼描述:
===========================================
客戶程序如下:我oracle10只有一個數(shù)據(jù)庫是orcl
oracleclient.c
#include <stdio.h>
#include <atmi.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
        char *sendbuf,*recvbuf;
        long sendlen,recvlen;
        int ret;
        if(argc!=2){
                printf("please call the format as : oracleclient %s \n",argv[0]);
                (void) fprintf(stderr, "Usage: oracleclient string\n");
                exit(1);
        }
        if(tpinit((TPINIT *)NULL)==-1){
                (void)fprintf(stderr,"failed to init!\n");
                exit(1);
        }
        sendlen=strlen(argv[1]);
        if((sendbuf=(char *)tpalloc("STRING",NULL,sendlen+1))==-1){
                (void)fprintf(stderr,"failed to allocate memory to sendbuf!\n");
                tpterm();
                exit(1);
        }
        if((recvbuf=(char *)tpalloc("STRING",NULL,5*sendlen+1))==-1){
                (void)fprintf(stderr,"failed to allocate memory for recvbuf!\n");
                tpterm();
                exit(1);
        }
        strcpy(sendbuf,argv[1]);
        ret = tpcall("ORACLES", (char *)sendbuf, 0, (char **)&recvbuf, &recvlen, (long)0);
        if(ret==-1){
                (void) fprintf(stderr, "Can't send request to service oracleserver\n");
                (void) fprintf(stderr, "Tperrno = %d, %s\n, ", tperrno, tpstrerror(tperrno));
                tpfree(sendbuf);
                tpfree(recvbuf);
                tpterm();
                exit(1);
        }
        (void)fprintf(stdout,"the return result is :%s \n",recvbuf);
        tpfree(sendbuf);
        tpfree(recvbuf);
        tpterm();
        return 0;
}


服務(wù)器server程序如下:
oracleserv.pc

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <atmi.h>
#include <userlog.h>
exec sql include sqlca;

tpsvrinit(int argc,char *argv[])
{
        if(tpopen()==-1){
                printf("error to connect to oracle!\n");
        }
        printf("the oracleserv successfully to connect to db2 in linux!\n");
        return 0;
}

ORACLES(TPSVCINFO *rqst)
{
        exec sql begin declare section;
                char db_string[50];
        exec sql end declare section;
        int i=0;
        for(i=0;i<rqst->len-1;i++){
                db_string=rqst->data;
        }
        exec sql delete from system.hmptest where username=:db_string;
        if(sqlca.sqlcode!=0){
                printf("delete error!\n");
                tpreturn(TPFAIL,0,NULL,0,0);
        }
        tpreturn(TPSUCCESS,0,rqst->data,0L,0);
}

tpsvrdone()
{
        if(tpclose()==-1){
                printf("oracleserv close error!\n");
                return;
        }
        printf("oracleserv disconnected!\n");
        return;
}

編譯完全通過:
proc oracleserv.c parse=full include=/home/oracle/oracle/product/10.2.0/db_1/precomp/public include=/home/tuxedo/bea/tuxedo9.1/include

buildserver -o oracleserv -f "oracleserv.c -I/home/oracle/oracle/product/10.2.0/db_1/precomp/public" -r Oracle_XA -s ORACLES

沒有錯誤。。正常運(yùn)行
buildclient -o oracleclient -f oracleclient.c

但是那個exec sql delete from system.hmptest where username=:db_string;,..為什么不能執(zhí)行
我的RM文件里用戶密碼是system/oracle

在sqlplus 里system/oracle能完全操作hmptest數(shù)據(jù)表。。。

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

[ 本帖最后由 simhare 于 2009-6-29 11:09 編輯 ]
作者: ziggler    時間: 2009-06-27 06:01
一試便知。
作者: simhare    時間: 2009-06-27 06:03
標(biāo)題: 回復(fù) #1 simhare 的帖子
有人說"在tpsvrinit()中打開數(shù)據(jù)庫!"
============================
怎么"在tpsvrinit()中打開數(shù)據(jù)庫!"?
我是這么做的:
tpsvrinit(int argc,char *argv[])
{

      EXEC SQL BEGIN DECLARE SECTION;
                char  *uid="pw/pw@wilson";
                float salary;
        EXEC SQL END DECLARE SECTION;   
        EXEC SQL CONNECT :uid;
        if(tpopen()==-1){
                printf("error to connect to oracle!\n");
        }
        printf("the oracleserv successfully to connect to db2 in linux!\n");
        return 0;
}
這樣可以嗎?
作者: simhare    時間: 2009-06-28 11:17
標(biāo)題: 回復(fù) #3 ziggler 的帖子
---------------
試了很多方法,都不通。一直是用tmboot時就failed。
---------------
作者: simhare    時間: 2009-06-28 11:20
標(biāo)題: 回復(fù) #1 simhare 的帖子
------------------
后來我選擇了XA的通訊方式:
=================
請問在OpenInfo一節(jié)的sqlNet=Orcl
這里的Orcl是別人的配置,我應(yīng)該怎么找出自己的配置呢?
===========
作者: simhare    時間: 2009-06-28 11:23
標(biāo)題: 回復(fù) #1 simhare 的帖子
用sysdba帳戶登陸,
SQL> conn / as sysdba
SQL> @$ORACLE_HOME/rdbms/admin/xaview.sql
DROP VIEW v$xatrans$
*
ERROR at line 1:
ORA-00942: table or view does not exist

DROP VIEW v$pending_xatrans$
*
ERROR at line 1:
ORA-00942: table or view does not exist

View created.
View created.

SQL> grant select on v$xatrans$ to public with grant option;

Grant succeeded.

SQL> grant select on v$pending_xatrans$ to public with grant option;

Grant succeeded.

SQL> grant select any table to public;

Grant succeeded.
==================
以上這些我都做過了。
作者: simhare    時間: 2009-06-28 11:26
標(biāo)題: 回復(fù) #1 simhare 的帖子
二、TUXEDO的配置

1、修改$TUXDIR/udataobj/RM文件
把原來的以O(shè)racle_XA: xaosw:開頭的屏蔽掉、
添加Oracle_XA: xaosw: -L${ORACLE_HOME}/lib -lclntsh

2、創(chuàng)建TMS文件:TMS_ORA10g,TUXEDO通過TMS_ORA10g與ORACLE數(shù)據(jù)庫采用XA協(xié)議進(jìn)行通訊

buildtms -o $TUXDIR\bin\TMS_ORA10g -r Oracle_XA
====================
以上這些,我也做過了,不過我用的用戶是oracle,所以我的buildtms命令是:buildtms /home/oracle/simpapp/TMS_ORA10 -r Oracle_XA

[ 本帖最后由 simhare 于 2009-6-28 11:28 編輯 ]
作者: simhare    時間: 2009-06-28 11:36
標(biāo)題: 回復(fù) #1 simhare 的帖子
*GROUPS
GROUP1
        LMID=xamh
        GRPNO=1
        OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+sqlNet=ORCL+SesTm=100+LogDir=..+MaxCur=5"
        CLOSEINFO=""
        TMSNAME="TMS_ORA10g"
===================
這一節(jié),我用的是OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=..+MaxCur=5"
===================
我不知道sqlNet=ORCL應(yīng)該怎么設(shè)置
作者: simhare    時間: 2009-06-28 11:38
標(biāo)題: 回復(fù) #1 simhare 的帖子
===============
忘了說我的環(huán)境:
CentOS+Oracle11g+Tuxedo10
===============
作者: simhare    時間: 2009-06-28 11:39
標(biāo)題: 回復(fù) #1 simhare 的帖子
=========
做過這個的很少嗎?怎么沒有多少人呢?
哪位高手做過,給各提示吧?謝謝。!
作者: simhare    時間: 2009-06-28 11:42
標(biāo)題: 回復(fù) #1 simhare 的帖子
我愿意用我所有的分?jǐn)?shù)求助這個問題,各位做過的
Tuxedo和Oracle在同一臺機(jī)器上采用XA方式通訊的高手們請不吝賜教。
作者: simhare    時間: 2009-06-28 11:43
標(biāo)題: 回復(fù) #1 simhare 的帖子
每次都報這種錯誤:
===============
exec TMS_ORA10g -A :
        Failed.
exec TMS_ORA10g -A :
        Failed.
exec TMS_ORA10g -A :
        Failed.
=================
作者: simhare    時間: 2009-06-28 11:45
標(biāo)題: 回復(fù) #12 simhare 的帖子
LogDir:你已經(jīng)指明了是當(dāng)前目錄(.) ,那么(..)就是當(dāng)前目錄的上級目錄了?
===========================
作者: simhare    時間: 2009-06-28 11:47
標(biāo)題: 回復(fù) #13 simhare 的帖子
WSL SRVGRP=GROUP1 SRVID=2
CLOPT="-A -- -n //128.128.128.14:6689 -d /dev/tcp"
=================
那么在ubb中我的CLOPT應(yīng)該怎么指定呢?
作者: simhare    時間: 2009-06-28 11:49
標(biāo)題: 回復(fù) #14 simhare 的帖子
遠(yuǎn)程數(shù)據(jù)庫:在openinfo中再加入SqlNet=設(shè)置名就可以了。這樣的寫法是針對Oracle來說的。
==============
那我現(xiàn)在是Tuxedo和Oracle在同一臺機(jī)器上,我其實(shí)是不需要寫SqlNet=設(shè)置名的吧?
那么CLOPT="-A -- -n //128.128.128.14:6689 -d /dev/tcp"
這個呢?
作者: simhare    時間: 2009-06-28 11:54
標(biāo)題: 回復(fù) #15 simhare 的帖子
有人說:
============
OPENINFO里面的東西是傳給數(shù)據(jù)庫的
數(shù)據(jù)庫會提供標(biāo)準(zhǔn)的xa_open()函數(shù),給tuxedo調(diào)用,而openinfo里面的東西就是參數(shù)。
使用XA接口后,所有的數(shù)據(jù)庫事務(wù)相關(guān)的操作(如open, close, begin trans, commit, rollback), 都用xa_()系列函數(shù),所以不需要自己寫EXEC SQL。
一般來說server會有個tpsvrinit()函數(shù),在里面可以tpopen(),然后這個tuxedo的打開數(shù)據(jù)庫函數(shù)會根據(jù)你配置的openinfo信息調(diào)用xa_open()處理打開數(shù)據(jù)庫。
作者: simhare    時間: 2009-06-28 11:57
標(biāo)題: 回復(fù) #16 simhare 的帖子
這次真的快要瘋了,我已經(jīng)弄了3天了。
。。。。。。。。。。。。。。
作者: simhare    時間: 2009-06-28 18:27
標(biāo)題: 回復(fù) #17 simhare 的帖子
tuxedo的OpenInfo節(jié)究竟應(yīng)該怎么配置呢?
作者: simhare    時間: 2009-06-28 18:31
標(biāo)題: 回復(fù) #1 simhare 的帖子
------------------
只見說說的,沒見有做成功的,
我懷疑Tuxedo根本就沒法與Oracle連接.
作者: simhare    時間: 2009-06-28 18:33
標(biāo)題: 回復(fù) #19 simhare 的帖子
大家來抽我吧:

----------
特大新聞啊!!!!!!!!!!
Tuxedo連不上Oracle了,從來就沒人真正連上過,大家都是騙人的哦!!!!
作者: simhare    時間: 2009-06-28 18:36
標(biāo)題: 回復(fù) #20 simhare 的帖子
--------------
我快要人格分裂了,Tuxedo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

怎么配置啊,網(wǎng)上至少找到了3、4種方案了--------在排除了無數(shù)垃圾之后。

當(dāng)然我現(xiàn)在也在制造垃圾,但是我快要爆炸了。。。。。。!
作者: simhare    時間: 2009-06-28 18:38
標(biāo)題: 回復(fù) #21 simhare 的帖子
----------------
我只想知道有沒有人用Tuxedo聯(lián)上Oracle過???????????
----------------
只要有人聯(lián)上過,我就再繼續(xù)努力找出原因,否則我自殺好了。。。。。。。。。。。
作者: simhare    時間: 2009-06-28 18:39
標(biāo)題: 回復(fù) #22 simhare 的帖子
---------
要出人命了,都沒人回一下??????
作者: yulihua49    時間: 2009-06-29 08:56
原帖由 simhare 于 2009-6-27 06:01 發(fā)表
100分求助這個問題!
TUXEDO服務(wù)器和ORACLE服務(wù)器在同一臺機(jī)器上
------------------
后來我選擇了XA的通訊方式:

=================
請問在OpenInfo一節(jié)的sqlNet=Orcl
這里的Orcl是別人的配置,我應(yīng)該 ...

誰說沒連過?我們一直在用。這是我們最古典的連法,現(xiàn)在的高級多了。

int tpsvrinit(int argc, char *argv[])
{
        EXEC SQL WHENEVER SQLERROR GOTO sql_error;
        EXEC SQL CONNECT :uid;

        userlog("Connected to Oracle");
        return 0;

sql_error:
        userlog("Processing error: %d, %s\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);

        EXEC SQL ROLLBACK WORK RELEASE;
        return -1;
}

void tpsvrdone()
{
        EXEC SQL WHENEVER SQLERROR CONTINUE;
        EXEC SQL COMMIT WORK RELEASE;
}


作者: dosix    時間: 2009-06-30 09:35
原帖由 simhare 于 2009-6-28 18:36 發(fā)表
--------------
我快要人格分裂了,Tuxedo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

怎么配置啊,網(wǎng)上至少找到了3、4種方案了--------在排除了無數(shù)垃圾之后。

當(dāng)然我現(xiàn)在也在制造垃圾,但是我快要爆炸了。。。。。。!


先弄清楚Tuxedo連接數(shù)據(jù)庫有哪些方式,具體的含義,再做配置開發(fā)也不遲。
看的出你混淆了兩種連接方式,包括XA和程序直連方式。
XA是使用數(shù)據(jù)庫XA接口,利用tpopen+tmS來連接數(shù)據(jù)庫。
程序直連相當(dāng)于你自己寫一個ProC程序連接數(shù)據(jù)庫,和Tuxedo的TMS/XA 這塊無關(guān)了。

更多Tuxedo專業(yè)問題,請?jiān)L問 www.tuxdev.cn
作者: simhare    時間: 2009-07-02 11:09
嗯,XA和程序直連方式。
-----------
我采用的是前者,XA是不需要tpsvrinit和tpsvrdone的,不知道我說的對不對?




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2