天天看點

Tuxedo的配置管理簡要說明(轉)

Tuxedo的配置管理簡要說明

Tuxedo的配置管理簡要說明1

一、Tuxedo基本指令2

二、UBB檔案配置說明3

三、資料庫XA設定7

3.1 ORACLE XA7

3.2 SYBASE XA8

3.3 INFORMIX XA8

四、Tuxedo多機方式配置要點9

4.1啟動tlisten9

4.2 ubb檔案配置9

4.3管理11

五、用JOLT連接配接Tuxedo和Weblogic11

5.1在Tuxedo上安裝、配置JOLT Server11

5.2 配置Weblogic Server 6.x12

5.3 Example setup13

六、TUXEDO動态配置13

6.1  用tmadmin修改配置13

6.2  用tmconfig更改TUXCONFIG(UBBCONFIG)14

一、Tuxedo基本指令

#1.設定環境變量TUXDIR,APPDIR,TUXCONFIG,LANG(跟OS相關),LD_LIBRARY_PATH(跟OS相關)

#2.編譯ubb文本生成二進制配置檔案:tmloadcf –y ubbconfig

#3.所有機器上運作tlisten,具體見文檔中NETWORK一節

#4.啟動tmboot –y

#5.關閉tmshutdown –y

參數:

-A在所有機器上啟動/關閉管理的Server程序

-M隻在MASTER機器上啟動/關閉管理的Server程序

-isrvid  啟動/關閉某個server id指定的Server程序

-ggrpname啟動/關閉某個server group名字指定的Server Group

-S啟動/關閉所有應用伺服器(LMID)

-sserver-name 啟動/關閉某個server名字指定的Server程序

-llmid option 在指定的機器上啟動/關閉所有TMS程序和應用伺服器(LMID)

-Tgrpname 啟動/關閉指定的server group中所有的TMS程序

-Blmid 在指定的機器上啟動/關閉BBL程序

-ecommand 指定一個程式可以當在MASTER機器上啟動任何一個程序失敗時執行

-c計算出目前UBB配置的Tuxedo啟動最少要占用的系統IPC資源

#用tmunloadcf > generated.ubb 可以得出目前配置得UBB檔案所有得參數值(沒有設定的有預設值)

#用tmloadcf –c或tmboot –c可以計算出目前UBB配置的Tuxedo啟動最少要占用的系統IPC資源。

二、UBB檔案配置說明

UBB配置檔案分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若幹節。DEFAULT表示該節中所有對象共有的預設屬性。

*RESOURCES

#RESOUCES節提供整個系統的基本參數。

IPCKEY55555 (32767-262143)

#進行IPC通訊的key值

DOMAINIDunicom  

#DOMAIN的ID值

MASTERunicom1,unicom2

#指定DOMAIN中的管理主機為unicom1,運作過程中unicom1若出現問題,管理主機切換至unicom2

MAXACCESSERS  1000

#這裡該值表示整個系統中單個機器上可以通路TUXEDO的最多的Client和Server的總數(可以通路 BBL的最大程序數),應大于license使用者數+server數(副本應記入)。該字段會被MACHINE部分的MAXACCESSERS覆寫。

#系統核心參數中SEMAPHORE的數目(SEMMNS)要大于這裡的MAXACCESSERS數目,而ipc消息個數(MSGMAX)應大于MAXACCESSERS數+所有帶REPLYQ的SERVER的個數。

MAXSERVERS80  

#最大的server數(副本應記入)

MAXSERVICES200

#最大的service數(多個server重複記入)

MAXGTT20

#系統最多的并發的全局交易數目

MODELMP  

#表示cluster方式,否則為SHM

OPTIONSLAN,MIGRATE  

#多機cluster方式時必須指定為LAN方式,MIGRATE表示可以以組為機關進行機器間SERVER的遷移。

LDBALY  

#允許負載均衡

SCANUNIT10

#SCANUNIT 是BBL在所有服務請求中定期掃描以尋找逾時的交易和被阻塞德調用和德間隔時間(秒)。這個參數指定BBL掃描間隔時間的基本機關, 它會影響在tpbegin中指定的交易逾時時間和用BLOCKTIME指定的請求阻塞逾時時間的精确程度。SANITYSCAN, BBLQUERY, DBBLWAIT, BLOCKTIME等參數都是SCANUNIT的倍數,而不是實際秒數。而作為時間機關SCANUNIT必須是5的倍數,并且滿足0<SCANUNIT<60。

SANITYSCAN12

#SANITYSCAN的值指定在每個MACHINE上BBL自動檢測所有程序的時間間隔,以SCANUNIT為單元。預設值滿足(SCANUNIT*SANITYSCAN)約為120秒。

DBBLWAIT 2

#DBBLWAIT的值指定DBBL掃描BBL時等待所有BBL應答的最大時間,以SCANUNIT為單元,即超過DBBLWAIT*SCANUNIT(秒)就逾時。每一次DBBL将請求轉發給它的BBL時,BBL會在請求傳回結果之前先回複一個肯定的應答。這樣可以定時檢測死掉或不正常的BBL。預設值滿足(SCANUNIT*DBBLWAIT)的值等于SCANUNIT和20秒兩者之間的最大者。

BBLQUERY30

#BBLQUERY指定DBBL對所有BBL進行狀态檢查的時間間隔,它也是以SCANUNIT為計算機關。如果DBBL的狀态詢問沒有回答,該BBL就被‘隔離’了。預設值滿足(SCANUNIT * BBLQUERY) 約為 300秒。

BLOCKTIME6

#BLOCKTIME指定在阻塞隊列中的被阻塞請求的逾時時間(包括用戶端從tpinit到tpterm的等待時間),以SCANUNIT為計算機關。預設值滿足(SCANUNIT * BLOCKTIME) 約為60秒。

*MACHINES

DEFAULT:

#該部分對各主機進行描述。

unicom2LMID=unicom2

APPDIR="/usr/tuxedo/apps/simpapp"

TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"

TUXDIR="/usr/tuxedo"

UID=17

GID=26

MAXACCESSERS=100

unicom1LMID=unicom1

APPDIR="/usr/tuxedo/apps/simpapp"

TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"

TUXDIR="/usr/tuxedo"

UID=17

GID=26

MAXWSCLIENTS=50

#unicom2, unicom1為網絡主機名用hostname獲得。

#LMID:Logical Machines ID 為tuxedo對主機的内部邏輯命名。

#APPDIR要求放置SERVER的可執行檔案。

#TUXCONFIG為全路徑的二進制配置檔案,要求和環境變量TUXCONFIG相同。對于master機tuxconfig檔案是由tmloadcf生成的,而非master機則是由tmboot啟動後由tlisten從master機上拷貝獲得。

#TUXDIR為tuxedo安裝目錄,要求和環境變量TUXDIR相同。

#MAXWSCLIENTS表示可連接配接client的最大個數。

*GROUPS

#GROUP1為組名,LMID表示該組運作的主機,GRPNO為組号,OPENINFO為該組通過XA打開RM(通常指資料庫)的初始串。

GROUP1 LMID=unicom2GRPNO=1 OPENINFO=NONE

GROUP2  LMID=unicom3GRPNO=2 OPENINFO=NONE

*SERVERS

#這裡描述應用伺服器。SRVGRP的該SERVER所屬組名,SRVID為伺服器ID号,MIN表示該伺服器CLOPT提供運作的相關參數,要求是”-A -- ….”,可以在應用伺服器的srvinit函數中獲得這些參數。

DEFAULT:

CLOPT="-A"

BillServer SRVGRP=GROUP1 SRVID=1 MIN=2 MAX=4

RQADDR=QNAME REPLYQ=Y

CLOPT="-A -o ./out.log –r -e ./err.log --

-p [L][low_water][,[terminate_time]][:[high_water][,create_time]]

如果MAX>1,并且使用了MSSQ(RQADDR, RQPERM)的Server可以配置-p來控制程序的增加和減少。控制算法如下:如果請求隊列中的請求個數大于high_water 後超過create_time 秒,就增加該服務的一個新程序; 如果請求隊列中的請求個數小于low_water 後超過terminate_time 秒, 就停止該服務的一個程序。low_water 預設是平均每個服務程序有一個請求消息或者workload 50;high_water 預設是平均每個服務程序有兩個請求消息或者workload 100。create_time 預設最小是50秒, and terminate_time 預設最小是60秒。

注意:

使用TUXEDO的服務程序池時,使用者自己在程式中如果用alarm()等系統調用來停止程序是不起作用的,但也不會報錯。

   [L] 标記意味着增減服務程序基于負載而不是請求隊列的長度。僅用于SHM模式下并且LDBAL=Y,否則會報錯 (LIBTUX_CAT:1542) ,服務程序也不會增減。

WSLSRVGRP=GROUP2 SRVID=1

CLOPT="-A -- -n //130.36.0.103:8889 -m 3 -M 10 -x 10 -T 10"

#WSL用于和client端進行連接配接。-n 表示出接入點為IP:PORT方式,-m –M 表示最小和最大啟動多少個WSH和前端通訊,-x則表示一個WSH和幾個client端連接配接。-T 10表示如果client端和server連接配接後10分鐘内沒有交易請求則關閉連接配接。

*SERVICES

#不要求将所有的service在這裡描述,當某個service有特别參數時才在SERVICE節中說明。

TOUPPER

LOAD=60  // 負載,當LDBAL=Y時有用

PRIO=80// 服務在請求隊列中的優先級

TRANSTIME=120 // 交易時間

SVCTIMEOUT=600// 服務逾時時間

*NETWORK

#NETWORK節對多機之間如何進行網絡連接配接進行描述。

#cluster方式下要求先啟動tlisten。事實上,對于非master機啟動應用伺服器是由tlisten完成的。

#tlisten的啟動方式為

#unicom1: tlisten –l //130.36.1.101:8891

#unicom2: tlisten –l //130.36.0.102:8891

#NADDR指定網絡連接配接的接入點。

#NLSADDR則指定tlisten的接入點。

#BRIDGE則指TCP連接配接所用的裝置檔案。

unicom2    

NADDR="//130.36.0.102:8899"

NLSADDR="//130.36.0.102:8891"

BRIDGE="/dev/streams/xtiso/tcp"

unicom1

NADDR="//130.36.0.101:8899"

NLSADDR="//130.36.0.101:8891"

BRIDGE="/dev/streams/xtiso/tcp"

分類總結

TypeParameters requiring tuning

IdentificationTUXCONFIG, UID, GID, IPCKEY, DOMAINID

ThresholdsMAXACCESSERS, MAXSERVERS, MAXSERVICES, MAXGTT, MAXCONV, MAXBUFSTYPE, MAXWSCLIENTS

Time-outsSCANUNIT, SANITYSCAN, DBBLWAIT, BBLQUERY, BLOCKTIME

AvailabilityMASTER, MIGRATE, RESTART, GRACE, MAXGEN, RCMD

MachineTYPE, CMPLIMIT, NETLOAD, SPINCOUNT, TLOGDEVICE, PERM

NetworkNADDR, NLSADDR

ServersCLOPT, ENVFILE

ServicesLOAD, PRIO, BUFTYPE, SVCTIMEOUT

WorkstationsWSNADDR, WSRPLYMAX

三、資料庫XA設定

3.1 ORACLE XA

1.在附件中提供了rm檔案,另外建議運作oracle的demo檔案獲得要連接配接的所有lib庫的名稱.然後将這些名稱全部寫在RM檔案中.

如: #Oracle 8i for NT

Oracle_XA;xaosw;%ORACLE_HOME%/RDBMS/XA/ORAXA8.LIB %ORACLE_HOME%/PRECOMP/LIB/MSVC/ORASQL8.LIB %ORACLE_HOME%/PRECOMP/LIB/MSVC/ORASQX8.LIB %ORACLE_HOME%/OCI/LIB/MSVC/OCI.LIB %ORACLE_HOME%/OCI/LIB/MSVC/OCIW32.LIB

#Oracle 8i for Unix

Oracle_XA:xaosw:-L${ORACLE_HOME}/lib -lclntsh

2.ubb 檔案中 *GROUP節加上

 TMSNAME=TMS_ORA

 TMSCOUNT=3  OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTM=120+LogDir=.+SqlNet=abcde"

具體在Oracle聯機文檔Application Development->oracle8 Application Development's Guild->Oracle XA->Defining the xa_open String中提供了解釋

3.在oracle用sys使用者登入sqlplus,

a)運作${ORACLE_HOME}/rdbms/Admin/xaview.sql,

b)grant select on v$xatrans$ to public;

c)grant select on dba_pending_transactions to scott;

d)commit;

4.運作 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracle_XA

5. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen(),  tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 實際可拷貝$TUXDIR/apps/bankapp/appinit.c

6.需在ubb檔案中MACHINE節指定TLOGDEVICE,TLOGSIZE

例:TLOGDEVICE="/home/usr1/TLOGDEV"

  TLOGSIZE=500

7.建立TLOG檔案直接拷貝$TUXDIR/apps/bankapp/crtlog.sh.設定相關的環境變量後運作該shell檔案.

8.啟動事務用tpbegin(3,0),送出復原用tpcommit/tpabort.

3.2 SYBASE XA

1.在RM檔案,運作sybase獲得要連接配接的所有lib庫的名稱.然後将這些名稱全部寫在RM檔案中:#Sybase_11 for NT

SYBASE_XA_SERVER;sybase_xa_switch;C:/SYBASE_SERVER/lib/libxasrvlib.lib

2.ubbconfig 檔案中的 *GROUP節

TMS_NAME=TMS_SYB TMSCOUNT=3  OPENINFO=" SYBASE_XA_SERVER: -Uuserid1 -Ppassword1 -Nconnection2 -Lxa_log -Tall "

具體察看Sybase文當中xa_open String中提供了解釋

3.運作 buildtms -o $(TUXDIR)/bin/TMS_SYB -r SYBASE_XA_SERVER

4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 實際可檢視$TUXDIR/apps/bankapp/appinit.c

5.需在ubb檔案中MACHINE節指定TLOGDEVICE,TLOGSIZE

例:TLOGDEVICE="/home/usr1/TLOGDEV"

  TLOGSIZE=500

6.建立TLOG檔案直接拷貝$TUXDIR/apps/bankapp/crtlog.sh.設定相關的環境變量後運作該shell檔案.

7.啟動事務用tpbegin(3,0),送出復原用tpcommit/tpabort.

3.3 INFORMIX XA

1.運作esql -lib獲得要連接配接的所有lib庫的名稱.然後将這些名稱全部加到RM檔案中INFORMIX-OnLine:infx_xa_switch:${INFORMIXDIR}/lib/esql/libinfxxa.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixsql.a /usr/informix/lib/libixasf.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixgls.a -lnsl_s -lm -lV3 -lcl -lsec /usr/informix/lib/esql/libixglx.a

2.ubbconfig 檔案中

*GROUP節 TMS_NAME=TMS_INFO TMSCOUNT=3  OPENINFO="INFORMIX-OnLine:test_tux"

具體察看Sybase文當中xa_open String中提供了解釋

3.運作 buildtms -o $(TUXDIR)/bin/TMS_INFO -r INFORMIX-OnLine

4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 實際可檢視$TUXDIR/apps/bankapp/appinit.c

5.需在ubb檔案中MACHINE節指定TLOGDEVICE,TLOGSIZE

例:TLOGDEVICE="/home/usr1/TLOGDEV"

  TLOGSIZE=500

6.建立TLOG檔案直接拷貝$TUXDIR/apps/bankapp/crtlog.sh.設定相關的環境變量後運作該shell檔案.

7.啟動事務用tpbegin(3,0),送出復原用tpcommit/tpabort.

四、Tuxedo多機方式配置要點

tuxedo多機方式配置有兩個方面

4.1啟動tlisten

tlisten在tuxedo啟動時扮演控制者的角色,在非master機上由tlisten啟動bbl和應用伺服器,tlisten的啟動方法為

tlisten   -l //hostip:ipport

1.注意這裡的ipport必須和ubb檔案中NETWORK域的NLSADDR一緻,最好都用IP位址,以避免雙方對同一機器名解釋出不同的IP位址。

2. tlisten必須在所有的機器上啟動,啟動後才能運作tmboot.建議作業系統啟動時就運作tlisten.

3.注意各個節點的tlisten都有PASSWORD,存在%APPDIR%/.adm/tlisten.pw檔案下,如果那裡沒有,就讀TUXEDO的%TUXDIR%/udataobj/tlisten.pw檔案中的内容。各節點的tlisten password要保證絕對一樣(包括回車!)。否則會報錯:‘Security Violation’。

4.2 ubb檔案配置

對于多機模式一般就是指單一domain管理的多台機器,所有機器上僅需要一個ubb檔案,以下是ubb檔案的模闆

*RESOURCES

IPCKEY80952

MAXACCESSERS40

MAXSERVERS35

MAXSERVICES75

MASTERSITE1,SITE2

OPTIONSLAN,MIGRATE    // MIGRATE表示MASTER可以動态遷移

MODELMP// 多機模式

*MACHINES

"PATRICK"LMID="site1"

APPDIR="D:/Bea/tuxedo/samples/atmi/simpapp"

TUXCONFIG="d:/Bea/tuxedo/samples/atmi/simpapp/tuxconfig"

TUXDIR=" d:/Bea /tuxedo"

UID=0

GID=0

TYPE="NT"

MAXWSCLIENTS=5

MAXACCESSERS=40

"test60"LMID="site2"

APPDIR="/bea/tuxedo/samples/atmi/simpapp"

TUXCONFIG="/bea/tuxedo/samples/atmi/simpapp/tuxconfig"

TUXDIR="/bea/tuxedo"

UID=1002

GID=101

TYPE="Sun"

MAXWSCLIENTS=15

MAXACCESSERS=100

*GROUPS

GROUP1 LMID=site1GRPNO=1OPENINFO=NONE

GROUP2 LMID=site2GRPNO=2OPENINFO=NONE

*SERVERS

DEFAULT:DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"

WSLSRVGRP=GROUP1 SRVID=20 CLOPT="-A -- -n //10.128.5.201:9009"

WSLSRVGRP=GROUP2 SRVID=10 CLOPT="-A -- -n //10.128.5.200:9009"

simpservSRVGRP=GROUP1 SRVID=3

simpservSRVGRP=GROUP2 SRVID=4

*SERVICES

*NETWORK

site1NADDR="//10.128.5.201:6044"

       NLSADDR="//10.128.5.201:6045"

site2NADDR="//10.128.5.200:6044"

NLSADDR="//10.128.5.200:6045"

#  BRIDGE="/dev/tcp"

4.3管理

隻能在master機上運作tmadmin進行管理。要獲得統計資訊在tmadmin中應運作default –m指令。

$tmadmin

>default –m SITE1

>psr

>bbi

當MASTER主機意外當機時,TUXEDO仍可以正常運作,可以在backup的節點上手工做MASTER的動态遷移,在目前的backup節點上 DBBL充當MASTER。

$tmadmin

>m

Windows NT/2000下要注意的問題:

1.由于NT機器上MAXACCESSORS受IPC的限制通常較小,是以建議在MACHINES部分單獨設定MAXACCESSORS.

2.在MACHINES部分要單獨設定UID=0和GID=0

3.和其他類型的CPU機器互連時,在MACHINES部分一定要指定不同的TYPE.否則将提示tlisten版本不比對。

TUXEDO在SERVER和CLIENT之間進行資料交換預設進行資料翻譯,但一個domain的server之間預設不進行資料翻譯!

5.有時LANG環境變量無法改變為C, 可以在 %TUXDIR%/locale建立檔案夾 mkdir %LANG%.

6.RM檔案使用中發現有效的RM後一定要有回車,否則将報RM不存在.

五、用JOLT連接配接Tuxedo和Weblogic

5.1在Tuxedo上安裝、配置JOLT Server

1 – 安裝JOLT Server

2 -- set your environment

 set TUXDIR=d:/bea/tuxedo

set JOLTDIR=%TUXDIR%/udataobj/jolt

 set APPDIR=%TUXDIR%/samples/atmi/simpapp

 set PATH=%TUXDIR%/bin;%JOLTDIR%/bin;%APPDIR%;%PATH%

 set NLSPATH=%TUXDIR%/locale/C

 set TUXCONFIG=%APPDIR%/tuxconfig

3 – added in UBBconfig file

JSLSRVGRP=GROUP1 SRVID=6 CLOPT="-A -- -n //10.128.5.112:9001"JREPSVRSRVGRP=GROUP1 SRVID=7 CLOPT="-A -- -W -P d:/Bea/tuxedo/udataobj/jolt/repository/jrepository"JREPSVRSRVGRP=GROUP1 SRVID=8 CLOPT="-A -- -P d:/Bea/tuxedo/udataobj/jolt/repository/jrepository"

5.2 配置Weblogic Server 6.x

1,Download the Jolt client package for WLS from developer.bea.com, unzip it and copy the jar file to %WL_HOME%/lib.  Then add the jar files into your Weblogic domain environment file:

 classpath=%classpath%;%WL_HOME%/lib/jolt.jar;%WL_HOME%/lib/joltweblogic.jar

2,Config Jolt pool manager startup class  in Weblogic

 a,start Weblogic and access the console

 b,create Startup class and Shutdown class

   in console:Deployments->Startup & Shutdown,right click

  select create a new StartUp class...:

     name:demojoltpoolStartup

    classname:bea.jolt.pool.servlet.weblogic.PoolManagerStartUp

3,Create a jolt pool

 in console:Services->Jolt,right click

    Select the panel:Configuration

    in TAB General

    name:demojoltpool

    Minimum Pool Size:1

    Maximum Pool Size:3

    Click the button "Create"

    in TAB address

       Primary Address://hostname:port

       Failover Address://hostname:port

    Click the button "Apply"

    Select Targets:

       in Listbox Available:

        select your server add into the listbox Chosen

    Click the button "Apply"

4. Restart your Weblogic

5.3 Example setup

1.Run %WL_HOME%/config/example/setExampleEnv.cmd,

2.compile the SimpAppServlet by:

javac -d %EX_WEBAPP_CLASSES% SimpAppServlet.java

3.Edit WL_HOME%/config/examples/applications/examplesWebApp/WEB-INF/web.xml

add the servlet description:

 <servlet>    <servlet-name>JoltServlet</servlet-name>    <servlet-class>examples.jolt.servlet.simpapp.SimpAppServlet</servlet-class>  </servlet>  <servlet-mapping><servlet-name>JoltServlet</servlet-name> <url-pattern>/joltservlet</url-pattern>  </servlet-mapping>

4.Edit a html and put it to %WL_HOME%/config/examples/applications/examplesWebApp

内容包含調用JoltServlet

Type some text here and click the Post button:<form name="simpapp" action="joltservlet" method="post"><input type="hidden" name="SVCNAME" value="TOUPPER"><input type="text" name="STRING"></td><input type="submit" value="Post!"></form>

5.Goto %WL_HOME%/config/example, start the examples domain,

6.Access http://localhost:7001/examplesWebApp/jolt.html

六、TUXEDO動态配置

TUXEDO的動态配置可以通過tmadmin和tmconfig兩個指令行工具實作不同級别的配置修改。tmadmin的作用主要是監控TUXEDO的運作,可以修改服務的參數;而tmconfig功能更強大,可以線上修改目前TUXEDO的系統UBB配置,即通過MIB修改用UBBCONFIG生成的二進制TUXCONFIG在記憶體的拷貝。

6.1  用tmadmin修改配置

進入tmadmin後用指令help可以列出所有指令。

6.2  用tmconfig更改TUXCONFIG(UBBCONFIG)

tmconfig工具實際上周遊TUXCONFIG的内容并通過MIB API修改其配置。要正确運作tmconfig,建議設定以下環境變量:

TUXDIR=/usr/tuxedo

TUXCONFIG=/usr/app/tuxconfig

EDITOR=vi

主要的界面如下:

  $ tmconfig

  Section: 1) RESOURCES, 2) MACHINES, 3) GROUPS 4) SERVERS

   5)SERVICES  6) NETWORK 7) ROUTING q) QUIT 9) WSL

   10) NETGROUPS 11) NETMAPS 12) INTERFACES [1]:

  Operation: 1) FIRST 2) NEXT 3) RETRIEVE 4) ADD 5) UPDATE

   6) CLEAR BUFFER 7) QUIT [1]:  4

  Enter editor to add/modify fields [n]?

  Perform operation [y]?

1. 用tmconfig增加新主機

1.進入tmconfig後,選擇2)MACHINES項

2.然後可以先選擇3)RETRIEVE看看目前的配置,預設是第一個MACHINE的配置

3.通過選擇2)NEXT可以一直向後搜尋MACHINE配置,直到空記錄為止。

4.選擇4)ADD

  Enter editor to add/modify fields [n]? y

5.進入vi編輯狀态,可以按照一定格式增加配置。格式為:

MIB域名[tab]值

6.增加MACHINE必須加入以下的域:

oTA_TUXCONFIG

oTA_TUXDIR

oTA_APPDIR

oTA_TLOGDEVICE

oTA_TLOGSIZE

oTA_PMID

oTA_LMID

oTA_TYPE

例:

TA_TUXCONFIG             /usr/apps/bank/tuxconfig

TA_TUXDIR                /usr/tuxroot

TA_APPDIR                /usr/apps/bank

TA_TLOGDEVICE            /usr/apps/bank/TLOG

TA_ULOGPFX               /usr/apps/bank/ULOG

TA_ENVFILE               /usr/apps/bank/ENVFILE

TA_TLOGSIZE              150

TA_PMID                  SERVER109

TA_LMID                  SITE1

TA_TYPE                  Sun

7.存盤退出vi,執行操作即可。  

8.激活新增的MACHINE: 重新選擇2)MACHINES –> 5)UPDATE

9.進入vi後查找TA_STATE,将其值從NEW改為ACTIVE

10.存盤退出vi并執行操作。

2. 用tmconfig增加新Server程序

1.進入tmconfig後,選擇2)SERVER項

2.可以先選擇3)RETRIEVE看看目前的配置,預設是第一個SERVER的配置

3.通過選擇2)NEXT可以一直向後搜尋SERVER配置,直到空記錄為止。

4.選擇4)ADD

Enter editor to add/modify fields [n]? y

5.進入vi編輯狀态,可以按照一定格式增加配置。格式為:MIB域名[tab]值

6.增加MACHINE必須加入以下的域:

oTA_SERVERNAME

oTA_SRVGRP  

oTA_SRVID  

例:

TA_SERVERNAME          /usr/apps/bank/teller_server

TA_SRVGRP                GROUP1

TA_SRVID                  15

7.存盤退出vi,執行操作即可。

七、系統核心參數參考

Message Queues Parameters

·MSGMNI: Total Number of Queues (Use this formula: Add  MAXACCESSERS + (No. Servers with Reply Queues) - (No. Servers in MSSQ Set) + (No. MSSQ Sets) + 7) to determine the appropriate value

·MSGMAP: Number of entries in control map used to manage message segments (Not defined in NT). Set to 2 * MSGMNI

·MSGMAX:  Maximum message size in bytes.  Set to the largest message size or 75% of the queue size (whichever is bigger)

·MSGMNB:  This is the queue size itself (64K, 128K, etc.)

·MSGSSZ: Size of a segment in bytes (Not defined in NT). The value of MSGSSZ should be such that a multiple of  MSGSSZ is equal to the size (including the BEA TUXEDO System header) of the most commonly sent message.  Usually set to 16, 32, or 64.

·MSGTQL: Total Number of In-Flight messages in the system at once

·MSGSEG: Number of message segments in the system (Not defined in NT). You need to find out the queue space of your machine and then the following formula applies:  MSGSEG * MSGSSZ = Machine Queue Space Size (note it will swap)

Semaphores Parameters

·SEMMNS: Maximum number of semaphores in the system. The minimum requirement for SEMMNS is MAXACCESSERS - MAXWSCLIENTS + 13 (local clients and all servers)

·SEMMNI:  Maximum number of active semaphore sets.  For small apps,(100 to 500 servers),10 sets are usually sufficient.  For large apps, (>500 servers) 32-64 sets are usually sufficient (do a tmloadcf -c to see which is the best)

·SEMMSL: Maximum number of semaphores per semaphore sets (Not defined in NT).  Use the formula:  SEMMNS = SEMMNI * SEMMSL

·SEMMAP: Size of the control map used to control semaphore sets (Not defined in NT).  Set to SEMMNI

·SEMMNU: Number of undo structures in the system.  Set to SEMMNS

·SEMUME:  Maximum number of undo entries per undo structure (Not defined in NT).  Set to SEMMNS

Shared Memory Parameters

·SHMMAX: Maximum shared memory segment size in bytes. Bulletin Board Size (must be greater than 1,400,000). Largest BB today is approx. 5 MB (this parameter is normally set much higher for the database, so use their rules)

·SHMSEG: Maximum number of segments one process can attach to (for a busy  application you need to set this from 32-64)

·SHMMNI: Maximum number of shared memory identifiers in the system. Normally the default of 100 is acceptable (unless more than 100 entities plan on allocating shared memory)

·SHMMIN: Minimum shared memory segment size in bytes.  MUST be set to 1.

Other Tunables

·ULIMIT: Maximum file size. ULIMIT needs to be large enough so that you can install BEA TUXEDO and build servers. 4 megabytes recommended.

·MAXUP: Maximum number of processes per non-super user. The BEA     TUXEDO system processes--servers and administrative processes—run      with the UID specified in the application's UBBCONFIG file. MAXUP needs      to be large enough to allow all of these processes to run.

·NOFILES:  Maximum number of open files per process. A BEA TUXEDO server requires a minimum of four file descriptors.

·NPROC:  Maximum number of processes (systemwide).

·NREGION:  Number of region table entries to allocate. Most processes have three regions: text, data, and stack. Additional regions are needed for each shared memory segment and shared library (text and data) attached. However, the region table entry for the text of a ``shared text'' program is shared by all processes executing that program. Each shared memory segment attached to one or more processes uses another region table entry.

·NUMTIM: Maximum number of STREAMS modules that can be pushed by the Transport Layer Interface (TLI). A typical default value is 16; you should have it set to at least 256.

·NUMTRW: The number of TLI read/write structures to allocate in kernel data  space. A typical default value is 16; you should have it set to at least 256.

Tuxedo系統平台的調試參數及步驟

1.配置MAXSERVERS、MAXSERVICES兩個參數,看是否滿足ubbfile檔案的配置的服務數和服務參數的個數。Tmadmin——bbs,看裡面的參數個數。

2.資料庫的可以連接配接數的大小是否滿足ubbfile檔案裡面同一個資料庫連接配接得servers的數目。參照xa_NULL*.trc檔案的錯誤提示。

3.用指令tmloadcf –c ubbfile看tuxedo的程序所需要的共享記憶體配置。然後修改系統的共享記憶體的配置。除了AIX平台外,系統的共享記憶體參數——set shmsys:shminfo_shmmin要設定為1。

4.Tmunloadcf  看現在運作的TUXEDO環境。

5.Tmadmin——crdl  -b   -z  建立日志檔案。

6.TUXEDO環境的設定順序。Tuxconfig——tmadmin——TLOG;

-- 作者: whiteclude

-- 釋出時間: 2002/07/27 05:53pm

TUXEDO與ORACLE資料庫的互連

(來源:http://www.ccw.com.cn)

前言

在銀行、電信、金融等行業的大型計算機應用系統中,中間件的使用日益普及,中間件已與作業系統、資料庫并列為三大基礎軟體。BEA Tuxedo作為最優秀的中間件産品,在我國的很多行業中廣泛使用,本文通過一個簡單的例子介紹如何在TUXEDO中通路ORACLE資料庫。

在兩層的C/S結構中,用戶端直接通路資料庫,當采用TUXEDO中間件後,形成三層結構。這時,用戶端不直接通路資料庫,而是改為調用中間件TUXEDO服務端上的服務,由TUXEDO服務端通路資料庫,并把結果傳回給用戶端。TUXEDO服務端可以和ORACLE在同一台伺服器上,也可以在不同的機器上,如果在不同的機器上,在TUXEDO的服務端所在的機器要安裝一個ORACLE的用戶端。

TUXEDO服務端與ORACLE資料庫連接配接有兩種方式:

1、不通過XA接口直接互連。适用于整個系統隻有一個資料庫的情況。

2、通過XA接口互連,對整個系統有一個資料庫或多個資料庫都适用,建議采用,本文介紹這種互連的配置方法。

系統說明

TUXEDO版本:7.1 安裝目錄 d:/tuxedo71

ORACLE版本:8.1.5 安裝目錄 d:/ora81

作業系統: win2000

配置的步驟

一、ORACLE的的配置

1.用internal使用者(預設的密碼是oracle)進入SQLPLUS

C:/>sqlplus internal/oracle

2.運作ORACLE的安裝路徑下的/rdbms/admin/xaview.sql

SQL> @d:/ora81/rdbms/admin/xaview.sql

3.授權

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

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

4. 用system使用者(預設的密碼是manager)連接配接并授權

SQL>connect system/manager

SQL>grant select any table to public;

二、TUXEDO的配置

1.修改TUXEDO安裝路徑的udataobj目錄下的RM檔案,把以Oracle_XA:xaosw:開頭的一行用#注釋掉,并加入一行:

Oracle_XA;xaosw;d:/ora81/rdbms/xa/oraxa8.lib d:/ora81/precomp/lib/msvc/orasql8.lib

如果是在UNIX環境下,則為:

Oracle_XA:xaosw:-L${ORACLE_HOME}/lib -lclntsh

2. 在TUXEDO使用者下建立TMS檔案:TMS_ORA8i,TUXEDO通過TMS_ORA8i與ORACLE資料庫采用XA協定進行通訊

buildtms -o d:/tuxedo71/bin/TMS_ORA8i -r Oracle_XA

注意:如果TUXEDO 服務端與ORACLE資料庫不在同一台伺服器上,可能會提示找不到 庫檔案oraxa8.lib和orasql8.lib,可到ORACLE資料庫的服務端相應目錄下把這兩個檔案拷到目前機器ORACLE的用戶端下的對應目錄下。

3. 配置 UBBCONFIG

(1)在*MACHINES節中增加:

TLOGDEVICE = "/home/oracle/temp/simpdb/TLOG"

TLOGNAME=TLOG

TLOGSIZE=200

(2)改*GROUPS節的配置為:(scott/tiger為本資料庫所采用的使用者及密碼,可根據需要更改)

*GROUPS

GROUP1 LMID=simple GRPNO=1

OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=."

TMSNAME="TMS_ORA8i" TMSCOUNT=2

修改後的配置檔案ubb内容如下,用tmloadcf -y ubb重新生成tuxconfig

IPCKEY 123456

DOMAINID simpapp

MASTER simple

MAXACCESSERS 100

MAXSERVERS 50

MAXSERVICES 100

MODEL SHM

LDBAL N

*MACHINES

server LMID=simple

APPDIR="d:/test"

TUXCONFIG="d:/test/tuxconfig"

TUXDIR="d:/tux71"

TLOGDEVICE = "d:/test/TLOG"

TLOGNAME=TLOG

TLOGSIZE=100

*GROUPS

GROUP1 LMID=simple GRPNO=1

OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=."

TMSNAME="TMS_ORA8i" TMSCOUNT=2

*SERVERS

DEFAULT:

CLOPT="-A"

test SRVGRP=GROUP1 SRVID=1

*SERVICES

4.重命名下列檔案,因為下列檔案名與ORACLE帶的檔案名有沖突,是以要改名。

(1)TUXEDO安裝路徑include目錄下的下面檔案

把sqlca.h 改名為 sqlca.h.bbb

把sqlcode.h 改名為 sqlcode.h.bbb

把sqlda.h 改名為 sqlda.h.bbb

(2)重命名TUXEDO安裝路徑lib目錄下的下面檔案

把libsql.lib 改名為 libsql.lib.bbb

5.用TMADMIN建立TLOG檔案,TUXEDO用一個檔案TLOG記錄對資料庫操作的日志。用于協調分布式資料庫的送出與復原。

D:/>tmadmin

>crdl -b 500 -z d:/test/TLOG

>crlog -m simple

>q

三、服務端的程式:test.pc

功能:根據用戶端傳的EMPNO到表EMP中取ENAME的值,并把它傳回給用戶端

#include <stdio.h>

#include <atmi.h>

#include <userlog.h>

EXEC SQL INCLUDE sqlca;

EXEC SQL BEGIN DECLARE SECTION;

long al_empno=0;

char ac_ename[11]="";

EXEC SQL VAR ac_ename IS STRING(11);  

EXEC SQL END DECLARE SECTION;

TEST(TPSVCINFO *rqst)

{

al_empno = (FBFR32 *)rqst->data;

EXEC SQL select ename into :ac_ename from EMP where empno=:al_empno;

if(sqlca.sqlcode!=0)

{  

userlog("select from EMP failure,sqlcode=%ld, sqlerr=%s/n",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);

strcpy(rqst->data,sqlca.sqlerrm.sqlerrmc);

tpreturn( TPFAIL, 0, rqst->data, 0, 0 );

}

strcpy(rqst->data,ac_ename);

tpreturn( TPSUCCESS, 0, rqst->data, 0, 0 );

}

四、編寫用戶端程式: testcli.c

功能:調用TUXEDO服務端的服務TEST,取EMPNO=1000所對應的ENAME的值,并顯示出來

#include <stdio.h>

#include "atmi.h"  

main(argc, argv)

{

long reqlen=1024;

char *reqbuf;

if (tpinit((TPINIT *) NULL) == -1)

{

(void) fprintf(stderr, "Tpinit failed/n");

exit(1);

}

reqbuf = (char *)tpalloc("STRING",NULL,reqlen);

if ( reqbuf == (char *)NULL)

{

printf("tpalloc failed/n");

tpterm();

}

strcpy(reqbuf,"1000");

if (tpcall("TEST", (char *)reqbuf, 0L, (char **)&reqbuf, (long *)&reqlen, 0< 0 )

{

printf("tpcall failed,tperrno=%ld,tperrtext=%s/n",tperrno,tpstrerror(tperrno));

tpfree(reqbuf);

tpterm();

exit(1);

}

printf("name=%s/n",reqbuf);

tpfree(reqbuf);

tpterm();

return(0);

}

五、編譯服務端程式

1.用ORACLE的PROC把test.pc 檔案預編譯成test.c檔案

d:/test> proc test.pc include=%TUXDIR%/include

2.用buildserver把test.c編譯成可執行檔案,注意-r 後帶的Oracle_XA 與RM檔案中的一緻。

d:/test> buildserver -o simpserv -f simpserver.c -r Oracle_XA -s TEST

六、編譯用戶端程式

d:/test> buildclient -o testcli -f testcli.c

七、用 tmboot –y 啟動TUXEDO

應能看到所有的SERVER都啟動成功。這時,我們的服務端程式test 會自動與ORACLE資料庫建立連接配接,并一直保持這個連接配接,直到TUXEDO系統或ORACLE資料庫關閉。是以在我們的程式test.pc中看不到與資料庫連接配接的語句,因為現在與資料庫的連接配接由TUXEDO自動管理。如果TMS_ORA8i啟動失敗會在目前目錄生成一個*.trc檔案,記錄失敗的原因,同時TUXEDO的ULOG檔案中也會有一些錯誤資訊。可參考這些錯誤資訊進行錯誤分析。

d:/test> tmboot -y

exec TMS_ORA8i-A :

process id=1072 ... Started.

exec TMS_ORA8i-A :

process id=528 ... Started.

exec test -A :

process id=876 ... Started.

八、運作用戶端程式

運作後應能看到服務端傳回的結果。

d:/test> testcli

name=bill

到此,整個配置過程就大功告成了。ORACLE的其他版本的配置及在其他作業系統上的配置基本與本文所述差不多,差别主要在RM檔案中所連的庫檔案可能會不樣。