tuxedo應用程序開發指南6

生成ACCT.exe文件:

buildserver -r TUXEDO/SQL –s OPEN_ACCT –s CLOSE_ACCT

-o ACCT.exe

f ACCT.obj -f appinit.obj -f util.obj

r指示哪一個資源管理器的訪問庫將被編譯到acct.exe文件中,本例為TUXEDO/SQL

⑶.編輯bankappmake文件

NT平台下,bankapp提供的make文件為bankapp.nt,使用前需要檢查一下環境變數TUXDIRAPPDIR的設置。另外一個要注意的地方就是資源管理器參數RM,預設使用TUXEDO/SQL,因為Tuxedobankapp提供資料庫服務。如果使用了其它資料庫產品,需要把RM參數設置成%TUXDIR%\udataobj\RM文件列表中的某一個值。

⑷.創建bankapp的資料庫

bankapp使用了TUXEDO/SQL作為資源管理器,它是一個XA-compliant的資源管理器,XA是事務管理器和資源管理器之間的介面。在單處理機SHM模式和多處理機MP模式下創建資料庫的方式是不同的,在SHM模式下,創建步驟如下:

設置環境變數:    G:\Tuxedo\samples\atmi\bankapp\bankvar

執行批處理文件:G:\Tuxedo\samples\atmi\bankapp\crbank

crbank.cmd調用crbankdb三次,每次調用前改變一些環境變數,執行完成後,同一台機器上有三個數據文件,這樣,就可以在單機上模擬網路環境。在MP模式下創建資料庫的步驟如下:

設置環境變數:G:\Tuxedo\samples\atmi\bankapp\bankvar

在一台機器上創建資料庫:G:\Tuxedo\samples\atmi\bankapp\crbankdb

在其它機器上,修改bankvar.cmd文件中的資料庫通用設備列表FSCONFIG,修改ubbmp配置文件中的相應部分,再進行創建操作。

⑸.準備一個XA-compliant資源管理器

若不使用TUXEDO/SQL作為資源管理器,而使用其它的XA-compliant資源管理器,需要作很多修改:修改bankvar.cmd、修改bankapp服務、修改bankapp.nt文件、修改crbankcrbankdb文件、修改配置文件。

修改bankvar.cmd文件。下面是TUXEDO/SQL資源管理器的配置,已經不能用了,你需要根據實際的資料庫系統對這些值進行修改:

BLKSIZE=512

DBNAME=bankdb

DBPRIVATE=no

DIPCKEY=80953

FSCONFIG=${APPDIR}/bankdl1

修改bankapp的服務。bankapp中所有資料庫訪問都是通過ESQL來完成的,如果你的新資源管理器支持SQL,這就沒什麼問題。appinit.c中包含了打開和關閉資料庫的tpopen()tpclose()

修改bankapp.nt。將RM參數修改為新的資源管理器,確保RM文件中有如下入口:

$TUXDIR/udataobj/RM

如果必要,改變SQL編譯器和它的選項,源文件的擴展名不一定是EC,你需要指預編譯的命令及參數,以ORACLE為例,使用PROCPC文件預編譯成C文件。

修改crbankcrbankdb。注意crbankdb創建的SQL語句在新資源管理器中是否能接受。修改配置文件。在GROUPS節中,為TMSNAMEOPENM指定一個適當的值參數值,這個值要讓資源管理器能夠識別。

⑹.如何將bankappOralce8進行集成

Oracle8XA兼容的資源管理器,要實現和bankapp的集成,按如下步驟進行:

①.編輯bankvar.cmd文件,修改如下環境變數的值:

ORACLE_HOMEOracle8的安裝目錄

ORACLE_SIDOracle的系統ID

BLK_SIZE:邏輯塊的尺寸

DBNAME:預設資料庫

DBPRIVATE:指示資料庫是以共享模式還是私有模式打開(yes/no)

FSCONFIG:資料庫使用的通用設置列表

PATH=%PATH%;%ORACLE_HOME%\bin

INCLUDE=%ORACLE_HOME%\rdbms80\xa;

%ORACLE_HOME%\pro80\c\include

PLATFORM=inwnt40

LIB=%TUXDIR%\lib %ORACLE_HOME%\pro80\lib\msvc;

%ORACLE_HOME%\rdbms80\xa;

②.運行bankvar.cmd

③.編輯%TUXDIR%\udataobj\RM文件,追加如下行:

Oracle_XA;xaosw;%ORACLE_HOME%\pro80\lib\msvc\sqllib80.lib

%ORACLE_HOME%\RDBMS80\XA\xa80.lib

    如果Oracle伺服器在網路的另一端,把那台機器映射到驅動器,如F

    把如下行追加到%TUXDIR%\udataobj\RM文件中:

Oracle_XA;xaosw;f:\orant\pro80\lib\msvc\sqllib80.lib

f:\orant\RDBMS80\XA\xa80.lib

    刪除RM文件中以前的Oracle_XA入口

④.為Oracle8創建事務管理伺服器

cd %APPDIR%

buildtms -r Oracle_XA -o TMS_ORA

⑤.編輯nt\bankapp.mak文件

RM=Oracle_XA

ORACLE_LIB=$(ORACLE_HOME)\PRO80\LIB

RMNAME=Oracle_XA

SQLPUBLIC=$(ORACLE_HOME)\PRO80\C\INCLUDE

ORACLE_DIR=$(ORACLE_HOME)\bin

.ec.c節中,編輯從ECC的創建規則,不再使用ESQLC了,而使用PROC

set TUXDIR=$(TUXDIR) & $(ORACLE_DIR)\proc80

mode=ansi release_cursor=yes

include=$(SQLPUBLIC) include=$(INCDIR)

$(SQL_PLATFORM_INC) -c iname=$*.ec

        .c.obj節中,編輯規則,作出下設置:

$(CC) -c $(CFLAGS) $(SQLPUBLIC) $(INCLUDE) $*.c

⑥.使用OracleSQL命令更新EC文件

⑦.將nt\bankapp.mak複製到%APPDIR%下,然後Make一下:

    copy nt\bankapp.mak %APPDIR%

    nmake –f bankapp.mak

⑧.編輯nt\ubbshm文件:

USER_ID=0

GROUP_ID=0

UNAME_SITE1=執行hostname返回值,用大寫形式

TUXDIR=bankvar.cmd中的相同

APPDIR=bankvar.cmd中的相同

⑨.在配置文件的GROUPS節中,輸入如下改變:

TMSNAME=TMS_ORA

BANKB1 GRPNO=1

OPENINFO=”Oracle_XA:Oracle_XA+Acc=P/user1/PaSsWd1+SesTm=0+LogDir=.”

[

Oracle_XA + required fields:

Acc=P/oracle_user_id/oracle_password

SesTm=Session_time_limit (maximum time a transaction can be inactive)

optional fields:

LogDir=logdir (where XA library trace file is located)

MaxCur=maximum_#_of_open cursors

SqlNet=connect_string (if Oracle exists over the network)

(eg. SqlNet=hqfin@NEWDB indicates the database with sid=NEWDB accessed at host hqfin by TCP/IP)

]

BANKB2 GRPNO=2

OPENINFO=”Oracle_XA:Oracle_XA+Acc=P/user2/PaSsWd2+SesTm=0+LogDir=.”

BANKB3 GRPNO=3

OPENINFO=”Oracle_XA:Oracle_XA+Acc=P/user3/PaSsWd3+SesTm=0+LogDir=.”

⑩.執行其它操作:

    創建二進位配置文件:tmloadcf –y nt/ubbshm

    Master機上創建TLOG設備和設備列表:crtlog –m

啟動資料庫伺服器,啟動Tuxedo系統:tmboot –y,確保資料庫中存在V%XATRANS%視圖,如果不存在,以系統用戶登錄Oracle,然後執行%ORACLE_HOME%\RDBMS80\ADMIN\XAVIEW.SQL,授予使用XA庫的Oracle用戶Select許可權。

Oracle8中創建bankapp使用的資料庫對象。Oracle8安裝以後,會創建一個示例資料庫,bankapp可以使用這個資料庫。編輯crbank-ora8.sql文件,內容如下:

WHENEVER OSERROR EXIT ;

/* 獲取system用戶的口令 */

PROMPT

PROMPT

PROMPT — Some of the operations require “system” user privileges

PROMPT — Please specify the Oracle “system” user password

PROMPT

ACCEPT syspw CHAR PROMPT ‘system passwd:’ HIDE ;

CONNECT system/&syspw ;

SHOW user ;

PROMPT

/* 在預設資料庫中為bankapp創建一個新的表空間 */

DROP TABLESPACE bank1

INCLUDING CONTENTS

CASCADE CONSTRAINTS;

PROMPT

PROMPT

PROMPT — Will create a 3MB tablespace for bankapp ;

PROMPT ——– Please specify full pathname below for Datafile ;

PROMPT ——– Ex: %ORACLE_HOME%/dbs/bankapp.dbf

PROMPT

ACCEPT datafile CHAR PROMPT ‘Datafile:’ ;

CREATE TABLESPACE bank1

DATAFILE ‘&datafile’ SIZE 3M REUSE

DEFAULT STORAGE (INITIAL 10K NEXT 50K

MINEXTENTS 1 MAXEXTENTS 120

PCTINCREASE 5)

ONLINE;

/* 創建一個名叫user1的用戶 */

DROP USER user1 CASCADE;

PROMPT Creating user “user1”

CREATE USER user1 IDENTIFIED by PaSsWd1

DEFAULT TABLESPACE bank1

QUOTA UNLIMITED ON bank1 ;

GRANT CREATE SESSION TO user1 ;

GRANT CREATE TABLE TO user1 ;

CONNECT user1/PaSsWd1 ;

SHOW user ;

PROMPT Creating database objects for user “user1” ;

PROMPT Creating table “branch” ;

CREATE TABLE branch (

branch_id NUMBER NOT NULL PRIMARY KEY,

balance NUMBER,

last_acct NUMBER,

last_teller NUMBER,

phoneCHAR(14),

address CHAR(60)

)

STORAGE (INITIAL 5K NEXT 2K

MINEXTENTS 1 MAXEXTENTS 5 PCTINCREASE 5) ;

PROMPT Creating table “account” ;

CREATE TABLE account (

account_id NUMBER NOT NULL PRIMARY KEY,

branch_id NUMBER NOT NULL,

ssn CHAR(12) NOT NULL,

balance NUMBER,

acct_type CHAR,

last_name CHAR(20),

first_name CHAR(20),

mid_init CHAR,

phoneCHAR(14),

address CHAR(60)

)

STORAGE (INITIAL 50K NEXT 25K

MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 5) ;

PROMPT Creating table “teller” ;

CREATE TABLE teller (

teller_id NUMBER NOT NULL PRIMARY KEY,

branch_id NUMBER NOT NULL,

balance NUMBER,

last_name CHAR(20),

first_name CHAR(20),

mid_init CHAR

)

STORAGE (INITIAL 5K NEXT 2K

MINEXTENTS 1 MAXEXTENTS 5 PCTINCREASE 5) ;

PROMPT Creating table “history” ;

CREATE TABLE history (

account_id NUMBER NOT NULL,

teller_id NUMBER NOT NULL,

branch_id NUMBER NOT NULL,

amount NUMBER

)

STORAGE (INITIAL 400K NEXT 200K

MINEXTENTS 1 MAXEXTENTS 5 PCTINCREASE 5) ;

SQL PLUS中執行上面這段SQL語句:

SQL*plus> start $APPDIR/ crbank-ora8.sql

填充資料庫:

    nt\populate

    Oracle資料庫中生成事務

        driver

    運行bankapp的客戶程序:

        run

    關閉Tuxedo應用程序:

        tmshutdown -y

⑹.如何編輯配置文件

配置文件定義了應用程序如何運行。bankapp有兩個配置文件:ubbshmubbmpubbshm定義了在單機環境下如何運行bankappubbmp定義了在網路環境下如何運行bankapp

①.打開並編輯ubbmp,將<…>替換成際值。對於ubbmpNETWORK節必須替換

*RESOURCES

IPCKEY 80952

UID <user id from id(1)>

GID <group id from id(1)>

PERM 0660

MAXACCESSERS 40

MAXSERVERS 35

MAXSERVICES 75

MAXCONV 10

MAXGTT 20

MASTER SITE1,SITE2

SCANUNIT 10

SANITYSCAN 12

BBLQUERY 180

BLOCKTIME 30

DBBLWAIT 6

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營