<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

    準備bankapp的文件和資源

    ⑴.設置環境變量

                    samples\atmi\bankapp\nt下的bankvar文件改名為bankvar.bat,復制到父目錄,然后對其進行編輯:

    @echo off

    rem %Tuxedo%Tuxedo安裝目錄,APPDIRbankapp所在的目錄

    set APPDIR=%TUXDIR%\samples\atmi\bankapp

    rem消息所在目錄

    set NLSPATH=%TUXDIR%\locale\C

    rem邏輯塊大小,數據庫管理員必須設置

    set BLKSIZE=512

    rem 被缺省使用的數據庫名字

    set DBNAME=bankdb

    rem 指示數據庫為共享模式還是私有模式

    set DBPRIVATE=no

    rem 指示數據庫使用的IPC值,必須與ubbconfig中的IPCKEY不同

    set DIPCKEY=80953

    rem tmloadcf使用的環境文件

    set ENVFILE=%APPDIR%\ENVFILE

    rem mc, viewc, tmloadcf使用的字段表文件

    set FIELDTBLS=Usysflds,bankflds,creditflds

    rem 查找字段表文件的目錄

    set FLDTBLDIR=%TUXDIR%\udataobj;%APPDIR%

    rem 數據庫使用的通用設備列表

    set FSCONFIG=%APPDIR%\bankdl1

    rem MENU中使用的網絡地址

    set NADDR=

    rem 網絡設備名

    set NDEVICE=

    rem MENU腳本中使用的網絡監聽器地址

    set NLSADDR=

    rem 事務日志設備,必須和ubbconfigMACHINES

    rem LMID站點的TLOGDEVICE參數相同

    set TLOGDEVICE=%APPDIR%\TLOG

    rem /T提供全部信息的二進制配置文件

    set TUXCONFIG=%APPDIR%\tuxconfig

    rem 用戶日志文件,必須和ubbconfig中的MACHINES

    rem LMID站點的ULOGPFX參數相同

    set ULOGPFX=%APPDIR%\ULOG

    rem RUNME.sh使用的系統名

    set UNAME=

    rem viewc, tmloadcf使用的view文件列表

    set VIEWFILES=aud.vv

    set VIEWFILES32=mib_views,tmib_views

    rem 查找view文件的目錄

    set VIEWDIR=%TUXDIR%\udataobj;%APPDIR%

    set VIEWDIR32=%TUXDIR%\udataobj;%APPDIR%

    rem 指定Q設備

    set QMCONFIG=%APPDIR%\qdevice

    set PATH=%TUXDIR%\bin;%PATH%

    rem 指出Visual C++安裝的目錄

    set MSDEV=G:\Program Files\Microsoft Visual Studio\VC98

    set PATH=%PATH%;%MSDEV%\bin

    set INCLUDE=%INCLUDE%;%MSDEV%\include;%MSDEV%\mfc\include

    set LIB=%LIB%;%MSDEV%\lib;%MSDEV%\mfc\lib

    ⑵.Build bankapp的應用程序

                    bankapp5個服務器:ACCTBALBTADDTLRXFER。用一個命令就可以完成編譯任務:

    G:\Tuxedo\samples\atmi\bankapp\nmake bankapp.nt

    若要手工完成編譯,首先要將EC文件編譯成C文件:

    G:\Tuxedo\samples\atmi\bankapp\ESQLC ACCT.EC

    生成FML緩沖區頭文件:

    G:\Tuxedo\samples\atmi\bankapp\mkfldhdr bankflds eventflds

    生成目標文件:

    G:\Tuxedo\samples\atmi\bankapp\CL /c ACCT.c appinit.c util.c

    生成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

    OPTIONS LAN,MIGRATE

    MODEL MP

    LDBAL Y

    ##SECURITY ACL

    #

    *MACHINES

    <SITE1’s uname> LMID=SITE1

    TUXDIR="<TUXDIR>"

    APPDIR="<APPDIR>"

    ENVFILE="<APPDIR>/ENVFILE"

    TLOGDEVICE="<APPDIR>/TLOG"

    TLOGNAME=TLOG

    TUXCONFIG="<APPDIR>/tuxconfig"

    TYPE="<machine type>"

    ULOGPFX="<APPDIR>/ULOG"

    <SITE2’s uname> LMID=SITE2

    TUXDIR="<TUXDIR>"

    APPDIR="<APPDIR>"

    ENVFILE="<APPDIR>/ENVFILE"

    TLOGDEVICE="<APPDIR>/TLOG"

    TLOGNAME=TLOG

    TUXCONFIG="<APPDIR>/tuxconfig"

    TYPE="<machine type>"

    ULOGPFX="<APPDIR>/ULOG"

    #

    *GROUPS

    #

    # Group for Authentication Servers

    #

    Group for Application Queue (/Q) Servers

    #

    ##QGRP1 LMID=SITE1 GRP=102

    ## TMSNAME=TMS_QM TMSCOUNT=2

    ## OPENINFO=”TUXEDO/QM:<APPDIR>/qdevice:QSP_BANKAPP”

    #

    # Group for Event Broker Servers

    #

    ##EVBGRP1 LMID=SITE1 GRPNO=104

    DEFAULT: TMSNAME=TMS_SQL TMSCOUNT=2

    BANKB1 LMID=SITE1 GRPNO=1

    OPENINFO="TUXEDO/SQL:<APPDIR>/bankdl1:bankdb:readwrite"

    BANKB2 LMID=SITE2 GRPNO=2

    OPENINFO="TUXEDO/SQL:<APPDIR>/bankdl2:bankdb:readwrite"

    *NETWORK

    SITE1 NADDR="<network address of SITE1>"

    NLSADDR="<network listener address of SITE1>"

    SITE2 NADDR="<network address of SITE2>"

    NLSADDR="<network listener address of SITE2>"

    ②.UID:公告欄中IPC結構所有者有效的用戶ID,在ubbmp中,所有機器上的UID必須相同,為了避免引起混亂,輸入Tuxedo系統的所有者IDGIDUID類似。SITE1’s name:機器名,在UNIX下為uname –n的結果。machine type:一個字符串,在網絡環境下,用于標識一類計算機,兩臺計算機通信時,Tuxedo系統檢查它們的機器類型,如果不同,在它們之間傳遞的數據就需要進行編碼和解碼操作,以便兩臺機器都能夠識別它們。SITE2 name:第二臺機器的機器名。OPENINFO:一個只有Tuxedo資源管理器才能識別的格式化字符串,若使用其它的資源管理器如Oracle,必須對它進行修改,以滿足要求。Network address of SITE1SITE1BRIDGE進程網絡監聽器完整地址, BRIDGE是一個維護著和其它參與計算的節點之間虛電路的系統進程,以便這些節點之間可以進行消息傳遞。Network listener address of SITE1SITE1tlisten進程監聽器地址。Network address of SITE2Network listener address of SITE2同上。

    ③.要使應用程序具有口令特征,在ubbshmubbmp中的RESOURCE節中加入:

    SECURITY APP_PW

    ⑺.創建二進制配置文件和事務日志文件

                    如果你在SHM模式下運行,你就沒有必要在其它機器上創建tlisten進程和事務日志。

    %APPDIR%下運行bankar.cmd設置環境變量;

    ①.加載配置文件

    tmloadcf –y ubbmpTUXCONFIG只需要在Master機上安裝,當用tmboot啟動應用程序時,它就會自動地傳給其它機器。如果指定了SECURITYtmloadcf就會提示你輸入應用程序的口令,可以長達30個字符。當客戶進程試圖加入應用程序時,就要求提供應用程序口令、用戶名、用戶口令。

    ②.創建事務日志文件TLOG

    TLOGTuxedo系統管理全局事務使用的事務日志文件,在應用程序啟動之前,在運行應用程序的每一臺機器上必須創建一個TLOG入口,TLOG文件本身在Master機上創建。bankapp提供了一個叫crtlog的腳本,它創建了一個設備列表和一個TLOG文件,設備列表使用bankvar.cmd中的TLOGDEVICE變量來創建。要創建TLOG文件和設備列表,在Master機上運行:

    crtlog –m

    在生產環境中,設備列表名和數據庫中用到的設備列表名必須相同。

    在所有其它機器上,不要指定-m開關,當系統啟動時,每一臺非Master機上的BBL會創建日志。如果你使用了一個non-XA的資源管理器,就沒有必要創建事務日志。

    ⑻.在每臺機器上創建遠程服務連接

                    tlisten是一個監聽進程,它為tmboot之類的進程提供了遠程服務連接。它必須在網絡中的每一臺機器上安裝,并與配置文件中NETWORK段的描述一致。推薦用如下命令啟動另一個tlisten進程:

                    tlisten –l nlsaddr

                    nlsaddr值必須和配置文件中NLSADDR參數值一致,tlisten使用的logfileTuxedo系統其它log文件分開了。一個日志文件可以被多個tlisten進程使用,缺省文件名是:%TUXDIR%\udataobj\tlog

    7.運行bankapp

    ⑴.如何準備啟動應用程序

    啟動bankapp之前,檢查你的機器是否還有足夠的IPC資源,方法是:

    tmloadcf –c ubbshm

    ⑵.如何啟動bankapp

    bankvar

    tmboot –y

    你可以只boot配置文件中的一部分服務,如指定-A選項可以只啟動管理進程。

    ⑶.如何填充數據庫

    使用populate腳本創建填充數據庫,gendata創建了10個支行,30個出納員,200個賬號,pop.out保存了創建過程。

    ⑷.如何測試bankapp的服務

    audit {-t|-a} [branch_id]

    auditcon

    使用driver程序(UNIX平臺下使用,NT平臺下使用gt.cmd),缺省情況下,它生成300個事務,你可以通過-n指定事務數:
    driver –n1000

    ⑸.如何關閉bankapp

    posted on 2009-05-23 23:33 jinfeng_wang 閱讀(1568) 評論(0)  編輯  收藏 所屬分類: ZZLinuxtuxedo
    主站蜘蛛池模板: 国产成人无码免费网站| 亚洲中文字幕无码久久精品1| 亚洲第一网站免费视频| 免费观看91视频| 久久午夜夜伦鲁鲁片免费无码| 久久最新免费视频| 两性色午夜视频免费播放| 久久久久久噜噜精品免费直播| 在线视频网址免费播放| a级毛片视频免费观看| 最近免费中文字幕MV在线视频3 | 亚洲美女在线国产| 亚洲精品国自产拍在线观看| 久久亚洲AV无码西西人体| 亚洲人成人无码网www电影首页| 日韩亚洲一区二区三区| 亚洲va久久久噜噜噜久久狠狠 | 国产高清在线免费视频| 四虎影视精品永久免费网站| 亚洲美女高清一区二区三区 | 日本一区二区三区日本免费| 国产成人免费全部网站| 亚洲伊人成无码综合网 | 亚洲国产美国国产综合一区二区| 亚洲人成网www| 日韩亚洲产在线观看| 亚洲精品国产精品| 一级美国片免费看| 国产成人精品免费久久久久| 18禁止观看免费私人影院| 蜜桃精品免费久久久久影院| 亚洲国产精品13p| 亚洲av女电影网| 亚洲久悠悠色悠在线播放| 免费人成大片在线观看播放电影| 国产一级黄片儿免费看| 亚欧人成精品免费观看| 国产精品视_精品国产免费| 亚洲色大成网站www永久一区| 亚洲黄色在线网站| 日本亚洲欧美色视频在线播放|