生成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
⑶.編輯bankapp的make文件
在NT平台下,bankapp提供的make文件為bankapp.nt,使用前需要檢查一下環境變量TUXDIR、APPDIR的設置。另外一個要注意的地方就是資源管理器參數RM,缺省使用TUXEDO/SQL,因為Tuxedo為bankapp提供數據庫服務。如果使用了其它數據庫產品,需要把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文件、修改crbank和crbankdb文件、修改配置文件。
修改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為例,使用PROC將PC文件預編譯成C文件。
修改crbank和crbankdb。注意crbankdb創建的SQL語句在新資源管理器中是否能接受。修改配置文件。在GROUPS節中,為TMSNAME和OPENM指定一個適當的值參數值,這個值要讓資源管理器能夠識別。
⑹.如何將bankapp和Oralce8進行集成
Oracle8是XA兼容的資源管理器,要實現和bankapp的集成,按如下步驟進行:
①.編輯bankvar.cmd文件,修改如下環境變量的值:
ORACLE_HOME:Oracle8的安裝目錄
ORACLE_SID:Oracle的系統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節中,編輯從EC到C的創建規則,不再使用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
⑥.使用Oracle的SQL命令更新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有兩個配置文件:ubbshm和ubbmp。ubbshm定義了在單機環境下如何運行bankapp,ubbmp定義了在網絡環境下如何運行bankapp。
①.打開並編輯ubbmp,將<…>替換成際值。對於ubbmp,NETWORK節必須替換
*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…