Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본...

224
Tmax Administration Guide Tmax v5.0 SP1 Copyright © 2009 TmaxSoft Co., Ltd. All Rights Reserved.

Transcript of Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본...

Page 1: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

Tmax

Administration Guide

Tmax v5.0 SP1

Copyright © 2009 TmaxSoft Co., Ltd. All Rights Reserved.

Page 2: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

Copyright Notice

Copyright © 2009 TmaxSoft Co., Ltd. All Rights Reserved.

대한민국 경기도 성남시 분당구 서현동 263 분당스퀘어(AK프라자) 12층

Restricted Rights Legend

All TmaxSoft Software (Tmax®) and documents are protected by copyright laws and the Protection Act of Com

puter Programs, and international convention. TmaxSoft software and documents are made available under the

terms of the TmaxSoft License Agreement and may only be used or copied in accordance with the terms of this

agreement. No part of this document may be transmitted, copied, deployed, or reproduced in any form or by any

means, electronic, mechanical, or optical, without the prior written consent of TmaxSoft Co., Ltd.

이 소프트웨어(Tmax®) 사용설명서의 내용과 프로그램은 저작권법, 컴퓨터프로그램보호법 및 국제 조약에 의해

서 보호받고 있습니다. 사용설명서의 내용과 여기에 설명된 프로그램은 TmaxSoft Co., Ltd.와의 사용권 계약 하에

서만 사용이 가능하며, 사용권 계약을 준수하는 경우에만 사용 또는 복제할 수 있습니다. 이 사용설명서의 전부 또

는 일부분을 TmaxSoft의 사전 서면 동의 없이 전자, 기계, 녹음 등의 수단을 사용하여 전송, 복제, 배포, 2차적 저

작물작성 등의 행위를 하여서는 안 됩니다.

Trademarks

Tmax®, Tmax WebtoB® and JEUS® are registered trademark of TmaxSoft Co., Ltd. Other products, titles or

services may be registered trademarks of their respective companies.

Tmax®, Tmax WebtoB® 와 JEUS®는 TmaxSoft Co., Ltd.의 등록 상표입니다. 기타 모든 제품들과 회사 이름은 각

각 해당 소유주의 상표로서 참조용으로만 사용됩니다.

Open Source Software Notice

This product includes various open source software that has been developed and/or licensed by “OpenSSL”, “RSA

Data Security, Inc.”, “Apache Foundation”, or “Jean-loup Gailly and Mark Adler.” TmaxSoft fully respects the

aforementioned parties and the open source software used in this product. More details can be found within the

directory “${INSTALL_PATH}/license/oss_licenses”

본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”에 의

해 개발 또는 라이선스된 오픈 소스 소프트웨어를 포함합니다. 오픈 소스 소프트웨어와 개발자에 대해 경의를 표

합니다. 관련 상세 정보는 제품의 디렉터리 “${INSTALL_PATH}/license/oss_licenses”에 기재된 사항을 참고해 주

십시오.

안내서 정보

안내서 제목: Tmax Administration Guide

발행일: 2009-08-10

소프트웨어 버전: Tmax v5.0 SP1

안내서 버전: v2.1.1

Page 3: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

내용 목차

안내서에 대하여 ........................................................................................................................... ix

제1장 소개 ................................................................................................................................. 1

1.1. 개요 ............................................................................................................................ 1

1.2. 내부구조 ...................................................................................................................... 2

1.3. 시스템 구성 ................................................................................................................. 4

1.4. 시스템 관리 ................................................................................................................. 6

1.4.1. 정적 관리 .......................................................................................................... 6

1.4.2. 동적 관리 .......................................................................................................... 7

1.5. 디렉터리 구성 .............................................................................................................. 7

제2장 환경변수 설정 ................................................................................................................. 11

2.1. 환경변수 .................................................................................................................... 11

2.1.1. 서버 환경변수 .................................................................................................. 11

2.1.2. 클라이언트 환경변수 ........................................................................................ 13

2.2. 환경변수 설정 방법 ..................................................................................................... 14

2.2.1. 서버 환경변수 설정 .......................................................................................... 14

2.2.2. 클라이언트 환경변수 설정 ................................................................................ 15

2.3. 다수의 서버정보 등록 ................................................................................................. 17

제3장 환경파일 설정 ................................................................................................................. 19

3.1. 개요 ........................................................................................................................... 19

3.1.1. 환경파일의 형식 .............................................................................................. 20

3.1.2. 작성 주의사항 .................................................................................................. 22

3.1.3. Tmax 환경파일 설정 ........................................................................................ 22

3.2. 기본 환경설정 ............................................................................................................ 24

3.2.1. DOMAIN 절 ..................................................................................................... 24

3.2.2. NODE 절 ......................................................................................................... 41

3.2.3. SVRGROUP 절 ............................................................................................... 67

3.2.4. SERVER 절 ..................................................................................................... 77

3.2.5. SERVICE 절 .................................................................................................... 90

3.2.6. GATEWAY 절 .................................................................................................. 94

3.2.7. ROUTING 절 ................................................................................................. 106

3.2.8. RQ 절 ........................................................................................................... 106

3.2.9. 기본 환경설정의 예 ........................................................................................ 107

3.3. 데이터베이스 환경설정 ............................................................................................. 107

3.3.1. SVRGROUP 절 ............................................................................................. 108

3.3.2. 데이터베이스 환경설정의 예 ........................................................................... 111

3.4. 분산 트랜잭션 환경설정 ............................................................................................ 112

3.4.1. DOMAIN 절 ................................................................................................... 112

3.4.2. NODE 절 ....................................................................................................... 114

3.4.3. SVRGROUP 절 ............................................................................................. 115

Tmax iii

Page 4: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.5. 부하 조절 환경설정 ................................................................................................... 117

3.5.1. 시스템 성능에 따른 부하 조절 ......................................................................... 117

3.5.2. 데이터값에 따른 부하 조절 ............................................................................. 120

3.6. 신뢰성 큐(RQ-Reliable Queue) 환경설정 .................................................................... 127

3.6.1. SVRGROUP 절 ............................................................................................. 127

3.6.2. RQ 절 ........................................................................................................... 128

3.7. 장애 대책 환경설정 ................................................................................................... 130

3.7.1. 하드웨어적 장애 ............................................................................................ 130

3.7.2. 소프트웨어적 장애 ......................................................................................... 131

3.8. 보안 환경설정 .......................................................................................................... 133

3.8.1. 단계별 보안설정 ............................................................................................ 133

3.8.2. 기타 보안 설정 ............................................................................................... 135

3.9. 멀티 도메인 환경설정 ................................................................................................ 136

3.9.1. DOMAIN 절 ................................................................................................... 137

3.9.2. NODE 절 ....................................................................................................... 137

3.9.3. SVRGROUP 절 ............................................................................................. 137

3.9.4. SERVER 절 ................................................................................................... 137

3.9.5. SERVICE 절 .................................................................................................. 138

3.9.6. GATEWAY 절 ................................................................................................. 138

3.9.7. ROUTING 절 ................................................................................................. 138

3.9.8. 멀티 도메인 라우팅 환경파일 예제 .................................................................. 138

3.10. Tmax 환경파일 컴파일 ............................................................................................ 142

3.11. 서비스 테이블 생성 ................................................................................................. 143

제4장 기동 및 종료 .................................................................................................................. 145

4.1. Tmax 기동(tmboot) ................................................................................................... 145

4.1.1. racd .............................................................................................................. 145

4.1.2. tmboot .......................................................................................................... 147

4.2. Tmax 종료(tmdown) .................................................................................................. 151

4.2.1. tmdown ......................................................................................................... 151

제5장 Tmax 관리 도구 ............................................................................................................. 157

5.1. tmadmin ................................................................................................................... 157

5.2. 환경정보 .................................................................................................................. 160

5.2.1. tmaxinfo(ti) .................................................................................................... 160

5.2.2. clientinfo(ci) ................................................................................................... 161

5.2.3. svrinfo(si) ...................................................................................................... 161

5.2.4. txquery (txq) .................................................................................................. 162

5.2.5. rqstat(rqs) ..................................................................................................... 165

5.2.6. history ........................................................................................................... 166

5.2.7. config (cfg) .................................................................................................... 167

5.3. 동작 상태 정보 .......................................................................................................... 172

5.3.1. stat(st) .......................................................................................................... 172

5.3.2. txgwinfo, nontxgwinfo ..................................................................................... 179

iv Tmax Administration Guide

Page 5: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

5.3.3. smtrc ............................................................................................................ 180

5.3.4. clhsinfo ......................................................................................................... 181

5.3.5. tmmsinfo ....................................................................................................... 182

5.3.6. repeat(r) ........................................................................................................ 182

5.4. 운용 관리 ................................................................................................................. 183

5.4.1. suspend(sp) .................................................................................................. 183

5.4.2. resume(rs) .................................................................................................... 183

5.4.3. advertise, unadvertise .................................................................................... 184

5.4.4. restat ............................................................................................................ 186

5.4.5. rebootsvr(rbs) ................................................................................................ 186

5.4.6. cfgadd(ca) ..................................................................................................... 190

5.4.7. set ................................................................................................................ 197

5.4.8. qpurge(qp) .................................................................................................... 197

5.4.9. discon(ds) ..................................................................................................... 198

5.4.10. logend ......................................................................................................... 198

5.4.11. chtrc ............................................................................................................ 199

5.4.12. chlog ........................................................................................................... 199

5.4.13. txcommit/txrollback ...................................................................................... 201

Appendix A. 게이트웨이 CLOPT 절 ........................................................................................ 203

A.1. Tmax 트랜잭션 도메인 게이트웨이 ............................................................................ 203

A.2. Tmax Non-Transaction 도메인 게이트웨이 ................................................................. 203

A.3. Java 게이트웨이 ....................................................................................................... 204

A.4. Java Async 게이트웨이 ............................................................................................. 204

A.5. Tuxedo 게이트웨이 ................................................................................................... 205

A.6. Tuxedo Async 게이트웨이 ......................................................................................... 206

색인 .......................................................................................................................................... 207

Tmax v

Page 6: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와
Page 7: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

그림 목차

[그림 1.1] Tmax의 역할 ............................................................................................................... 1

[그림 1.2] Tmax의 구조 ............................................................................................................... 2

[그림 1.3] Tmax 시스템 구성도 .................................................................................................... 5

[그림 1.4] 클라이언트와 Tmax 시스템과의 연관 관계 ..................................................................... 5

[그림 3.1] 환경파일 구성요소 간의 상호 연관관계 ........................................................................ 20

[그림 3.2] MINCLH = 2 .............................................................................................................. 27

[그림 3.3] TRB .......................................................................................................................... 56

[그림 3.4] 데이터베이스 관리를 위한 TMS 프로세스 .................................................................. 108

[그림 3.5] 분산 트랜잭션 처리 환경 ........................................................................................... 112

[그림 3.6] Two-phase-commit ................................................................................................... 113

[그림 3.7] 시스템 로드에 따른 부하 조절 ................................................................................... 118

Tmax vii

Page 8: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와
Page 9: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

안내서에 대하여

안내서의 대상

본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와 관리자를 위한 안내서이다.

안내서의 전제 조건

본 안내서는 Tmax 시스템에 대한 전반적인 이해와 Tmax 시스템이 제공하는 각종 기능 및 특성에 대한 습

득을 위한 기본서이다.

본 안내서를 원활하게 이해하기 위해서는 다음과 같은 사항을 미리 알고 있어야 한다.

● 미들웨어(Middleware) 및 UNIX 시스템에 대한 이해

● Tmax의 기본 개념 이해

● Java , C 프로그래밍의 이해

안내서의 제한 조건

본 안내서에서는 Tmax에 대한 전반적인 내용을 다루지는 않는다.

참고

Tmax 시스템 개발에 대한 기본적인 내용은 "Tmax Getting Started Guide"나 "Tmax Application De

veloment Guide"를 참고한다. Tmax에서 제공하는 명령어와 C API에 대한 설명은 “Tmax Reference

Guide”를 참고한다.

안내서에 대하여 ix

Page 10: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

안내서 구성

Tmax Administration Guide는 총 5개의 장과 Appendix로 구성되어 있다.

각 장의 주요 내용은 다음과 같다.

● 제1장: 소개

Tmax의 내부구조, 시스템 구성, 관리, 디렉터리 환경을 기술한다.

● 제2장: 환경변수 설정

Tmax 시스템에서 사용하는 환경변수의 종류와 역할을 설명하고, 환경변수를 설정하는 방법을 기술한

다.

● 제3장: 환경파일 설정

Tmax 시스템의 환경파일의 종류 및 역할을 설명하고 각 환경파일을 설정하는 방법을 기술한다.

● 제4장: 기동 및 종료

Tmax를 기동하고 종료하는 방법을 기술한다.

● 제5장: Tmax 관리

Tmax 관리도구인 tmadmin의 사용방법을 기술한다.

● Appendix A. : 게이트웨이 CLOPT 절

Tmax 도메인 게이트웨이, Java 게이트웨이, Tuxedo 게이트웨이의 CLOPT 절의 설정 옵션에 대해 기술

한다.

x Tmax Administration Guide

Page 11: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

안내서 규약

의미표기

프로그램 소스 코드의 파일명<AaBbCc123>

Ctrl과 C를 동시에 누름<Ctrl>+C

GUI의 버튼 또는 메뉴 이름[Button]

강조진하게

다른 관련 안내서 또는 안내서 내의 다른 장 및 절 언급" "(따옴표)

화면 UI에서 입력 항목에 대한 설명'입력항목'

메일계정, 웹 사이트하이퍼링크

메뉴의 진행 순서>

하위 디렉터리 또는 파일 있음+----

하위 디렉터리 또는 파일 없음|----

참고 또는 주의사항참고

그림 이름[그림 1.1]

표 이름[표 1.1]

명령어, 명령어 수행 후 화면에 출력된 결과물, 예제코드AaBbCc123

옵션 인수 값[ ]

선택 인수 값|

안내서에 대하여 xi

Page 12: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

시스템 사용 환경

요구 사항

IBM AIX 5.xPlatform

HP-UX 11.xx

Solaris 7~9 (SunOS 5.7~5.9)

최소 120MB 하드디스크 공간Hardware

256MB 이상 메모리 공간

1GB 이상 하드디스크와 512MB 이상 메모리 공간 권장

Oracle 9i 또는 10gDatabase

xii Tmax Administration Guide

Page 13: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

관련 안내서

설명안내서

Tmax TDL(Tmax Dynamic Library )을 사용해서 프로그램

을 개발하려는 사용자를 위해 기술한 안내서이다.

Tmax

Programming Guide (Dynamic Library)

Tmax 애플리케이션 프로그램 개발에 사용하는 API의 개념

및 사용법과 예제를 기술한 안내서이다.

Tmax

Application Development Guide

Tmax의 Async Java Gateway와 인바운드/아웃바운드 통신

을 비동기로 하기 위한 Java 라이브러리인 WebTAsync를

기술한 안내서이다.

Tmax

WebtAsync User Guide

안내서에 대하여 xiii

Page 14: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

연락처

Korea

TmaxSoft Co., Ltd

263 BundangSquare (AK Plaza) 12th floor, Seohyeon-dong, Bundang-gu,

Seongnam-si, Gyeonggi-do, 463-824

South Korea

Tel: +82-31-8018-1000

Fax: +82-31-8018-1115

Email: [email protected]

Web (Korean): http://www.tmax.co.kr

기술지원: http://technet.tmaxsoft.com

USA

TmaxSoft, Inc.

560 Sylvan Avenue Englewood Cliffs, NJ 07632

U.S.A

Tel: 1-201-567-8266

Fax: 1-201-567-7339

Email: [email protected]

Web (English): http://www.tmaxsoft.com

Japan

TmaxSoft Japan Co., Ltd.

5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073

Japan

Tel: +81-3-5765-2550

Fax: +81-3-5765-2567

Email: [email protected]

Web (Japanese): http://www.tmaxsoft.co.jp

xiv Tmax Administration Guide

Page 15: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

China

TmaxSoft China Co., Ltd.

Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan,

Chaoyang District, Beijing, China, 100027

China

Tel: +86-10-6410-6145~8

Fax: +86-10-6410-6144

Email: [email protected]

Web (Chinese): http://www.tmaxsoft.com.cn

ASEAN Office

TmaxSoft Pte. Ltd.

30 Cecil Street, Level 15 Unit 05 Prudential Tower, Singapore 049712

Singapore

Tel: +65-6232-2889

Fax: +65-6232-2919

Email: [email protected]

Web (English): http://asean.tmaxsoft.com

안내서에 대하여 xv

Page 16: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와
Page 17: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

제1장 소개

1.1. 개요클라이언트/서버 (Client/Server) 중심의 컴퓨팅 환경에서 클라이언트의 수가 증가함에 따라 머신(Machine)

의 다양화, 운영체제와 데이터베이스의 혼재, 데이터 호환성 결여, 서버의 성능 저하 등의 문제점이 발생

하고 있다. Tmax는 이러한 문제점을 해결하고 프로세스 관리, 트랜잭션 관리, 부하 조절, 이기종 사이의

자원을 관리하는 등의 기능을 제공하기 위한 트랜잭션 처리 미들웨어(Middleware)이다.

[그림 1.1] Tmax의 역할

● 프로세스 관리

서버 프로세스 기동, 업무분산, 프로세스 자동생성 등의 수행과정을 모니터링한다.

● 트랜잭션 관리

ACID 특성을 보장하도록 트랜잭션을 처리한다.

● 부하 조절

시스템 성능을 최적화하여 일정한 응답시간을 유도한다.

● 이기종 자원 관리

이기종 사이에 발생할 수 있는 여러 가지 문제점을 해결한다.

제1장 소개 1

Page 18: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

1.2. 내부구조Tmax에는 내부적으로 9개의 운용 프로세스 (TMM, TMS, CLL, CLH, RQS, GW, CAS, TLM, HMS)와 4개

의 관리 명령어(tmadmin, racd, tmboot, tmdown)가 존재한다.

[그림 1.2] Tmax의 구조

● 운용 프로세스

– TMM (Tmax Manager)

Tmax의 전체적인 시스템을 운용하는 프로세스이다. 시스템의 운영 정보를 관리하고, CLL, CLH, TMS,

RQS 프로세스 및 업무처리 서버 프로세스를 관리한다.

TMM은 Tmax 시스템이 기동할 때 가장 먼저 메모리에 로드되고 시스템 종료될 때는 가장 나중에 종

료된다.

Tmax 시스템이 멀티 노드로 구성되었을 경우 타 노드의 TMM과 세션을 유지하고 heartbeat을 체크

해 서버 그룹 단위의 장애 대책을 지원한다.

또한 모든 공유 정보의 갱신과 각 프로세스의 로그 기록을 담당한다. 디스크 여유공간의 부족 등으로

인해 로그를 기록할 수 없는 경우 추가적인 기록을 중단해 문제가 해결될 때까지 정상적인 운영이 가

능하도록 한다.

– CLL (Client Listener)

클라이언트와 Tmax 사이의 연결을 관리하는 Listener 프로세스이다. 클라이언트가 처음 Tmax에 접

속할 경우, CLL과 연결되어 통신이 이루어진다. 클라이언트에서 서비스를 요청할 경우, 내부적으로

CLH와 연결되어 모든 서비스 처리가 이루어진다.

– CLH (Client Handler)

클라이언트 매니저라고도 하며 실질적으로 클라이언트와 서버의 업무처리 서버 프로세스 사이를 중

계하는 프로세스이다.

2 Tmax Administration Guide

Page 19: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

CLH는 업무처리 서버 프로세스와 게이트웨이, RQ 프로세스, Tmax 프로세스와 연결해 데이터의 흐

름을 관리한다. 클라이언트의 서비스 요청을 받고 업무를 처리하며, 그 결과를 다시 클라이언트에게

되돌려준다.

– TMS (Transaction Management Server)

Tmax 시스템 운영에 필수적인 TMM, CLL, CLH 프로세스와 달리 TMS는 데이터베이스 관리 및 분산

트랜잭션 처리를 담당하는 프로세스이다. 해당 데이터베이스의 라이브러리를 이용해 만들어진다.

– RQS (Reliable Queue Server)

Tmax 시스템의 디스크 큐를 관리하는 프로세스이다. 일반적으로 데이터는 메모리에 저장되어 처리

되므로 돌발적인 시스템 장애가 발생할 경우 메모리에 있는 데이터는 삭제된다. RQS는 데이터의 신

뢰도를 높이기 위해 서비스 요청 전후의 데이터를 디스크에 저장한다. 시스템이 재부팅된 후 장애 이

전에 저장된 데이터를 사용해 요청된 서비스를 다시 처리할 수 있다.

서비스 수행 속도를 저하할 수 있으므로 기본적으로는 동작하지는 않으며 사용자가 필요에 따라 환

경파일에 정의한 시스템에서만 동작한다.

– GW (Gateway)

멀티 도메인으로 시스템을 구축한 경우 도메인 사이의 통신을 담당하는 프로세스이다. Tmax 시스템

뿐만 아니라 TCP/IP, SNA/LU0, SNA/LU6, X.25 등 다양한 시스템과 연동이 가능하다.

실제 프로세스의 명칭은 사용자가 환경파일에 정의한 내용에 따라 다르며, 게이트웨이의 종류에 따

라 특별한 설정이 더 필요한 경우도 있다. 이 프로세스 역시 Tmax 시스템에 항상 기본적으로 동작하

는 프로세스가 아니고 환경파일의 GATEWAY 부분에 정의된 시스템에서만 동작한다.

– CAS (Client Authentication Server)

보안이 필요한 Tmax 시스템을 운영하는 경우에 사용되는 프로세스이다. 1 단계 및 2 단계 보안을 담

당하며 사용자의 신원을 확인하는 역할을 한다.

– TLM (Transaction Log Manager)

기존의 TMM (4.0 이전)에서 트랜잭션 로깅하는 부분을 분리하여 TLM이 담당한다. 기존처럼 단순히

로깅만 하지 않고 Pending Transaction 에 대한 감시도 수행한다.

– HMS (Hybrid Messaging System)

송신자(Sender)와 수신자(Receiver)간의 느슨한 결합(loosely coupled)을 가능케 하는 통신 매개체이

다. 메시징 시스템을 사용하여 송신자와 수신자는 서로에 관한 정보를 알 필요없이 가상적 채널인 데

스티네이션(Destination)에 관한 정보만 가지고 서로 통신을 할 수 있다. 또한 송신하는 시점과 수신

하는 시점을 분리할 수 있게 됨으로써 데이터에 대한 지연처리가 가능하며, 이를 위해 메시징 시스템

은 메시지의 송/수신에 대한 신뢰성(Reliability)을 보장한다.

제1장 소개 3

Page 20: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● 관리 명령어

– tmadmin (Tmax Administration)

tmadmin은 관리도구로 운영 중인 Tmax 시스템의 환경을 확인하거나 동적으로 변경하는 기능을 제

공한다.

현재 서버 프로세스의 동작 상태와 통계정보, 서비스나 큐의 상태 정보를 확인할 수 있다.

– racd (Remote Access Control Daemon)

racd는 여러 개의 노드를 하나의 도메인으로 Tmax 시스템을 구축하였을 경우 한 노드에서 다른 시스

템을 관리할 수 있도록 각각의 노드에 기동시키는 데몬 프로세스이다.

racd를 사용해 도메인의 노드 하나에서 tmadmin을 통해 전체 노드를 모니터링할 수 있으며 일일이

파일을 복사하지 않아도 하나의 환경파일을 모든 노드에 적용할 수 있다.

– tmboot (Tmax System Boot)

tmboot는 환경파일에 정의된 내용에 따라 Tmax 시스템을 초기화하여 기동한다. 일반적으로 Tmax

시스템 프로세스(TMM, CLL, CLH)가 먼저 기동되고, 이후 부가적인 환경을 위한 RQ, TMS, GW 프로

세스가 기동되며, 마지막으로 서버 프로세스가 기동된다. tmboot는 다양한 옵션을 제공하여 다양한

방법으로 Tmax 시스템을 기동할 수 있다.

– tmdown (Tmax System Down)

tmdown은 환경파일의 내용을 토대로 tmboot로 기동된 시스템을 종료하는 명령어이다. 종료순서는

tmboot와 반대로 먼저 모든 서버 프로세스를 종료시킨 후에 Tmax 시스템 관리 프로세스를 종료한다.

1.3. 시스템 구성도메인(Domain)은 하나의 동일한 환경파일을 공유하는 Tmax 시스템의 구성단위이다. 도메인은 하나 이

상의 노드(Machine)로 구성되며, 각 노드는 Peer-to-peer 방식으로 연결되어 있어, 일정한 시간 간격으로

다른 노드와 통신하여 환경파일에 구성된 정보를 공유한다. 이러한 방법으로 각각의 노드가 도메인 전체

의 상태와 도메인 내의 다른 모든 노드의 정보를 공유하고 있다. 따라서 클라이언트는 도메인 내의 어느

노드에 연결하더라도 도메인에서 제공하는 모든 서비스를 제공받을 수 있다.

클라이언트는 도메인을 구성하는 특정 노드에 연결될 수 있으며, 연결된 노드는 해당 클라이언트의 서비

스를 담당한다. 클라이언트가 요청한 서비스가 연결된 노드에서 제공하는 것이면 연결된 노드가 서비스

를 처리하고, 다른 노드에서 제공하는 것이면 클라이언트와 연결된 노드가 서비스를 제공하는 노드에 요

청하여 처리 결과를 클라이언트에게 되돌려주는 역할을 담당한다.

4 Tmax Administration Guide

Page 21: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

[그림 1.3] Tmax 시스템 구성도

다른 노드에서 제공되는 서비스를 클라이언트가 요청하는 경우에는 다음과 같은 흐름으로 처리된다.

[그림 1.4] 클라이언트와 Tmax 시스템과의 연관 관계

제1장 소개 5

Page 22: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

클라이언트와 처음 연결(1)된 노드 Node A가 서비스를 제공하는 노드인 Node B와 통신하여 해당 서비스

의 처리를 요청하고(2) 그 응답을 받아(3) 클라이언트에 돌려준다(4).

1.4. 시스템 관리Tmax 시스템 관리는 크게 정적 관리와 동적 관리로 나뉜다.

● 정적 관리

시스템이 기동되기 전에 이루어질 수 있는 관리, 또는 동작 중인 시스템에 영향을 미치지 않는 관리 행

위를 말하며, 시스템 환경설정(configuration) 작업을 의미한다.

● 동적 관리

시스템이 동작하고 있는 상황에서 시스템의 상태나 성능에 영향을 줄 수 있는 관리 행위를 말하며, Tmax

시스템 기동/종료(tmboot/tmdown), 시스템 동작 관리(Tmax administration) 및 시스템 환경변수 변

경 작업을 의미한다.

1.4.1. 정적 관리

시스템 정적 관리는 환경설정을 통해서 이루어진다.

Tmax 시스템 환경설정을 위해서는 다음과 같은 선행 작업이 필요하다.

● Tmax 환경파일 설정

Tmax 시스템 환경설정을 위해서는 환경파일의 작성이 필요하다. 이 환경파일은 하나의 독립적인 시스

템을 구성하는 도메인 그리고 도메인 사이의 연결이나 레거시 시스템과 통신하는 게이트웨이, 시스템

을 구성하는 노드, 각 노드의 서비스, 서비스를 제공하는 서버 프로세스, 연관된 서버의 모임인 서버 그

룹에 대한 전반적인 시스템 환경정보를 담고있다.

환경파일의 작성은 Tmax 관리자가 해야 하는 일이다. 환경파일의 작성에 대한 자세한 설명은 “제3장 환

경파일 설정”을 참고한다.

● Tmax 환경파일 컴파일

Tmax 환경파일을 작성한 후에는 컴파일 작업을 통해 환경파일이 올바르게 작성되었는지 검증하는 과

정이 필요하다. 환경파일이 올바르게 작성되었다면 컴파일 과정을 통해 이진(binary) 형태로 변환된

Tmax 환경파일이 만들어진다. 이렇게 만들어진 이진 Tmax 환경파일은 Tmax 시스템을 기동하고 종료

할 때 참조된다.

● 서비스 테이블 생성

Tmax 시스템에게 서비스의 종류와 위치를 알려주기 위해 작성한 환경파일로 서비스 테이블을 생성하

는 과정이 필요하다. 서비스 테이블은 환경파일의 내용을 근거로 각 서버 프로세스별로 테이블 형태로

만들어진다. 또한 개발자가 만든 서버용 소스 프로그램과 함께 컴파일되어 서버의 실행 프로그램을 만

6 Tmax Administration Guide

Page 23: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

드는 데 사용된다. 서비스 테이블을 링크하지 않은 실행 프로그램은 Tmax 시스템이 인식하지 못하므로

실행할 수 없다.

1.4.2. 동적 관리

● 기동과 종료

환경설정 작업이 완료되면 관리자는 Tmax를 기동할 수 있다. 시스템이 기동될 때 Tmax의 기능 프로세

스인 TMM, CLL, CLH(데이터베이스가 관련되는 경우 TMS 프로세스가 포함되며, RQ가 관련된 경우

RQ 프로세스 포함된다.)뿐만 아니라 실질적인 업무처리 서버 프로세스도 포함된다. 다시 말해, 업무처

리 서버 프로세스가 별도로 동작하는 것이 아니라 기능 프로세스와 함께 기동 및 종료되며 Tmax 시스

템에 의해 관리가 이루어진다.

● 시스템 동작 관리

Tmax 시스템이 동작 중일 때, 관리자는 각 구성 요소의 상태를 확인하고 필요한 경우 적절한 조치를 취

할 수 있다. Tmax 시스템에서는 tmadmin이라는 콘솔 형태의 대화형 관리도구를 사용하여 동작 상태

변경 등의 동적인 작업이 가능하다.

– 각종 정보 출력

tmadmin은 현재의 환경설정 정보를 확인할 수 있는 명령어를 제공한다. Tmax 관리자는 tmadmin에

서 명령어와 옵션을 사용해 클라이언트(이름, 위치), 서버(위치, 그룹, 프로세스 상태, 수행횟수), 서비

스(위치, 상태, 처리시간, 수행횟수, 적체된 데이터량), 네트워크(연결 노드, 파티션 노드) 등과 이 외

에도 수행되고 있는 트랜잭션, 애플리케이션 파라미터 등에 대한 정보를 확인할 수 있다.

– 동적 환경설정 변경

관리자는 환경설정을 통해 시스템의 설정을 수정할 수 있다. 응답시간 초과(timeout), 처리 우선 순위

(priority), 부하 조절(load) 값, 동작 불능 상태의 서버 프로세스 재시작(restart) , 서버 프로세스 종료,

종료된 프로세스의 재기동 등을 설정할 수 있다. 또한 운영 중인 서버 프로세스에 새로운 서비스를 동

적으로 추가하는 기능을 제공한다.

주의

동적으로 변경된 Tmax 환경변수는 동작 중일 때는 변경된 내용이 적용되지만, 시스템을 종료(tmdown)

하고 난 후 다시 기동(tmboot)하면 Tmax 환경파일에 설정된 내용이 적용된다.

1.5. 디렉터리 구성일반적으로 Tmax 시스템이 설치될 파일 시스템의 디렉터리 구성은 다음과 같다. 디렉터리는 시스템 환경

변수나 Tmax 시스템 환경설정 파일의 항목에서 참조된다.

제1장 소개 7

Page 24: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

$Tmax HOME

|---- appbin

|---- bin

+---- sample

+---- client

+---- server

+---- sdl

+---- fdl

|---- config

|---- lib

|---- license

+---- log

|---- slog

|---- tlog

|---- ulog

|---- path

|---- svct

|---- usrinc

Tmax HOME

- Tmax 시스템의 홈 디렉터리이다.

- 시스템 변수 : TMAXDIR

- 환경 항목 : TMAXDIR

appbin

- 서버 프로세스가 위치하는 디렉터리이다.

- 환경 항목 : APPDIR

bin

Tmax 시스템의 명령어/유틸리티를 포함하는 디렉터리이다.

sample

클라이언트와 서버의 샘플 프로그램을 저장하는 디렉터리이다.

설명서브 디렉터리

클라이언트의 샘플 프로그램을 저장하는 디렉터리이다.client

서버의 샘플 프로그램을 저장하는 디렉터리이다.server

- 구조체 관련 파일을 저장하는 디렉터리이다.sdl (optional)

- 시스템 변수 : SDLFILE

필드키 관련 파일을 저장하는 디렉터리이다.fdl (optional)

8 Tmax Administration Guide

Page 25: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

config

환경설정 파일을 저장하는 디렉터리이다.

lib

Tmax 라이브러리 파일을 저장하는 디렉터리이다.

license

라이선스 파일을 저장하는 디렉터리이다.

log

설명서브 디렉터리

- 시스템 Log 파일을 저장하는 디렉터리이다.slog

- 환경 항목 : SLOGDIR

- 사용자 Log 파일을 저장하는 디렉터리이다.ulog

- 환경 항목 : ULOGDIR

- 트랜잭션 정보를 저장하는 디렉터리이다.tlog

- 환경 항목 : TLOGDIR

path

- 프로세스 간 내부 통신을 위한 네임드 파이프(named pipe)가 생성될 디렉터리이다.

- 환경 항목 : PATHDIR

svct

서비스 테이블 파일을 저장하는 디렉터리이다.

usrinc

Tmax 헤더 파일을 저장하는 디렉터리이다.

bkappbin (optional)

- 현재 사용 중인 서버 프로세스를 새로운 프로세스로 변경하고자 할 때 새로운 프로세스가 설치될 디

렉터리이다.

- 시스템 변수 : TMAX_BKAPPDIR

제1장 소개 9

Page 26: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와
Page 27: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

제2장 환경변수 설정

Tmax 시스템에서 사용하는 환경변수는 크게 2가지로 나누어지는데, 첫 번째는 Tmax 시스템에서 사용하

는 환경변수이고, 두 번째는 서버 프로세스에서 사용하는 환경변수이다. Tmax 시스템에서 사용하는 환경

변수의 대부분은 Tmax 시스템에 접근하기 위한 변수로 본 장에서 설정하는 환경변수는 다음 장에서 설명

될 환경파일의 항목과 동일한 값을 입력해야 한다. 또한 환경변수는 해당 시스템에서 수행되는 모든 서버

프로세스에 동일하게 적용된다.

Tmax 시스템이 설치된 서버는 해당 셸의 프로파일에 환경변수를 반드시 설정해야 하나 클라이언트는 2

가지 방식으로 설정하여 사용할 수 있다.

● 서버와 동일하게 프로파일에 설정하여 사용한다.

● 특정 파일에 일정한 포맷으로 설정하여 사용한다.

Tmax 시스템과 함께 기동되는 서버 프로세스에서 사용되는 환경변수는 특정 파일에 지정된 포맷으로 설

정하고 환경파일의 ENVFILE 항목에 해당 파일을 등록해서 사용할 수 있다.

2.1. 환경변수Tmax 시스템이 설치된 서버와 클라이언트는 모두 동일한 환경변수를 사용하지만 Tmax 시스템이 설치된

노드의 모든 환경변수를 클라이언트에 설정할 필요는 없다.

2.1.1. 서버 환경변수

다음은 서버에 설정할 환경변수 목록이다.

내용환경변수

Tmax 시스템의 홈 디렉터리이다.TMAXDIR

(환경파일 항목 : TMAXDIR)

기존의 서버 프로세스를 변경하는 경우 새 프로세스가 위치할 디렉터리이다.TMAX_BKAPPDIR

Tmax 시스템이 수행될 서버의 IP 주소이다. 클라이언트가 랜덤하게 서버를

선택하여 접속하기 때문에 부하분산이 가능하다. 자세한 설명은 “2.3. 다수의

서버정보 등록”을 참고한다.

TMAX_HOST_ADDR

Tmax 시스템에 접속할 포트 번호이다.TMAX_HOST_PORT

( 환경파일 항목 : TPORTNO )

제2장 환경변수 설정 11

Page 28: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

내용환경변수

Tmax 백업 서버의 IP 주소이다.TMAX_BACKUP_ADDR

Tmax 백업 서버의 포트 번호이다.TMAX_BACKUP_PORT

분산 노드로 구성된 시스템을 통합해 관리하기 위한 포트 번호로 racd에서

사용된다.

TMAX_RAC_PORT

(환경파일 항목 : RACPORT)

서버 콘솔창에 에러메시지를 표시할 것인지 결정한다.TMAX_ERR_MSG

구조체 정보가 저장된 파일을 지정한다.SDLFILE

필드키 정보가 저장된 파일을 지정한다.FDLFILE

tmdown에 참조할 환경파일의 경로이다.TMAX_PATHDIR

(환경파일 항목 : PATHDIR)

설치 디렉터리와 작업 디렉터리를 분리하여 사용하고자 할 때 TMAXHOME

에 설치 디렉터리(bin, lib, usrinc, tuxinc, topinc, cobinc, license)를 TMAXDIR

에 작업 디렉터리(config, path, log, svct)를 지정한다.

TMAXHOME

(환경파일 항목 : TMAXHOME)

FML 버퍼 중 데이터를 읽어 오는 함수(fbget, fbget_tu, fbget_tut, fbgetf,

fbgetlast_tu, fbnext_tu)에서 버퍼의 길이에 따른 동작을 지정하기 위한 환경

변수이다.

TMAX_SEMANTICS

함수의 마지막 필드에 데이터 길이를 명시해, 사용자가 지정한 버퍼를 검증

한다. 사용자가 지정한 버퍼가 실제 데이터보다 작은 경우에 발생할 수 있는

문제를 해결할 수 있다.

Tmax 애플리케이션의 실행에 대한 Run-time tracing이 이루어질 수 있도록

하는 환경변수이다.

TMAX_TRACE

클라이언트의 디버그 및 에러 로그를 화면이 아닌 사용자가 지정한 파일에

기록할 수 있다. 해당 환경 변수 설정 시 파일명 뒤에 해당 클라이언트의

PID(Process ID)가 자동으로 붙는다. (파일명.pid)

TMAX_DEBUG

tpalloc / tprealloc API를 이용하여 STRING 타입의 버퍼를 할당하고 할당된

버퍼에 대하여 사용자가 NULL을 위한 마지막 1byte 공간까지 데이터를 입력

TMAX_STRING_NULL

하고 서비스를 요청하였을 경우 TPEINVAL (클라이언트), TPESVCERR (서

버) 에러가 발생한다.

해당 환경 변수를 Y로 설정하면 위의 상황이 발생하는 경우 1byte 크기의 버

퍼가 추가로 할당되며 해당 공간에 자동으로 NULL 문자가 셋팅된다.

* 주의 사항 해당 환경 변수를 Y 로 설정하면 위의 상황 발생 시 1byte 크기의

버퍼가 추가로 할당되며 해당 공간에 자동으로 NULL 문자가 셋팅된다.

12 Tmax Administration Guide

Page 29: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

내용환경변수

1. 해당 기능은 tpalloc / tprealloc으로 할당된 버퍼에 한해서만 지원된다.

2. 서버와 클라이언트가 동일하게 동작한다.

3. 반드시 위에서 설명한 환경 변수를 Y로 셋팅해야 한다.

다음은 TMAX_SEMANTICS 환경변수의 설정값에 대한 설명이다.

TMAX_SEMANTICS="FDL_LEN=TRU"

위와 같이 설정하면, 사용자가 지정한 버퍼 크기가 실제 데이터의 크기보다 작을 경우, 사용자가 지정한

버퍼의 크기 만큼만 절삭(Truncate)하여 버퍼에 넣는다.

TMAX_SEMANTICS="FDL_LEN=ERR"

위와 같이 설정하면, 사용자가 지정한 버퍼 크기가 실제 데이터의 크기보다 작을 경우, FBENOSPACE 에

러가 발생한다.

TMAX_SEMANTICS="FDL_LEN=OLD"

위와 같이 설정하면, 사용자가 입력한 length가 무시되고, 사용자가 충분한 크기의 버퍼를 할당했다고 가

정하고 동작한다. 이 환경변수는 fbget 유형 함수의 마지막 필드에 데이터 길이를 명시한 경우에만 유효하

다. 마지막 필드가 0 또는 NULL일 경우 사용자가 충분한 길이의 버퍼를 할당했다고 가정하고 동작하게

된다.

2.1.2. 클라이언트 환경변수

다음은 클라이언트에 설정할 환경변수 목록이다.

내용환경변수

Tmax 서비스 서버의 IP 주소이다.TMAX_HOST_ADDR

Tmax 서비스 서버의 포트 번호이다.TMAX_HOST_PORT

Tmax 시스템 연결하는 경우 타임아웃 시간으로 마이크로 초 단위로 지정이

가능하다. (x.xxx초)

TMAX_CONNECT_TIME

OUT

구조체 정보가 저장된 파일을 지정할 환경변수이다.SDLFILE

필드키 정보가 저장된 파일을 지정할 환경변수이다.FDLFILE

클라이언트에 로그를 남기고자 하는 경로명을 설정한다. 설정하지 않으면

Tmax 환경파일에 설정된 ULOGDIR 경로에 기록이 남는다.

ULOG(또는ULOGPFX)

Tmax 클라이언트 애플리케이션 실행에 대한 Run-time tracing이 이루어진

다.

TMAX_TRACE

제2장 환경변수 설정 13

Page 30: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

내용환경변수

FML 버퍼 중 데이터를 읽어 오는 함수(fbget, fbget_tu, fbget_tut, fbgetf,

fbgetlast_tu, fbnext_tu)에서 버퍼의 길이에 따른 동작을 지정하기 위한 환경

변수로 서버의 환경변수를 참조한다.

TMAX_SEMANTICS

압축 기능을 사용하는 경우, Tmax는 클라이언트와 서버 사이의 송수신 데이

터를 보다 안정적으로 전달할 수 있도록 암호화 기능을 제공한다.

클라이언트의 디버그 및 에러 로그를 화면이 아닌 사용자가 지정한 파일에

기록한다. 'directory/filename'의 형태로 해당 파일을 설정하며, 설정할 때 파

일 이름 뒤에 해당 클라이언트의 PID(Process ID)가 자동으로 붙는다.

TMAX_DEBUG

TMAX_SEMANTICS을 설정하면 암호화 기능을 사용할 수 있다. 암호화 기능을 사용하기 위해서는 클라

이언트와 서버 모두 암호화 기능이 설정되어 있어야 하며, 클라이언트 암호화 설정을 하는 경우 다음과 같

이 설정한다.

TMAX_SEMANTICS="CRYPT_SW=Y"

서버에 대한 암호화 설정은 환경파일 DOMAIN절의 CRYPT 항목을 참고한다.

tmaxreadenv에서 TMAX_SEMANTICS 환경변수를 사용하는 경우 큰따옴표(" ") 안에 등호( = )대신 콜론

( : )을 사용한다.

TMAX_SEMANTICS="FDL_LEN:ERR" TMAX_SEMANTICS="CRYPT_SW:Y"

2.2. 환경변수 설정 방법서버에 환경변수를 설정할 때는 사용하는 셸에 따라 설정할 대상이 다르다. korn 셸 및 bash 셸의 경우는

<.profile> 및 <.bash_profile>에, c 셸의 경우 <.cshrc>에 설정한다.

주의

환경변수를 설정할 때 환경변수명과 등호( = ) 사이에는 공백이 없어야 한다.

2.2.1. 서버 환경변수 설정

다음은 서버의 셸에 따른 환경변수의 설정 방법이다.

<.profile / .bash_profile>

export TMAXDIR=/home/tmax

export TMAX_BKAPPDIR=/home/tmax/bkappbin

export TMAX_HOST_ADDR=192.168.0.1

export TMAX_HOST_PORT=8888

14 Tmax Administration Guide

Page 31: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

export TMAX_RAC_PORT=3333

export SDLFILE=/home/tmax/sample/sdl/tmax.sdl

export FDLFILE=/home/tmax/sample/sdl/tmax.fdl

export TMAX_PATHDIR=/home/tmax/path_new

export TMAX_DEBUG=/home/tmax/sample/client/clidebug

<.cshrc>

setenv TMAXDIR /home/tmax

setenv TMAX_BKAPPDIR /home/tmax/bkappbin

setenv TMAX_HOST_ADDR 192.168.0.1

setenv TMAX_HOST_PORT 8888

setenv TMAX_RAC_PORT 3333

setenv SDLFILE /home/tmax/sample/sdl/tmax.sdl

setenv FDLFILE /home/tmax/sample/sdl/tmax.fdl

setenv TMAX_PATHDIR /home/tmax/path_new

setenv TMAX_DEBUG=/home/tmax/sample/client/clidebug

Tmax installer를 이용해서 Tmax를 설치하며 기본 환경변수들은 자동적으로 셸의 프로파일 끝에 설정된

다.

Tmax 시스템에서 서버에서 사용할 환경변수는 텍스트 파일로 만들어서 Tmax 환경파일 NODE 절 및

SVRGROUP 절의 ENVFILE 항목에 파일 이름을 등록하면 서버 프로세스에서 참조할 수 있다.

<서버 환경 텍스트 파일>

LOGDIR = /tmp

USER_VARIABLE = test1

USER _VARIABLE = test2

USER _VARIABLE = test3

USER _VARIABLE = test4

USER _VARIABLE = test5

2.2.2. 클라이언트 환경변수 설정

클라이언트에 환경변수를 설정하는 경우는 OS에 따라 다르다.

● UNIX 인 경우

서버와 동일하게 프로파일에 설정한다.

● DOS나 Windows98, Windows NT/2000 인 경우

<autoexec.bat> 파일에 등록하거나, [제어판] > [시스템 등록 정보] > [고급] > [환경변수]에서 설정한다.

제2장 환경변수 설정 15

Page 32: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

<autoexe.bat>

set TMAX_HOST_ADDR = 192.168.0.1

set TMAX_HOST_PORT = 8888

set TMAX_CONNECT_TIMEOUT = 3

set SDLFILE = /home/tmax/sample/sdl/tmax.sdl

set FDLFILE = /home/tmax/sample/sdl/tmax.fdl

set TMAX_DEBUG=/home/tmax/sample/client/clidebug

클라이언트의 환경변수는 아래와 같이 텍스트 파일로 등록했다가 필요할 때 해당 파일을 참조하여 사용

할 수 있다.

<tmax.env>

[TEST]

TMAX_HOST_ADDR = 192.168.0.1

TMAX_HOST_PORT = 8888

TMAX_CONNECT_TIMEOUT = 3

SDLFILE = /home/tmax/sample/sdl/tmax.sdl

FDLFILE = /home/tmax/sample/sdl/tmax.fdl

ULOGPFX = /home/tmax/testlog

TMAX_DEBUG = /home/tmax/sample/client/clidebug

[REAL]

TMAX_HOST_ADDR = 192.168.0.2

TMAX_HOST_PORT = 1234

TMAX_CONNECT_TIMEOUT = 3

SDLFILE = /home/tmax/sample/sdl/tmax.sdl

FDLFILE = /home/tmax/sample/sdl/tmax.fdl

ULOGPFX = /home/tmax/reallog

TMAX_DEBUG = /home/tmax/sample/client/clidebug

참고

클라이언트의 환경변수 설정에 대한 자세한 내용은 Tmax 안내서 중 “Tmax Reference Guide”

의 tmaxreadenv를 참고한다.

16 Tmax Administration Guide

Page 33: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

2.3. 다수의 서버정보 등록이전 버전에서 한 클라이언트는 하나의 서버에만 접속할 수 있었으나, Tmax 3.12.2 버전에서부터 클라이

언트가 랜덤하게 서버를 선택하여 접속함으로써 부하분산이 가능하도록 기능이 추가되었다. 다수의 서버

를 사용하는 경우 TMAX_HOST_ADDR 항목을 설정한다.

다음은 다수의 서버정보를 등록하는 방법이다.

TMAX_HOST_ADDR=(host_address:portno|host_address2:portno2),

host_address3:portno3,host_address4:portno4

콤마( , )로 구분된 것은 앞에서부터 순서대로 백업 관계이다. 먼저 'host_address:portno|host_address2:port

no2'에 연결을 시도하여 실패하면 'host_address3:portno3'로 연결을 시도하고 해당 서버도 실패하면,

'host_address4:portno4'에 연결을 시도한다.

괄호 안의 파이프 기호( | )로 연결된 것은 서로 Load-balancing 관계이다. Load-balancing 관계에 있는 서

버는 클라이언트에서 랜덤하게 한 서버를 선택하여 연결을 시도하게 되며, 연결이 실패하는 경우 Load-

balancing 관계에 있는 다른 서버에 차례대로 연결을 시도한 후, 백업으로 지정된 서버에 연결을 시도한

다.

● TMAX_HOST_ADDR에 설정하는 환경변수의 길이는 최대 255byte이다.

● TMAX_HOST_ADDR에 지정된 주소로 모두 연결이 실패하는 경우 TMAX_BACKUP_ADDR 환경변수

에 지정된 주소로 접속을 시도한다.

● TMAX_HOST_ADDR 환경변수의 값에는 공백이 없어야 한다.

● 셸에서 export나 setenv로 환경변수를 지정하는 경우에는 괄호나 파이프 기호( | )를 셸이 별도로 처리

하기 때문에 큰따옴표(" ")를 사용해야 한다.

예제

● 기존의 방식대로 동작하고 싶은 경우

TMAX_HOST_ADDR=192.1.1.1

TMAX_HOST_PORT=9000

● 클라이언트가 랜덤하게 접속하고 싶은 경우

TMAX_HOST_ADDR=(192.1.1.1:9000|192.1.1.2:9001),192.1.1.3:9003,192.1.1.4:9004

제2장 환경변수 설정 17

Page 34: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와
Page 35: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

제3장 환경파일 설정

3.1. 개요Tmax 환경파일에는 하나의 Tmax 도메인에 대한 환경설정을 한다. 도메인(Domain)이란, 여러 노드(Machine)

로 이루어질 수 있는 하나의 독립적인 Tmax 시스템을 말한다. 도메인 정보에는 시스템에 접속할 수 있는

최대 사용자 수, 트랜잭션 처리의 시간 제한, 클라이언트의 서비스 처리 시간 등의 내용이 포함된다.

도메인을 구성하는 각 노드에 따라 개별적으로 환경설정을 할 수 있다. 노드에 접속할 수 있는 최대 사용

자 수, 노드에 존재하는 Tmax 프로그램의 위치, 업무처리 서버 프로세스의 위치 등의 내용을 포함한다.

또한 서버 그룹에 대한 환경설정이 가능하다. 서버 그룹은 서비스를 제공하는 업무처리 서버 프로세스의

모임으로, 여러 개의 서버 프로세스를 하나의 서버 그룹으로 묶어 관리할 수 있도록 한다. 서버 그룹에는

데이터베이스 접근 정보, 부하 조절 및 장애 대책 등의 환경설정을 할 수 있다.

실질적으로 서비스를 제공하는 업무처리 서버 프로세스(명령어 라인 옵션이나 서버 개수)와 서비스(우선

순위와 처리 제한 시간), 라우팅(데이터의 타입과 범위에 따라 서버 그룹별로 분산 처리)에 대한 환경설정

도 필요하다. 도메인 사이의 서비스를 처리할 수 있는 게이트웨이 환경도 설정할 수 있다.

환경파일은 총 8개의 절로 구성된다.

● DOMAIN

● NODE

● SVRGROUP

● SERVER

● SERVICE

● GATEWAY

● ROUTING

● RQ

각 절은 서로 트리(Tree) 형태로 상관 관계를 가진다. Tmax 시스템 전체 환경에 대한 도메인이 존재하고,

도메인에는 하나 이상의 노드가, 각 노드에는 하나 이상의 서버 그룹이, 서버 그룹 안에는 하나 이상의 업

무처리 서버 프로세스가, 그리고 각 업무처리 서버 프로세스에는 하나 이상의 서비스가 포함되는 관계를

갖는다.

제3장 환경파일 설정 19

Page 36: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

다음은 환경파일을 구성하는 각 절의 상호 연관 관계를 트리 형태로 나타낸 것이다.

[그림 3.1] 환경파일 구성요소 간의 상호 연관관계

3.1.1. 환경파일의 형식

Tmax 환경파일은 DOMAIN 절, NODE 절, SVRGROUP 절, SERVER 절, SERVICE 절, GATEWAY 절,

ROUTING 절로 구성되고, 이 중에서 GATEWAY 절, ROUTING 절을 제외한 나머지 5개의 절은 반드시 정

의되어야 한다.

각 절의 정의 형식은 다음과 같다.

*절

이름 항목1 = .… , 항목2 = .… , 항목3 = ....

다음은 Tmax 환경파일을 설정한 예이다.

*DOMAIN

res1 SHMKEY = 77990, MINCLH = 1, MAXCLH = 3,

MAXUSER = 100, TPORTNO = 8888, BLOCKTIME = 100

*NODE

tmax1 TMAXDIR = "/home/tmax",

20 Tmax Administration Guide

Page 37: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

APPDIR = "/home/tmax/appbin",

PATHDIR = "/home/tmax/path",

SLOGDIR = "/home/tmax/log/slog",

TLOGDIR = "/home/tmax/log/tlog",

ULOGDIR = "/home/tmax/log/ulog"

*SVRGROUP

svg1 NODENAME = tmax1, DBNAME = ORACLE,

OPENINFO = "Oracle_XA+Acc = P/tmax/tmax+SesTm = 60"

svg2 NODENAME = tmax1

*SERVER

svr1 SVGNAME = svg1, CLOPT ="-A -- -f aa -x bb"

svr2 SVGNAME = svg2

*SERVICE

SVC1 SVRNAME = svr1

SVC2 SVRNAME = svr2

절의 이름은 애스터리스크(*)로 시작되며 대문자를 사용한다. 절의 정의 순서는 고정되어 있지 않아서 어

느 절이 먼저 정의되어도 상관없다. 하나의 절이 여러 번으로 나누어 한 번 이상 정의될 수 있다. 예를 들

어, 노드별로 해당 서버 그룹, 업무처리 서버 프로세스, 서비스 등을 분리하여 정의할 수 있다. 단, 동일한

내용을 반복해서 정의하면 안 된다.

<Tmax 환경파일의 형식>

* DOMAIN

tmaxsys

* NODE

nodel

........

* SVRGROUP

svg1

........

* SERVER

........

* SERVICE

........

* NODE

node2

........

* SVRGROUP

svg2

........

* SERVER

........

* SERVER

........

제3장 환경파일 설정 21

Page 38: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

* SERVICE

........

각 절의 항목은 다음과 같은 형식으로 정의한다. 항목은 '항목 이름 = 값'의 형태로 정의된다.

항목 = 형태 (default값)

범위 또는 크기

내용

각 항목은 다음의 4가지 형태 중 하나의 값으로 정의될 수 있으며, 항목 이름은 값으로 사용될 수 없다.

형태항목값

숫자 범위를 정의numeric

abc 형태의 문자열string

"abc" 형태의 문자열literal

Yes 또는 NO 형태Y / N

Yes 또는 Both 또는 NoY/B/N

3.1.2. 작성 주의사항

환경파일의 각 절과 항목은 다음과 같은 형식에 따라 작성되어야 한다.

1. 절은 애스터리스크( * )로 시작하고 반드시 대문자이어야 한다.

2. 절의 이름이나 절의 하위 개체의 이름은 반드시 첫 번째 칸에서 시작되어야 한다.

3. 절의 이름이나 절의 하위 개체의 이름 이외의 항목은 첫 번째 칸에서 시작할 수 없다.

4. 절의 각 항목은 콤마( , )로 구분되어야 한다. 콤마( , )가 없으면 해당 절의 정의가 끝난 것으로 간주한다.

5. 항목과 항목 사이의 공백은 의미가 없다.

6. 항목을 정의하지 않으면 기본값으로 설정된다.

3.1.3. Tmax 환경파일 설정

Tmax 환경파일의 작성은 Tmax 시스템 관리자가 해야 하는 가장 중요한 일이다. Tmax 시스템은 환경파

일을 기초로 기동하고 종료된다. 그러므로 환경파일이 존재하지 않거나 잘못 만들어지면 Tmax 시스템은

동작할 수 없다.

22 Tmax Administration Guide

Page 39: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

Tmax 환경파일은 크게 7부분으로 나누어진다.

● 기본 환경설정

Tmax 시스템을 구성하기 위해 기본적으로 필요한 환경설정을 한다. Tmax 환경파일에 필수적으로 정

의되어야 하는 DOMAIN 절, NODE 절, SVRGROUP 절, SERVER 절, SERVICE 절과 도메인 사이의 서

비스를 처리할 수 있는 GATEWAY 절, 라우팅 환경설정을 위해 추가할 수 있는 ROUTING 절 등 Tmax

환경파일의 전반적인 내용이 다루어진다.

데이터베이스, 트랜잭션, 부하 조절, 장애 대책, 보안 관련 환경설정은 기본 환경설정을 바탕으로 이루

어진다.

● 데이터베이스 환경설정

데이터베이스 정보를 등록하여 데이터베이스를 관리하기 위해 필요한 데이터베이스 관련 환경설정을

한다.

● 분산 트랜잭션 환경설정

Tmax 시스템의 분산 트랜잭션 처리(Distributed Transaction Processing) 기능을 사용할 경우 필요한 트

랜잭션 환경설정을 한다.

● 부하 조절 환경설정

노드 사이의 부하 조절을 위해서 필요한 환경설정을 한다. 선택적으로 정의할 수 있는 ROUTING 절에

대한 자세한 설명이 다루어진다.

● 신뢰성 큐 환경설정

장애로 인하여 시스템이 비정상적으로 종료되었을 때, 종료 전에 요청된 서비스가 시스템을 정상 부팅

한 후에 계속 처리가 가능하도록 환경설정을 한다.

● 장애 대책 환경설정

노드에 장애가 발생할 경우, 장애 노드의 서비스가 다른 노드에서 제공되도록 하기 위한 환경설정을 한

다.

● 보안 환경설정

Tmax 시스템의 보안 기능을 위한 환경설정을 한다.

● 멀티 도메인 환경설정

Tmax 시스템의 멀티 도메인 환경에서 도메인 사이의 라우팅 관련 환경설정을 한다.

제3장 환경파일 설정 23

Page 40: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.2. 기본 환경설정환경파일에 필수적으로 정의되는 5개의 절 DOMAIN, NODE, SVRGROUP, SERVER, SERVICE와 멀티

도메인을 처리하기 위한 GATEWAY 절 그리고 ROUTING 절에 대해 설명한다.

3.2.1. DOMAIN 절

하나의 독립적인 Tmax 시스템 전체에 대한 환경설정을 한다. 멀티 도메인으로 시스템을 정의하였을 경우

에는 GATEWAY 절을 이용하여 도메인 사이의 서비스를 처리할 수 있다. DOMAIN 절에는 기본적으로 다

음과 같은 내용을 설정할 수 있다.

● 공유 메모리(shared memory)의 key 값을 얼마로 설정할 것인가?

● Tmax 프로세스(CLH)를 몇 개나 실행할 것인가?

● 최대 몇 명의 클라이언트가 접속할 수 있는가?

● 포트 번호는 어떻게 정할 것인가?

● 클라이언트가 서비스를 요청한 후, 최대 얼마 동안 기다리도록 할 것인가?

DOMAIN 절에 정의된 내용은 하나의 Tmax 시스템을 구성하는 모든 노드에 공통적으로 적용된다. 그러나

DOMAIN 절에 정의되어 있어도 나머지 4개 절에서 재정의할 수 있는 항목도 있다. 기본 정의 내용과 재정

의 내용이 서로 충돌할 경우 후자가 우선한다. DOMAIN 절의 항목은 필수 항목과 선택 항목으로 나누어진

다.

DOMAIN 절의 기본 환경설정 형식은 다음과 같다.

[DEFAULT : ]

Domain Name SHMKEY=shared-memory-segment-key,

[MAXUSER=1 ~ MAX_INT,]

[MINCLH=1 ~ 10,]

[MAXCLH=1 ~ 10,]

[TPORTNO=port-number,]

[RACPORT=port-number,]

[BLOCKTIME=timeout-value,]

[CPC=channel-number]

[MAXFUNC=max-function-number,]

[LOGOUTSVC="logout-service-name",]

[CLICHKINT=interval-time-value,]

[IDLETIME=idle-time,]

[MAXSACALL=numeric,]

[MAXCACALL=numeric,]

[TXTIME=transaction-timeout-value,]

[NLIVEINQ=alive-check-interval,]

24 Tmax Administration Guide

Page 41: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

[NCLHCHKTIME= interval-time-value,]

[MAXCONV_NODE=numeric,]

[MAXCONV_SERVER=numeric,]

[SECURITY = ("NO_SECURITY") | "DOMAIN_SEC" | "USER_AUTH" |

"ACL" | "MANDATORY" ,]

[OWNER=name,]

[IPCPERM=mask,]

[DOMAINID=numeric,]

[CMTRET=literal,]

[MAXNODE=numeric,]

[MAXSVG=numeric,]

[MAXSPR=numeric,]

[MAXSVR=numeric,]

[MAXSVC=numeric,]

[MAXCPC=numeric,]

[MAXTMS=numeric,]

[MAXROUT=numeric,]

[MAXROUTSVG=numeric,]

[MAXRQ=numeric,]

[MAXGW=numeric,]

[MAXCOUSIN=numeric,]

[MAXCOUSINSVG=numeric,]

[MAXBACKUP=numeric,]

[MAXBACKUPSVG=numeric,]

[MAXTOTALSVG=numeric,]

[MAXPROD=numeric,]

[GWCHKINT=interval-time-value,]

[GWCONNECT_TIMEOUT=interval-time-value,]

[TMMLOGLVL=tmm-log-level,]

[CLHLOGLVL=clh-log-level,]

[TMSLOGLVL=tms-log-level,]

[LOGLVL=server-log-level,]

[CRYPT=Y|(N),]

[MAXTHREAD = numeric,]

[TDL=Y / (N)]

필수항목

● Domain Name = string

– 범위 : 15자 이내

– DOMAIN 절은 Tmax 시스템의 전반적인 환경에 대한 정의이다.

제3장 환경파일 설정 25

Page 42: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● SHMKEY = numeric

– 범위 : 32768 ~ 262143

– 공유 메모리 세그먼트(shared memory segment)를 가리키는 값이다. Tmax에는 전체적인 Tmax 관리

자로 다른 프로세스를 관리하는 TMM, 데이터베이스 및 리소스를 관리하는 TMS, 클라이언트의 연결

을 관리하는 CLL, 클라이언트와 서버 프로세스 사이에서 요청 및 응답을 처리하는 CLH 등 기능별로

크게 4개의 프로세스가 존재한다.

SHMKEY에서 이러한 4개의 프로세스가 공유해야 할 정보를 관리하기 위한 공유 메모리 key 값을 정

의한다. Tmax 시스템은 내부적으로 4개의 공유 메모리가 사용되어 정의된 값부터 차례대로 4개의 키

값(SHMKEY, SHMKEY+1, SHMKEY+2, SHMKEY+3)을 사용한다.

주의

공유 메모리 key 값을 정의하기 전에 이 key 값이 다른 업무에서 사용되는지 확인해야 한다. 충돌을

막기 위해서 사용되지 않는 값을 정의해야 한다.

선택항목

● DEFAULT

DOMAIN 절뿐만 아니라 Tmax 환경파일의 모든 절에서 사용할 수 있는 항목으로 자세한 내용은 NODE

절을 참고한다.

● MAXUSER = numeric

– 범위 : 1 ~ MAX_INT

– 도메인에 동시에 접속할 수 있는 최대 클라이언트 수를 정의한다. 'MAXUSER로 설정된 값 + 1'만큼

의 클라이언트 접속을 허용하고 있다.

● MINCLH = numeric

– 범위 : 1 ~ 10

– 기본값 : 1

– Tmax 시스템이 기동될 때 작동하는 CLH의 최소 개수를 정의한다.

– CLH는 클라이언트의 요구를 처리하는 프로세스로 클라이언트의 서비스 요청을 받아 업무처리 서버

프로세스에게 서비스를 요청하고 그 결과를 받아 다시 클라이언트에게 돌려주는 기능을 한다. CLH

는 모든 클라이언트와 연결이 이루어지는 프로세스로, 시스템에 따라 하나의 CLH에 연결될 수 있는

클라이언트의 수가 제한되어 있다. 그러므로 많은 클라이언트가 연결을 시도하는 대형 도메인의 경

26 Tmax Administration Guide

Page 43: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

우, 하나 이상의 CLH 프로세스를 동작시켜야 한다. 그러기 위해서 적절한 MINCLH 값을 정의해야 한

다.

[그림 3.2] MINCLH = 2

● MAXCLH = numeric

– 범위 : 1 ~ 10

– 기본값 : 10

– CLH의 최대 개수를 정의한다. 처음 Tmax 시스템이 기동될 때, CLH는 MINCLH에 정의한 개수 만큼

동작한다. MINCLH에 정의한 CLH 프로세스의 개수로는 감당할 수 없을 만큼 클라이언트의 요구가

증가하는 경우, CLH 프로세스를 추가적으로 동작시켜 원활하게 업무를 처리하도록 할 수 있다.

추가되는 CLH 프로세스의 개수에 이미 동작하고 있는 CLH 프로세스를 합쳐서 MAXCLH 개수를 초

과할 수 없다. 현재는 클라이언트 요구 증가에 따라 MAXCLH 프로세스의 개수가 늘어나는 기능은 제

공되지 않고 있다.

● TPORTNO = numeric

– 기본값 : 8888

– 클라이언트가 서버에 연결할 때 사용하는 Tmax 시스템의 포트 번호를 정의한다. 정의된 값(TPORTNO)

과 바로 다음 값(TPORTNO+1)이 포트 번호로 사용된다.

처음 TPORTNO 값은 클라이언트가 서버에 연결할 때 사용하고, 다음 값(TPORTNO+1)은 노드 사이

의 통신을 위해 사용된다. 클라이언트/서버 환경에서 클라이언트는 서버의 주소와 Tmax 시스템의 포

트 번호를 알아야 한다.

제3장 환경파일 설정 27

Page 44: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– Tmax 클라이언트 환경에서는 주소(TMAX_HOST_ADDR)와 포트 번호(TMAX_HOST_PORT)가 설

정되어야 한다. 이때, 설정되어야 할 포트 번호가 TPORTNO이다. 하지만 클라이언트와 서버가 같은

노드에 존재하는 경우에는 TCP/IP 소켓을 사용하지 않고 도메인 소켓을 사용하여 보다 효과적으로

서비스를 처리할 수 있다.

서버는 두 가지 형태의 클라이언트를 모두 수신할 수 있도록 설정되어 있는데 TCP/IP 소켓을 위해서

는 TPORTNO로 대기하고 있으며 도메인 소켓을 위해서는 PATHDIR의 cllrcad라는 스트림 파이프로

대기하고 있다.

– 클라이언트와 서버가 같은 노드에 존재하는 경우에는 환경변수의 TMAX_HOST_PORT 항목에

TPORTNO에서 사용한 포트 번호 대신에 PATHDIR을 지정하면 된다.

예를 들면 .profile 또는 tmax.env의 TMAX_HOST_PORT=/home/tmax/path TPORTNO+1은 노드 사

이의 통신을 위해 또 하나의 포트 번호로 사용된다.

– Tmax 시스템의 노드 사이의 구성 방식은 Peer-to-peer 형태이다. TPORTNO+1 값을 사용하여 환경

파일에 등록된 순서대로 다음 노드를 체크한다. 시스템 영역에서는 1024 미만의 포트 번호가 쓰이고

있으므로 관리자는 이 범위를 피해야 한다.

– 클라이언트와 Tmax 시스템 또는 노드 사이에 통신을 할 때 TPORTNO와 TPORTNO+1 값에 정의된

포트 번호가 사용되기 때문에, 이 값이 다른 곳에서 사용되고 있는지 반드시 확인해야 한다. 또한, 멀

티 노드를 설정할 때 CLH가 추가적인 포트를 사용하므로 CLH 개수 만큼 포트 번호가 유효한지도 확

인해야 한다.

● RACPORT = numeric

– 기본값 : 3333

– 한 도메인 내에 여러 노드가 구성되어 있는 경우, 여러 노드를 중앙에서 관리하기 위해서 각각의 노드

사이에 통신을 위한 포트 번호를 정의한다. 관리 프로세스 중의 하나인 racd에서 사용하는 포트 번호

이다.

해당 포트 번호는 환경변수인 TMAX_RAC_PORT 번호에 정의된 값과 동일해야 한다. 시스템 영역에

서는 1024 미만의 포트 번호가 쓰이고 있으므로 관리자는 이 범위를 피해야 한다.

– 환경변수에서 값이 다를 경우 TMAX_RAC_PORT를 사용한다. RACPORT는 TPORTNO에서 정의한

포트 번호보다 작은 포트 값을 사용할 것을 권장하며, 또한 RACPORT의 포트 번호도 다른 곳에서 사

용되고 있는지의 여부를 반드시 확인해야 한다.

● BLOCKTIME = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

28 Tmax Administration Guide

Page 45: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 서비스 요구에 대한 타임아웃(timeout) 시간을 결정한다. 클라이언트가 API 함수를 통해 서비스 요청

후 최대 BLOCKTIME 시간이 지나도록 응답이 없으면 클라이언트 자체적으로 타임아웃 처리를 한다.

그러나 서버 프로세스는 계속해서 서비스를 처리한다.

– 서비스도 종료하고 싶으면 SERVICE 절의 SVCTIME에 서비스 타임을 지정해야 한다. BLOCKTIME

은 SVCTIME과 깊이 연관되어있다. BLOCKTIME이 SVCTIME보다 길다면, 클라이언트 tpcall을 타임

아웃할 때 SVCTIME이 적용된다. 반대로 SVCTIME이 BLOCKTIME보다 길다면, BLOCKTIME이 적

용된다. 이럴 경우, BLOCKTIME은 클라이언트의 tpcall을 위한 타임아웃이고, SVCTIME은 서버 프로

세스를 위한 타임아웃이기 때문에 SVCTIME의 타임아웃 시간까지 tpcall()된 서비스가 수행된다. 일

반적으로 BLOCKTIME은 SVCTIME보다 큰 값을 갖는다.

– BLOCKTIME의 단위는 초(second)이다.

● NLIVEINQ = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 30 (단위 : 초)

– Tmax 시스템이 여러 노드로 구성되었을 경우, 노드 사이의 감시 시간 간격(초 단위)을 정하는 항목이

다. Tmax 시스템은 양 옆의 노드를 Peer-to-peer로 연결하여 환경파일에 등록된 순서대로 다음 노드

를 감시함으로써 전체 노드가 원활하게 통신할 수 있도록 구성되어 있다. NLIVEINQ 시간이 짧으면

양 노드를 빈번하게 감시해 노드의 이상 상태를 즉시 체크 할 수 있으나, 많은 통신량으로 인해 통신

부하가 발생할 수 있다. 반대로 NLIVEINQ 시간이 너무 길면 통신량은 적으나 노드의 이상 상태를 즉

시 감시를 할 수 없다. 따라서 시스템 성능을 최적화하기 위하여 네트워크 부하량, 업무의 중요도 등

을 고려하여 적절한 NLIVEINQ 값을 정해야 한다.

● CPC = numeric

– 범위 : 1 ~ 128

– 기본값 : 1

– 여러 노드로 구성된 Tmax 시스템에서 노드의 CLH 프로세스의 채널 수를 결정하는 항목이다. 양 노

드 사이에 서비스 요청이 많거나, 또는 분산 트랜잭션이 많을 경우 노드 사이에 채널 수가 너무 적으

면 서비스 처리가 지연되어 전체적으로 시스템 성능이 저하될 수 있다. 이처럼 전체 시스템의 성능을

높이려면 각 노드의 CLH 프로세스 사이에 적정 병렬 통신 채널 수를 지정해야 한다.

● MAXFUNC = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

제3장 환경파일 설정 29

Page 46: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– TopEnd 시스템으로 구축된 시스템을 Tmax 시스템으로 전환할 때 TopEnd 시스템에서 사용하는 함

수를 Tmax 시스템에서 제공할 수 있도록 함수 테이블의 크기를 결정하는 항목이다.

● MAXPROD = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– TopEnd 시스템으로 구축된 시스템을 Tmax 시스템으로 전환할 때 사용하는 항목으로 지정할 수 있

는 product name의 최댓값을 의미한다. (TopEnd 용)

● LOGOUTSVC = service-name

– 정상, 비정상 상태에서 수행될 서비스를 Tmax 서버의 클라이언트 로그아웃 프로세스에 등록한다.

– LOGOUTSVC는 시스템에서 클라이언트의 정상적인 로그아웃을 위해 서비스에 로그인이나 로그아

웃을 할 때 사용된다. LOGOUTSVC는 설정된 시간(CLICHKINT, IDLETIME)이 지나서 클라이언트가

자동으로 로그아웃이 되는 경우 이를 처리한다.

– LOGOUTSVC 항목을 사용할 때 주의할 점은 반드시 Tmax 클라이언트인 경우에만 LOGOUTSVC가

수행이 된다는 점이다. 일반 소켓 연결이 발생하는 상황에서는 수행되지 않는다. service name을 서

비스로 하는 프로그램에는 내부적으로 tpgetclid()를 호출하여 클라이언트 ID를 알 수 있고, 로그아웃

원인은 tpsvcinfo 구조체 항목의 CD를 참조한다.

설명설정값

클라이언트의 정상 로그아웃TPNOAUTH (0)

Tmax가 인지한 로그아웃 (네트워크 등)TPSYSAUTH(1)

비정상 로그아웃 (데이터수신 장애 등)TPAPPAUTH(2)

● CLICHKINT = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– 클라이언트의 정상 기동여부를 주어진 감시 시간 간격으로 체크하기 위한 항목이다. 단독으로 사용

하는 것보다 다음 항목에 설명할 IDLETIME 항목과 조합해서 사용하면 클라이언트의 정확한 상태를

Tmax 엔진에서 감시하여 낭비되는 자원을 최소화할 수 있다.

– 해당 항목을 DOMAIN 절에 정의하면 해당 도메인에 접속한 모든 클라이언트를 감시하고 NODE 절에

등록하면 해당 노드에 접속한 클라이언트만 감시한다.

30 Tmax Administration Guide

Page 47: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● IDLETIME = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– 클라이언트의 유휴시간(idle time)을 정의한다. CLICHKINT를 5로 설정하고 IDLETIME을 30으로 설

정하였다면, 5초 간격으로 클라이언트의 상태를 확인하고 30초 이내에 요청이 들어오지 않으면 Tmax

엔진에서 그 클라이언트를 제거한다.

– IDLETIME은 클라이언트로부터 tpstart()로 연결을 맺거나 tpcall(), tpacall() 요청이 온 다음부터 유효

하다. 이때, 값은 BLOCKTIME이나 SVCTIME보다 커야 한다. 만약 IDLETIME 값이 BLOCKTIME과

SVCTIME보다 더 작게 설정된다면 클라이언트가 응답을 받기 전에 자동으로 로그아웃이 된다.

● MAXSACALL = numeric

– 범위 : 1 ~ 1024

– 기본값 : 8

– 서버 프로세스가 tpgetrply 없이 요청할 수 있는 tpacall의 개수를 정의한다. 서버 라이브러리는 각각

의 tpacall을 따르기 때문에 테이블 크기를 설정하는 초기화 MAXSACALL에 테이블을 작성한다.

● MAXCACALL = numeric

– 범위 : 1 ~ 1024

– 기본값 : 16

– 클라이언트 프로세스가 tpgetrply 없이 요청할 수 있는 tpacall의 개수를 정의한다. 클라이언트 라이브

러리는 각각의 tpacall을 따르기 때문에 테이블 크기를 설정하는 초기화 MAXCACALL에 테이블을 작

성한다.

● MAXCONV_NODE = numeric

– 범위 : 1 ~ 2048

– 기본값 : 16

– CLH별 동시에 실행 가능한 대화형 서비스 수이다. 즉, 모든 클라이언트 및 서버프로세스에서 동시에

대화형서비스를 100개까지 호출한다면 이 값은 100 이상이 되어야 한다.

– MAX를 초과될 때 TPELIMIT 에러가 발생한다.

제3장 환경파일 설정 31

Page 48: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● MAXCONV_SERVER = numeric

– 범위 : 1 ~ 256

– 기본값 : 8

– 각 클라이언트, 서버프로세스별 동시에 실행가능한 대화형 서비스 수로 MAXCACALL, MAXSACALL

과 같은 개념이다.

– MAXCONV_NODE 와 마찬가지로 MAX를 초과할 경우 TPELIMIT 에러가 발생한다.

● IPCPERM = numeric

– 범위 : 0600 – 0777

– 기본값 : 0600(파일 접속 제어의 기본값은 IPCPERM이 없을 때는 600이다.)

– PCPERM(inter-process communication permission mask)는 공유 메모리 세그먼트와 $(TMAXDIR)/path

에 위치한 파이프 파일의 제어 단위를 설정하는 데 쓰인다. 또한 시스템 로그파일($(TMAXDIR)/log/slog)

의 제어 단위도 설정한다.

– UNIX 시스템 환경에서는 관리자가 개인이나 그룹, 기타에게 각각 파일 접속 제어(판독가능/기록가능/

수행가능)를 지정 할 수 있다. 사용자(개인)의 판독과 기록은 가능하지만 그룹과 기타는 불가능하다.

– IPCPERM 필드는 다른 사용자에게 시작/종료 권한을 주기 위해 제어를 설정하는 데 사용된다. IP

CEPERM이 없으면, 다른 사용자는 서버 프로세스의 시동과 종료를 제어할 수 없다.

● DOMAINID = numeric

– 범위 : 0 ~ 255

– 기본값 : 0

– 여러 개의 도메인으로 작업을 할 때 특정 도메인을 나타내기 위한 키 값이 필요하다. 이 필드는 키 값

을 정의하는 데 쓰인다. 멀티 도메인 환경에서는 반드시 설정되어 있어야 한다.

● SECURITY = "NO_SECURITY" | "DOMAIN_SEC" | "USER_AUTH" | "ACL" | "MANDATORY"

– 기본값 : "NO_SECURITY"

– “NO_SECURITY” | ”DOMAIN_SEC” | ”USER_AUTH“ 등을 사용해 Tmax시스템의 보안 설정에 쓰인

다. Tmax는 다양한 보안 기능을 제공한다. 자세한 설명은 “3.8. 보안 환경설정”을 참고한다.

32 Tmax Administration Guide

Page 49: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● OWNER = user_name

– 범위 : 15자 이내의 string

– 자세한 설명은 “3.8. 보안 환경설정”을 참고한다.

● TXTIME = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– 트랜잭션 모드에서 요청한 서비스의 처리가 주어진 시간 내에 수행되지 않으면 해당 서비스의 처리

를 취소한다. 시간 단위는 초이다.

– 서비스 수행 전후 XA를 처리하는 중 데이터베이스나 네트워크 장애로 인해 무한 블록이 일어나는 경

우를 방지하기 위해서 내부 타임아웃을 적용한다.

● NCLHCHKTIME = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– 각 노드의 CLH 프로세스가 일정시간 동안 데이터의 흐름이 없으면 지정한 시간이 되면 자동적으로

각 노드의 CLH 프로세스끼리 감시 신호를 보내는 역할을 담당한다. 단위는 초이다.

– 방화벽은 특정 시간 동안 데이터의 흐름이 없으면 사용 프로세스를 제거하는 기능이 있는데 이때

Tmax의 내부 CLH 프로세스도 영향을 받는다. 따라서 이 기능을 사용할 때는 세심한 주의가 필요하

다.

● CMTRET = Y / N

– 기본값 : Y

– 자세한 설명은 “3.4. 분산 트랜잭션 환경설정”을 참고한다.

● MAXNODE = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 32

제3장 환경파일 설정 33

Page 50: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 도메인 내 최대 노드 개수의 한계를 설정한다.

● MAXSVG = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 32

– 해당 노드에서 사용할 수 있는 최대 서버 그룹 개수의 한계를 설정한다.

● MAXSPR = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 64

– 한 노드에 최대로 기동할 수 있는 서버 프로세스의 개수로 각 서버 프로세스의 MAX의 합으로 계산된

다.

● MAXSVR = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 64

– 한 노드에 최대로 등록할 수 있는 서버의 최대 개수를 의미한다. 한 노드에 svr1, svr2, svr3라는 세 개

의 서버가 등록되어 있고 각 서버마다 MAX의 값이 "50"이라면 "MAXSPR=150"이 되고 "MAXSVR=3"이

된다.

● MAXSVC = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 512

– 한 도메인에서 서버 프로세스에 최대로 등록 가능한 서비스의 개수를 지정한다.

– tmadmin에서 cfg -d로 보았을 때 지정한 값과 다르게 나타나는 이유는 추후 동적서비스 및 동적노드

를 추가할 때 필요한 예비영역까지 포함되어 있기 때문이다.

● MAXTMS = numeric

– 범위 : 1 ~ MAX_INT

34 Tmax Administration Guide

Page 51: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 기본값 : 32

– 해당 노드에서 기동 가능한 TMS의 최대 개수를 설정한다.

● MAXROUT = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 16

– 서비스 중에서 ROUTING 항목을 지정할 수 있는 서비스의 최대 개수를 의미한다. 예를 들어 30개의

서비스가 있을 경우 그 중 10개의 서비스만 ROUTING 항목을 지정할 수 있다면 MAXROUT는 10이

된다.

● MAXROUTSVG = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 32

– SERVICE 절의 ROUTING 항목에 지정한 라우팅의 총 합의 최댓값을 의미한다.

예를 들어 MAXROUT의 값이 10이고 각각 ROUTING 항목에 두 개의 라우팅을 지정할 수 있다면

MAXBACKUPSVG의 값은 20이 된다.

● MAXRQ = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 2

– 해당 노드에서 사용할 수 있는 최대 RQ의 개수를 지정한다.

● MAXGW = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 2

– 해당 노드에서 사용할 수 있는 최대 게이트웨이의 개수를 지정한다.

● MAXCOUSIN = numeric

제3장 환경파일 설정 35

Page 52: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 범위 : 1 ~ MAX_INT

– 기본값 : 16

– 서버 그룹에서 COUSIN 항목을 지정할 수 있는 서버 그룹의 최대 개수를 의미한다.

예를 들어 30개의 서버 그룹이 있을 경우 그 중 10개의 서버 그룹만이 COUSIN 항목을 지정할 수 있

다면 MAXCOUSIN은 10이 된다.

● MAXCOUSINSVG = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 32

– SVRGROUP 절의 COUSIN 항목에 지정한 서버 그룹의 총 합의 최댓값을 의미한다.

예를 들어 MAXCOUSIN의 값이 10이고 COUSIN 항목에 2개의 서버 그룹을 지정할 수 있다면 MAX

COUSINSVG의 값은 20이 된다.

● MAXBACKUP = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 16

– 서버 그룹에서 BACKUP 항목을 지정할 수 있는 서버 그룹의 최대 개수를 의미한다.

예를 들어 30개의 서버 그룹이 있을 경우 그 중 10개의 서버 그룹만이 BACKUP이란 항목을 지정할

수 있다면 MAXBACKUP은 10이 된다.

● MAXBACKUPSVG = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 32

– SVRGROUP 절의 BACKUP 항목에 지정한 서버 그룹의 총 합의 최댓값을 의미한다.

예를 들어 MAXBACKUP의 값이 10이고 각각 BACKUP 항목에 두 개의 서버 그룹을 지정할 수 있다

면 MAXBACKUPSVG의 값은 20이 된다.

● MAXTOTALSVG = numeric

– 범위 : 1 ~ MAX_INT

36 Tmax Administration Guide

Page 53: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 기본값 : 64

– 지정할 수 있는 총 서버 그룹의 최대값을 의미한다.

● MAXCPC = numeric

– 범위 : 0 ~ 65535

– 기본값 : 32

– CPC의 최대값을 설정한다. 동적 추가를 위한 항목으로 MAXCPC에 정의한 개수를 넘지 않는 범위

내에서 CPC의 개수를 동적으로 추가할 수 있다. 동적으로 CPC를 추가하는 API는 현재 Tmax 5.0에

서는 지원하지 않는다.

● GWCHKINT = numeric

– 범위 : 1 ~ MAX_INT

– 단위 : 초

– 멀티 도메인 환경에서 백업 노드 게이트웨이가 존재하는 경우, 리모트의 메인 노드 게이트웨이에 장

애가 일어났을 때 백업 노드 게이트웨이에 접속하여 서비스 요청을 하게 된다. 이 상황에서는 메인 노

드가 복구된 후에도 백업 노드에 서비스 요청을 한다. 메인 노드와 다시 연결을 맺기 위해서는 백업

노드 게이트웨이를 임의로 다운시켜야만 한다. 하지만 사용자가 메인 노드가 복구된 후에는 메인 노

드와 거래가 이루어지기를 바라는 경우, Tmax 환경파일에 이 항목을 설정하여 가능하게 된다.

– 다음은 항목 설정할 때 고려사항이다.

• GWCHKINT 항목이 설정되어 있지 않은 경우, 이전과 같은 방식으로 동작한다. 즉, 메인 노드가 재

기동되어도 메인 노드와의 재연결을 시도하지 않는다.

• 메인 노드와 연결이 이루어진 후에도 백업 게이트웨이와의 연결은 임의로 해지해야 한다. 만약 임

의로 해지 하지 않으면 메인 노드와 백업 노드와의 연결을 모두 유지하게 된다. 하지만 거래는 메인

노드에게만 전달된다.

● GWCONNECT_TIMEOUT = numeric

– 범위 : 1 ~ MAX_INT

– 단위 : 초

– 도메인 게이트웨이는 초기 시스템이 기동될 때 리모트 게이트웨이와 연결을 시도한다. 환경파일

DOMAIN 절에 GWCHKINT 항목이 설정되어 있지 않은 상태에서, 리모트 게이트웨이가 설치되어 있

제3장 환경파일 설정 37

Page 54: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

는 머신이 기동되어 있지 않은 경우, 요청자 입장에서는 연결이 실패했다는 메시지가 나올 때까지 오

랜 시간을 기다리게 된다. 또한 이와 같은 상황에서 거래가 없을 경우 재연결을 시도하지 않게 되며

서비스가 요청되는 시점에 재연결을 시도하게 되는데 이 경우에도 리모트 게이트웨이가 준비되어 있

지 않은 상황이라면 오랜 시간을 기다려야 한다. 이와 같은 단점을 해소하기 위해서 연결 타임아웃을

지정할 수 있도록 한다.

주의

GWCONNECT_TIMEOUT이 설정되어 있지 않다면 기존과 같은 방식으로 동작하게 된다.

● TMMLOGLVL = string

– 기본값 : DETAIL

– TMM의 로그 레벨을 설정한다. (COMPACT, BASIC, (DETAIL), DEBUG1, DEBUG2, DEBUG3, DE

BUG4 중 한 가지를 선택하여 지정한다.)

• COMPACT : E + F

• BASIC : E + F +W

• DETAIL : E + F + W + I

• DEBUG1, DEBUG2, DEBUG3, DEBUG4 : 내부적인 디버그 로그의 상세 정도 (DEBUG4가 가장

상세함)

– DEBUG1 ~ DEBUG4까지는 디버그용 바이너리 및 라이브러리(clh.dbg, tmm.dbg, libsvrd, libtmsd,

libtmsthrd)에서만 유효하다.

● CLHLOGLVL = string

– 범위 : TMM과 동일

– CLH의 로그 레벨을 설정한다.

● TMSLOGLVL = string

– 범위 : TMM과 동일

– TMS의 로그 레벨을 설정한다.

● LOGLVL = string

38 Tmax Administration Guide

Page 55: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

서버의 로그 레벨을 설정한다.

● CRYPT = Y | N

– 기본값 : N

– Tmax 4.0 부터 클라이언트와 서버 사이의 송수신 데이터를 보다 안정적으로 전달할 수 있도록 암호

화 기능을 제공한다. 암호화 기능을 사용하기 위해서는 클라이언트와 서버 모두 암호화 기능이 설정

되어 있어야 한다.

– 서버에 암호화 기능을 설정하기 위해서는 CRYPT 항목을 Y로 설정한다. 사용하지 않으려면 N으로

설정한다. 클라이언트 암호화 기능 설정 방법은 “2.1.2. 클라이언트 환경변수”의 TMAX_SEMANTICS

환경변수를 참조한다.

– 다음은 항목을 설정하는 경우 고려할 사항이다.

• 초기 시스템 연결 시점에 암호화 키 교환이 이루어지며, 서비스를 호출할 때마다 암복호화(encryp

tion/decryption)가 이루어지기 때문에 성능상 오버헤드가 발생할 수 있다.

• 암호화 기능의 사용을 위해서는 사용하는 시스템에 '/dev/random'이 설치되어야 한다. 암호화 기능

을 사용하게 되면 최초 시스템에 연결할 때 암호화 키 교환이 이루어지게 되는데 이때 커널에서 제

공하는 '/dev/random'이라는 문자 장치를 이용하여, 랜덤 키를 만들어 낸다. 따라서 현재 사용하고

있는 시스템에 '/dev/random'의 설치여부를 확인해야 한다. 설치 여부는 ls 명령어를 통해서 확인할

수 있다. 미설치된 경우 각 시스템의 매뉴얼을 참조하여 설치하도록 한다.

OPENINFO="Oracle_XA+Acc=P/scott/tiger+SesTm=60+Thread=true"

• 노드 사이 통신에서는 암호화를 지원하지 않는다.

• 클라이언트가 $PATHDIR을 통해서 접속하는 경우는 암호화하지 않는다.

• 암호화가 설정되지 않은 클라이언트가 암호화가 설정된 엔진에 접속할 경우 TPECLOSE 에러가

발생한다.

• 암호화가 설정된 클라이언트가 암호화가 설정되지 않은 엔진에 접속할 경우 클라이언트는 블록된

다.

● MAXTHREAD = numeric

– 범위 : 1~MAXINT

– 기본값 : 0

제3장 환경파일 설정 39

Page 56: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– Tmax 4.0 이후 버전에서는 멀티 스레드 방식의 트랜잭션 매니저를 제공하여 적은 자원을 이용하여

보다 효율적으로 트랜잭션 처리가 가능하다. 멀티 스레드 TMS를 사용하기 위해서 이 항목에 멀티 스

레드 TMS의 최대 스레드 개수를 지정한다. 또한 SVRGROUP 절에 TMSTYPE, TMSTHREAD, TMSOPT

항목도 설정해 준다.

각 항목에 대한 내용은 SVRGROUP 절을 참조한다.

– 다음은 항목을 설정할 때 고려할 사항이다.

• DBMS가 멀티 스레드를 지원해야 한다. (현재 Oracle이 지원)

• Oracle의 경우 환경파일에 있는 서버 그룹 절의 OPENINFO 항목에 "Thread=true"를 추가해야 한

다.

OPENINFO="Oracle_XA+Acc=P/scott/tiger+SesTm=60+Thread=true"

• 멀티 스레드 TMS를 생성할 때, 반드시 libtms 대신 libtmsthr, libpthread 라이브러리를 링크해서 컴

파일을 해야 한다.

● TDL = Y | (N)

– 기본값 : N

– TDL (Tmax Dynamic Library) 암시적 버전 보호를 사용할 것인지 여부(Y|N)를 설정한다.

참고

TDL과 관련한 자세한 사항은 Tmax 안내서 중에 "Tmax Programming Guide(Dynamic Library)를 참

고한다.

사용 예제

*DOMAIN

res1 SHMKEY = 77990, MAXUSER = 300,

MINCLH = 2, MAXCLH = 3,

TPORTNO = 8889, RACPORT = 3334,

BLOCKTIME = 60, CLICHKINT = 5,

IDLETIME = 30, LOGOUTSVC = logout,

CLHLOGLVL = DEBUG2

40 Tmax Administration Guide

Page 57: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.2.2. NODE 절

DOMAIN 절에서 Tmax 시스템 전체의 환경이 정의되었다면, 다음으로 Tmax 시스템을 이루는 각 노드의

환경설정이 필요하다.

NODE 절에는 다음과 같은 내용이 정의될 수 있다.

● Tmax 시스템의 홈 디렉터리/작업 디렉터리

● 응용 서버 프로그램의 실행파일들을 포함하는 디렉터리

● Tmax 프로세스 사이의 통신을 위한 디렉터리

● 시스템 메시지가 저장될 디렉터리

● 사용자 메시지가 저장될 디렉터리

● 트랜잭션에 대한 정보가 저장될 디렉터리

● 응용 서버 프로그램이 기동될 때 필요한 환경변수가 정의된 환경파일

DOMAIN 절에서 정의한 다음 내용은 노드에 따라 새롭게 정의할 수 있다.

● 공유 메모리 key 값(SHMKEY)

● 최소 CLH 개수(MINCLH)

● 최대 CLH 개수(MAXCLH)

● 포트 번호(TPORTNO, RACPORT)

● 최대 사용자 수(MAXUSER)

● 클라이언트 감시 시간(CLICHKINT, IDLETIME)

Tmax 시스템을 기동하면 노드마다 TMM, CLL, CLH(데이터베이스 관련 시스템인 경우 TMS 포함, 멀티

도메인인 경우 게이트웨이 프로세스 포함) 프로세스와 실제 서비스를 수행하는 서버 프로세스가 기동된

다. 이러한 프로세스를 기동하기 위해서는 실행파일이 존재하는 디렉터리의 위치를 알아야 한다. 또한

Tmax 프로세스가 통신하는 데 필요한 디렉터리와 Tmax 시스템이나 사용자가 내보내는 각종 에러와 경

고 메시지를 저장하는 디렉터리도 지정할 수 있다.

제3장 환경파일 설정 41

Page 58: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

NODE 절의 기본 환경설정 형식은 다음과 같다.

[DEFAULT: ]

Node Name TMAXDIR="tmax-home-path" ,

APPDIR="application-path",

[HOSTNAME="HOST_NAME",]

[TMAXHOME="tmax-home-path",]

[NODETYPE=SHM_RACD|(SHM_USER),]

[PATHDIR="stream-pipe-path",]

[SLOGDIR="system-log-path",]

[TLOGDIR="transaction-log-path",]

[ULOGDIR="user-log-path",]

[DOMAINNAME=domain-name,]

[CLHQTIMEOUT=1 - MAX_INT,]

[ENVFILE="environment-file-name ",]

[SHMKEY=shared-memory-segment-key,]

[MAXUSER=1 ~ ,]

[MINCLH=1 ~ 10,]

[MAXCLH=1 ~ 10,]

[TPORTNO=port-number,]

[TPORTNO2=port-number,]

[TPORTNO3=port-number,]

[TPORTNO4=port-number,]

[TPORTNO5=port-number,]

[RACPORT=port-number,]

[IPCPERM=mask,]

[IP="IP address",]

[CLICHKINT=interval-time-value,]

[IDLETIME=idle-time,]

[TMMOPT="TMM-log-path,]

[CLHOPT="CLH-log=path,]

[REALSVR=server-name,]

[RSCPC=1 ~ 128,]

[MAXSVG=1 ~ MAX_INT,]

[MAXSPR=1 ~ MAX_INT,]

[MAXSVR=1 ~ MAX_INT,]

[MAXTMS=1 ~ MAX_INT,]

[MAXCPC=0 ~ 128,]

[MAXGWSVR=1 ~ MAX_INT,]

[MAXRQSVR=1 ~ MAX_INT,]

[MAXGWCPC=1 ~ MAX_INT,]

[AUTOBACKUP=(Y)|N,]

[LOGOUTSVC="logout-service-name",]

[TMAXPORT="port num1, ..., port number5",]

[COMPRESSPORT="port num1, ..., port num5",]

[COMPRESSSIZE=compress_size,]

[RESTART=(Y)|N,]

42 Tmax Administration Guide

Page 59: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

[MAXRSTART=numeric,]

[GPERIOD=numeric,]

[TMMLOGLVL=tmm-log-level,]

[CLHLOGLVL=clh-log-level,]

[TMSLOGLVL=tms-log-level,]

[LOGLVL=server-log-level,]

[EXTPORT = port number,]

[EXTCLHPORT = clh port number,]

[SMSUPPORT = Y | (N),]

[SMTBUFSIZE = num,]

[CLLBLOCK=Y|(N),]

[CLLUNBLKPORT="Portno1, Portno2, ...,]

[CRYPTPORT=literal,]

[TRB = nodename]

필수 항목

● Node Name = string

– 크기 : 15자 이내

– 노드의 물리적인 이름으로, UNIX 의 "uname -n" 명령으로 확인된 이름을 정의한다. 설정한 노드 이름

은 반드시 "/etc/hosts" 파일에 등록되어 있어야 한다. 하나의 도메인(DOMAIN)은 하나 이상의 노드로

이루어지므로, NODE 절에는 최소한 하나 이상의 노드 이름이 정의되어야 한다.

● TMAXDIR = literal

– 크기 : 255자 이내

– Tmax 프로그램이 설치(install)되어 있는 홈 디렉터리의 절대 경로명이다. 경로명은 환경변수 TMAXDIR

과 동일한 값이 정의 되어야 한다. TMAXHOME이 정의되지 않았을 경우 Tmax 관련 작업은 TMAXDIR

디렉터리에서 모두 이루어진다.

● APPDIR = literal

– 크기 : 255자 이내

– Tmax를 이용하는 응용 프로그램의 실행파일이 존재하는 디렉터리의 절대 경로명으로 서버의 작업

디렉터리의 절대 경로명이다.

– Tmax 시스템에는 Tmax 자체 프로세스들 이외에도, 클라이언트 요구를 처리하는 애플리케이션이 있

다. Tmax 시스템이 기동될 때 함께 기동되고, 종료될 때도 함께 종료된다. 이러한 애플리케이션의 실

행파일이 설치되어 있는 디렉터리를 정의하는 항목은 APPDIR이다. 또한 서버의 작업 디렉터리이기

도 하며 서버 프로그램에서 발생하는 core 파일이 APPDIR에서 발생한다.

제3장 환경파일 설정 43

Page 60: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

선택 항목

● DEFAULT: 항목 = 값, …

NODE 절뿐만 아니라 Tmax 환경파일의 모든 절에서 정의할 수 있는 LABEL이다. NODE 절에서 이 Label

은 여러 노드로 구성된 경우 각 노드마다 같은 값을 가진 항목을 정의하려 할 때 유용하게 사용할 수 있

다. LABEL로 "DEFAULT:" 가 정의되면, 이후 해당 절이 끝나거나 다른 "DEFAULT:"에 의해서 Override

될 때까지 유효하다. "DEFAULT:"에 의해서 정의된 항목들이 NODE 절에 따로 정의되어 있지 않으면,

"DEFAULT:"에 의해서 정의된 값들이 모든 노드에 공통적으로 적용된다. 재정의 되었으면 해당 노드에

대해서는 NODE 절에서 정의된 새로운 값이 적용된다.

● HOSTNAME = literal

– 크기 : 255자 이내

– 실제 호스트와 환경파일에 정의하는 노드의 이름이 다를 경우에도 동작하도록 하기 위한 항목으로

실제 호스트 이름을 지정한다. HOSTNAME을 지정하였을 경우 한 머신 내에서 논리적인 멀티 노드

를 사용할 수 있다. 하나의 호스트 이름에 여러 개의 노드 이름을 사용할 수 있다. NODE 절에는

TMAXHOME, NODETYPE, RACPORT, TPORTNO, SHMKEY 항목이 반드시 함께 정의되어야 한다.

정의되지 않았을 경우, 노드 이름이 HOSTNAME이 된다. 자세한 내용은 아래 NODE 절의 사용 예를

통해 알아본다.

● TMAXHOME = literal

– 크기 : 255자 이내

– Tmax 설치 디렉터리와 작업 디렉터리를 분리하여 사용할 수 있도록 하기 위한 항목으로 Tmax 프로

그램이 설치되어 있는 홈 디렉터리의 절대 경로명을 정의한다. 이 경로명은 환경변수 TMAXHOME과

동일한 값이 정의되어야 한다. TMAXHOME 항목이 정의되었을 경우 TMAXDIR은 작업 디렉터리가

되며 정의되지 않았을 경우 TMAXDIR이 설치 디렉터리와 작업 디렉터리가 된다. TMAX 설치 디렉터

리와 작업 디렉터리는 아래와 같이 구분된다. HOSTNAME 항목과 함께 설정이 된 경우는 각각의

TMAXDIR이 하나의 논리 노드가 되며 TMAXHOME은 각 논리 노드가 공유하는 Tmax 설치 디렉터리

가 된다. 따라서 동일 노드 내의 논리 노드의 TMAXDIR과 SHMKEY, TPORTNO는 모두 다르게 설정

해야 한다.

설명구분

Install directory - bin, lib, usrinc, tuxinc, topinc, cblinc, licenseTMAXHOME

work directory – config, path, log, svctTMAXDIR

● NODETYPE = SHM_RACD | SHM_USER

– 기본값 : SHM_RACD

44 Tmax Administration Guide

Page 61: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 한 머신 내에 여러 로컬 노드를 정의하였을 경우, 각각의 로컬 노드를 관리하기 위한 방법을 결정하는

항목이다. 한 머신의 로컬 노드의 RACPORT는 반드시 달라야 한다. 따라서 2개 이상의 로컬 노드를

사용할 경우, RACPORT는 반드시 재정의 해야 한다. 중요한 점은 NODETYPE 항목은 반드시 "tm

boot/tmdown/tmadmin/cfl"을 수행하는 논리 노드와 같은 호스트에 있는 노드만을 관리할 때 사용한

다. 다른 호스트에 있는 논리 노드들을 관리할 경우에는 NODETYPE에 관계없이 RACPORT를 사용

한다.

– "tmdown/tmadmin/cfl/tmboot"를 시작한 논리노드(node A)와 같은 호스트에 존재하는 다른 논리노드

(node B)가 있는 상황에서, 해당 노드(node B)의 "tmdown/tmadmin/cfl/tmboot command"를 수행할

때 racd를 이용할 것인지, 아니면 직접 수행 할 것인지를 결정할 경우에 사용한다.

– NODETYPE의 설정값에 대한 설명은 다음과 같다.

설명설정값

RACPORT를 이용하여 각 논리 노드를 관리하겠다는 의미SHM_RACD

RACPORT를 사용하지 않고 각 논리 노드를 직접 관리하겠다는 의미SHM_USER

● PATHDIR = literal

– 크기 : 255자 이내

– 기본값 : ( TMAXDIR )/path

– Tmax 시스템의 프로세스들이 통신하기 위한 네임드 스트림 파이프(Named stream pipe)의 경로명이

다.

– 프로세스 사이의 통신 방법에는 파이프(Pipe: Unnamed pipe, Named pipe), 메시지 큐(Message

queue), 공유 메모리(Shared memory)를 사용하는 방법이 있다. Tmax에서는 프로세스 사이에 정보

를 주고받기 위해 공유 메모리 (DOMAIN 절의 SHMKEY 항목 참조)와 더불어 스트림 파이프 (Stream

pipe) 방식을 사용한다. 이 스트림 파이프를 사용하기 위해서는 pathname이 필요하다. PATHDIR은

Tmax 관련 프로세스가 스트림 파이프를 통하여 통신하는 데 필요한 pathname들이 만들어지는 디렉

터리명으로 이 디렉터리에 프로세스가 통신할 수 있도록 네임드 파이프(named pipe)가 만들어진다.

항목이 정의되지 않은 경우에는 TMAXDIR에서 지정한 디렉터리 아래에 path 디렉터리에 파이프가

만들어진다.

– PATHDIR을 "$TMAXDIR/path"이외의 디렉터리로 지정했을 경우 Tmax 시스템이 종료될 때 올바르

게 종료되지 않는 경우가 있다. 그 이유는 Tmax 시스템 종료될 때 시스템은 "$TMAXDIR/path" 디렉

터리에 있는 스트림 파이프 사용하기 때문이다. 이를 해결하기 위해 사용자는 환경 변수

TMAX_PATHDIR에 사용자가 환경파일에 설정해 준 PATHDIR을 지정한다. 이렇게 한 후 Tmax 시스

템을 종료할 경우 Tmax 시스템은 환경변수로 지정해 준 TMAX_PATHDIR을 참조하여 종료가 되기

때문에 올바르게 종료할 수 있다.

제3장 환경파일 설정 45

Page 62: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

export TMAX_PATHDIR =/home/tmax/path_new

– Tmax 시스템을 기동할 때 config 디렉터리에 있는 이진 환경파일이 환경파일에 설정해 놓은 PATHDIR

에 복사되는데 이는 Tmax 시스템이 기동한 후에 환경파일이 수정되었을 경우 올바르게 종료가 되지

않는 점을 해결하기 위한 것이다. 이 역시 환경변수 TMAX_PATHDIR에 변경 되기 전(Tmax 시스템이

기동 되었을 때 참조되었던 PATHDIR)의 PATHDIR을 설정해 주면 이 디렉터리 밑에 이진 환경파일

이 생성되며 이 환경파일은 Tmax 시스템이 기동된 후에 환경파일이 수정되더라도 변경되지 않는다.

따라서 사용자가 Tmax 시스템 기동 후에 환경파일을 수정하더라도 Tmax 시스템이 올바르게 종료되

지 못하는 경우를 없앨 수 있다.

● SLOGDIR = literal

– 크기 : 255자 이내

– 기본값 : (TMAXDIR)/log/slog

– 시스템 메시지가 기록(logging)될 디렉터리의 절대 경로명을 지정한다. 시스템 메시지란, TMM, TMS,

CLL, CLH 등이 출력하는 메시지와 시스템 내부적으로 발생한 메시지들을 일컫는다. 지정된 SLOGDIR

디렉터리에는 날짜별로 'slog.날짜' 파일이 만들어져, 각 파일에 날짜별로 발생한 메시지가 기록된다.

이 항목을 정의하지 않은 경우에는 TMAXDIR에서 지정한 디렉터리 하위에 위치한 "log/slog "디렉터

리에 기록된다.

– 지정할 경로는 사용 중인 시스템에 이미 존재해야 한다.

● ULOGDIR = literal

– 크기 : 255자 이내

– 기본값 : (TMAXDIR)/log/ulog

– 사용자 메시지가 기록(logging)될 디렉터리의 절대 경로명을 지정한다.

– 사용자, 즉 Tmax 응용 프로그래머는 userlog() 함수를 이용하여 디버그용 메시지, 각종 에러 및 경고

메시지 등을 사용자에 따라 간편하게 기록할 수 있다. 이렇게 프로그래머가 userlog() 함수를 통해 내

보내는 메시지들이 저장될 디렉터리가 ULOGDIR이다. 지정된 ULOGDIR 디렉터리에는 날짜별로

'ulog_날짜' 파일이 만들어 진다. 각 파일에는 날짜별로 발생한 메시지들이 기록된다. 이 항목이 정의

되지 않은 경우에는 TMAXDIR에 지정한 디렉터리 하위에 위치한 "log/ulog" 디렉터리에 기록된다.

– 지정할 경로는 사용 중인 시스템에 이미 존재해야 한다.

46 Tmax Administration Guide

Page 63: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

참고

userlog() 함수에 대한 자세한 설명은 Tmax 안내서 중에 "Tmax Application Development Guide"를

참고한다.

● TLOGDIR = literal

– 크기 : 255자 이내

– 기본값 : (TMAXDIR)/log/tlog

– XA를 이용한 트랜잭션이 발생한 경우 이에 대한 정보를 TXLOG 파일에 기록한다. 이때 TXLOG 파일

이 생성될 절대 경로명을 지정한다. 바이너리이기 때문에 해독은 불가능하며, Tmax 엔진에서 트랜잭

션에 대한 정보관리를 위해 필요하다. TXLOG 파일은 파일 시스템으로 생성하며 Tmax에서는 raw 파

일에 따라 이 파일의 기록을 지원하지 않는다. 이 항목이 정의되지 않은 경우에는 TMAXDIR에 지정

한 디렉터리 하위에 위치한 "log/tlog" 디렉터리에 기록된다.

– 지정할 경로는 사용 중인 시스템에 이미 존재해야 한다.

● DOMAINNAME = string

– 크기 : 15자 이내

– 하나의 환경파일에 여러 개의 도메인을 정의할 수 있기 때문에 해당 노드가 속한 도메인의 이름을 지

정한다. 도메인 이름은 반드시 DOMAIN 절에서 정의한 이름이어야 한다.

● CLHQTIMEOUT = numeric

– 범위 : 1 ~ MAX_INT

– 메시지가 큐에서 지정된 시간 이상 대기상태에 있는 경우 시간이 경과된 메시지를 큐에서 제거하는

기능이다. 호스트 문제, 네트워크 문제 등으로 인하여 메시지가 큐에 계속 쌓이는 현상이 발생하는 경

우 무한정 큐에 쌓지 않고 클라이언트에 현재 상황을 알려 적절한 대처를 하도록 유도하기 위한 설정

값이다.

● ENVFILE = literal

– 크기 : 255자 이내

– ENVFILE은 응용 서버 프로그램을 실행하기 위해 필요한 특정 환경을 설정하기 위해 UNIX 환경변수

가 정의되어 있는 환경파일을 지정한다. 따라서 서버 프로그램은 ENVFILE에 지정된 환경에서 수행

된다.

제3장 환경파일 설정 47

Page 64: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● TPORTNO[2-5] = numeric

– 클라이언트가 서버에 연결할 때 사용하는 Tmax 시스템의 포트 번호이다. TPORTNO 항목에서 정의

한 포트 외에 다른 포트로 Tmax 시스템에 접속하기 위하여 지정한다.

– TPORTNO2부터 TPORTNO5까지 모두 정의하면 Tmax 시스템에 접속할 수 있는 포트는 총 5개이다.

일반적으로 시스템 영역에서는 1024 이하의 포트 번호를 사용하므로 관리자는 이 범위를 피해야 한

다.

– TPORTNO에서 정의한 포트 번호와 그 다음 포트 번호(TPORTNO+1)는 클라이언트와 Tmax 시스템

혹은 다른 노드들 사이의 통신에 사용되므로 다른 포트 번호를 지정해야 한다. 또한 다른 곳에서 사용

되고 있는지의 여부를 반드시 확인해야 한다. TPORTNO에서 지정한 포트 번호는 이미 지정한 포트

번호와 달라야 한다.

● TMMOPT = literal

– 크기 : 255 자 이내

– TMM이 기동될 때 TMM 프로세스로 전달되는 명령어 옵션을 정의한다. 정의된 옵션 중에 '--'이전에

지정된 옵션들은 시스템에서 사용하고, 그 이후에 지정된 옵션들은 사용자가 자유롭게 사용할 수 있

다.

– 사용되는 사용자 옵션은 다음과 같다.

설명옵션

TMM 동작 중에 발생하는 표준 에러(standard error)를 파일에 기록한다.-e 파일 이름

TMM 동작 중에 발생하는 표준 출력(standard output)을 파일에 기록한다.-o 파일 이름

서버 프로세스 타입(SVRTYPE)이 EVT_SVR인 경우에, SLOG가 발생했을 때 호출되

는 콜백함수의 로그 레벨을 정할 때 사용된다. (기본값 : e)

-h i | w | e | f

- i : fatal, error, warn, info

- w : fatal, error, warn

- e : fatal, error

- f : fatal

참고

자세한 내용은 Tmax 안내서 중에 “Tmax Reference Guide”의 _tmax_event_handler를 참고한다.

● CLHOPT = literal

48 Tmax Administration Guide

Page 65: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

CLH가 기동될 때 CLH 프로세스로 전달되는 명령어 옵션을 정의한다. 세부 옵션은 TMMOPT와 같다.

설명옵션

CLH 동작 중에 발생하는 표준 에러(standard error)를 파일에 기록한다.-e 파일 이름

CLH 동작 중에 발생하는 표준 출력(standard output)을 파일에 기록한다.-o 파일 이름

서버 프로세스 타입(SVRTYPE)이 EVT_SVR인 경우에, SLOG가 발생했을 때 호출되

는 콜백함수의 로그 레벨을 정할 때 사용된다. (기본값 : e)

-h i | w | e | f

- i : fatal, error, warn, info

- w : fatal, error, warn

- e : fatal, error

- f : fatal

서비스 호출을 한 클라이언트나 서비스가 종료 또는 재시작되면 CLH에서 호출된 서

비스로부터 온 응답메시지를 폐기(Discard)한다. 이 때, 응답메시지가 폐기되면서 사

-L 서비스 이름

용자가 지정한 서비스(Loss Service)를 호출(tpacacall with TPNOREADY | TPNOTRAN)

할 수 있다.

서비스명에 응답메시지가 폐기될 때 호출되는 Loss Service를 지정한다. Loss Service

로 지정된 서비스는 TPSVCINFO의 cltid를 통해 추가 정보를 전달받게 된다. Cltid의

값은 다음과 같다. 특히 cltid.clientdata[3]의 값은 폐기(Discard)된 응답의 서비스 인덱

스값으로써 tpgetsvcname()함수의 인자로 사용된다.

– cltid.clientdata[1]: 폐기(Discard)된 응답의 tperrno

– cltid.clientdata[2]: 폐기(Discard)된 응답의 tpurcode

– cltid.clientdata[3]: 폐기(Discard)된 응답의 서비스 인덱스

* 주의 사항

CLH에서 지정된 서비스로 메시지를 전달할 때, 다음과 같은 조건을 만족해야 한다.

– tpcall() 또는 tpacall()에 대한 응답이어야 한다.

– 정상응답이나 에러응답에 상관없이 데이터가 존재해야 한다.

– CLH가 비정상적으로 종료될 경우에는, 전달되지 않을 수도 있다.

● REALSVR = literal

– RDP 타입의 서버 프로세스를 운영하는 경우 서버 프로세스의 이름을 설정한다.

제3장 환경파일 설정 49

Page 66: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– Real 서버는 한 노드에 유일해야 하며 해당 노드에 존재하는 모든 서비스는 RDP 서버 프로세스를 통

해 클라이언트에게 직접 전달되게 된다. 이를 위해서 다른 서버 프로세스가 처리한 결과를 얻어오기

위한 채널의 수인 RSCPC 값을 설정해 주어야 하며 CLH와 RDP 서버 프로세스의 수는 일정하게 유

지되어야 한다.즉 MIN 값과 MAX값이 같아야 한다. 단 RDP 서버 프로세스는 CLH보다 항상 많아야

하며 통상 2배수로 설정한다.

● RSCPC = numeric

– 범위 : 1 ~ 128

– RDP 서버 프로세스와 다른 서버 사이의 통신에 사용되는 채널의 수이다.

● MAXSVG = numeric

– 범위 : 1 ~ 128

– 기본값 : 32

– 해당 노드에서 최대로 설정 가능한 서버 그룹의 개수를 의미한다.

● MAXTMS = numeric

– 범위 : 1 ~ 128

– 기본값 : 32

– 해당 노드에서 기동 가능한 TMS의 최대 개수를 설정한다.

● MAXGWSVR = numeric

– 범위 : 1 ~ 128

– 기본값 : 2

– MAXGW가 한 노드에서 사용할 수 있는 최대 게이트웨이의 개수라면 MAXGWSVR은 해당 노드에서

기동할 수 있는 게이트웨이 서버 프로세스의 최대 개수이다. 기본값은 2이며, 두 개의 게이트웨이가

있고 각각의 게이트웨이는 하나의 게이트웨이 서버를 둘 수 있다는 의미이다.

● MAXRQSVR = numeric

– 범위 : 1 ~ 128

– 기본값 : 2

50 Tmax Administration Guide

Page 67: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 해당 노드에서 기동할 수 있는 RQ 서버 프로세스의 최대 개수로 자세한 내용은 "MAXGWSVR" 항목

의 설명을 참고한다.

● MAXGWCPC = numeric

– 범위 : 1 ~ 128

– 기본값 : 8

– 게이트웨이 서버와 CLH 사이의 연결 개수를 지정한다.

– 서버와의 CPC는 기본적으로 PAIR(input channel/output channel)로 구성되기 때문에 CPC=2의 환경

에서 게이트웨이 서버의 개수가 2라면 8개의 연결이 필요하게 되므로 MAXGWCPC는 8 이상의 값을

설정해야 한다. 또한 MAXGWCPC의 값의 합은 MAXCPC의 값보다 작아야 한다. MAXGWCPC의 값

을 늘리는 경우에는 MAXCPC의 값도 함께 증가시켜 주어야 한다.

● AUTOBACKUP = Y / N

– 기본값 : Y

– 백업 서버를 지정한 경우 메인 서버에 문제가 발생했을 때 자동으로 백업 서버를 기동할 것인지를 설

정한다.

● TMAXPORT = "port num1, … , port num5"

TPORTNO, TPORTNO[2-5]를 대체하기 위한 항목으로, 여러 개의 PORT를 사용하는 경우 TPORTNO[2-

5] 보다는 TMAXPORT를 사용할 것을 권장한다.

● COMPRESSPORT = "port num1, … , port num5"

– Tmax에서는 엔진과 클라이언트사이의 데이터 압축을 통해서 통신할 수 있는 기능을 제공한다. 클라

이언트가 압축 기능을 사용해서 통신하고자 할 때 접속해야 하는 포트 번호를 지정한다. 지정하지 않

으면 압축을 하지 않게 된다. 중요한 것은 포트 번호는 현재 Tmax가 관리하고 있는 포트 번호로 지정

해야 한다는 것이다. NODE 절의 TMAXPORT 항목이 정의되어 있다면 TMAXPORT 항목에 지정되

어 있는 포트 번호 중에서 지정해야 하며, TMAXPORT 항목이 정의되어 있지 않다면 DOMAIN 절의

TPORTNO 항목으로 지정해야 한다. 이렇게 지정하고 나면 해당 포트로 접속한 클라이언트만이 압축

기능을 사용하게 된다.

– 일반적인 네트워크 환경이라면 네트워크 전송 지연보다 압축하는 오버헤드가 더 크기 때문에 압축

기능을 사용하지 않는 것이 좋다. 압축이 필요한 경우는 클라이언트와 서버 사이의 네트워크 조건이

상당히 좋지 않은 환경에서 비교적 큰 데이터를 주고 받으려고 하는 경우이다. 예를 들어 모뎀을 통해

서 접속하는 클라이언트가 수십 Kbyte 이상의 데이터를 주고 받으려고 하는 경우에 설정한다.

제3장 환경파일 설정 51

Page 68: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

아래의 표는 클라이언트가 100Mbps Local LAN과 56KB 모뎀을 사용하여 접속한 환경에서 1.5MB의

데이터를 받는 시간을 측정한 것이다. 테스트 결과에서 볼 수 있듯이 모뎀으로 접속하는 클라이언트

가 텍스트 형식의 큰 데이터를 주고 받는 경우에 압축 기능을 사용하는 것이 가장 효과적이다.

[Local Network Client : mp3 데이터를 받는 경우]

compress 하지 않은 경우compress 한 경우

310

310

410

310

[Local Network Client : 텍스트 데이터를 받는 경우]

compress 하지 않은 경우compress 한 경우

18

0(0.85)8

0(0.85)8

0(0.85)8

[Modem Client : mp3 데이터를 받는 경우]

compress 하지 않은 경우compress 한 경우

350352

307309

331328

351349

[Modem Client : 텍스트 데이터를 받는 경우]

compress 하지 않은 경우compress 한 경우

13780

15389

15477

15477

<전송 데이터의 크기>

mp3 : 실제 : 1,459,095byte, 압축 : 1,442,869 byte

txt : 실제 : 1,445,184byte, 압축 : 313,057 byte

52 Tmax Administration Guide

Page 69: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

주의

압축 기능을 사용하기 위해서는 클라이언트 프로그램을 컴파일 할 때 반드시 libz.a(so)를 함께 링크

시켜야 한다. 현재 압축 기능은 Real 서버, 노드 사이의 데이터 전송, 도메인 사이의 데이터 전송은

지원하지 않는다.

● COMPRESSSIZE = numeric

압축 기능을 사용할 때 해당 항목에 지정한 크기 이상의 데이터만을 압축하도록 하는 항목으로 단위는

byte이다. CompressSize는 반드시 CompressPort와 함께 지정되어야 한다.

아래와 같이 설정한 경우 Tmax 엔진은 9999 포트 번호로 접속한 클라이언트와 압축 기능을 사용하여

통신하게 된다. 통신할 때 데이터의 크기가 10,000byte 이상의 메시지인 경우에만 압축을 하게 되고 데

이터의 크기가 10,000 byte 이하이거나, 클라이언트가 8888 포트 번호로 접속하였을 경우에는 압축을

사용하지 않고 통신을 하게 된다.

TPORTNO = "8888, 9999", CompressPort = "9999" CompressSize = 10000

● RESTART = Y | N

– 기본값 : Y

– NODE 절에 지정하였을 경우 Tmax 엔진 프로세스 중 CLH와 CAS, CLL의 재기동 여부를 결정하는

항목으로 비정상적으로 종료되는 경우 재기동한다.

● MAXRSTART, GPERIOD

장애 대책에 사용되는 필드로 자세한 사항은 “3.7. 장애 대책 환경설정”을 참조한다.

● EXTPORT = port number

– Tmax는 Tmax 환경파일에 등록된 서버의 기능을 Tmax 이외의 프로세스에서 처리하기 위하여 Extern

서버의 기능을 지원한다. Extern 서버의 기능을 사용하기 위해서는, 서버 프로세스의 TYPE을 EXTSVR

이라고 지정하며 NODE 절에 EXTPORT와 EXTCLHPORT 항목을 설정한다.

– EXTPORT 항목에 TMM의 Listen 포트 번호를 설정한다.

● EXTCLHPORT = clh port number

– CLH의 Listen 포트 번호를 설정한다.

– 지정하지 않을 경우, 시스템에서 자동으로 할당한다.

– Extern 서버를 사용하는 예제

제3장 환경파일 설정 53

Page 70: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

*NODE

tmaxh3 ... EXTPORT = 9000, EXTCLHPORT = 9010

*SERVER

alinkjmapp SVGNAME = svg1, MIN = 1, MAX = 1, CPC = 10, SVRTYPE=EXTSVR

*SERVICE

JMAPPER SVRNAME = alinkjmapp, SVCTIME = 30

● SMSUPPORT = Y | N

– 기본값 : N

– SysMaster Trace 기능 지원 여부를 선택하는 옵션으로 Y일 경우 Trace 기능을 지원하며, N일 경우

지원하지 않는다. SysMaster Trace 기능은 수행 중인 서비스의 GID를 알아내어 시스템 단위의 업무

추적을 가능하게 한다.

– GID 구조 (12byte)

• GID0 (4bytes) : 제품 내의 클라이언트별 고유 번호 (WebtoB의 경우 cli id) domain id, node id, hth

#, slot id 등으로 제품에 접속한 클라이언트를 구별하기 위한 번호이다.

• GID1 (4bytes) : 부분으로 구성, 상위 3byte는 seq #, 하위 1byte는 제품의 고유 ID이다.

• SEQNO (4bytes) : 상위 2 byte는 비동기 호출을 하는 경우 branch #로 사용, 하위 2byte는 모든 호

출에서 seq # 로 사용한다.

● SMTBLSIZE = num

CLH별 SysMaster Trace 최대 저장 건수 (default : 50000)로 SMSUPPORT 항목이 Y일 경우에만 설정

한다.

● CLLBLOCK = Y | N

– 기본값 : N

– CLL 블록 설정 여부를 결정한다. Y로 설정한 경우, 클라이언트가 Tmax 시스템에 접속할 경우 CLL이

블록된다.

– Tmax 서비스가 완전히 기동되지 않은 상태에서 클라이언트의 요청이 왔을 경우, CLL이 기동되어 있

는 상태라면 클라이언트는 Tmax 시스템에 접속이 허용되며, TPENOREADY 에러가 발생한다. 따라

서 이러한 문제점을 없애기 위하여 관리자가 클라이언트 요청을 CLL에서 블록 처리하도록 한다. 이

렇게 하면 서비스가 완전히 준비되기 전에 서비스 요청이 들어오는 것을 막을 수 있다.

– 서비스가 모두 기동되었을 경우는 tmadmin을 이용하여 CLL 블록 기능을 해제할 수 있다.

54 Tmax Administration Guide

Page 71: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● CLLUNBLKPORT = "Portno1, Portno2 …"

– CLL 블록 예외 포트 번호를 설정한다. TMAXPORT로 설정된 포트 번호 중에서 지정할 수 있다

– CLL 블록이 설정된 경우, Tmax 환경파일에 CLL 블록 예외 포트를 지정할 수 있다. 블록 예외 포트를

설정하면 CLL 블록 기능이 설정되어 있어도 해당 포트로 접속한 클라이언트는 블록되지 않는다.

● CRYPTPORT= Portnumber list

– NODE 절에 CRYPTPORT 항목을 지정할 경우, CRYPTPORT에 지정된 포트로 접속한 클라이언트

의 데이터만 암호화된다. 보다 유연한 암호화 기능을 위하여 세션별로 암호화를 선별하여 지정할 수

있도록 한다.

– 다음은 항목을 설정할 때 고려할 사항이다.

• CRYPTPORT 항목은 반드시 TMAXPORT 항목 중 하나를 지정해야 한다.

• DOMAIN 절에 "CRYPT=Y"로 설정한 경우에만 암호화가 가능하다.

• DOMAIN 절에 "CRYPT=Y"로 지정한 후, NODE 절에 CRYPTPORT를 지정하지 않는다면, TMAX

PORT로 설정한 모든 값이 기본으로 CRYPTPORT로 지정된다.

• CRYPTPORT에 복수 포트 지정이 가능하다.

● TRB = nodename

– 멀티 노드 및 멀티 도메인 환경에서, 장비의 장애 등으로 인하여 특정 노드가 일시적으로 사용이 불가

능할 경우, pending 트랜잭션으로 인한 가용성 저하를 해소하기 위하여, 트랜잭션 복구를 대신할 수

있는 백업 노드(TRB 노드)를 구성한다.

– 아래의 그림처럼 Node A에 대한 TRB 노드 A'를 미리 구성해 놓는다.

장비 A에 장애가 발생할 경우, TRB 노드 A'를 기동시켜, pending된 트랜잭션을 자동 복구 시킨다.

제3장 환경파일 설정 55

Page 72: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

[그림 3.3] TRB

– TRB 항목은 트랜잭션 복구 백업 노드(TRB노드)에 지정하며, Primary 노드 이름을 지정해 준다.

– TRB 노드는 하나의 서버 그룹을 가지고 있어야 하며, 이 서버 그룹에는 사용할 데이터베이스의 정보

를 지정하고 한 개의 TMS를 설정한다. 게이트웨이를 사용할 경우, GATEWAY 절에도 TRB 항목을

지정해 준다.

– 다음은 항목을 설정할 때 고려할 사항이다.

• TRB 노드를 기동시키기 전에, 장애가 발생한 Primary 노드의 tlog(TXLOG, GWTXLOG)를 TRB 노

드로 복사해야 한다.

• TXLOG, GWTXLOG는 현재 장비에 의존적인 바이너리 포맷이므로 같은 기종에서만 호환될 수 있

다. 즉, CPU가 다른 경우(Little endian / Big Endian)나 바이너리 모드가 다를 경우(32bit / 64bit)에

는 호환되지 않는다.

• 장애가 발생한 노드가 접근했던 데이터베이스를 TRB 노드에서도 접근할 수 있어야 한다.

• 장애가 발생한 노드와 TRB 노드의 IP/PORT가 다를 것이므로 EAI에서 이를 수용할 수 있어야 한

다.

• TRB 노드에서는 트랜잭션 복구 기능만 수행하며, 서비스 수행은 하지 않는다.

• 기본적으로 TRB 노드의 기동 및 종료는 수동으로 관리해야 하며, APM 솔루션 등을 이용하여 노드

의 장애 감지 및 TRB 노드의 기동, 종료를 자동화할 수 있다.

– TRB 노드의 기동, 종료

TRB 노드는 일반 노드와는 다른 방법으로 기동, 종료하기 위해 -B 옵션을 사용한다.

$tmboot –B <nodename>

56 Tmax Administration Guide

Page 73: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

*NODE

#Primary node

NODE1 TMAXDIR=/data/tmax

#TRB node

NODE2 TMAXDIR=/data2/tmax, TRB = NODE1

재정의 가능 항목

DOMAIN 절에서 정의되었으나 각 노드에 따라 새롭게 정의할 수 있는 항목이 있다. 이 항목은 NODE 절

에 정의되어 있지 않으면, DOMAIN 절에서 정의된 값이 모든 노드에 공통적으로 적용된다. 재정의되는 경

우 해당 노드에 대해서는 NODE 절에서 정의된 새로운 값이 적용되며, 형식이나 내용은 DOMAIN 절과 동

일하다.

다음은 NODE 절의 항목 도표이다.

형식) 항목 이름 = 항목 값

기본값항목 값항목 이름

numericSHMKEY

1numericMINCLH

10numericMAXCLH

8888numericTPORTNO

3333numericRACPORT

numericMAXUSER

0600numericIPCPERM

64numericMAXSPR

64numericMAXSVR

32numericMAXCPC

stringLOGOUTSVC

DETAILstringTMMLOGLVL

DETAILstringCLHLOGLVL

DETAILstringTMSLOGLVL

DETAILstringLOGLVL

NY|NTDL

제3장 환경파일 설정 57

Page 74: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

사용 예제

● NODE 절의 사용 예 1 (물리 노드)

*NODE

DEFAULT:

MINCLH=2, MAXCLH=3

tmax1 TMAXDIR = "/home/tmax",

APPDIR = "/home/tmax/appbin",

PATHDIR = "/home/tmax/path",

SLOGDIR = "/home/tmax/log/slog",

TLOGDIR = "/home/tmax/log/tlog",

ULOGDIR = "/home/tmax/log/ulog",

TMMOPT="-o /home/tmax/log/slog/tmmo.log –e /home/tmax/log/slog/tmme.log",

CLHOPT="-o /home/tmax/log/slog/clho.log –e /home/tmax/log/slog/clhe.log",

ENVFILE = "/home/tmax/server/start",

TMAXPORT = "8850, 9000, 9001, 9002, 9003",

CompressPort = "9000, 9001",

CompressSize = 10240,

RESTART = Y, MAXRSTART = -1, GPERIOD = 100

● NODE 절의 사용 예 2 (한대의 머신에서 논리 노드)

*NODE

DEFAULT:

HOSTNAME = "tmaxs1",

TMAXHOME = "/user/starbj81/tmax",

NODETYPE = SHM_USER

tmaxs1 TMAXDIR = "/user/starbj81/tmax",

APPDIR = "/user/starbj81/tmax/appbin",

PATHDIR = "/user/starbj81/tmax/path",

TLOGDIR = "/user/starbj81/tmax/log/tlog",

ULOGDIR = /user/starbj81/tmax/log/ulog",

SLOGDIR = "/user/starbj81/tmax/log/slog"

NODE1 TMAXDIR = "/user/starbj81/proj1",

APPDIR = "/user/starbj81/proj1/appbin",

PATHDIR = "/user/starbj81/proj1/path",

TLOGDIR = "/user/starbj81/proj1/log/tlog",

ULOGDIR = "/user/starbj81/proj1/log/ulog",

SLOGDIR = "/user/starbj81/proj1/log/slog",

TPORTNO=8952, SHMKEY = 76995,

RACPORT = 3334

58 Tmax Administration Guide

Page 75: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

NODE2 TMAXDIR = "/user/starbj81/proj2",

APPDIR = "/user/starbj81/proj2/appbin",

PATHDIR = "/user/starbj81/proj2/path",

TLOGDIR = "/user/starbj81/proj2/log/tlog",

ULOGDIR = "/user/starbj81/proj2/log/ulog",

SLOGDIR = "/user/starbj81/proj2/log/slog",

TPORTNO=8993, SHMKEY = 76999,

RACPORT = 3335, NODETYPE=RACD

실제 HOSTNAME은 tmaxs1이며, 3개의 논리 노드(tmaxs1, NODE1, NODE2)가 존재하여 멀티 노드 구

성을 이룬다.

TMAXHOME은 3개의 논리 노드가 공유하는 Tmax 설치 디렉터리(bin, lib, usrinc, tuxinc, topinc, cblinc)

이며, TMAXDIR은 각각 논리 노드의 작업 디렉터리(config, path, license, log, svct)가 된다. tmaxs1 논

리 노드에서 tmboot할 경우, NODE1의 NODETYPE이 SHM_USER이므로 NODE1에게는 racd를 통하

지 않고 직접 "tmboot/tmdown/tmadmin"을 수행하게 된다. NODE2의 NODETYPE이 SHM_RACD이므

로 NODE2에게는 racd를 통하여 tmboot 등을 수행하게 된다. 각 논리 노드들은 현재의 환경파일을 읽

어들이고 TMAXDIR을 이용하여 자신의 노드 번호를 알아낸 후, 해당 tmm에 접속하여 "tmboot/tm

down/tmadmin/cfl/gst"를 하거나. 원하는 파일을 읽고 쓰는 작업을 수행하게 된다.

cfl을 이용하여 환경파일을 컴파일할 경우 현재의 환경변수 $TMAXDIR 디렉터리의 config($TMAXDIR/con

fig) 를 참조하여 컴파일하며, gst를 사용하는 경우도 "$TMAXDIR/svct"를 참조하여, 로컬 노드에 자신에

해당하는 서비스 테이블을 생성한다.

● NODE 절의 사용 예 2 (여러 머신에서 논리 노드)

*NODE

DEFAULT:

HOSTNAME = "tmaxs1",

TMAXHOME = "/user2/starbj81/tmax32",

NODETYPE = SHM_USER

tmaxs1 TMAXDIR = "/user2/starbj81/tmax32",

APPDIR = "/user2/starbj81/tmax32/appbin",

PATHDIR = "/user2/starbj81/tmax32/path",

TLOGDIR = "/user2/starbj81/tmax32/log/tlog",

ULOGDIR = "/user2/starbj81/tmax32/log/ulog",

SLOGDIR = "/user2/starbj81/tmax32/log/slog"

NODE1 TMAXDIR = "/user2/starbj81/proj1",

APPDIR = "/user2/starbj81/proj1/appbin",

PATHDIR = "/user2/starbj81/proj1/path",

TLOGDIR = "/user2/starbj81/proj1/log/tlog",

ULOGDIR = "/user2/starbj81/proj1/log/ulog",

SLOGDIR = "/user2/starbj81/proj1/log/slog",

TPORTNO=8952, SHMKEY = 76995,

제3장 환경파일 설정 59

Page 76: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

RACPORT = 4335

DEFAULT:

HOSTNAME = tmaxc1,

TMAXHOME = "oracle/starbj81/tmax",

NODETYPE = SHM_RACD

tmaxc1 TMAXDIR = "/oracle/starbj81/tmax",

APPDIR = "/oracle/starbj81/tmax/appbin",

PATHDIR = "/oracle/starbj81/tmax/path",

TLOGDIR = "/oracle/starbj81/tmax/log/tlog",

ULOGDIR = "/oracle/starbj81/tmax/log/ulog",

SLOGDIR = "/oracle/starbj81/tmax/log/slog",

TPORTNO = 8893, SHMKEY = 76980,

RACPORT=4335

NODE3 TMAXDIR = "/oracle/starbj81/proj1",

APPDIR = "/oracle/starbj81/proj1/appbin",

PATHDIR = "/oracle/starbj81/proj1/path",

TLOGDIR = "/oracle/starbj81/proj1/log/tlog",

ULOGDIR = "/oracle/starbj81/proj1/log/ulog",

SLOGDIR = "/oracle/starbj81/proj1/log/slog",

TPORTNO = 9984, SHMKEY = 76999,

RACPORT=4336

실제 HOSTNAME은 tmaxs1과 tmaxc1이며, 4개의 논리 노드( tmaxs1 호스트의 tmaxs1과 NODE1,

tmaxc1 HOST의 tmaxc1과 NODE3 )이 존재하여 멀티 노드 구성을 이룬다.

tmaxc1, NODE3의 NODETYPE이 SHM_RACD이므로 tmaxc1 호스트 내에서 tmaxc1과 NODE3 논리

노드 사이에 racd를 사용하여 "tmboot/tmdown/tmadmin" 등을 수행하게 된다. 만약 tmboot 등을 수행하

는 노드가 tmaxs1 호스트의 NODE1이라면 tmaxc1 호스트 내의 tmaxc1과 NODE3 노드의 NODETYPE

은 의미가 없게 되며 무조건 racd를 이용하여 통신을 하게 된다.

racd는 TMAXDIR과 RACPORT를 이용하여 뜨게 되는데, 사용자가 각 논리 노드의 racd를 띄우기 위해

서 두 환경 변수를 매번 바꿔주는 것이 불편하기 때문에 racd에 -i 옵션과 -l 옵션을 사용하여 어느 노드

의 racd인지를 쉽게 구별할 수 있다. NODETYPE이 SHM_RACD일 경우 각 논리 노드마다 모두 racd를

하나씩 띄워야 하기 때문이다.

TRB 노드 사용 예제

● 멀티 노드

*DOMAIN

dom1 SHMKEY =78755,

RACPORT = 3366, . . .

*NODE

60 Tmax Administration Guide

Page 77: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

tmaxh4 TMAXDIR="/data1/tmaxqas/tmax",

APPDIR="/data1/tmaxqas/tmax/appbin",

tmaxi1 TMAXDIR="/data/tmaxqas/tmax",

APPDIR="/data/tmaxqas/tmax/appbin",

tmaxh4b TMAXDIR = "/data/starbj81/tmax",

APPDIR = "/data/starbj81/tmax/appbin",

HOSTNAME = "tmaxi1", SHMKEY = 78630, TPORTNO = 8630,

TRB = tmaxh4, RACPORT = 3155

tmaxi1b TMAXDIR = "/EMC01/starbj81/tmax",

APPDIR = "/EMC01/starbj81/tmax/appbin",

HOSTNAME = tmaxh4, SHMKEY = 78950, TPORTNO = 8520

TRB = tmaxi1,

RACPORT = 3355

*SVRGROUP

svg1 NODENAME = tmaxi1, DBNAME = ORACLE,

OPENINFO = "...",

TMSNAME = tms_ora1

svg5 NODENAME = tmaxh4, DBNAME = ORACLE,

OPENINFO = "..."

TMSNAME = tms_ora5

#TRB NODE

svgb1 NODENAME = tmaxh4b, DBNAME = ORACLE,

OPENINFO = "...",

TMSNAME = tms_orab1,

MINTMS=1, MAXTMS=1 #only 1 tms needed

svgb2 NODENAME = tmaxi1b, DBNAME = ORACLE,

OPENINFO = "..."

TMSNAME = tms_orab2, MINTMS=1, MAXTMS=1

*SERVER

svr2301TX SVGNAME = svg1, MIN=5, MAX=5, MAXRSTART=-1

svr2305TX SVGNAME = svg5, MIN=5, MAX=5, MAXRSTART=-1

● 멀티 도메인(2 도메인)

<멀티 도메인 Dom1>

*DOMAIN

dom1 SHMKEY =78351,

DOMAINID = 10, ...

제3장 환경파일 설정 61

Page 78: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

*NODE

tmaxh4 TMAXDIR="/data1/tmaxqas/tmax",

APPDIR="/data1/tmaxqas/tmax/appbin",

tmaxh4b TMAXDIR = "/data/starbj81/tmax",

APPDIR = "/data/starbj81/tmax/appbin",

TRB = tmaxh4, HOSTNAME = tmaxi1, ...

*SVRGROUP

svg5 NODENAME = tmaxh4, DBNAME = ORACLE,

OPENINFO = "...",

TMSNAME = tms_ora5

#TRB NODE

svgb NODENAME = tmaxh4b, DBNAME = ORACLE,

OPENINFO = MINTMS=1, MAXTMS=1, # only 1 tms needed

TMSNAME = tms_orab1

*SERVER

svr2305TX SVGNAME = svg5, MIN=5, MAX=5, MAXRSTART=-1

*SERVICE

SVC2301TX_1 SVRNAME = gw2301X

SVC2305TX_1 SVRNAME = svr2305TX

*GATEWAY

gw2301X GWTYPE = TMAX, PORTNO = 4789,

NODENAME = tmaxh4

# Domain B 의 gw2301TX

RGWADDR = "192.168.1.13",

RGWPORTNO = 4789,

# Domain B 의 gw2302TX (TRB)

BACKUP_RGWADDR = "192.168.1.43",

BACKUP_RGWPORTNO = 5789,

gw2302X GWTYPE = TMAX, PORTNO = 5789,

NODENAME = tmaxh4b,

# Domain B 의 gw2301TX

RGWADDR = "192.168.1.13",

RGWPORTNO = 4789,

# Domain B 의 gw2302TX (TRB)

BACKUP_RGWADDR = "192.168.1.43",

62 Tmax Administration Guide

Page 79: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

BACKUP_RGWPORTNO = 5789,

TRB = gw2301X

<멀티 도메인 Dom2>

# Nodeno 1

*DOMAIN

domB SHMKEY =78651,

DOMAINID = 20, ...

*NODE

tmaxi1 TMAXDIR="/data/tmaxqas/tmax",

APPDIR="/data/tmaxqas/tmax/appbin",

tmaxi1b TMAXDIR = "/EMC01/starbj81/tmax",

APPDIR = "/EMC01/starbj81/tmax/appbin",

TRB = tmaxi1, HOSTNAME = tmaxh4

*SVRGROUP

svg1 NODENAME = tmaxi1, DBNAME = ORACLE,

OPENINFO = "...",

TMSNAME = tms_ora1

# TRB NODE

svgb1 NODENAME = tmaxi1b, DBNAME = ORACLE,

OPENINFO = "..." ,

TMSNAME = tms_orab1, MINTMS=1, MAXTMS=1

*SERVER

svr2301TX SVGNAME = svg1, MIN=5, MAX=5, MAXRSTART=-1

*SERVICE

SVC2301TX_1 SVRNAME = svr2301TX

SVC2305TX_1 SVRNAME = gw2301X

*GATEWAY

gw2301X GWTYPE = TMAX, PORTNO = 4789,

NODENAME = tmaxi1,

# Domain A 의 gw2301X

RGWADDR = "192.168.1.43",

RGWPORTNO = 4789,

# Domain A 의 gw2302X (TRB)

제3장 환경파일 설정 63

Page 80: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

BACKUP_RGWADDR = "192.168.1.13",

BACKUP_RGWPORTNO = 5789,

gw2302X GWTYPE = TMAX, PORTNO = 5789,

NODENAME = tmaxi1b,

# Domain A 의 gw2301X

RGWADDR = "192.168.1.43",

RGWPORTNO = 4789,

# Domain B 의 gw2302X (TRB)

BACKUP_RGWADDR = "192.168.1.13",

BACKUP_RGWPORTNO = 5789,

TRB = gw2301X

● 멀티 도메인(3 도메인)

<멀티 도메인 Dom1>

*DOMAIN

dom1 SHMKEY =78351,

RACPORT = 3155,

DOMAINID = 10,

#------------------------------------------------------------------------

*NODE

tmaxh4 TMAXDIR="/data1/tmaxqas/tmax",

APPDIR="/data1/tmaxqas/tmax/appbin",

tmaxh4b1 TMAXDIR = "/data/starbj81/tmax",

APPDIR = "/data/starbj81/tmax/appbin",

TRB = tmaxh4, SHMKEY = 86655, TPORTNO = 8450,

HOSTNAME = tmaxi1

tmaxh4b2 TMAXDIR = "/user1/tmaxqam/tmax",

APPDIR = "/user1/tmaxqam/tmax/appbin",

TRB = tmaxh4, SHMKEY = 86655, TPORTNO = 8450,

HOSTNAME = ibm5l

*SVRGROUP

svg1 NODENAME = tmaxh4, DBNAME = ORACLE,

OPENINFO = "...",

TMSNAME = tms_ora1

64 Tmax Administration Guide

Page 81: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

# TRB NODE

svgb1 NODENAME = tmaxh4b1, DBNAME = ORACLE,

OPENINFO = "...",

TMSNAME = tms_orab1, MINTMS=1, MAXTMS=1

svgb2 NODENAME = tmaxh4b2, DBNAME = ORACLE,

OPENINFO = "...",

TMSNAME = tms_orab2, MINTMS=1, MAXTMS=1

*SERVER

svr2301TX SVGNAME = svg1, MIN=5, MAX=5, MAXRSTART=-1

*SERVICE

SVC2301TX_1 SVRNAME = svr2301TX

SVC2305TX_1 SVRNAME = gw2301X

SVC2309TX_1 SVRNAME = gw2302X

*GATEWAY

# Domain B 에 대한 Gateway

gw2301X GWTYPE = TMAX, PORTNO = 4010,

NODENAME = tmaxh4,

#Domain A 의 gw2301X

RGWADDR = "192.168.1.13",

RGWPORTNO = 4010,

# Domain B 의 gw2301Xb (TRB)

BACKUP_RGWADDR = "192.168.1.31",

BACKUP_RGWPORTNO = 5010,

# Domain B 의 gw2302Xb (TRB)

BACKUP_RGWADDR2 = "192.168.1.43",

BACKUP_RGWPORTNO2 = 6010,

gw2301Xb GWTYPE = TMAX, PORTNO = 5010,

NODENAME = tmaxh4b1, #192.168.1.13

RGWADDR = "192.168.1.13",

RGWPORTNO = 4010,

BACKUP_RGWADDR = "192.168.1.31",

BACKUP_RGWPORTNO = 5010,

BACKUP_RGWADDR2 = "192.168.1.43",

BACKUP_RGWPORTNO2 = 6010,

TRB = gw2301X

gw2301Xb2 GWTYPE = TMAX, PORTNO = 6010,

RGWADDR = "192.168.1.13",

RGWPORTNO = 4010,

BACKUP_RGWADDR = "192.168.1.31",

제3장 환경파일 설정 65

Page 82: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

BACKUP_RGWPORTNO = 5010,

BACKUP_RGWADDR2 = "192.168.1.43",

BACKUP_RGWPORTNO2 = 6010,

NODENAME = tmaxh4b2, #192.168.1.31

TRB = gw2301X

# Domain C 에 대한 Gateway

gw2302X GWTYPE = TMAX, PORTNO = 4020,

#Domain C 의 gw2302X

RGWADDR = "192.168.1.31",

RGWPORTNO = 4020,

# Domain C 의 gw2302Xb (TRB)

BACKUP_RGWADDR = "192.168.1.43",

BACKUP_RGWPORTNO = 5020,

# Domain C 의 gw2302Xb2 (TRB)

BACKUP_RGWADDR2 = "192.168.1.13",

BACKUP_RGWPORTNO2 = 6020,

NODENAME = tmaxh4,

gw2302Xb GWTYPE = TMAX, PORTNO = 5020,

RGWADDR = "192.168.1.31",

RGWPORTNO = 4020,

BACKUP_RGWADDR = "192.168.1.43",인

BACKUP_RGWPORTNO = 5020,

BACKUP_RGWADDR2 = "192.168.1.13",

BACKUP_RGWPORTNO2 = 6020,

NODENAME = tmaxh4b1, #192.168.1.13

TRB = gw2301X

gw2302Xb2 GWTYPE = TMAX, PORTNO = 6020,

RGWADDR = "192.168.1.31",

RGWPORTNO = 4020,

BACKUP_RGWADDR = "192.168.1.43",

BACKUP_RGWPORTNO = 5020,

BACKUP_RGWADDR2 = "192.168.1.13",

BACKUP_RGWPORTNO2 = 6020,

NODENAME = tmaxh4b2, #192.168.1.31

TRB = gw2301X

66 Tmax Administration Guide

Page 83: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.2.3. SVRGROUP 절

Tmax는 응용 서버 프로세스를 그룹 단위로 묶어서 관리한다. 서버의 그룹화는 그 서버가 어떤 노드에 존

재하는지, 어떤 데이터베이스를 사용하는지, 또한 어떤 논리적인 연관성이 있는지 등에 따라 이루어진다.

서버 그룹은 트랜잭션 처리, 부하 조절, 장애 대책, 라우팅이 이루어지는 기본 단위로 자세한 내용은 관련

부분에서 다룰 것이다.

SVRGROUP 절에는 다음과 같은 내용이 정의된다.

● 각 서버 그룹이 속하는 노드

● 데이터베이스 관련 정보

● 분산 트랜잭션 관련 정보

NODE 절에서 정의한 다음 내용은 서버 그룹에 따라 새롭게 정의할 수 있다.

● 보안 환경설정(SECURITY, OWNER)

● 응용 서버 프로그램의 실행파일이 존재하는 디렉터리

● 사용자 메시지가 저장될 디렉터리

SVRGROUP 절의 기본 환경설정 형식은 다음과 같다.

[DEFAULT :]

SVRGROUP Name NODENAME=node-name

[APPDIR = path,]

[ULOGDIR = path,]

[SVGTYPE = TMAX|EXTSVG ,]

[COUSIN = group-name,]

[BACKUP = group-name,]

[LOAD = numeric,]

[DBNAME = name-of-database,]

[OPENINFO = string,]

[CLOSEINFO = string,]

[MINTMS = numeric,]

[MAXTMS = numeric,]

[TMSNAME = name-of-tms,]

[ENVFILE = path,]

[CPC=numeric,]

[RESTART=(Y)|N,]

[MAXRSTART=numeric,]

[GPERIOD=numeric,]

제3장 환경파일 설정 67

Page 84: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

[TMSLOGLVL=tms-log-level,]

[LOGLVL=server-log-level,]

[TMSRECOVERY=(Y)|N,]

[TMSDEP="tms_name,...",]

[TMSRANGE=(DOMAIN)|NODE,]

[TMSTYPE = (STD) | STD_MT,]

[TMSTHREAD = numeric,]

[TMSOPT = "arguments",]

[TMSXATIME = numeric,]

[DUMMY = Y | (N)]

필수 항목

● 서버 그룹 이름= string

– 크기 : 15자 이내

– 서버 그룹에 대한 논리적인 이름으로 SVRGROUP 절에서 유일한 이름이어야 한다. SVRGROUP 절

이름은 SERVER 절의 SVGNAME 항목에서 사용된다.

● NODENAME = string

– 크기 : 15자 이내

– 서버 그룹이 존재하는 노드를 정의한다. 사용되는 NODENAME은 NODE 절에서 정의한 노드 이름이

어야 한다. 노드이름에 하이픈( - )이 들어갈 경우 필히 큰 따옴표(" ") 로 묶어주어야 한다.

선택 항목

● DEFAULT: 항목 = 값, …

NODE 절의 DEFAULT LABEL을 참조한다.

● SVGTYPE = string

– 기본값 : TMAX

– 서버 그룹의 유형을 지정하는 항목이다.

– 유형에는 TMAX와 EXTSVG가 있으며 기본값은 TMAX이다.

– EXTSVG는 Extern 서버와 같은 형태로 Web Application Server와 2pc를 지원하기 위해서 EXTERN

TMS를 사용할 때 지정한다. EXTSVG를 사용할 경우, OPENINFO 항목도 함께 지정해 주어야 하는

데 OPENINFO 절은 사실상 큰 의미가 없지만, 큰 따옴표(" ") 로 설정한다

68 Tmax Administration Guide

Page 85: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

<EXTSVG 서버 그룹을 사용한 예>

*NODE

tmaxh3 ... EXTPORT = 9000, EXTCLHPORT = 9010

*SVRGROUP

Extsvg NODENAME="tmaxh4", SVGTYPE="EXTSVG", TMSNAME=TMSWAS

OPENINFO=" "

*SERVER

alinkjmapp SVGNAME = Extsvg1, MIN=1, MAX=1, CPC=20, SVRTYPE=EXTSVR

*SERVICE

JMAPPER SVRNAME = alinkjmapp, SVCTIME = 30

● COUSIN = literal

– 크기 : 8000자 이내

– 그룹별로 서로 공유해야 할 프로세스가 있거나, 그룹 사이 라우팅이 필요한 경우 그룹 이름을 지정한

다. 같은 노드이거나 다른 노드에 속한 그룹인 경우에도 그룹 이름을 지정 할 수 있다. COUSIN과

BACKUP을 함께 지정할 수 있는데 이 경우 COUSIN, BACKUP 각각 다른 서버 그룹이어야 한다. 라

우팅은 COUSIN에 지정한 서버 그룹이 담당하며, 장애가 발생할 경우 백업에 지정한 서버 그룹이 담

당한다.

– 게이트웨이 서버도 COUSIN 그룹으로 묶을 수 있다.

● BACKUP = literal

– 크기 : 8000자 이내

– 장애 대책 방안의 하나로 제공되며, 백업되어야 할 그룹 이름을 지정하면 장애가 발생해도 중단 없이

지속적인 서비스를 수행할 수 있다.

● LOAD = numeric

설명설정값

멀티 노드 환경에서, 각각 게이트웨이를 설정하고, 각각의 노드에 클라이언트를 분리 접

속시켜 거래를 요청하는 경우, 1차적으로 접속된 노드에서 해당 서비스를 처리해 업무

부하를 줄일 수 있다.

-2

로컬 우선 처리 기능을 사용할 경우, COUSIN으로 묶여 있는 멀티 노드 환경에서는 클라

이언트가 접속한 노드에 속하는 서버 그룹이 1:1로 서비스를 처리하게 되며, 게이트웨이

제3장 환경파일 설정 69

Page 86: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명설정값

를 통하여 타 도메인에 거래를 요청하는 경우에는 클라이언트에서 접속한 노드에 속해있

는 게이트웨이가 해당 거래를 처리하게 된다.

특정 서버 그룹을 지정하여 호출(tpcallsvg, tpacallsvg)할 경우, 로컬 노드 우선 처리 기능

(LOAD=-2)을 설정했더라도 적용되지 않으며, 모든 서버 그룹에서 골고루 처리하게 된다.

또한 이 경우, 해당 서버 그룹이 종료되면 타 서버 그룹이 대신 처리하지 않고

TPENOREADY 에러가 발생한다.

Static routing을 의미하며, 특정 노드에 접속한 클라이언트는 그 노드에 속하는 그룹에서

처리한다.

-1

Dynamic routing이 수행된다. Tmax 엔진이 판단하여 제일 부하가 적은 그룹이 서비스를

처리하도록 함으로써 부하를 분산 한다.

0

Rule based routing을 의미하며, 분산을 하고자 하는 그룹에 각각 지정한 비율로 부하를

분산할 수 있다.

1~

주의

1. COUSIN 필드에서 정의된 GROUP에서만 수행된다.

2. Tmax 서버 그룹의의 로드 밸런싱은 LOAD 절에 설정과 ROUTING 절의 설정으로 설정할 수 있으

며 2가지가 각각 다른 설정으로 병행하여 사용할 수 없다. ROUTING 절에 서비스가 설정되어 있다

면 해당 서비스는 ROUTING에 의해서만 스케줄링되며 2차적으로 LOAD값이 영향을 줄 수 없다. 따

라서 COUSIN 안에서 ROUTING별로 그룹을 맺어서 스케쥴링은 불가능하다.

● DBNAME = string

– 크기 : 63자 이내

– TMS로 설정되는 경우 지정한다. 데이터베이스 고유의 이름을 지정하면 된다. DBNAME 항목은 지정

하지 않아도 된다.

● OPENINFO = literal

– 크기 : 255자 이내

– 데이터베이스와 연결을 하기위해 TMS가 필요할 때 정의한다. 데이터 베이스로 연결을 초기화하고

각 데이터베이스에서 제공되는 문법으로 정의한다.

– OPENINFO 절의 내용의 암호화를 원할 경우 암호화를 원하는 부분을 ***** (아스테리스크 5개)로 표

시한다. 암호화가 설정된 부분에 대해서는 cfl를 사용하면 암호를 입력받는다.

70 Tmax Administration Guide

Page 87: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 부분 암호화

OPENINFO="ORACLE_XA+Acc=P/scott/*****+SesTm=100"

– 전체 암호화

OPENINFO = "*****"

● CLOSEINFO = literal

– 크기 : 255자 이내

– 데이터베이스와 연동하는 그룹인 TMS가 설정이 되는 경우 지정한다. 데이터베이스와 연결을 종료하

기 위한 것으로 각 데이터베이스에서 제공되는 문법으로 정의한다.

주의

대부분의 데이터베이스는 이 항목이 필요 없으나, Informix의 경우에는 반드시 지정해 주어야 한다.

● XAOPTION = literal

– 대부분의 데이터베이스는 이 항목이 필요 없으나, 특별한 데이터베이스의 경우에는 이 항목을 지정

해 주어야 한다. DB2와 같이 Dynamic register 방식만을 지원하는 DBMS의 경우 "DYNAMIC"이라고

지정해준다.

– Sybase나 Informix 구버전과 같이 64bit 엔진임에도 불구하고 xaswitch 구조체의 필드가 long이 아니

라 int인 데이터베이스의 경우, "XASWITCH32"라고 지정해 준다.

● TMSNAME = string

– 크기 : 15자 이내

– 데이터베이스와 연동하는 그룹인 TMS가 설정이 되는 경우, 해당 서버 그룹의 데이터베이스 관리를

담당할 TMS 프로세스 이름을 정의한다.

● MINTMS = numeric

– 범위 :1~16

– 기본값 : 2

– 데이터베이스와 연동하는 그룹인 TMS가 설정이 되는 경우, 부팅될 때 기동되는 TMS 프로세스의 수

를 지정한다.

제3장 환경파일 설정 71

Page 88: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● MAXTMS = numeric

– 범위 :1~16

– 기본값 : 3

– 데이터베이스와 연동하는 그룹인 TMS가 설정이 되는 경우, 최대 기동될 수 있는 TMS 프로세스의 수

를 지정한다.

● CPC = numeric

– 범위 : 1 ~ 128

– SVGTYPE이 RQMGR일 때만 유효하다. CLH 프로세스들을 가진 채널의 수를 정의한다. 자세한 내용

은 “3.6. 신뢰성 큐(RQ-Reliable Queue) 환경설정”을 참조한다.

● ENVFILE = literal

– 크기 : 255자 이내

– 그룹에 속한 서버들에게 환경변수로 값을 전달하고자 할 때나, 같은 노드에 복수의 동종 데이터베이

스와 연동이 필요한 경우 지정한다.

● RESTART = Y | N

– 기본값 : Y

– SVRGROUP 절에 지정하였을 경우 TMS의 재기동 여부를 결정하는 항목으로 비정상적으로 종료되

었을 때 재기동한다.

● MAXRSTART, GPERIOD

장애 대책에 사용되는 필드로 자세한 사항은 “3.7. 장애 대책 환경설정”을 참조한다.

● TMSRECOVERY = Y | N

– 기본값 : Y

– 트랜잭션 복구 기능을 사용할지를 결정한다. 사용할 경우 Y, 사용하지 않을 경우 N으로 설정한다.

– Tmax 4.0 이상에서는 X/Open DTP에 정의된 트랜잭션 복구 기능을 지원한다. 복구 기능을 사용하게

되면 TMS가 재기동될 때, RM으로부터 pending되어 있는 트랜잭션의 XID list를 얻어오며, 이 결과물

에 대하여 트랜잭션을 복구한다.

72 Tmax Administration Guide

Page 89: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

Tmax는 단일노드, 멀티 노드, Tmax 도메인 게이트웨이를 이용한 멀티 도메인 환경에서 트랜잭션 복

구를 지원한다.

– 그룹 전체를 기동/종료하는 경우 복구가 수행되기 때문에 TMS 그룹 단위로 복구가 가능하다. "tm

boot/tmdown" 명령어에 특정 이름을 가진 TMS 전체를 기동/종료시키는 옵션이 추가 되었다.

참고

명령어에 대한 자세한 내용은 Tmax 안내서 중에 "Tmax Reference Guide"를 참고한다.

● TMSDEP = "tmsname1,…"

같은 노드에서 서로 다른 서버 그룹이 데이터베이스를 공유하는 경우 TMS가 운영 중에 복구가 일어나

지 않도록 의존관계를 맺을 수 있다.

예를 들어 아래와 같이 설정하여 서버 그룹 3개가 하나의 데이터베이스를 공유할 경우, tms1이 tms2와

tms3의 복구를 모두 수행함으로써, 복구가 중복 수행되는 것을 사전에 막을 수 있다. 이렇게 의존 관계

를 맺으면 tms2나 tms3가 운영 중에는 복구를 수행하지 않기 때문에 보다 안정적인 복구를 지원한다.

svg1 TMSNAME = tms1,

TMSDEP="tms2, tms3"

svg2 TMSNAME = tms2,

TMSRECOVERY = N

svg3 TMSNAME = tms3,

TMSRECOVERY = N

● TMSRANGE = (DOMAIN) | NODE

– 기본값 : DOMAIN

– 서로 다른 노드에 있는 서버 그룹이 데이터베이스를 공유하는 경우, TMSRANGE를 "NODE"로 설정

하면 각각 자신의 노드를 복구하기 때문에 노드 사이의 복구 메시지 트래픽을 줄일 수 있으며, 보다

안정적으로 복구가 수행된다.

● TMSTYPE = STD | STD_MT

– 기본값 : STD

– TMSTYPE의 설정값은 다음과 같다 .

제3장 환경파일 설정 73

Page 90: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명설정값

일반 TMS를 사용하기 위해서는 TMSTYPE을 STD로 설정한다. libtms.so 라

이브러리를 사용한다.

STD

멀티 스레드 TMS를 사용하기 위해서는 TMSTYPE을 STD_MT로 설정한다.

libtmsthr.so 라이브러리를 사용해야 한다.

STD_MT

● TMSTHREAD = numeric

TMS 프로레스 1개당 워킹 스레드 개수를 설정한다.

● TMSOPT = "arguments"

TMS 로그가 저장될 디렉터리와 파일 이름을 지정할 수 있다. 사용 방법은 TMMOPT, CLHOPT와 동일

하다.

● TMSXATIME = numeric

– 단위 : 초

– TMSXATIME보다 오래 걸리는 XA 처리의 경우 로깅 기능을 제공한다.

– TMS에서 xa_prepare, xa_commit, xa_rollback 등 XA 처리가 비정상적으로 오래 걸리는 경우, 데이

터베이스의 장애를 의심할 수 있다. 추후 장애 원인을 분석하기 위해 TMSXATIME에 설정된 값보다

XA 처리가 오래 걸리는 경우 로깅 기능을 제공한다.

– 로그는 다음과 같다

CLH2160 XA함수명(xid) processing was delayed (경과시간) by tms(서버 그룹번호)

: XA함수 리턴값

CLH2161 XA함수명(xid) processing may be stopped due to closed tms(서버 그룹번호)

● DUMMY = Y | N

– 기본값 : N

– 임시로 서버그룹이름을 “__dummy”로 사용하는 방식을 대신해서 사용한다.

– SVRGROUP 절에서 DUMMY=Y로 설정할 경우, tmboot될 때 해당 그룹의 TMS가 기동되지 않는다.

– SVRGROUP 절의 DUMMY 설정은 SERVER 절에 승계되지 않으므로, SERVER 절에도 각각 지정해

야 한다.

74 Tmax Administration Guide

Page 91: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– Domain Gateway Cousin 설정 등 dummy 서버 그룹 설정이 필요한 경우 유용하게 사용될 수 있다. 자

세한 사항은 "Domain Gateway Cousin Guide"를 참고한다.

– DUMMY 옵션이 없을 경우에는 tmboot될 때 아래와 같은 에러가 발생한다.

(F) BOOT0014 exec error : /data1/tmaxkjh/tmax/appbin/tms_tbr [BOOT0029]: No such

file or directory

재정의 가능 항목

● APPDIR = literal

– 크기 : 255자 이내

– 서버 그룹에 속하는 응용 프로그램의 실행파일이 설치되어 있는 디렉터리의 절대 경로명이다.

– NODE 절에 등록된 APPDIR은 해당 노드에서 실행되는 모든 응용 프로그램의 위치를 지정하는 항목

이고, 이를 서버 그룹에 재지정하면 그룹별로 응용 프로그램 실행파일의 위치를 지정할 수 있다.

● ULOGDIR = literal

– 크기 : 255자 이내

– NODE 절에서 사용자 메시지가 로깅될 디렉터리의 절대 경로명을 서버 그룹별로 재지정하기 위해서

사용하는 항목이다. 사용자 메시지의 기록 방식은 NODE 절에서 설명한 내용과 동일하다.

– 지정된 경로는 사용 중인 시스템에 이미 존재해야 한다.

● TMSLOGLVL = string

TMS의 로그 레벨을 설정한다.

● LOGLVL = string

서버의 로그 레벨을 설정한다.

사용 예제

SVRGROUP 절의 사용 예

*SVRGROUP

svg1 NODENAME = tmax,

APPDIR = "/home/tmax/appbin",

제3장 환경파일 설정 75

Page 92: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

ULOGDIR = "/home/tmax/appbin/svg1_log"

svgora NODENAME = tmax, DBNAME = ORACLE,

OPENINFO = "Oracle_XA+Acc=P/scott/tiger+SesTm = 60,

DbgFl=0x01 + LogDir=/tmp",

TMSNAME = svg1_tms

svginfx NODENAME=tmax, DBNAME=INFORMIX,

OPENINFO="stores7; USER={userid};

PASSWD={password}",

TMSNAME=info_tms

1. svgora에서 LogDir 항목은 XA 로그가 저장되는 경로명을 지정한다.

2. Informix의 경우 Tmax 시스템을 부팅하는 계정이 Informix에 Login하는 계정과 같은 경우에는 OPENIN

FO="stores7"과 같이 USER, PASSWD를 생략할 수 있다.

COUSIN 으로 설정된 서버 그룹 설정의 검증

COUSIN 서버 그룹으로 지정된 서버 그룹이 아래의 형태로 구성되지 않도록 cfl 단계에서 미리 에러를 출

력하도록 되어 있다.

● 타 서버 그룹의 BACKUP으로 재지정 (복합 설정)

*SVRGROUP

svg1 NODENAME = "tmaxh4", COUSIN = "svg2, svg3"

svg2 NODENAME = "tmaxh4", BACKUP = "svg3"

svg3 NODENAME = "tmaxh2"

● 컴파일 에러

(E) CFL3008 server group svg3 is defined as both COUSIN and BACKUP [CFL0309]

● 타 서버 그룹의 COUSIN으로 재지정 (다중 상속)

*SVRGROUP

svg1 NODENAME = "tmaxh4", COUSIN = "svg3"

svg2 NODENAME = "tmaxh4", COUSIN = "svg3"

svg3 NODENAME = "tmaxh2"

● 컴파일 에러

(E) CFL3008 server group svg3 is defined as duplicate COUSIN [CFL0310]

76 Tmax Administration Guide

Page 93: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

멀티 백업의 설정

장애 대책 방안의 하나로 제공되는 백업 기능을 확장하여 멀티 백업 기능을 제공한다.

svg1 NODENAME = @HOSTNAME@, BACKUP = "svg2,svg3,svg4"

svg2 NODENAME = @RMTNAME@

svg3 NODENAME = @RMTNAME2@

svg4 NODENAME = @RMTNAME3@

멀티 백업 기능은 보다 안정적인 장애 대책을 제공하기 위하여 백업 서버에 장애가 발생한 경우 또 다른

백업 서버로 전환할 수 있도록 제공하는 기능이다. BACKUP 항목에는 하나 이상의 서버 그룹을 지정할

수 있으며 2개 이상의 백업 서버 그룹을 지정할 경우 콤마( , )로 구분하여 나열한다. 이와 같이 설정하면

원본 서버 노드에 장애가 발생한 경우 첫 번째로 지정된 백업 노드가 동작하게 되고 이 백업 노드마저 이

상이 생기면 두 번째로 지정한 백업 노드가 동작하게 되는 다중 장애 대책을 지원한다.

백업 노드가 처리하고 있는 도중 메인 노드가 복구되면 다시 메인 노드가 처리할 수 있도록 Fail Back 기

능도 지원된다. 두 번째 백업 노드 동작 중 첫 번째 백업 노드가 복구되면 첫 번째 백업 노드로 동작하게

되며, 메인 노드가 복구되면 메인 노드로 동작하게 된다.

3.2.4. SERVER 절

DOMAIN, NODE, SVRGROUP 절은 Tmax 시스템과 관련된 환경설정이다. SERVER 절에는 실질적으로

제공하는 서비스를 등록한다. 작성된 응용 프로그램에서 제공하는 서비스 종류를 등록하여, 제공되는 서

비스와 서비스를 제공하는 응용 서버 프로세스에 대한 정보를 알린다. Tmax는 등록된 서비스만 처리하기

때문에, 새로운 서버 프로그램이나 서비스가 추가되는 경우에는 Tmax 환경파일의 SERVER 절이나

SERVICE 절에 추가내용을 반드시 등록하고 적용시켜야 한다.

SERVER 절에는 Tmax가 관리하는 모든 응용 서버 프로세스가 등록된다. 기본적으로 Tmax 시스템이 기

동될 때, 등록된 서버 프로세스도 함께 기동되어 동작하게 되며 Tmax가 종료될 때, 서버 프로세스들도 함

께 종료된다.

SERVER 절에는 다음과 같은 내용이 정의된다.

● 각 서버 프로세스가 속하는 서버 그룹

● 서버 프로세스가 기동될 때 필요한 명령어 라인 옵션

● 서버 프로세스의 최소 개수와 최대 개수

● 동적 서버 프로세스 기동을 위한 큐의 개수

● 대화형 모드 여부

● 재기동 가능 여부와 가능 횟수(“3.7. 장애 대책 환경설정” 참조)

제3장 환경파일 설정 77

Page 94: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

이 밖에 SVRGROUP 절에서 정의한 다음 내용은 SERVER 절에 새롭게 정의할 수 있다.

● 사용자 메시지가 저장될 디렉터리

SERVER절의 기본 형식은 다음과 같다.

[DEFAULT : ]

Server Name SVGNAME=server-group-name

[CLOPT="literal",]

[MIN=numeric,]

[MAX=nunumericmber,]

[CONV=Y | N,]

[ASQCOUNT=numeric,]

[MAXQCOUNT=max-queue-count,]

[SVRTYPE=(STD) | OPENFRAME | UCS | CUSTOM_GATEWAY | STD_DYN |

UCS_DYN,]

[CPC=channel-number,]

[ULOGDIR="user-log-path",]

[RESTART=Y | N,]

[MAXRSTART=numeric,]

[GPERIOD=numeric,]

[TARGET=string,]

[AUTOTRAN= Y | (N) | B ,]

[SCHEDULE = (FA)/RR,]

[LIFESPAN = (IDLE_DOWN) | IDLE_0 | IDLE_sec,]

[LOGLVL=server-log-level,]

[DUMMY= Y | (N)]

필수 항목

● Server Name = string

– 크기 : 15자 이내

– 서버의 실행파일 이름으로 일반적으로 서버 이름은 고유(Unique)해야 한다. 하나의 서버 이름은

SERVER 절에 한 번만 정의되어야 한다. 단, 멀티 도메인으로 구성할 경우에는 한 도메인 내에서 고

유해야 한다.

● SVGNAME = string

– 크기 : 15자 이내

– 서버가 속해 있는 서버 그룹을 정의한다.

78 Tmax Administration Guide

Page 95: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 설정된 값은 SVRGROUP 절에서 정의된 서버 그룹 이름이어야 한다. 서버와 SVRGROUP 절의 연결

을 통해서 서버가 어떤 노드에서 동작할 것인지, 어떤 리소스 매니저(데이터베이스)를 사용하는지 알

수 있으며, 해당 리소스 매니저를 열 때 필요한 파라미터를 넘겨 줄 수 있다.

– XA 모드에서는 Tmax가 모든 데이터베이스 트랜잭션을 관리하고 Two phase commit을 보장한다.

SVRGROUP 절은 OPENINFO 필드를 포함해서 정의되어야 한다. XA 모드의 Tmax 사용자는 각각

서버 프로세스의 데이터베이스 연결에 관여할 필요가 없다. 그러나 XA 모드가 아닌 경우에는,

OPENINFO를 포함하지 않은 SVRGROUP 절이 정의되어야 하고 사용자는 데이터베이스 연결을 관

리해야 한다.

선택 항목

● DEFAULT: 항목 = 값, …

NODE 절의 DEFAULT LABEL을 참조한다.

● CLOPT = literal

– 크기 : 255 자 이내

– 서버 프로세스가 기동될 때 서버 프로세스로 전달되는 명령어 옵션을 정의한다. 정의된 옵션들 중에

'--' 이전에 지정된 옵션들은 시스템에서 사용하고, 그 이후에 지정된 옵션들은 사용자가 자유롭게 사

용할 수 있다.

– 다음은 사용자 옵션에 대한 설명이다.

설명옵션

서버의 서비스 수행 결과를 로그로 남긴다. 로그는 "0$ULOGDIR svclog.mmd

dyyyy"라는 파일에 5분 간격으로 저장된다. Tmax는 로그내용을 분석하기 위

한 svcrpt라는 프로그램을 제공한다.

- l

"서버 프로세스 이름_파일 이름"의 파일이 생성되어 서버 프로세스 동작 중

에 발생하는 표준 에러를 파일에 기록한다 표준 에러는 fprintf(stderr, format,

args) 함수를 사용하게 된다.

-e 파일 이름

"서버 프로세스 이름_파일 이름"의 파일이 생성되어 서버 프로세스 동작 중

에 발생하는 표준 출력을 파일에 기록한다. 표준 출력은 일반적인 printf() 함

-o 파일 이름

수나 표준 에러 출력과 마찬가지로 fprintf(stdout, format, args) 함수를 사용

하면 된다.

user 파일에 등록되어 있는 uid를 지정한다.-u uid

3단계 보안 설정(서비스 접근 제어)이 되어 있는 환경에서 UCS의 usermain

이나 게이트웨이같이 Tmax 클라이언트에서 시작되지 않은 곳에서 ACL 서

제3장 환경파일 설정 79

Page 96: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

비스로 요청이 온 경우, Tmax 환경파일의 SERVER 절의 CLOPT 옵션에 us

er_id를 설정해 줌으로써, ACL 서비스에 접근이 가능하다.

예를 들어 svr_ucs의 usermain 내에서 ACL 서비스(SVC_ACL)를 호출할 경

우, Tmax 환경파일의 SERVER 절에 svr_ucs의 CLOPT 항목에 CLOPT="-u

user_id"를 설정해 줄 수 있다.

서비스 타임아웃으로 인하여, 서버가 재기동되었을 경우, 해당 서버의

RESTART 횟수를 증가시키지 않게 하는 옵션이다.

-r

"RESTART=Y"인 경우에만 의미가 있으며, UNIX 플랫폼인 경우, tpsvctime

out()에서 tpreturn()의 인자가 TPEXIT일 경우에 적용된다.

CLOPT 항목에 -L 옵션과 함께 value에 다음과 같은 값들을 설정할 수 있다.-l –r <value> -L value

- SL_DFLT: 기존과 동일하다.

- SL_NODE: NODE 절 ULOGDIR에 svclog가 생성된다.

- SL_SVG: SVRGROUP 절 ULOGDIR에 svclog가 생성된다. ULOGDIR 설

정이 없으면 NODE 절 ULOGDIR에 생성된다.

- SL_SVR: SERVER 절 ULOGDIR에 svclog가 생성된다. ULOGDIR 설정이

없으면 NODE 절 ULOGDIR에 생성된다. -l 옵션과 상관없이 -L <value> 설정

이 가능하나, -l 옵션이 없을 경우에는 svclog를 남기지 않는다.

서버의 서비스 수행 결과를 l로그로 남긴다. 로그는 "$ULOGDIR svclog.mmd

dyyyy"라는 이름의 파일에 5분 간격으로 저장된다. Tmax는 로그내용을 분석

하기 위한 svcrpt를 이용한다.

- l

Tmax SP#3 Fix#2 에서부터는 아래의 방식으로 동작한다. “멀티 CLH 환경에

서 하나의 서버 프로세스에 요청이 동시에 스케줄 되는 경우, CLH Queue

- B

Timeout 적용이 안되어 처리가 지연되는 문제 개선” 하지만 배치성 업무의

경우 예외가 필요하며, 서버절의 CLOPT 항목에 –B 옵션을 적용한 경우 해당

서버 프로세스에 스케줄링 된 경우는 예외적으로 큐 타임 아웃을 무시하고

수행된다

오라클에서 이미 롤백된 트랜잭션에 대해서 쿼리가 수행될 경우, 처음에는

ORA-24761 에러를 발생 시키지만, 사용자가 이것을 무시하고 계속해서 다

- X

음 쿼리를 수행할 경우, 로컬 트랜잭션으로 처리되면서 정합성에 문제가 발

생할 수 있다. 이 경우는 사용자 코드의 문제이지만, 이것을 막기 위해서 –X

옵션을 사용하면 xa_end() 의 결과가 XA_OK 가 아닌 경우, 서버 프로세스를

재시작 시킴으로써 정합성 문제를 해소할 수 있다 -X : XA 서버의 경우, tpre

turn()내에서 xa_end() 실패 시 기본적으로 XA 채널을 RESET 수행한다. 해

당 옵션을 사용할 경우 xa_end() 실패 시 Fatal Error 메시지 (서비스 코드 :

CSC5608)을 출력한 후 서버 프로세스를 종료시킨다

80 Tmax Administration Guide

Page 97: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

서버가 수행되고 있는 동안 날짜가 변경 되었을 때, 서버 동작의 userlog 로

인한 표준 출력 파일이 삭제 명령을 수행하여도 지워지지 않는 동작을 수정

- c

하기 위한 옵션이다. 즉 날짜 변경 시 로깅 파일이 닫히지 않던 점을 -c옵션을

통해 날짜 변경을 체크하여 정상적으로 삭제가 수행되도록 한다.

RDPMT 서버 (SVRTYPE=REALSVR_MT) 인 경우 사용하는 옵션이다.

tpflush()를 할 경우, WRITE 큐에 전송되지 않은 데이터가 있더라도

- q

TPSENDTOCLI 큐에서 WRITE 큐로 데이터를 무조건 이동할 수 있도록 하

는 옵션이다. 해당 옵션은 RDPMT에서만 적용 되며, 메모리 증가시 제한이

없어지므로 권장 사항은 아니다.

-r 옵션을 설정하였을 경우, SLOG에 아래와 같은 로그가 기록되고 서버 RESTART 횟수에는 영향을

미치지 않게 된다.

(W) SVR3032 service timeout error : SVC25 [SVR0403]

(I) SVR3022 SVR (svr25) is down due to tpreturn(TPEXIT) at svc timeout handler.

[SVR0305]

(I) TMM0211 General Infomation : server closed due to TIMEOUT : SVR, pid = 15040

[TMM0161]

(I) TMM3004 SVR (svr25) is restarted the 5th time [TMM0149]

다음은 -l –r <value> -L value 옵션을 설정한 예이다.

*SERVER

svr1 CLOPT = "-l –L SL_DFLT", ULOGDIR="/EMC01/tmax/log/ulog"

svr2 CLOPT = "-l –L SL_NODE", ULOGDIR="/EMC01/tmax/log/nlog"

svr3 CLOPT = "-l –L SL_SVG", ULOGDIR="/EMC01/tmax/log/glog"

svr4 CLOPT = "-l –L SL_SVR", ULOGDIR="/EMC01/tmax/log/slog"

다음은 -e, -o 옵선 설정에 대한 예이다.

CLOPT = "-e err1 –o out1 -- abc"

'-e err1' 은 서버 프로세스(tpcals)가 동작하면서 발생한 표준 에러들을 ULOGDIR 디렉터리의 tpcals_err1

파일에 저장한다. '-o out1' 은 서버 프로세스(tpcals)가 동작하면서 발생한 표준 출력들을 ULOGDIR

디렉터리의 tpcals_out1 파일에 저장한다.

– MACRO Commands1

아래의 MACRO를 지정했을 경우 파일 이름이 서버가 BOOT 될 때 결정된다.

설명MACRO

server name$(SVR)

server index$(SVRI)

제3장 환경파일 설정 81

Page 98: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명MACRO

server process index$(SPRI)

MIN field of the server section$(SPRMIN)

MAX field of the server section$(SPRMAX)

server process sequential number( 0 - $(SPRMAX))$(SPRN)

date of the MMDDYYYY format$(DATE)

time of the HHMMSS format$(TIME)

process ID$(PID)

– MACRO Commands2

아래의 MACRO를 지정했을 경우 파일 이름이, TCS 서버의 경우, tpsvrinit(), tpsvrdone() 그리고 서비

스 함수가 불리기 직전에, UCS 서버의 경우에는 tpsvrinit(), tpsvrdone() 함수가 불리기 직전, tpsched

ule() 함수가 반환하기 직전에 시간을 검사하여 해당 파일 이름을 결정한다.

설명MACRO

date of the MMDDYYYY format$(CDATE)

time of the HHMMSS format$(CTIME)

year of the YYYY format$(CYEAR)

month of the MM format, 01 ~ 12$(CMONTH)

month of the "Jan, Feb, ... Dec" format$(CMONTHS)

day of a month, DD format, 01 ~ 31$(CDAY)

day of a week, D format, 1 ~ 7$(CWDAY)

day of a week, "Mon, Tue, ... Sun" format$(CWDAYS)

day of a year, DDD format, 001 ~ 366$(CYDAY)

current hour, HH format, 00 ~ 23$(CHOUR)

current minute, MM format, 00 ~ 59$(CMINUTE)

current second, SS format, 00 ~ 59$(CSECOND)

– MACRO는 다양한 종류의 로그 파일(예:날짜별)을 작성하는 데 사용한다.

다음은 MACRO 설정에 대한 예이다.

CLOPT="-o $(SVR).$(DATE).out –e $(SVR).$(DATE).err"

'[server name].03312001.out, [server name].03312001.err'의 ULOGDIR 필드에 정의된 디렉터리에

로그파일을 작성한다. 표준 에러나 표준 출력의 파일 이름을 다른 이름으로 변경하고자 할 경우에는

'-e /usr/tmax/log/ulog/test.log' 형태로 절대 경로명을 지정하면 된다. '--' 이후의 'abc' 옵션은 사용자가

사용할 수 있도록 서버 프로그램의 tpsvrinit() 함수에 argv[1]로 전달된다.

82 Tmax Administration Guide

Page 99: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● MIN = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 1

– 기본적으로 기동될 서버 프로세스의 개수를 결정한다.

– 클라이언트 당 서버 프로세스가 하나씩 기동되는 일반적인 클라이언트/서버 모델과 달리, Tmax 시스

템에서는 서버 프로세스의 수를 조절하여 일정하게 유지한다. CLH 프로세스는 클라이언트의 요청이

들어올 때마다 서버들의 상태를 확인하고, idle 상태인 서버 프로세스에게 일을 처리하도록 함으로써

시스템이 최대 성능을 발휘하도록 한다.

MIN 항목에는 서버 프로세스의 개수를 지정하며, 운영 경험을 통하여 적절한 개수 조정이 필요하다.

아주 많은 서비스 요청이 들어오는 서비스에 서버 프로세스를 너무 적게 동작시킨다면 동작 중인 서

버 프로세스만으로는 즉각적인 서비스 처리가 어렵기 때문에 대기시간이 증가하는 등 시스템 성능이

떨어지게 된다.

반대로, 필요 이상으로 서버 프로세스를 과다하게 기동시켰다면, 단지 몇 개의 프로세스만이 서비스

를 처리하고 나머지 프로세스는 idle 상태로 남게 되어 시스템 자원의 낭비와 더불어 성능 저하를 초

래 할 수 있다. 따라서, 시스템 성능의 효율적 활용을 위하여 MIN 항목의 값은 신중하게 결정해야 한

다.

● MAX = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 1

– MIN 항목과 더불어 서버 프로세스 개수를 결정하는 항목이다.

MIN 항목이 기본적으로 기동되는 서버 프로세스 개수를 나타내며, MAX 항목은 MIN 값을 포함해 추

가적으로 기동시킬 수 있는 프로세스의 최대 개수를 나타낸다. MAX 항목은 이미 동작 중인 개수를

포함하여 더 기동시킬 수 있는 서버 프로세스의 최대 개수를 의미한다.

서버 프로세스는 기본적으로 MIN 개수 만큼 기동 되고, 갑자기 클라이언트의 요청이 집중되는 등으

로 인해 부하가 발생할 경우, MAX 개수까지 서버 프로세스가 기동된다. MAX 항목도 MIN 항목과 같

이 시스템의 성능에 영향을 주는 요인으로써 신중히 결정해야 한다. 포크 타입 서버 프로세스가 사용

되었다면 MAX 값을 0으로 설정해야 한다.

● CONV = Y / N

– 기본값 : N

– 대화형 서버 여부를 나타낸다.

제3장 환경파일 설정 83

Page 100: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– Tmax에서 제공하는 통신 유형은 동기형, 비동기형, 대화형의 3가지가 존재한다. 대화형 통신을 제공

하는 서비스는 해당 서버에 반드시 대화형 서버로 등록하여야 한다. 대화형 서버가 아닌 경우, 동기형

이나 비동기형의 통신만을 제공하며 CONV 항목을 Y로 정의함으로써 대화형 서버로 설정 된다

● ASQCOUNT = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– 자동으로 서버 프로세스가 추가 기동되기 위한 조건으로 큐에 쌓인 개수를 정의한다.

서비스 요청 건수가 큐에 ASQCOUNT 개수 이상 쌓이게 되면 MAX 개수 한도 내에서 서버 프로세스

가 자동으로 기동된다. 지정되지 않은 경우, 큐에 쌓이는 것에 상관없이 서버 프로세스는 기동되지 않

는다.

ASQCOUNT로 증가된 서버 프로세스는 서비스 처리량을 검사하여 일정 시간 간격으로 사용하지 않

는 프로세스를 내려 리소스 사용량을 줄인다. 이 항목은 서버 프로세스의 유형이 POD일 경우에는 별

의미가 없기 때문에 사용하지 않는다.

● MAXQCOUNT = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– 업무 폭주로 인하여 클라이언트의 요청이 큐에 쌓여서 정상적인 서비스가 안 되고 있는 경우, 계속되

는 업무 요청을 무시할 때 설정하는 값이다.

– 큐에 설정값 이상의 업무가 요청되면 해당 업무는 큐에 쌓이지 않고 클라이언트에 즉시 에러(tperrno

= 26)로 응답한다. 이 기능은 은행이나 관공서같이 특정 시간에 대량의 업무가 요청되는 곳에서 부하

를 해소하기 위하여 적절하게 사용될 수 있다.

● SVRTYPE = STD | OPENFRAME | UCS | CUSTOM_GATEWAY | STD_DYN | UCS_DYN | REALSVR

| REALSVR_MT | EXTSVR

– 기본값 : STD

– 서비스 프로세스의 타입을 지정하는 항목이다.

– 일반적인 모든 서비스 프로세스는 서비스 요청이 있는 경우 관련 서비스 프로세스가 처리되어 결과

를 전송하는 타입이나, UCS 타입의 서버 프로세스는 기본적으로 프로세스 내부에 Main() 부분이 존

재하여 서비스 요청이 없어도 일방적으로 각 클라이언트에 맞는 데이터를 보낼 때 유용하게 사용할

수 있는 방식이다. 주식 시세 전망도 UCS 타입의 서버 프로세스의 한 예이다.

84 Tmax Administration Guide

Page 101: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 소량의 데이터를 다수의 클라이언트에게 자주 보낼 필요가 있을 때(초당 10회 이상) 프로세스 점유율

이나 처리 속도의 측면에서 UCS에 비해 월등한 성능을 보인다. 한 노드에는 하나의 RDP 타입 서버

만을 사용할 수 있다. 또한 multi threading을 지원하는 REALSVR이 REALSVR_MT이다.

– CUSTOM_GATEWAY는 Hostlink나 TN3270 게이트웨이와 같이 외부연동용 게이트웨이를 위한 특별

한 형식의 서버이다.

– EXTERN SERVER 는 Tmax 환경파일에 등록된 서버의 기능을 Tmax 이외의 프로세스에서 처리하기

위한 기능으로 서버 프로세스의 TYPE 을 EXTSVR 이라고 지정한다 자세한 환경 파일은 NODE 절의

EXTPORT, EXTCLHPORT 절을 참조한다.

– STD_DYN과 UCS_DYN은 CFL 당시에 설정한 MAX 값을 늘리는 것이 가능한 서버이다. SERVER 절

에 설정한 MAX 값을 동적으로 늘릴 수 있게 하기 위하여 해당 서버 타입을 설정한다. STD_DYN은

TCS에 설정하여 UCS_DYN은 UCS에 설정한다. 해당 타입으로 설정한 서버만이 tmadmin의 set 명

령어를 통해서 동적으로 MAX 값 변경이 가능하다.

• 설정의 변환

SERVER 절의 SVRTYPE 추가 - STD_DYN 또는 UCS_DYN

• spri의 변화

MAX 값 조정 후 tmadmin에서 si 명령어를 통해 볼 때 spri가 연속하지 않는다. 이미 한 번 다른 서

버에서 사용했던 spri가 MAX 값의 조정으로 인해 다른 서버에서 사용할 수 있다.

• 제한

1. FD_SET = 16384 버전에서는 지원하지 않는다.

2. MAX 값을 감소킬 경우 MIN 값보다 적게 줄일 수 없다.

3. MAX 값을 감소시킬 경우 감소할 값에 해당하는 spr index 이후의 spr은 다운 상태이어야 한다.

예 ) 초기에 설정된 spri가 8193, 8194, 8195, 8192 순 일 때, MAX를 2로 줄이기 위해서 8195, 8192

는 다운 상태이어야 한다.

● CPC = numeric

– 범위 : 1 ~ 128

– 기본값 : 1

– UCS 서버 프로세스와 CLH 프로세스 사이의 병렬 통신 채널 수를 결정하는 항목이다. 서버 프로세스

의 처리량이 아주 많아 하나의 채널로는 처리 속도가 저하될 때, 다중 채널을 두어 병렬 통신으로 처

리함으로써 처리속도를 증가시킬 수 있다. CPC는 UCS, CUSTOM_GATEWQY, REALSVR, RE

ALSVR_MT의 SVRTYPE인 서버에서만 유효하다.

제3장 환경파일 설정 85

Page 102: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● RESTART = Y / N

– 기본값 : Y

– 서버 프로세스의 재기동 여부를 결정하는 항목으로 비정상적으로 종료될 때 재기동한다.

● MAXRSTART, GPERIOD

장애 대책에 사용되는 필드로 자세한 사항은“3.7. 장애 대책 환경설정”을 참조한다.

● TARGET = string

서버 이름은 서버 실행파일의 이름인데 비해 TARGET 항목은 서버 프로세스의 이름을 재정의하는 항

목이다. 여기에서 말하는 서버 프로세스란 APPDIR에 존재하는 서버 실행파일을 실행시킨 프로세스를

의미한다.

다음과 같이 TARGET 항목을 설정한 경우 tmadmin은 실제 서버 이름을 확인하며 ps를 통해 서버 프로

세스의 이름을 확인할 수 있다.

예) SVGNAME = svrgrp, MIN =1, MAX = 1, TARGET = svr2

/user1/starbj/tmax/sample/server> tmadmin

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmaxs1 (tmadm): st -p

CLH 0:

---------------------------------------------------

svr_name svgname spr_no status count avg svc

---------------------------------------------------

SVR svrgrp 32 RDY 0 0 .00 -1

/user2/starbj/tmax/sample/server> ps

starbj 28702 1 0 11:13:03 pts/8 0:00 cll -b 28700

starbj 28704 1 0 11:13:03 pts/8 0:00 svr2

-b 28700 -S SVR -s SVR -d -1

starbj 28701 1 0 11:13:03 pts/8 0:00 tmm -b 28700

starbj 28703 1 0 11:13:03 pts/8 0:00 clh -b 28700

다음은 TARGET의 사용 환경 파일 예제이다.

*SERVER

original SVGNAME = svg0,

copied1 SVGNAME = svg0,

TARGET = "original",

CLOPT = "-e $(SVR).err -o $(SVR).out -x ORIGINAL:COPIED1"

copied2 SVGNAME = svg0,

TARGET = "original",

CLOPT = "-e $(SVR).err -o $(SVR).out -x ORIGINAL:COPIED2"

86 Tmax Administration Guide

Page 103: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

*SERVICE

ORIGINAL SVRNAME = original

COPIED1 SVRNAME = copied1

COPIED2 SVRNAME = copied2

copied1, copied2 서버는 original의 이름으로 서버 프로세스가 기동된다. 일반적으로 tmax에서 서버명

과 서버 프로세스명은 동일하지만 TARGET 을 사용하는 경우, 서버명과 서버 프로세스명이 동일하지

않게 된다. 즉, Tmax가 기동될 때 original이라는 process가 3개 기동된다. 또한 서비스 요청이 COPIED1,

COPIED2로 들어오면, CLOPT 절의 [-x]에 의해서 original로 대체된다. 클라이언트에서 COPIED1,

COPIED2 각각에 대하여 서비스 요청을 할 수 있다. tmadmin에서 count를 확인하는 경우도 서버, 서비

스가 증가하게 된다.

TARGET 항목 설정은 같은 프로그램을 사용하는데 tpcall 을 하는 주체에 따라서 COUNT 등을 다르게

보고 싶을 경우에 유용하게 쓰일 수 있다.

주의

원본 서버를 수정하는 경우, tmdown -S을 명령을 사용하는 경우 원본 서버만 다운이 되므로 COPY

된 서버들과의 버전이 맞지 않을 수 있다. 따라서 tmdown할 때 target을 사용한 서버를 모두 다운시

키는 것을 권장한다.

● AUTOTRAN = Y / N / B

– 기본값 : N

– mksvr 명령을 이용하여 서비스를 동적으로 추가하였을 경우 동적으로 추가된 서비스의 AUTOTRAN

은 기본값인 N으로 설정된다. SERVER 절의 AUTOTRAN 항목은 동적으로 추가된 서비스의 트랜잭

션을 자동으로 기동할 수 있도록 하는 항목으로 서버의 AUTOTRAN 여부에 따라 동적으로 추가되는

서비스의 설정값에 영향을 주게 된다.

AUTOTRAN 항목은 SERVICE 절에 자세하게 설명되어 있다. SERVER 절과 SERVICE 절 모두에

AUTOTRAN이 설정되어 있다면 SERVICE 절의 AUTOTRAN에 설정한 값이 적용된다.

– B는 구버전(~3.8.8) AUTOTRAN 호환 설정으로 Y와 동일하지만 해당 트랜잭션은 글로벌이 아닌 로

컬 트랜잭션으로 동작한다.

• 구버전 동작 방식 : 3.8.9 이전 버전

XA 서버가 tx_begin 없이 호출될 경우 자동으로 트랜잭션이 시작되었으며 (기본값 AUTOTRAN=Y),

이 때 트랜잭션은 일종의 로컬 트랜잭션 형태로 수행되었다. 즉 외부 호출 시 트랜잭션이 함께 묶이

지 않게 되며 결과적으로 현재의 TPNOTRAN 으로 호출하는 것과 동일하게 동작한다.

• 현 버전 동작 방식 : 3.8.9 버전 (이후 버전 포함)

제3장 환경파일 설정 87

Page 104: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

AUTOTRAN=Y일 경우 전역 트랜잭션이 자동 시작되어 외부로부터의 호출이 있을 경우 자동으로

트랜잭션으로 묶이게 된다. 또한 기본 값이 N으로 변경되었기 때문에 업그레이드할 때 해당 값을

명시적으로 설정해 주어야만 한다.

● SCHEDULE = FA / RR

– 기본값 : FA

– SCHEDULE 항목은 MIN 값이 2이상으로 지정된 경우 서버 프로세스 사이의 처리 순서를 지정하기

위한 항목이다.

– 다음은 SCHEDULE 항목의 설정값이다.

설명설정값

번호가 우선하는 프로세스에 우선적으로 일을 할당한다.FA(First Available)

모든 프로세스들이 동일하게 일을 처리하도록 한다.RR(Round-Robin)

● LIFESPAN = IDLE_DOWN | IDLE_0 | IDLE_sec

– 기본값 : IDLE_DOWN

– POD와 ASQCOUNT로 이 항목은 MIN개 이상 추가로 구동된 서버 프로세스의 종료 시점을 결정하는

항목이며 다음과 같은 경우에 적용된다.

1) POD에 의해 구동된 서버 프로세스

2) ASQCOUNT에 의해 추가 구동된 서버 프로세스

3) tmboot -s 명령에 의해 수동으로 추가 구동된 서버 프로세스

– POD 서버 (즉, MIN=0 인 경우)

• MIN=0, MAX=1 이상, LIFESPAN=IDLE_DOWN 일 경우

처음 Tmax를 기동할 때 MIN = 0이므로 서버 프로세스의 개수는 0이 된다. 클라이언트의 요청이 있

을 경우, 서버 프로세스의 개수가 1이 되며, 사용자가 서버 프로세스를 종료시킬 때까지 종료되지

않는다.

• MIN=0, MAX=1이상, LIFESPAN=IDLE_0 일 경우

클라이언트의 요청이 있을 경우, 서버 프로세스의 개수가 1이 되며, 서비스 수행 후 다음 요청이 없

을 경우 바로 종료된다.

• MIN=0, MAX=1이상, LIFESPAN=IDLE_sec 일 경우

88 Tmax Administration Guide

Page 105: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

클라이언트의 요청이 있을 경우, 서버 프로세스의 개수가 1이 되며, 서비스 수행 후 sec에 설정된

시간 동안 요청이 없으면 종료된다.

– ASQCOUNT로 구동된 서버

• MIN=1, MAX=2 이상, ASQCOUNT=2, LIFESPAN=IDLE_DOWN 일 경우

처음 Tmax가 기동될 때 MIN = 1이므로 서버 프로세스의 개수는 1이 된다. 클라이언트의 요청이 2

개 이상 큐에 쌓여 있을 경우, 서버 프로세스의 개수가 2 이상이 되며, 사용자가 서버 프로세스를

종료시킬 때까지 서버 프로세스의 개수는 2 이상이 된다.

• MIN=1, MAX=2 이상, ASQCOUNT=2, LIFESPAN=IDLE_0 일 경우

클라이언트의 요청이 2개 이상 큐에 쌓여 있을 경우, 서버 프로세스의 개수가 2 이상이 되며, 서비

스 수행 후 다음 요청이 없으면 바로 종료되어 다시 서버 프로세스의 개수가 1이 된다.

• MIN=1, MAX=2 이상, ASQCOUNT=2, LIFESPAN=IDLE_sec 일 경우

클라이언트의 요청이 2개 이상 큐에 쌓여 있을 경우, 서버 프로세스의 개수가 1이 되며, 서비스 수

행 후 sec에 설정된 시간 동안 요청이 없으면 종료되어 다시 서버 프로세스의 개수가 1이 된다.

● DUMMY = Y | N

– 기본값 : N

– 임시로 서버이름을 “__dummy”로 사용하는 방식을 대신해서 사용한다.

– 서버절에서 DUMMY=Y로 설정할 경우, tmboot 시 해당 서버 프로세스가 기동되지 않는다.

– Domain Gateway Cousin 설정 등 dummy 서버 설정이 필요한 경우 유용하게 사용될 수 있다. 자세한

사항은 "Domain Gateway Cousin Guide"를 참고한다.

– DUMMY 옵션이 없을 경우에는 tmboot 시 아래와 같은 에러가 발생한다.

(F) BOOT0014 exec error : /data1/tmaxkjh/tmax/appbin/tbrtest [BOOT0029]: No such

file or directory

재정의 가능 항목

● LOGLVL = string

서버의 로그 레벨을 설정한다.

제3장 환경파일 설정 89

Page 106: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

사용 예제

SERVER 절의 사용 예

*SERVER

svr1 SVGNAME = svg1,

CLOPT = "-e err1 -o out1 -- svr1 1",

MIN = 1,MAX= 10, CONV = N

svr2 SVGNAME = svg1,

CLOPT = "-e err1 -o out1 -- svr1 2",

MIN = 1, MAX= 10,

CONV = N,

SVRTYPE = UCS,

CPC = 5

3.2.5. SERVICE 절

Tmax 시스템에서 제공하는 서비스를 등록하는 절이다. 서비스를 제공하는 서버 프로세스가 동작 중이더

라도 서비스가 환경파일에 등록되어 있지 않으면, 그 서비스는 처리될 수 없다. 따라서 사용할 서비스는

반드시 SERVICE 절에 정의되어야 한다.

각 서비스에 대해서는 다음과 같은 내용을 정의할 수 있다.

● 서비스가 제공되는 서버 프로세스

● 서비스 우선순위

● 서비스 처리 제한 시간

● 라우팅 정보

SERVICE 절은 다음과 같은 형식으로 정의된다.

[DEFAULT : ]

Service Name SVRNAME = server-process-name or gateway-name

[FUNCTION= module-name,]

[PRIO = priority-value,]

[ROUTING = rout-name,]

[SVCTIME = timeout-value,]

[EXPORT = Y | N,]

[AUTOTRAN= Y | (N) | B ,]

[TXTIME=transaction-timeout-value]

90 Tmax Administration Guide

Page 107: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

필수 항목

● Service Name = string

– 크기 : 15자 이내의 string

– 서버 프로그램 내의 함수 이름(서비스 루틴명)이 사용된다. 반드시 SERVICE 절에서 고유한 이름이

어야 한다. 멀티 도메인 환경에서는 모든 도메인에서 고유해야 한다.

● SVRNAME = string / literal

– 크기 : 15자 이내

– 해당 서비스를 제공하는 서버 프로세스를 지정한다.

– 해당 서비스 루틴을 가진 서버 프로그램의 실행파일 이름이 정의된다. 서버 프로세스는 SERVER 절

에 정의되어 있어야 한다. 서버 프로세스에 특수문자가 있을 경우에는 "서버 프로세스 이름" 형태로

정의해야 한다. 하나의 서버 프로세스에 여러 개의 서비스를 제공할 때, 각 서비스마다 동일한 서버

프로세스 이름을 지정하는 경우, SERVICE 절에서 동일한 서버 프로세스 이름은 여러 번 나타날 수

있다.

선택 항목

● DEFAULT: 항목 = 값, …

NODE 절의 DEFAULT LABEL을 참조한다.

● FUNCTION = module-name

서비스 이름과 실제로 동작시킬 모듈의 파일 이름이 다를 때 모듈의 실제 파일 이름을 기술한다.

● PRIO = priority-value

– 범위 : 1 ~ 100

– 기본값 : 50

– 클라이언트의 요구를 처리하는 우선순위 값이다.

– 각 서비스 사이의 우선순위를 나타내며, 높은 우선순위의 서비스를 낮은 우선순위의 서비스 보다 먼

저 처리한다. 숫자가 클수록 높은 우선순위를 갖는다. 즉, 100을 가장 먼저 처리한다.

제3장 환경파일 설정 91

Page 108: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● ROUTING = route_name

데이터 관련 라우팅에 사용되는 항목으로 자세한 설명은 “3.5. 부하 조절 환경설정”을 참조한다.

● SVCTIME = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– 서비스 처리의 제한 시간이다.

– 각 서비스는 서비스 처리가 시작되는 순간부터 끝날 때까지 지정된 SVCTIME 시간 안에 처리되어야

한다. 만약, SVCTIME을 초과하면 서버 프로세스는 서비스를 중지하고, 클라이언트에게 에러를 반환

한다. DOMAIN 절의 BLOCKTIME 항목이 클라이언트가 서비스를 요구하는 시점(tpcall()이나tpacall()

이 불려지는 시점)부터라면, SVCTIME은 서버 프로세스가 CLH 프로세스로부터 서비스 요청을 넘겨

받아 서비스 루틴이 시작되는 시점부터이다. 값이 0인 경우, 서비스 처리에 시간 제한이 없는 것으로

간주한다.

– 데이터베이스 세션을 사용 중일 때 서비스 타임아웃이 발생하는 경우 데이터베이스와 연결된 세션을

일방적으로 완전히 끊을 수 없어 다음 서비스의 수행이 불가능해지므로 Tmax는 다른 방법을 사용하

여 이 문제를 해결한다. 서비스 타임아웃이 발생할 경우 사용자는 tpsvctimeout 루틴에서 TPRE

TURN(TPEXIT, ...)을 이용하여 서버를 재기동할 수 있으며 이것은 SERVER 절에 정의한 MAXRSTART

횟수에 들어간다. 또한 Windows에서 Tmax는 XA 모드로 애플리케이션을 개발하는 것을 권장하며

Non-XA 모드를 사용하는 경우는 RESTART 횟수를 충분히 설정할 필요가 있다. SVCTIME은 서버가

동작하고 있을 때에만 적용된다. 따라서 클라이언트가 요청한 서비스가 큐에 저장되어 있는 동안에

는 SVCTIME이 적용되지 않는다.

참고

tpsvctimeout에 대한 자세한 내용은 "Tmax Reference Guide"를 참고한다.

● EXPORT = Y | N

– 기본값 : Y

– 멀티 도메인 환경에서 게이트웨이를 통해 서비스를 요청받았을 경우 서비스를 수행할 것인지 여부를

정의한다.

– "EXPORT=N"으로 설정할 경우 다른 도메인에서 서비스를 요청하면 TPESECURITY 에러를 발생시

킨다.

● AUTOTX = Y | N

92 Tmax Administration Guide

Page 109: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 기본값 : N

– 현재 버전에서는 사용되지 않는 옵션이다.

● AUTOTRAN= Y | N | B

– 기본값 : N

– SERVICE 절에 속한 항목으로 트랜잭션 모드가 아닌 상태에서 서비스가 요청 메시지를 받았을 때 트

랜잭션을 자동으로 기동할지 여부를 정의한다.

– Tmax 3.8.8 이전에 있던 AUTOTRAN 항목과는 약간의 차이점이 있다. 이전에는 AUTOTRAN을 설정

하지 않더라도 기본적으로 "AUTOTRAN=Y"로 설정되어 tx_begin을 하지 않아도 트랜잭션을 시동하

였으며 이 트랜잭션은 로컬 트랜잭션이었다. 그러나 Tmax 3.8.8에서 추가된 AUTOTRAN은 이 항목

이 설정되지 않은 경우 기본적으로 N이 설정되어 트랜잭션을 자동으로 시동하지 않는다.

따라서 이 항목을 설정하지 않은 경우는 tx_begin으로 트랜잭션을 명시적으로 기동시켜야 한다. 이

항목을 Y로 설정한 경우 해당 서비스가 다른 서비스를 요청하면 이들은 모두 하나의 트랜잭션(글로

벌 트랜잭션)으로 묶이게 된다. 이와 같이 Y로 설정한 경우는 tx_begin으로 트랜잭션을 명시적으로

기동시키면 에러(TPESVCERR)가 발생하게 된다.

다음은 환경파일과 tmadmin의 예제이다.

< config.m>

*SVRGROUP

svg2 NODENAME = "tmax1"

### tms for Oracle ###

svg3 NODENAME = "tmax1", DBNAME = ORACLE,

OPENINFO = "Oracle_XA+Acc=P/scott/tiger+SesTm=60",

TMSNAME = tms_ora

*SERVER

svr2 SVGNAME = svg2

### servers for Oracle sample program###

fdltest SVGNAME = svg3

*SERVICE

### services for fdltest ###

FDLINS SVRNAME = fdltest

FDLSEL SVRNAME = fdltest

FDLUPT SVRNAME = fdltest

FDLDEL SVRNAME = fdltest

제3장 환경파일 설정 93

Page 110: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

TOUPPER SVRNAME = svr2

<tmadmin의 예제>

tmax@tmax1;/user/tmax/tmax/config>tmadmin

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmax1 (tmadm): cfg -s

-------------------------------------------------

svc_name prio(pr) autotran svctime(st) routno svrname svgno

-------------------------------------------------

FDLINS 50 YES 0 -1 fdltest 2

FDLUPT 50 YES 0 -1 fdltest 2

FDLSEL 50 YES 0 -1 fdltest 2

FDLDEL 50 YES 0 -1 fdltest 2

TOUPPER 50 NO 0 -1 svr2 0

$$2 tmax1 (tmadm): q

ADM quit for node (tmax1)

● TXTIME = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– DOMAIN 절의 TXTIME을 참조한다.

– SERVICE 절의 사용 예

* SERVICE

TOUPPER SVRNAME = svr1,

PRIO = 1,

SVCTIME = 60

TOLOWER SVRNAME = svr1,

PRIO = 2

3.2.6. GATEWAY 절

DOMAIN 절, NODE 절, SVRGROUP 절, SERVER 절, SERVICE 절은 필수적인 절들이었으나 GATEWAY

절은 선택이 가능한 절이다.

94 Tmax Administration Guide

Page 111: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

시스템이 수많은 노드로 구성되어 모든 노드를 하나의 도메인으로 연결하였을 경우에는 전체 시스템의

관리가 어렵고, 노드 사이의 통신 트래픽이 심하여 시스템의 성능을 저하시킬 수 있다. 이러한 문제점을

해결하기 위해 적정한 노드들을 하나의 도메인에 할당하고, 도메인 사이의 게이트웨이를 통해 연결함으

로써 시스템 성능을 향상시킬 수 있다.

클라이언트의 해당 서비스를 어떤 시스템이든 관계없이 처리할 수 있도록 등록하는 절이 GATEWAY 절

이다. GATEWAY 절은 하나의 도메인에 여러 개를 지정하는 것이 가능하다. 그러나 하나의 노드에는 하나

의 게이트웨이만을 지정할 수 있다. GATEWAY 절은 선택적으로 등록하는 절로 해당 절이 등록되었을 경

우에는 게이트웨이의 종류에 따라 적절한 프로세스가 수행된다.

GATEWAY 절에는 다음과 같은 내용이 정의된다.

● 게이트웨이 프로세스가 실행될 노드

● 게이트웨이 사이의 통신을 위한 TCP/IP 정보

● 게이트웨이 종류

GATEWAY 절의 기본 환경설정 형식은 다음과 같다.

[DEFAULT : ]

Gateway Name NODENAME="node-name",

PORTNO=port-number,

RGWADDR="remote-ip-addr",

RGWPORTNO=remote-port-number,

GWTYPE={TMAX | TMAXNONTX | SNACICS | | OSITP | JEUS | JEUS_ASYNC

| TUXEDO

| TUXEDO_ASYNC | WSGW | XAGW }

[MAXINRGW=numeric(32),]

[CPC=channel-number,]

[BACKUP="gateway-name",]

[BACKUP_RGWADDR="remote-ip-addr",]

[BACKUP_RGWPORTNO=remote-port-number,]

[BACKUP_RGWADDR2 = “Backup-Tuxedo-ipaddr2",]

[BACKUP_RGWPORTNO2 = “Backup-Tuxedo-domaingw-portno2",]

[BACKUP_RGWADDR3 = “Backup-Tuxedo-ipaddr3",]

[BACKUP_RGWPORTNO3 = “Backup-Tuxedo-domaingw-portno3",]

[TIMEOUT=second,]

[DIRECTION=(BIDIR) | IN | OUT,]

[CLOPT=string,]

[RESTART=Y|N,]

[MAXRSTART=numeric,]

[GPERIOD=numeric,]

[LOAD=numeric,]

[PTIMEOUT=1~MAXINT/2,]

제3장 환경파일 설정 95

Page 112: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

[PTIMEINT=1~MAXINT/2,]

[TRB = nodename]

필수 항목

● Gateway Name = string

– 크기 : 15자 이내

– 게이트웨이에 대한 논리적인 이름으로써 GATEWAY 절 내에서 유일한 값이어야 한다.

● NODENAME = literal

– 크기 : 255자 이내

– 도메인 내에서 게이트웨이 프로세스가 실행될 노드의 이름을 지정하는 항목이다.

– 사용되는 NODENAME은 NODE 절에서 정의한 노드의 이름이어야 한다.

● PORTNO = numeric

– 로컬 게이트웨이 프로세스가 사용하는 listen 포트 번호이다. 이 포트 번호는 리모트 게이트웨이 프로

세스가 로컬 게이트웨이 프로세스와 연결할 때 사용한다. 이를 위해서 포트 번호를 RGWPORTNO

항목에 등록해야 한다. 일반적으로 시스템영역에서는 1024 이내의 포트 번호를 사용하므로 관리자

는 이 범위를 피해야 한다.

– 포트 번호는 게이트웨이 사이의 통신에 사용되므로 이 값들이 다른 곳에 사용되고 있는지 반드시 확

인해야 한다.

● RGWADDR = literal

– 크기 : 255자 이내

– 로컬 게이트웨이 프로세스가 접속하기를 원하는 리모트 게이트웨이의 프로세스가 실행되는 노드의

IP 주소나 노드 이름을 등록하는 항목이다.

– 노드 이름을 지정할 경우 그 노드 이름은 반드시 "/etc/hosts" 파일에 등록되어 있어야 한다. 로컬 게이

트웨이 프로세스는 RGWADDR 항목의 IP 주소와 RGWPORTNO 항목의 포트 번호를 이용하여 리모

트 게이트웨이 프로세스와 접속한다.

● RGWPORTNO = numeric

96 Tmax Administration Guide

Page 113: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 로컬 게이트웨이 프로세스가 리모트 게이트웨이 프로세스와 접속하기 위한 포트 번호이다.

– 포트 번호는 리모트 게이트웨이 프로세스의 listen 포트 번호이다. 일반적으로 시스템 영역에서는

1024 이내의 포트 번호를 사용하므로 관리자는 이 범위를 피해야 한다.

주의

RGWPORTNO는 게이트웨이 사이의 통신에 사용되므로 이 값의 사용 여부를 반드시 확인해야 한다.

● GWTYPE = string

– 로컬 게이트웨이 프로세스가 접속할 리모트 게이트웨이의 종류를 지정하는 항목이다.

– 현재는 TMAX, TMAXNONTX, JEUS, JEUS_ASYNC, TUXEDO, TUXEDO_ASYNC, WSGW 의 7가

지를 지원하고 있다.

설명구분

리모트 시스템을 Tmax 시스템으로 지정한다.TMAX

리모트 시스템이 Tmax 시스템이고 도메인 간 트랜잭션을 사용하지 않을 경

우 도메인 사이의 채널을 Mulit-flexing하여 CPC의 효율을 증가시킨다. 하나

TMAXNONTX

의 요청이 결과를 받을 때까지 채널을 점유하지 않으므로 응답시간 향상과

리소스 사용량 감소 효과를 볼 수 있다.

리모트 시스템을 Tuxedo 시스템으로 지정한다. Tuxedo의 도메인 게이트웨

이와 동기 형태의 채널로 통신한다.

TUXEDO

리모트 시스템을 Tuxedo 시스템으로 지정한다. Tuxedo의 도메인 게이트웨

이와 비동기 형태의 채널로 통신한다.

TUXEDO_ASYNC

리모트 시스템을 JEUS 시스템으로 지정한다.JEUS

웹 애플리케이션 서버(Web Application Server)의 Async WebT와 In/Out 통

신을 asynchronous로 하기 위한 Tmax의 게이트웨이이다.

JEUS_ASYNC

"GWTYPE = JEUS" 일 경우 리모트 시스템은 반드시 JEUS이어야 하는 반면

에 JEUS_ASYNC는 타 웹 애플리케이션 서버와도 연동이 가능하다.

자세한 사항은 Tmax 안내서 중에 "Tmax WebtAsync User Guide" 를 참고한

다.

Tmax 서비스를 특별한 변경 없이 Web Service 로 사용할 수 있도록 하기 위

하여 제공되는 게이트웨이로 양방향 통신이 가능하다.

WSGW

XA 라이브러리(libtxa.so) 에서 올라온 데이터를 처리하기 위한 게이트웨이로

이기종 간의 2PC 를 보장한다.

XAGW

SNA LU6.2 에서만 사용 가능하며, 트랜잭션 통신을 하기 위한 호스트링크와

의 게이트웨이이다.

SNACICS

제3장 환경파일 설정 97

Page 114: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

선택 항목

● DEFAULT: 항목 = 값, …

NODE 절의 DEFAULT LABEL을 참조한다.

● MAXINRGW = numeric

– 범위 : 1 ~ 128

– 기본값 : 32

– 멀티 도메인 환경에서 한 게이트웨이로 들어올 수 있는 채널의 개수를 지정한다.

– TMAXNONTX 타입의 경우에만 사용 가능하며 이 항목을 정의하지 않으면 하나의 게이트웨이는 32

개의 도메인과 연결되어 서비스 요청을 받을 수 있다.

● CPC = numeric

– 범위 : 1 ~ 128

– 기본값 : 1

– 게이트웨이 이용하는 경우 양 도메인의 CLH 프로세스 간 병렬 통신 채널 수를 지정하는 항목이다.

– 게이트웨이 프로세스가 처리량이 아주 많고 서비스의 소요시간이 길 경우 다중 채널을 두어 병렬 통

신으로 처리함으로써 처리속도를 증가시킬 수 있다. TMAXNONTX 타입의 게이트웨이의 경우 2~3개

이하의 CPC로도 충분하다.

● TIMEOUT = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 0

– 도메인 사이의 tpcall / tpacall 호출할 때 사용되는 타임아웃 시간을 지정한다.

– 0일 경우 제한이 없음을 나타내며 게이트웨이는 서버와 달리 30초 간격으로 타임아웃을 체크하므로

지연시간이 30초 보다 작을 경우 TIMEOUT 항목이 적용되지 않는다.

● BACKUP = "gateway name"

– 범위 : 7999자 이내

98 Tmax Administration Guide

Page 115: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 주 게이트웨이에 장애가 발생하는 경우 사용할 백업 게이트웨이의 이름을 정의한다. 이 필드에 정의

된 값은 Tmax 환경파일의 GATEWAY 절에 정의된 값과 같아야 한다.

● BACKUP_RGWADDR = "remote address"

– 범위 : 255자 이내

– 백업을 위해 로컬 게이트웨이 연결에 사용된 리모트 게이트웨이의 노드 이름이나 IP 주소를 정의한

다.

– IP 주소 대신 노드 이름이 정의되었다면 '/etc/hosts'파일에도 정의되어 있어야 한다.

● BACKUP_RGWPORTNO = "remote-port-no"

– 백업을 위해 로컬 게이트웨이 연결에 사용된 리모트 게이트웨이의 포트 번호를 정의한다.

– 대기(listening)하고 있는 리모트 게이트웨이의 포트 번호이다. 일반적으로 시스템 영역에서는 1024

이내의 포트 번호를 사용하므로 관리자는 이 범위는 피해야 한다.

– BACKUP, BACKUP_RGWADDR, BACKUP_RGWPORTNO 필드는 장애 대책에 사용된다.

주의

BACKUP_RGWPORTNO는 게이트웨이 사이의 통신에 사용되므로, 그 사용 여부가 먼저 확인되어

야 한다.

● BACKUP_RGWADDR2, BACKUP_RGWPORTNO2 = "remote address"

– 범위 : 255자 이내

– Tuxedo 게이트웨이(GWTYPE = TUXEDO | TUXEDO_ASYNC)에서만 설 정할 수 있다. 백업 Tuxedo

게이트웨이는 3개까지 지정할 수 있으며, BACKUP_RGWADDR2-BACKUP_RGWPORTNO2,

BACKUP_RGWPORT3-BACKUP_RGWPORTNO3 로 지정한다.

● DIRECTION = BIDIR | IN | OUT

– 기본값 : BIDIR

– DIRECTION은 GWTYPE이 TMAX와 TMAXNONTX인 경우에만 유효한 항목이다.

DIRECTION이 'BIDIR'일 경우 양방향 요청 처리가 모두 가능하며 'IN'일 경우 상대편 도메인에서 들

어오는 요청만 처리가 가능하다. 자신의 도메인에서 상대편 도메인으로 나가는 요청에 대해서는

TPESECURITY 에러가 발생한다.

제3장 환경파일 설정 99

Page 116: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 다음은 설정값에 대한 설명이다.

설명설정값

양방향 요청 처리가 모두 가능하다.BIDIR

상대편 도메인에서 들어오는 요청만 처리가 가능하다. 자신의 도메인에서 상

대편 도메인으로 나가는 요청에 대해서는 TPESECURITY 에러가 발생한다.

IN

● LOAD = numeric

SVRGROUP 절의 LOAD 항목을 참조한다.

● CLOPT = string

– 범위 : 255자 이내

– 게이트웨이가 기동될 때 그 게이트웨이로 전달되는 명령어 옵션을 정의한다.

– 정의된 옵션 중에 '--'이전에 지정된 옵션은 시스템에서 사용하고, 그 이후에 지정된 옵션은 사용자가

자유롭게 사용할 수 있다.

– 주로 사용되는 사용자 옵션은 다음과 같다.

• [-h Tmax Version Number]

Tmax 4.0 이후 버전과 4.0 이전 버전의 Tmax 시스템으로 이루어진 도메인 사이의 연동이 가능하

도록 하기 위해서 사용하는 옵션으로 Tmax 4.0 이후 버전에 해당하는 도메인의 환경파일에 상대방

도메인에 해당하는 Tmax 시스템의 엔진 버전을 xxyyzz 의 6자리 형식으로 지정해 준다. 게이트웨

이는 설정된 버전을 토대로 상대편 도메인과 통신을 하게 된다.

단, 상대편 도메인의 버전은 하위 버전까지 명확하게 명시해 주어야 한다. 그렇지 않을 경우, 서비

스 블록 등 여러 가지 문제가 발생할 수 있다.

"TYPE=JEUS"일 경우(JEUSGW일 경우) 항상 CLOPT = "–h 1"로 지정해 준다.

예: Tmax 3.14.4 : CLOPT = "-h 031404"

• [-c checktime]

항목에 –c 옵션을 설정해서 checktime을 주기로 체크를 하여, CLH와의 연결이 끊겼으면 재연결을

시도한다.

-c 옵션으로 GW의 checktime을 15초로 주었다 하더라도 BLOCKTIME이 5초일 경우, 매 5초마다

(CLH 또는 RGW로 부터 아무런 요청도 없는 경우) CLH와의 채널이 끊겼는지 체크한다.

• [-i]

100 Tmax Administration Guide

Page 117: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

서비스 요청과 독립적으로 채널을 연결한다.

옵션을 설정하지 않으면 기존과 동일하게 동작하게 된다. 리모트 도메인의 네트워크나 시스템 장

애로 인하여 리모트 도메인과의 연결이 끊어진 경우, 재연결을 시도하게 된다.

기존에는 서비스 요청이 들어오면 재연결을 시도하여 GWCONNECT_TIMEOUT 동안 기다렸으나,

추가된 기능은 재연결 시도를 서비스 요청과 분리하여 서비스를 요청할 때 분리 재연결을 시도하

지 않고 현재 상태에 따라서 응답을 전달한다. 결과적으로 리모트와 연결이 끊어진 상황에서 발생

하는 서비스 요청에 보다 빠른 에러 응답을 전달하기 위해 사용하는 옵션이다.

서비스를 요청할 때 리모트 도메인과의 연결이 끊어진 상태인 경우에는 즉시 TPENOREADY 에러

를 전달하며, 리모트 도메인과의 연결이 끊어진 것을 확인한 후 이미 리모트 도메인에게 요청한 서

비스에 대해서는 TPESYSTEM 에러를 전달한다. 이 경우, 기존 버전에서는 TPETIME 에러를 전달

하였다. 그리고 연결이 되어 있는 상태에서는 서비스 요청을 하게 된다. 재연결 서비스 요청과는 별

도로 시도하게 되며, 그 시간은 NLIVEINQ 또는 BLOCKTIME 중 작은 값을 사용한다. 만약

GWCHKINT가 설정되어 있으면 이 값의 간격으로 재연결을 시도한다.

NLIVEINQ에 따라서 BLOCTIME의 값을 적절하게 설정해야 서비스 요청에 대한 빠른 응답을 할 수

있다. BLOCKTIME이 너무 짧은 경우에는 채널이 끊어진 것을 감지하기 전에 TPETIME 에러를 받

게 될 확률이 높아진다. 그리고 NLIVEINQ가 너무 짧은 경우에는 게이트웨이와의 연결 시도를 빈

번하게 하기 때문에 네트워크 장애가 발생할 때 대부분의 요청에 대해서 TPENOREADY나

TPESYSTEM 에러가 아닌 TPETIME 에러가 발생할 확률이 높다.

반대로 NLIVEINQ가 너무 짧은 경우에는 네트워크 장애 감지 후 대부분 요청에 대해서

TPENOREADY를 보내게 되지만 네트워크 장애를 감지하는 데 시간이 오래 걸린다. IRT 게이트웨

이를 사용하는 경우, 해당 옵션을 사용하여 독립적으로 연결을 시도할 수 있도록 해야 한다. 왜냐하

면 IRT COUSIN을 사용하는 경우에는 문제가 있는 게이트웨이로는 서비스 요청 자체가 이루어지

지 않기 때문에 재연결을 시도할 수 없다. 따라서 서비스 요청과는 별도로 연결을 시도해야 한다.

IRT COUSIN은 TMAXNONTX 게이트웨이에 대해서만 지원한다.

• [-R]

Tmax 3.x 버전과 JTmax에서 트랜잭션 복구 기능이 지원되지 않으므로 pending 트랜잭션에 대한

처리가 수행되지 않을 수 있다.

따라서 Tmax 5.0 에서 pending 트랜잭션에 대한 처리방법을 사전에 정의해 둠으로써 pending 트

랜잭션을 처리할 수 있도록 한다.

옵션에 사용할 수 있는 인수는 아래와 같다.

설명구분

pending 트랜잭션을 commit/rollback 처리하지 않는다. 데이터베이스에서

commit/rollback을 해 주어야 한다.

IGN

pending 중인 트랜잭션은 모두 commit이 된다.COM

pending 중인 트랜잭션은 모두 rollback이 된다.RBK

제3장 환경파일 설정 101

Page 118: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

• [-r]

설명구분

WebT-JEUSGW 사이의 트랜잭션 복구 기능을 사용한다. JEUSGW-JTmax

사이의 트랜잭션 복구 기능도 가능하다. 트랜잭션 복구를 지원하는 WebT

버전에서만 사용 가능하다.

GWTYPE=JEUS 또는

JEUS_ASYNC

Tuxedo에서 Tmax로 연결할 때 전송되는 Tuxedo의 도메인 ID 값을 설정한

다. Tuxedo의 도메인 ID를 검사하여 인증을 하고자 할 때 사용한다. 해당

GWTYPE=TUXEDO 또는

TUXEDO_ASYNC값에 설정되지 않은 도메인 ID를 가진 게이트웨이가 접속을 시도할 때에는

에러가 발생하며 접속을 거부하게 된다.

서로 다른 3.X 버전의 Tmax 시스템으로 이루어진 도메인 간의 연동이 가능

하도록 하기 위해서 사용하는 옵션으로 상대방 도메인에 해당하는 Tmax

시스템의 엔진 버전을 xxyyzz의 6자리 형식으로 지정해준다.

GWTYPE = TMAX 또는

TMAXNONTX

(예 : Tmax 3.8.15 : 030815)

이 옵션을 지정하게 되면 상대편 도메인에 해당하는 Tmax 시스템의 엔진

버전에 따라서 게이트웨이의 기능이 달라지게 된다. 현재 다음 각 분류별

(Tmax 버전)로 XA 관련 동작이 다른데 상대편 도메인에 해당하는 Tmax 시

스템의 엔진 버전이 현재 버전과 다른 부류에 속한다면 반드시 –r 옵션을

지정해야 한다.

- 분류 1 : 2.0 ~ 3.8.7

- 분류2 : 3.8.8 ~ 3.8.13

- 분류3 : 3.8.14 이후

• [-a]

Tuxedo로 연결할 때 전송되는 도메인 ID 값을 설정한다. 반드시 Tuxedo의 환경설정 파일 내에 정

의된 이름이어야 한다.

– 다음은 항목 설정에 고려할 사항이다.

1. TMAXGW -h 옵션에 Tmax 3.x (예 : 031404)로 설정되면 -R 옵션을 따로 설정하지 않으면 기본값

이 RBK로 설정된다.

2. JEUSGW -h1옵션이 설정되고 -R 옵션을 따로 설정하지 않으면 기본값인 RBK로 설정된다.

3. JEUSGW -r 옵션(복구 지원)과 -R 옵션의 중복 설정은 지원하지 않는다.

● RESTART = Y | N

102 Tmax Administration Guide

Page 119: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 기본값 : Y

– GATEWAY 절에 지정하였을 경우 해당 게이트웨이 프로세스 재기동 여부를 결정하는 항목이다. 비

정상적으로 종료될 때 재기동한다.

● MAXRSTART, GPERIOD

장애 대책에 사용되는 필드로 자세한 사항은 “3.7. 장애 대책 환경설정”을 참조한다.

● PTIMEOUT = numeric

– 범위 : 1~MAXINT/2

– 기본값 : -1

– GW에서 pending list를 가지고 있는 최대 시간을 지정한다.

– 최대 시간 설정은 TIMEOUT 항목의 값을 2로 나눈 값보다 작거나 같아야 한다. (TIMEOUT >=PTIME

OUT)

– 도메인 게이트웨이에서 pending(prepare-done, commit, rollback)을 재전송하여 Decision을 받지 못

한 상황에서도 pending이 생기지 않도록 한다.

Gateway1, Gateway2 가 2pc로 연결이 되는 경우 Gateway2가 prepare를 받은 후 commit/rollback 등

을 받지 못하는 경우 Gateway2가 Gateway1로 prepare-done 등을 보냄으로써, 게이트웨이 사이의

네트워크 문제(혹은 비정상 종료) 등으로 Decision을 받지못한 상황에서 pending이 생기는 경우 PTI

MEOUT, PTIMEINT를 설정함으로 pending을 제거할 수 있다.

● PTIMEINT = numeric

– 범위 : 1~MAXINT/2

– 기본값 : -1

– GW에서 pending(prepare-done, commit, rollback)을 재전송하는 시간 간격을 지정한다.

– 최대시간은 PTIMEOUT 값보다 작거나 같아야 한다.

사용 예제GATEWAY 절의 사용 예

제3장 환경파일 설정 103

Page 120: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

*GATEWAY

gw1 NODENAME = "tmax1",

PORTNO = 2222,

RGWADDR = "192.168.23.1",

RGWPORTNO = 2225,

GWTYPE = TMAX,

CPC = 10,

CLOPT="-r 030815"

Tuxedo 의 VIEW 타입 사용 예제

*DOMAIN

*NODE

ibm5l TMAXDIR = "…",

APPDIR = "…",

*SVRGROUP

svg1 NODENAME = "ibm5l"

*SERVER

svr_sdl SVGNAME = svg1

*SERVICE

TOUPPER_SDL SVRNAME = svr_sdl

#svc for tuxedo

TUX_TOUPPERSDL SVRNAME = TUXGW

*GATEWAY

TUXGW GWTYPE=TUXEDO,

PORTNO=9521,

RGWADDR="192.168.1.43",

RGWPORTNO=9511,

CLOPT="-a TUXGW1 -v",

NODENAME=ibm5l,

CPC=20,

TIMEOUT=30

GATEWAY 를 이용한 로컬 노드 우선 처리 환경 설정 예

*DOMAIN

tmax1 SHMKEY =@SHMEMKY@, MINCLH=1, MAXCLH=3,

TPORTNO=@TPORTNO@, BLOCKTIME=25, RACPORT=@TRACPORT@

*NODE

104 Tmax Administration Guide

Page 121: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

@HOSTNAME@ TMAXDIR = "@TMAXDIR@",

. . .

@RMTNAME@ TMAXDIR = "@RMTDIR@",

. . .

*SVRGROUP

svg1 NODENAME = "@HOSTNAME@", COUSIN = "svg2, svg3, svg4, gw1, gw2",

LOAD = -2

svg2 NODENAME = "@HOSTNAME@", LOAD = -2

svg3 NODENAME = "@RMTNAME@", LOAD = -2

svg4 NODENAME = "@RMTNAME@", LOAD = -2

*SERVER

svr2 SVGNAME = svg1

*SERVICE

TOUPPER SVRNAME = svr2

*GATEWAY

gw1 GWTYPE = TMAXNONTX, PORTNO = 7788,

RGWADDR = "@GATENAME@",

RGWPORTNO = 6688,

NODENAME = @HOSTNAME@,

CPC = 2, LOAD = -2

gw2 GWTYPE = TMAXNONTX, PORTNO = 7788,

RGWADDR = "@GATENAME2@",

RGWPORTNO = 6688,

NODENAME = @RMTNAME@,

CPC = 2, LOAD = -2

위의 예제를 보면, 클라이언트가 HOSTNAME으로 접속하여 TOUPPER 서비스를 호출했을 경우, svg2,

gw1, svg1에 속한 서버가 1:1:1로 처리를 하게 된다. 만약 svg1에 속한 서버에 장애가 발생했을 경우 svg2,

gw1이 1:1로 처리를 하게 되며, svg2와 gw1 모두 장애가 발생했을 경우에는 COUSIN에 속해있는 다른 노

드의 서버 그룹이 처리하게 된다. RMTNAME으로 접속한 경우, svg3, svg4, gw2에 속한 서버가 1:1:1로

처리를 하게 된다.

주의

도메인 게이트웨이의 로컬 우선 처리 부하 분산 기능은 비트랜잭션 게이트웨이에 한해서만 지원한

다.

제3장 환경파일 설정 105

Page 122: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.2.7. ROUTING 절

ROUTING 절은 한 도메인 안에서 노드 사이에, 또는 멀티 도메인 환경에서 도메인 사이에 데이터에 따른

라우팅 환경을 설정하기 위해서 필요한 절이다. 자세한 내용은 “3.5. 부하 조절 환경설정”의 "데이터에 따

른 부하 조절"을 참고한다.

3.2.8. RQ 절

RQ 절도 ROUTING 절과 같이 선택적으로 정의하는 절이다. 자세한 내용은 “3.6. 신뢰성 큐(RQ-Reliable

Queue) 환경설정”을 참고한다.

106 Tmax Administration Guide

Page 123: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.2.9. 기본 환경설정의 예

다음은 기본적인 Tmax 환경파일의 예이다.

*DOMAIN

res SHMKEY = 77990, MAXUSER = 300, MINCLH = 3,

MAXCLH = 5, TPORTNO = 8899, BLOCKTIME = 60

*NODE

tmax1 TMAXDIR="/home/tmax",

APPDIR="/home/tmax/appbin",

PATHDIR="/home/tmax/path",

SLOGDIR="/home/tmax/slog",

ULOGDIR="/home/tmax/ulog",

ENVFILE=svr_env

tmax2 TMAXDIR="/system/tmax",

APPDIR="/system/tmax/server",

SLOGDIR="/system/tmax/slog",

ULOGDIR="/system/tmax/ulog",

ENVFILE = app_env

*SVRGROUP

svg1 NODENAME = tmax1

svg2 NODENAME = tmax2

svg3 NODENAME = tmax2, cousin = svg4

svg4 NODENAME = tmax2

*SERVER

svr1 SVGNAME = svg1, CLOPT="-e err1 -- apple", MIN=3, MAX=5

svr2 SVGNAME = svg2, MIN=4, MAX=5

svr3 SVGNAME = svg3,

CLOPT = "-e $(SVR).$(DATE).err –o

$(SVR).$(DATE).out"

*SERVICE

svc1 SVRNAME = svr1, PRIO=100, SVCTIME=40

svc2 SVRNAME = svr2

svc3 SVRNAME = svr3

3.3. 데이터베이스 환경설정데이터베이스에 연관된 서비스를 제공하는 경우, 환경파일에 데이터베이스 정보를 등록할 수 있다.

데이터베이스 정보를 등록함으로써, 응용프로그램에서 처리하는 데이터베이스 open/close 등 리소스 매

니저와의 연결 및 해제가 Tmax 시스템에 의해서 관리되며, 분산 트랜잭션 처리도 가능하게 된다.

데이터베이스 환경설정에서 서버 그룹은 중요한 의미를 갖는다. 서버 프로세스들이 존재하는 노드도 서

버 그룹을 형성하는 요소가 되지만, 동일한 노드에 존재하는 서버 프로세스일지라도 사용하는 데이터베

이스의 종류에 따라 서버 그룹이 구분된다.

제3장 환경파일 설정 107

Page 124: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

한 서버 그룹 내의 서버 프로세스들은 반드시 동일한 DBMS를 사용해야 한다. 만일 사용하는 DBMS가 다

르다면, 같은 서버 그룹이 될 수 없다. 즉, 서버 그룹은 데이터베이스 관리의 기본 단위가 된다.

데이터베이스 관리를 위해서는 TMS(Transaction Management Server)라는 Tmax 기능 프로세스가 필요

하다. TMS 프로세스는 데이터베이스 관리가 필요할 경우, 서버 그룹별로 기동 되어 각 서버 그룹의 데이

터베이스 관리와 트랜잭션 처리를 담당하는 서버 프로세스이다. 트랜잭션 처리를 담당하는 TMS 프로세

스의 기능에 대해서는 “3.4. 분산 트랜잭션 환경설정”을 참고한다.

데이터베이스 정보 등록을 위한 환경설정은 모두 SVRGROUP 절에서 설정한다.

[그림 3.4] 데이터베이스 관리를 위한 TMS 프로세스

3.3.1. SVRGROUP 절

Tmax의 데이터베이스 관리 기능을 제공받기 위해서는 서버 그룹이 사용하는 데이터베이스의 open/close

정보와 그 서버 그룹과 관련된 TMS 프로세스에 대한 정보가 필요하다.

데이터베이스 환경설정과 관련하여 SVRGROUP 절에 정의하는 항목은 다음과 같다.

SVRGROUP Name [DBNAME=DBMS-name,]

[OPENINFO=DBMS-open-information,]

[CLOSEINFO DBMS-close-information,]

[TMSNAME=TMS-process-name,]

[MINTMS=TMS-process-min-number,]

[MAXTMS= TMS-process-max-number]

108 Tmax Administration Guide

Page 125: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● DBNAME = string

– 크기 : 63자 이내

– 사용하는 DBMS 이름을 기술한다.

– 사용되는 값은 Oracle, Informix, Sybase 등의 DBMS 이름이다.

● OPENINFO = string

– 크기 : 255자 이내

– 서버 그룹과 관련된 데이터베이스 정보를 등록하는 항목이다.

– 같은 리소스 매니저 즉, 같은 데이터베이스를 사용하는 경우 한 서버 그룹으로 관리하면 자원(Resource)

의 효율을 높이고 분산 트랜잭션 처리를 가능하게 할 수 있다. OPENINFO 형식은 리소스 매니저를

제공하는 벤더, 즉 Oracel이나 Informix 등 데이터베이스의 종류에 따라 다르다.

• Oracle 데이터베이스

OPENINFO="Oracle_XA+Acc=P/scott/tiger+SesTm=60"

"Oracle_XA"는 Oracel 데이터베이스, XA 인터페이스를 의미하며, "Acc=P/scott/tiger" 부분은 Oracle

데이터베이스에 접근하기 위한 계정과 암호를 뜻한다.

• Informix 데이터베이스

Informix 데이터베이스의 OPENINFO의 값은 단순히 데이터베이스 이름만 요구하므로 Oracle과 같

이 복잡하지 않다.

OPENINFO= Database Name

그 외 다른 데이터베이스는 해당 데이터베이스의 매뉴얼을 참조하여 등록한다.

● CLOSEINFO = literal (NULL)

– 크기 : 255자 이내

– 기본값 : NULL

– CLOSEINFO 항목은 리소스 매니저가 데이터베이스를 close할 때 필요한 정보를 지정한다.

– 보통 생략되거나 NULL로 정의된다. Informix 데이터베이스에서는 반드시 널 문자열("")로 지정해야

하며, Oracle 데이터베이스에서는 생략해도 된다.

제3장 환경파일 설정 109

Page 126: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

<Oracle을 사용하는 서버 그룹의 예>

*SVRGROUP

svg1 NODENAME = tmax1,

DBNAME = ORACLE,

OPENINFO = "Oracle_XA+Acc =

P/scott/tiger+SesTm= 60"

<Informix를 사용하는 서버 그룹의 예>

*SVRGROUP

svg2 NODENAME = tmax2,

DBNAME = INFORMIX,

OPENINFO = "test",

CLOSEINFO = ''''

● TMSNAME = string

– 크기 : 15자 이내

– TMSNAME은 해당 서버 그룹의 데이터베이스 관리를 담당할 TMS 프로세스 이름을 정의한다

– 데이터베이스의 open 정보(OPENINFO 항목)를 등록한 경우에는 반드시 TMSNAME에 대한 정의가

필요하다. TMS 프로세스는 데이터베이스와 관련된 시스템에서 해당 서버 그룹의 데이터베이스 관리

를 담당하기 위하여 반드시 필요하다. 그러므로 Tmax 시스템에서 데이터베이스를 관리하도록 하기

위해서는 데이터베이스의 open/close 정보를 등록하고, 서버 그룹별로 반드시 TMSNAME을 정의하

여 TMS 프로세스를 기동시켜야 한다. TMS 프로세스는 데이터베이스와 연동하는 XA로 업무를 처리

하는 트랜잭션 매니저이다. 이 프로세스는 "$TMAXDIR/lib"에 있는 <libtms.a> 와 SVRGROUP 절에

있는 DBNAME의 데이터베이스 라이브러리를 연결하여 생성된다.

● MINTMS = numeric

– 범위 : 1 ~ 32

– 기본값 : 2

– 해당 서버 그룹의 TMS 프로세스 기동 개수를 정의한다. TMS 개수는 데이터베이스 관리보다는 트랜

잭션 관리에 영향을 주는 요소이다. 기본값으로 서버 그룹당 2개가 기동되는데, 데이터베이스 관리만

을 원할 경우 한두 개의 TMS로 충분히 관리가 가능하다.

● MAXTMS = numeric

– 범위 : 1 ~ 32

– 기본값 : 3

110 Tmax Administration Guide

Page 127: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 동적으로 더 기동시킬 수 있는 TMS 프로세스 개수를 정의한다. 자세한 내용은 “3.4. 분산 트랜잭션

환경설정”을 참고한다.

3.3.2. 데이터베이스 환경설정의 예

다음은 기본적인 환경설정에 데이터베이스 환경설정 내용이 추가된 Tmax 환경파일의 예이다.

*DOMAIN

res SHMKEY = 77990, MAXUSER = 300 , MINCLH = 3 ,

MAXCLH = 5 , TPORTNO = 8899, BLOCKTIME = 60

*NODE

tmax1 TMAXDIR = "/home/tmax" ,

APPDIR="/home/tmax/appbin",

PATHDIR="/home/tmax/path",

SLOGDIR="/home/tmax/slog",

ULOGDIR="/home/tmax/ulog",

TLOGDIR="/home/tmax/tlog"

tmax2 TMAXDIR="/system/tmax",

APPDIR="/system/tmax/server",

SLOGDIR="/system/tmax/slog",

ULOGDIR="/system/tmax/ulog",

TLOGDIR="/system/tmax/tlog",

ENVFILE=app_env

*SVRGROUP

svg1 NODENAME=tmax1, DBNAME=ORACLE,

OPENINFO="Oracle_XA+Acc=P/scott/tiger+SesTm=60",

TMSNAME=ora_ tms, MINTMS=3, MAXTMS=5

svg2 NODENAME=tmax2, DBNAME=INFORMIX,

OPENINFO="infodb",TMSNAME=info_tms, CLOSEINFO=""

*SERVER

svr1 SVGNAME = svg1 , CLOPT="-e err1 -- apple", MIN=3,

MAX=5

svr2 SVGNAME = svg2 , MIN = 4 , MAX = 5

svr3 SVGNAME = svg2,

CLOPT = "-e $(SVR).$(DATE).err –o

$(SVR).$(DATE).out"

*SERVICE

svc1 SVRNAME = svr1 , PRIO=100, SVCTIME=40

svc2 SVRNAME = svr2

제3장 환경파일 설정 111

Page 128: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

svc3 SVRNAME = svr3

3.4. 분산 트랜잭션 환경설정분산 트랜잭션 처리는 TP(Transaction Processing) 모니터의 주요기능 중 하나이다.

분산 트랜잭션 처리란 하나 이상의 이기종 데이터베이스 시스템과 관련된 여러 개의 트랜잭션을 하나의

글로벌 트랜잭션(Global Transaction)으로 묶어서 처리하는 것을 말한다. 이러한 분산 트랜잭션 기능을 제

공받고자 할 경우 기본적으로 데이터베이스 환경설정이 필요하다.

분산 트랜잭션 처리를 위해서는 각 서버 그룹별로 TMS 프로세스가 기동되어 다음과 같은 구조를 형성한

다.

[그림 3.5] 분산 트랜잭션 처리 환경

CLH는 분산 트랜잭션과 관련된 서비스 요청을 받을 경우에는 서비스별로 하위 트랜잭션의 commit/rollback

여부를 관리한다. 따라서, 하나의 분산 트랜잭션과 관련된 하위 트랜잭션들이 모두 commit이 가능할 때

그 분산 트랜잭션을 commit 처리하고, 하나라도 rollback 처리되는 경우 전체를 rollback 처리함으로써 분

산 트랜잭션을 지원한다.

실질적으로 데이터베이스를 갱신(Update)하는 commit, rollback 처리는 각 서버 그룹의 TMS 프로세스가

담당한다. 분산 트랜잭션을 위한 환경설정은 DOMAIN, NODE, SVRGROUP 절을 통해 이루어진다.

3.4.1. DOMAIN 절

DOMAIN 절에는 분산 트랜잭션과 관련하여 2PC(Two Phase Commit) 가능 여부와 트랜잭션 타임아웃 시

간을 설정할 수 있다.

데이터베이스 환경설정과 관련하여 DOMAIN 절에 정의하는 항목들은 다음과 같다.

112 Tmax Administration Guide

Page 129: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

도메인 이름 [CMTRET=Y | N,]

[TXTIME=transaction-timeout-value]

● CMTRET = Y | N

– 기본값 : Y

– 2PC(Two Phase Commit)여부를 결정한다. 2PC란, 준비(prepare)와 실행(commit/rollback)의 2단계

트랜잭션 처리를 거치는 것을 말하며, Tmax에서는 분산 트랜잭션 구현을 위한 2PC를 지원한다.

• 1단계(prepare) : 하나의 트랜잭션과 관련하여 각각의 데이터의 관리 서버들에게 해당 트랜잭션의

정상 처리 여부(commit/rollback)를 확인 한다

• 2단계(commit/rollback) : 1단계의 결과를 토대로 관련된 모든 트랜잭션이 정상 처리되면 commit,

하나라도 불가능하면 rollback한다.

[그림 3.6] Two-phase-commit

Tmax에서는 2PC에 대하여 두 가지 방법을 지원한다.

1. 1, 2단계를 거쳐 commit하고 rollback에 대한 완전한 로깅(logging)이 이루어진 후 서비스를 반환

(complete return)한다.

2. 보다 빠른 처리를 위하여 2단계에서 commit/rollback 명령만 지시하고 서비스를 반환하는 것이며

시스템 환경에 따라 선택적으로 지정 가능하다.

– CMTRET 항목은 complete return에 대한 내용을 결정한다. Y는 complete return을 의미하고 N인 경

우 빠른 처리를 위하여 commit/rollback 명령 후에 즉시 서비스를 반환하게 된다.

제3장 환경파일 설정 113

Page 130: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● TXTIME = numeric

– 범위 : 0 ~ MAX_INT

– 기본값 : 0

– 트랜잭션 처리 제한시간을 결정한다. tx_begin()의 트랜잭션 시작에서부터 tx_commit()이나 tx_rollback()

으로 트랜잭션이 끝날 때까지의 시간으로써, TXTIME이 지나면 자동으로 rollback 처리된다.

3.4.2. NODE 절

NODE 절에서는 분산 트랜잭션 환경설정과 관련하여, 각 노드의 트랜잭션 처리 기록(logging)에 사용되는

파일을 정의할 수 있다.

데이터베이스 환경설정과 관련하여 NODE 절에 정의하는 항목들은 다음과 같다.

Node Name [TLOGDIR=transaction-log-path]

● TLOGDIR = literal

– 크기 : 255자 이내

– 기본값 : TMAXDIR

– 트랜잭션을 처리할 때 장애가 발생하면 복구를 위해 트랜잭션처리에 대한 기록(logging)이 필요하다.

TLOGDIR은 트랜잭션 정보가 저장될 파일을 지정한다.

– 로그 파일은 일반 파일로 저장된다. Tmax는 로그 파일을 저장할 때 raw 파일을 지원하지 않는다. 트

랜잭션 처리가 많지 않은 경우에는 TLOGDIR에 정의된 일반 파일을 사용하고, 이때 TLOGDIR에는

임의의 파일 이름을 정의한다. 반대로 트랜잭션 처리가 많은 경우에는 응답시간을 단축시키기 위해

UNIX 파일 시스템을 거치지 않고, 정의된 raw 파일을 사용하여 TLOGDIR에 device명을 직접 디스크

에 기록하며, 여기에 정의된 device는 트랜잭션 기록(logging)을 위해서만 사용한다.

– 정의된 경로는 사용 중인 시스템에 이미 있는 것이어야 한다.

예제

TLOGDIR 경로의 로그 파일은 일반 사용자들이 읽지 못하는 이진(binary) 형태로 저장되어 있다. 트랜잭

션과 관련된 데이터베이스 로그는 SVRGROUP 절의 OPENINFO에 있는 trace flag를 정의하여 저장할 수

있다.

TLOGDIR = "/home/tmax/log/tlog"

114 Tmax Administration Guide

Page 131: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

/tmp 디렉터리에 <xa_NULLmmdd.trc> 파일을 작성한다.

OPENINFO = "Oracle_XA+Acc=P/scott/tiger+SesTm = 60, DbgFl=0x01 + LogDir=/tmp"

3.4.3. SVRGROUP 절

SVRGROUP 절에서는 데이터베이스의 환경설정이 이루어진다. 설정항목 중 MINTMS와 MAXTMS는 트

랜잭션 처리와 관련되어 주의해야 한다. 설정 항목에 대한 자세한 내용은 “3.3. 데이터베이스 환경설정”을

참고한다.

SVRGROUP 절의 기본 환경설정 형식은 다음과 같이 정의한다.

SVRGROUP Name [DBNAME = name-of-database,]

[OPENINFO = string,]

[CLOSEINFO = string,]

[TMSNAME = name-of-tms,]

[MINTMS=numeric,]

[MAXRSTART=numeric,]

[MAXTMS=numeric]

● DBNAME = string

사용하는 데이터베이스 이름을 설정한다.

● OPENINFO = literal

데이터베이스의 open 정보를 등록한다.

● CLOSEINFO = literal

– 기본값 : NULL

– 데이터베이스의 close 정보를 등록한다.

● TMSNAME = string

TMS 프로세스의 이름을 설정한다.

● MINTMS = numeric

– TMS 프로세스의 최소 개수이다.

– 데이터베이스 관리만을 위해서는 TMS 프로세스 개수가 중요하지 않지만, 트랜잭션을 처리할 때는

매우 중요하다. 단순히 한두 개로 TMS 프로세스 개수가 고정되어 있다면, 트랜잭션 처리량이 많은

서버 그룹의 경우 commit/rollback 처리에 상당한 부하를 초래할 수 있다. 따라서 처리 속도와 리소스

관리를 위해 적절한 개수의 TMS를 기동시키는 것이 중요하다.

제3장 환경파일 설정 115

Page 132: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● MAXRSTART = numeric

– MAXRSTART 장애 대책에 사용되는 필드로 자세한 사항은 “3.7. 장애 대책 환경설정”을 참조한다.

– SVRGROUP 절에 설정되었을 경우 TMS 또는 RQ의 MAXRSTART 를 의미한다.

● MAXTMS = numeric

– TMS 프로세스의 최대 개수이다.

– 동적으로 더 기동시킬 수 있는 TMS 프로세스의 개수를 정의한다. 트랜잭션 처리량이 많아질 경우,

MAXTMS 개수가 넘지 않는 범위 내에서 TMS 프로세스를 더 기동시킬 수 있다.

다음은 분산 트랜잭션 환경설정과 관련된 Tmax 환경파일의 예이다.

*DOMAIN

res SHMKEY = 77990, MAXUSER = 300 , MINCLH = 3 ,

MAXCLH = 5 , TPORTNO = 8899 , BLOCKTIME = 6 0 ,

CMTRET = N , TXTIME = 5 0

*NODE

tmax1 TMAXDIR = "/home/tmax",

APPDIR= "/home/tmax/appbin",

PATHDIR = "/home/tmax/path",

SLOGDIR="/home/tmax/log/slog",

ULOGDIR="/home/tmax/log/ulog",

TLOGDIR = "/home/tmax/log/tlog "

tmax2 TMAXDIR="/system/tmax",

APPDIR="/system/tmax/server",

SLOGDIR="/system/tmax/slog",

ULOGDIR="/system/tmax/ulog",

TLOGDIR="/system/tmax/log/tlog"

*SVRGROUP

svg1 NODENAME=tmax1, DBNAME=ORACLE ,

OPENINFO= "Oracle_XA+Acc=P/scott/tiger+SesTm=60,

DbgFl=0x01 + LogDir=/tmp",

TMSNAME=ora_tms, MINTMS=3, MAXTMS=5

svg2 NODENAME=tmax2, DBNAME = INFORMIX,

OPENINFO="infodb", CLOSEINFO="",

TMSNAME=info_tms, MINTMS=3, MAXTMS=5

svg3 NODENAME = tmax2

*SERVER

svr1 SVGNAME = svg1, CLOPT="-e err1 -- apple", MIN=3, MAX=5

svr2 SVGNAME = svg2, MIN=4, MAX=5,

116 Tmax Administration Guide

Page 133: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

CLOPT = "-e $(SVR).$(PID).err –o $(SVR).$(PID).out"

svr3 SVGNAME = svg3

CLOPT = "-e $(SVR).$(DATE).err –o $(SVR).$(DATE).out"

*SERVICE

svc1 SVRNAME = svr1, PRIO=100, SVCTIME=40

svr2 SVRNAME = svr2

svc3 SVRNAME = svr3

3.5. 부하 조절 환경설정클라이언트의 서비스 요구가 집중될 경우, 최적의 시스템 성능과 자원 활용을 보장할 수 있다. 부하 조절

에는 다음의 3가지 방법이 있다.

● 시스템 성능에 따른 부하 조절(System Load Management : SLM)

노드의 성능이나 시스템 상황에 따라 노드별로 서비스 처리량을 조절하는 것이다

● 데이터에 따른 부하 조절(Data Dependent Routing : DDR)

데이터의 범위에 따라 노드별로 서비스를 나누어 처리하는 것이다.

● 동적 부하 조절(Dynamic Load Balancing : DLM)

특정 노드에 부하가 집중되는 경우 부하를 분산하여 전체 시스템의 처리량을 극대화하는 것이다.

3.5.1. 시스템 성능에 따른 부하 조절

노드의 성능이나 시스템 상황에 따라 노드별로 서비스 처리량을 다르게 한다. 부하 조절이 가능하기 위해

서는 한 서비스가 여러 노드에서 지원되어야 한다. 시스템 로드는 서버 그룹별로 설정된다.

제3장 환경파일 설정 117

Page 134: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

[그림 3.7] 시스템 로드에 따른 부하 조절

SVRGROUP 절

시스템 성능에 따른 부하 조절 환경설정과 관련하여 SVRGROUP 절에 정의하는 항목은 다음과 같다.

SVRGROUP Name [COUSIN="group-name",]

[LOAD=load-value]

● COUSIN = literal

– 크기 : 255자 이내

– 2개 이상의 노드에서 부하 조절 기능을 사용하는 경우에 서버 그룹의 이름을 지정하는 항목이다

– 각 서버 그룹의 이름은 SVRGROUP 절에 등록되어야 한다.

기본적으로 Tmax 시스템의 부하 조절 기능은 서버 그룹 단위로 이루어진다. 그러나 부하 조절이 다

수의 노드에 걸쳐 이루어지는 경우 해당 노드 이름은 각각의 서버 그룹에 다르게 설정되어야 하며 이

때 노드 이름은 반드시 환경파일의 NODE 절에 등록된 것이어야 한다. 다수의 서버 그룹을 정의할 경

우는 콤마(, )로 분리하여 정의한다. 각 노드의 APPDIR에는 필요한 서버 프로그램이 존재해야 한다.

노드의 성능에 따라 부하 조절을 할 필요가 있을 경우에는 각 서버 그룹에 부하 조절을 위한 LOAD 값

을 설정해야 한다.

● LOAD = numeric

– 범위 : -1 ~ MAX_INT

– 기본값 : 1

118 Tmax Administration Guide

Page 135: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 서버 그룹의 서비스 처리 능력을 의미한다. 값이 클수록 처리 능력이 높음을 나타낸다.

– 서비스 처리 능력이 탁월한 노드에 대해서는 LOAD 값을 크게 설정하며, 반대로 노드의 성능이 저하

된다면 LOAD 값을 작게 설정해야 한다.

시스템 로드에 따른 부하 조절을 원한다면, COUSIN 항목 설정으로 서버 그룹을 복사한 후 각각의 서

버 그룹에 적절한 LOAD 값을 설정하면 된다. 노드별 분산처리를 원하지 않는다면 LOAD 값을 -1로

설정하면 된다. 자동 부하분산은 LOAD 값을 설정하지 않거나 0으로 설정하면 되며 시스템 부하에 따

라 자동적으로 서비스 요청이 분산된다.

사용 예제SVRGROUP 복사를 위한 Tmax 환경파일 설정의 예

● SVRGROUP 복사를 위한 멀티 노드에서의 Tmax 환경파일

*DOMAIN

site1 SHMKEY = 77990, MAXUSER=400,

MAXCLH = 5, TPORTNO = 8899, BLOCKTIME = 60,

CMTRET = N, TXTIME = 50

*NODE

NODE1 TMAXDIR = "/home/tmax",

APPDIR= "/home/tmax/appbin",

PATHDIR = "/home/tmax/path",

SLOGDIR="/home/tmax/log/slog",

ULOGDIR="/home/tmax/log/ulog",

TLOGDIR = "/home/tmax/log/tlog "

NODE2 TMAXDIR="/system/tmax",

APPDIR="/system/tmax/appbin",

SLOGDIR="/system/tmax/log/slog",

ULOGDIR="/system/tmax/log/ulog",

TLOGDIR="/system/tmax/log/tlog"

NODE3 TMAXDIR="/system/tmax",

APPDIR="/system/tmax/appbin",

SLOGDIR="/system/tmax/log/slog",

ULOGDIR="/system/tmax/log/ulog",

TLOGDIR="/system/tmax/log/tlog"

*SVRGROUP

SVG1 NODENAME = NODE1, COUSIN="SVG2,SVG3"……..(1)

LOAD = 3 , DBNAME=ORACLE,

OPENINFO ="ORACLE_XA+Acc=P/scott/tiger+SesTm=60",

TMSNAME=tms1, MINTMS=3

SVG2 NODENAME = NODE2, ……(2)

LOAD = 2

SVG3 NODENAME = NODE3, ……(3)

LOAD = 1, DBNAME=INFORMIX ,

OPENINFO="infodb", CLOSEINFO="",

제3장 환경파일 설정 119

Page 136: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

TMSNAME= tms2

......

*SERVER

SVR1 SVGNAME = SVG1, MIN=5 , MAX=10

SVR2 SVGNAME = SVG1

......

*SERVICE

SVC_A SVRNAME=SVR1

SVC_B SVRNAME=SVR1

SVC_C SVRNMAE=SVR2

● SVRGROUP 복사를 위한 단일 노드에서의 Tmax 환경파일

*DOMAIN

site1 SHMKEY = 77990, MAXUSER=400,

MAXCLH = 5, TPORTNO = 8899, BLOCKTIME = 60,

CMTRET = N, TXTIME = 50

*NODE

NODE1 TMAXDIR = "/home/tmax",

APPDIR= "/home/tmax/appbin",

PATHDIR = "/home/tmax/path",

SLOGDIR="/home/tmax/log/slog",

ULOGDIR="/home/tmax/log/ulog",

TLOGDIR = "/home/tmax/log/tlog "

*SVRGROUP

SVG1 NODENAME = NODE1, COUSIN="SVG2"

LOAD = 3 , DBNAME=ORACLE,

OPENINFO ="ORACLE_XA+Acc=P/scott/tiger+SesTm=60",

TMSNAME=tms1, MINTMS=3

SVG2 NODENAME = NODE1, LOAD = 2

......

*SERVER

SVR1 SVGNAME = SVG1, MIN=5 , MAX=10

SVR2 SVGNAME = SVG1

......

*SERVICE

SVC_A SVRNAME=SVR1

SVC_B SVRNAME=SVR1

SVC_C SVRNMAE=SVR2

3.5.2. 데이터값에 따른 부하 조절

Tmax 시스템에서는 데이터값에 따라 부하 조절 기능을 제공한다. 데이터값에 따른 부하 조절(Data Depen

dent Routing: 이하 DDR)이란 데이터의 범위에 따라서 서비스가 처리될 서버 그룹을 다르게 지정하여 분

산처리 및 부하 조절이 이루어지도록 하는 것이다.

120 Tmax Administration Guide

Page 137: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

라우팅은 STRUCT, STRING, CARRAY형 버퍼나 FIELD형 버퍼를 사용하는 서비스에 대해서 지정이 가

능하다. 데이터 값 의존형 라우팅을 하기 위해서는 SVRGROUP 절에 서버 그룹 환경 복사에 대한 환경설

정과 SERVICE 절과 ROUTING 절의 라우팅에 대한 환경설정이 필요하다.

SVRGROUP 절

DDR 환경설정과 관련하여 SVRGROUP 절에 정의하는 항목은 다음과 같다.

SVRGROUP Name [COUSIN="group-name"]

● COUSIN = literal

– 크기 : 255자 이내

– DDR은 라우팅을 원하는 서비스가 다수의 서버 그룹에서 제공되어야 한다. 따라서, COUSIN 항목의

설정에 따라 원래의 SVRGROUP이 다른 노드로 복사되어야 할 필요가 있다. 자세한 내용은 “3.5.1.

시스템 성능에 따른 부하 조절” [118]에 COUSIN 항목을 참고한다.

SERVICE 절

DDR 환경설정과 관련하여 SERVICE 절에 정의하는 항목은 다음과 같다.

SERVICE Name [ROUTING=routing-name]

● ROUTING = string

– 크기 : 15자 이내

– 라우팅의 논리적 이름을 정의한다

– SERVICE 절 내에서 유일해야 하며 이 이름은 아래 설명된 ROUTING 절에도 사용되는 것이다. DDR

을 특정 서비스에 응용하기 위해서는 라우팅 이름이 정의되어야 하며 유형 버퍼의 이름과 라우팅을

원하는 필드 및 그 범위를 서버 그룹 이름과 함께 정의해야 한다.

ROUTING 절

한 도메인 안에서 노드 사이, 또는 멀티 도메인 환경에서 도메인 사이 DDR은 ROUTING 절에 정의된 유형

버퍼의 특정 필드값 혹은 멤버값에 의해 이루어진다.

도메인내의 노드 사이 DDR의 경우 SERVICE 절에서 정의한 "ROUTING Name"을 통하여 이루어지며

ROUTING 절에는 사용자가 원하는 조건을 상술하게 된다. ROUTING 절에는 "ROUTING Name"과 더불

제3장 환경파일 설정 121

Page 138: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

어 STRUCT, STRING, CARRAY 형 버퍼나 FIELD형 버퍼의 이름을 정의하고 그 버퍼에서 라우팅을 적용

할 멤버 혹은 필드와 그 값의 범위를 이를 처리할 서버그룹명과 함께 정의한다.

멀티 도메인 환경의 DDR의 경우 서버 그룹 이름 대신 도메인의 게이트웨이 이름을 지정하면 된다.

ROUTING 절의 형식은 다음과 같다.

ROUTING Name

FIELD=BufferType/field-name,

RANGES="범위1: Group1, 범위2: Group 2, ....",

MATCH=(FIRST)|MULTIPLE

● ROUTING Name = string

– 크기 : 15자 이내

– SERVICE 절의 ROUTING 항목에 정의한 이름이다.

– 데이터에 따른 부하 조절은 서비스별로 부하 조절이 이루어지므로 반드시 SERVICE 절에 등록된 이

름이어야 한다.

● MATCH = (FIRST)/MULTIPLE

*ROUTING

rout1 FIELD = "STRING, CARRAY, FIELD/INPUT,

STRUCT/test/a",

RANGES = "min-'100':svg1,'101'-'200':svg1_2,min-'100':svg1_3,*:svg1_4"

위와 같은 환경파일이 구성되어 있을 경우, 이전 버전에서는 min-100 까지의 데이터를 처리하기 위하

여, svg1의 서버를 먼저 검사하고, svg1이 속한 노드가 정상적으로 기동되어 있지 않은 경우, 백업을 검

사하며, 백업이 기동되어 있지 않거나 존재하지 않으면 클라이언트에게 에러를 보내게 된다. 하지만 현

재 버전에서 ROUTING 절에 MATCH 항목을 지정해 주면 새로운 방식으로 동작한다.

*ROUTING

rout1 FIELD = "STRING, CARRAY, FIELD/INPUT,

STRUCT/test/a",

RANGES ="min-'100':svg1,'101'-'200':svg1_2, min-'100':svg1_3,*:svg1_4" ,

MATCH=MULTIPLE

위와 같은 환경파일이 구성되어 있을 경우, min-100 까지의 데이터를 처리하기 위하여, svg1의 서버를

먼저 검사하고, svg1이 속한 노드가 기동되어 있지 않을 경우, 백업을 검사한다. 백업이 기동되어 있지

않거나 존재하지 않으면 RANGES에서 다음 번 일치하는 서버 그룹을 찾게 된다. 따라서 svg1_3이 그

대상이 된다. svg1_3이 속한 노드가 살아 있는지 검사하고, svg1_3의 서버 그룹 역시 기동이 되어 있지

않을 경우, svg1_3 서버 그룹의 백업을 검사하며, 백업이 존재하지 않거나 정상적으로 기동되어 있지

않을 경우, 그 다음 일치되는 서버 그룹은 svg1_4가 된다.

"MATCH=FIRST"로 지정하면 기존과 동일한 방식으로 동작한다.

122 Tmax Administration Guide

Page 139: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● FIELD = string

– 크기 : 2000자 이내

– FIELD에는 각 데이터 타입별로 설정하는 방법이 다르다.

– 데이터 의존형 라우팅을 적용할 서비스에 대해서, 그 서비스가 사용하는 STRUCT, STRING, CARRAY,

FIELD 타입의 정보를 설정한다.

– 각 데이터 타입별 형식은 다음과 같다.

STRUCT/subtype/fieldname,

FIELD/fieldname,

STRING/offset/length

CARRAY/offset/length

• STRUCT 형 버퍼는 사용자가 정의하는 C 구조체로, X/Open에 정의된 X_C_TYPE, X_COMMON

버퍼와 동일하다. 사용자는 미리 해당되는 구조체의 이름과 내용을 선언하여 절차에 따라 Tmax 시

스템이 필요로 하는 파일을 제공해야 하며 이 항목에는 "STRUCT/subtype/fieldname"을 설정하면

된다. Tmax 시스템은 환경변수 SDLFILE을 참조하여 구조체의 내용을 식별한다. subtype에는 구

조체의 이름을 지정하며, fieldname은 그 구조체의 멤버 중 실제로 라우팅을 적용할 멤버를 선택하

여 지정한다.

• 필드 버퍼가 사용되었을 경우는 이 항목에 "FIELD/fieldname"을 입력한다. fieldname 라우팅을 적

용할 필드 이름을 의미한다. 사용자는 미리 필드 버퍼의 필드 항목과 유형을 정의하여 절차에 따라

Tmax 시스템이 필요로 하는 파일을 제공해야 한다. Tmax 시스템은 환경변수 FDLFILE을 참조하

여 필드 버퍼의 내용을 식별한다.

• CARRAY와 STRING 타입의 데이터에 대해서도 DDR을 적용할 수 있도록 지원하고 있다. CARRAY

일 경우, "CARRAY" 혹은 "CARRAY/offset/length", STRING일 경우, "STRING" 혹은 "STRING/off

set/length"의 형식으로 설정하게 되면. STRING과 CARRAY 타입에 대한 DDR로 간주하게 된다.

CARRAY 타입에는 이미지 형태의 데이터가 입력될 수 있는데 반드시 프린트가 가능한 형태의 데

이터이어야 한다. offset과 length에 대한 설명은 RANGE 항목을 참고한다. DDR은 매칭 타입과 범

위 타입의 두 가지 방식으로 나눌 수 있다. 매칭 타입과 범위 타입의 차이점은 아래의 예제를 통해

서 살펴볼 수 있다.

● RANGES = "범위 : 그룹1, 범위 : 그룹2, ...."

– 크기 : 2047자 이내

– RANGES 항목은 FIELD에서 정의한 항목의 값을 기준으로 어디로 라우팅할 것인지에 대한 정보를

설정한다.

– RANGES 항목의 값 지정 형식은 다음과 같다.

제3장 환경파일 설정 123

Page 140: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

• 라우팅 필드는 int, short, long, float, double, string, char 타입이 지정될 수 있다.

• 정수나 실수인 경우 하나의 값, 또는 하한값과 상한값으로 이루어진 범위로 표현될 수 있다.

• 문자열인 경우 매칭 타입일 경우 일치하느냐 일치하지 않느냐만을 처리하며, 범위 타입일 경우 하

한값과 상한값으로 이루어진 범위로 표현될 수 있다.

• 부호(음수, 양수)를 표시할 수 있다.

• 최솟값을 나타내는 MIN(해당 타입의 최솟값), 최댓값을 뜻하는 MAX(해당 타입의 최댓값)라는 문

자를 사용할 수 있다.

• "A - B" 형식의 범위에서 A는 B보다 크지 않아야 한다.

• 아스테리스크(*)는 이전의 다른 범위들에 포함되지 않은 임의의 값을 대표하는 와일드 문자로 사용

된다. 앞서 정의된 범위 이외의 값이 올라올 경우를 고려해 반드시 아스테리스크(*)에 대한 라우팅

서비스를 정의해야 한다. 단, MIN과 MAX를 모두 정의 하였다면 아스테리스크(*)에 대한 정의는 생

략할 수 있다.

• 서버 그룹 이름은 범위 뒤의 콜론( : ) 다음에 지정된다. 사용되는 서버 그룹 이름은 SVRGROUP 절

의 COUSIN 항목에 정의된 서버 그룹 이름이어야 한다.

• 전체 문자열은 큰따옴표(" ") 로 묶어야 한다.

• 도메인 사이의 라우팅은 서버 그룹 이름 대신 도메인 게이트웨이 이름을 지정해야 한다.

• 문자열로 라우팅을 할 경우 해당 값은 작은따옴표(' ')로 묶여야 한다.

● STRING/CARRAY의 offset = numeric(0)

– 전체 데이터 중 일정 부분만을 DDR에 사용하고자 할 때 사용하는 항목으로, 입력 데이터 중 DDR에

사용하고자 하는 부분의 처음 시작 위치를 나타낸다. offset은 FLDLEN 항목과 함께 지정되어야 하며

입력 데이터의 해당 offset부터 FLDLEN 만큼의 데이터만 DDR될 때 사용된다.

예를 들어 STRING/0/4라고 설정했을 경우 offset은 0, length는 4가 되며 "tmaxsoft"라는 입력 데이터

를 처리하고자 한다면, 0번째 위치부터 4byte 만큼인 "Tmax"라는 문자열만이 DDR의 비교 기준이 된

다. 이 항목은 CARRAY/STRING 타입의 DDR의 경우만 유효하다.

– offset과 length을 사용할 때 주의할 점은 매칭 타입일 경우에는 사용해서는 안되며, 범위 타입일 경우

에만 사용할 수 있다는 것이다. 이것은 offset과 length는 입력 데이터만을 대상으로 지정하는 항목이

며 RANGES 항목에 지정하는 데이터와는 관계가 없기 때문이다.

124 Tmax Administration Guide

Page 141: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

아래와 같이 설정되어 있는 경우 "aaaaaaa"라는 문자열의 0 offset부터 4byte인 "aaaa"라는 문자열만

이 DDR될 때 비교 기준이 된다. 입력 데이터의 비교 기준인 "aaaa"와 RANGES에 지정한 "aaaaaaa"는

일치하지 않으므로 SVG2에서 처리하게 된다. 이 경우 어떤 데이터가 들어오더라도 무조건 SVG2에

서 처리하게 되므로 사용자는 주의해야 한다.

ROUTE_1 FIELD = "STRING/0/4",

RANGES = "aaaaaaa":SVG1, *:SVG2

– 범위 타입으로 설정되어 있는 경우에는 offset과 length가 유효하다. 아래와 같이 설정되어 있는 환경

에서 입력 데이터가 "aaaaaaa" 일 경우, 입력 데이터 중 0 offset부터 4byte 만큼의 "aaaa"만이 비교

기준이 되며, "aaaa"라는 문자열은 SVG1에서 지정한 범위보다 작게 되므로 SVG2에서 처리한다. 입

력 데이터가 "bbbb"일 경우 SVG1에서 지정한 범위 안에 속하게 되므로 SVG1에서 처리하게 된다.

ROUTE_1 FIELD = "STRING/0/4",

RANGES = "aaaaaaa"-"ccccccc":SVG1, *:SVG2

● STRING/CARRAY의 length = numeric

– offset이 입력 데이터 중 DDR될 때 비교 기준으로 사용하고자 하는 부분의 처음 시작 위치를 나타낸

다면 length는 offset 위치부터 지정한 길이만큼을 비교 기준으로 사용하고자 할 때 지정하는 항목으

로 반드시 offset과 함께 사용되어야 한다.

– 지정되지 않을 경우 NULL을 만날 때까지 혹은 메시지의 끝까지 비교하게 된다.

사용 예제

● 정수인 경우

다음은 student 구조체의 number 멤버에 대해서 그 데이터 값이 음수부터 3까지는 서버 그룹 SVG1으

로, 4 ~ 6까지는 SVG2로, 7부터는 모두 SVG3으로 라우팅하는 예제이다.

ROUTE_1 FIELD = "STRUCT/student/number",

RANGES = "MIN - 3 : SVG1, 4 - 6 :

SVG2, 7 - MAX : 1SVG3"

다음은 student 구조체의 number 멤버에 대해서 짝수는 서버 그룹 SVG1에서 처리되며 홀수는 SVG2

에서 처리되는 예제이다. MOD 연산자를 통해 범위가 결정되므로 사용자의 폭이 훨씬 넓어질 수 있다.

ROUTE_1 FIELD = "STRUCT/student/number",

RANGES = "MOD2 = 0 : SVG1, MOD2 =

1 : SVG2"

제3장 환경파일 설정 125

Page 142: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● 필드 버퍼인 경우

다음은 필드 버퍼의 INPUT 필드의 값이 'STRING'인 경우 서버 그룹 SVG1에서 처리되고 그 이외의 경

우에는 서버 그룹 SVG2에서 처리되는 예제이다. 도메인 사이에 라우팅을 하는 경우에는 서버 그룹 이

름 대신 도메인 게이트웨이로 지정된 게이트웨이 이름을 지정해야 한다. 문자열인 경우는 반드시 작은

따옴표(' ')로 묶어서 표현해야 한다.

ROUTE_1 FIELD = "FIELD/INPUT",

RANGES = "'STRING' : SVG1, *: SVG2"

● STRING, CARRAY인 경우 (매칭 타입)

다음은 STRING 또는 CARRAY의 값이 'aaa'일 경우에만 그룹 SVG1에서 처리되고 그 이외의 경우에는

서버 그룹 SVG2에서 처리되는 예제이다. 매칭 타입의 경우 주의할 점은 유효한 데이터의 길이는 지정

해 준 단어와 완전히 일치할 경우에만 해당 범위로 간주하게 된다는 것이다. 즉 SVG1의 지정된 문자열

이 'aaa'라면 aaa 이외의 문자 즉 aaab, aaacc 등의 문자는 모두 SVG2에서 처리하게 된다.

ROUTE_1 FIELD = "STRING",

RANGES = "'aaa' : SVG1, *: SVG2"

ROUTE_2 FIELD = "CARRAY",

RANGES = "'aaa' : SVG1, *: SVG2"

● STRING, CARRAY인 경우 (범위 타입)

다음은 STRING 또는 CARRAY의 값이 'aaa'부터 'ccc'인 경우 서버 그룹 SVG1에서 처리되고 그 이외의

경우에는 서버 그룹 SVG2에서 처리되는 예제이다. 범위 타입의 DDR은 매칭 타입과는 달리 지정된 범

위의 길이로 한정되지 않고 문자열의 끝까지 검사한다. 따라서 지정해 준 데이터의 길이와는 관계없이

해당 문자열이 해당 범위 안에 속하는지를 검사하게 된다.

ROUTE_1 FIELD = "STRING",

RANGES = "'aaa'-'ccc' : SVG1, *: SVG2"

ROUTE_2 FIELD = "CARRAY",

RANGES = "'aaa'-'ccc' : SVG1, *: SVG2"

● STRING, CARRAY인 경우 (범위 타입, DDR 비교 길이 설정)

다음은 입력 데이터 중 0 offset부터 4byte인 "aaaa" 문자열만을 DDR될 때 비교 기준으로 사용하는 예

제이다. 예를 들어 입력 데이터가 "aaaaaaa"라는 문자열일 경우, "aaaa"만이 비교 기준으로 사용된다.

이때 "aaaa"는 SVG1에서 지정한 범위보다 작으므로 SVG2에서 처리하게 된다. 입력 데이터가

"bbbbbbb"일 경우 "bbbb"라는 문자열은 SVG1에서 지정한 범위에 속하게 되므로 SVG1에서 처리하게

된다.

ROUTE_1 FIELD = "STRING/0/4",

RANGES = "'aaaaaaa'-'ccccccc':SVG1,*:SVG2",

126 Tmax Administration Guide

Page 143: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● 여러 데이터 타입을 동시에 사용할 경우

ROUTE_1 FIELD = "STRING/0/4, CARRAY, FIELD/INPUT",

RANGES = "min-'1000' : svg1, '1001'-'2000':

svg2, *:svg3"

3.6. 신뢰성 큐(RQ-Reliable Queue) 환경설정클라이언트의 서비스 요구가 집중되어 요구된 서비스를 즉시 처리하지 못하고 내부 큐에 쌓인 상태에서

시스템 오류로 인하여 시스템이 비정상적으로 종료되는 경우, 모든 서비스 요청 데이터는 삭제된다. 이러

한 문제점을 보완하기 위하여 서비스 데이터를 메모리가 아닌 디스크 파일에 쌓아 시스템이 정상적으로

시작된 후에 처리를 계속할 수 있도록 환경을 설정하는 절이 RQ 절이다. RQ를 작동하기 위해 기본 환경

설정(DOMAIN, NODE, SVRGROUP, SERVER, SERVICE 절) 외에 별도로 RQ 절을 설정해야 한다.

주의

사용할 경우, 메모리가 아닌 디스크를 이용하기 때문에 서비스를 요구한 데이터는 안전하게 보관되

나 RQ를 사용하지 않을 때보다 속도는 저하될 수 있다.

3.6.1. SVRGROUP 절

RQ 환경설정에 따른 SVRGROUP 절에 정의하는 항목은 다음과 같다.

RQ SVRGROUP Name [NODENAME="node-name ",]

[CPC = channel-number,]

[SVGTYPE = RQMGR]

● CPC = numeric

– 범위 : 1 ~ 128

– 기본값 : 4

– RQS 프로세스와 CLH 프로세스 사이의 병렬 통신 채널 수를 지정하는 항목이다. 큐의 사용이 빈번할

경우에 다중의 채널을 유지함으로써 처리 속도를 향상시킬 수 있다.

● SVGTYPE = string

– RQ 서버 그룹의 타입을 정의하는 항목으로 RQMGR이라 정의하면 된다.

제3장 환경파일 설정 127

Page 144: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.6.2. RQ 절

하나의 서버 그룹에 하나의 RQ를 정의하며 여러 개를 그룹으로 지정할 수도 있다.

RQ Name SVGNAME=rq-svrgroup-name,

[QSIZE=size-number,]

[FILEPATH=file-path,]

[BOOT=WARM | COLD,]

[FSYNC=Y | N,]

[BUFFERING=Y | N]

필수 항목

● RQ Name = string

– 크기 : 15자 이내

– RQ 절의 논리적인 이름이다. RQ 절 내에서 여러 개의 RQ 정의가 가능하며, 각각의 RQ 이름은 유일

한 값이어야 한다. 또한 한 노드에 2개 이상의 RQ를 정의할 수 있다.

● SVGNAME = string

– 크기 : 15자 이내

– RQ를 사용하는 그룹을 지정한다. SVGNAME은 SVRGROUP 절에 등록된 RQ 그룹 이름이어야 한다.

선택 항목

● BOOT = WARM | COLD

– 기본값 : COLD

– BOOT 필드는 Tmax 시스템을 재부팅할 때, RQ에 저장된 데이터를 조절한다.

– 다음은 설정값에 대한 설명이다.

설명설정값

시스템 장애복구 후에 큐에 쌓였던 서비스의 복구(정상적 처리)가 가능하다.WARM

Tmax 시스템이 다시 기동될 때 디스크에 저장된 서비스는 처리를 하지 않고 무시해

버린다.

COLD

128 Tmax Administration Guide

Page 145: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● FSYNC = Y | N

– 기본값 : Y

– 각 디스크에 기록한 후에 fsync의 호출 여부를 지정한다.

– 다음은 설정값에 대한 설명이다.

설명설정값

시스템 장애가 발생했을 때 데이터를 잃을 가능성이 있지만 RQ 처리 속도는 빨라진

다.

Y

RQ 데이터가 메모리를 사용하지 않고 항상 디스크에 안전하게 저장되지만 NO를 설

정 했을 때보다 처리 속도가 늦어진다.

N

● BUFFERING = Y | N

– 기본값 : Y

– RQ 파일 내용을 메모리에 캐쉬(cache) 할지 여부를 지정한다.

– N으로 지정하면 RQ 처리가 상대적으로 느려지나 요구되는 메모리가 작아진다.

● QSIZE = size-number

– 범위 : 1 – 2047(Mbyte)

– 기본값 : 16Mbyte

– Enqueue된 데이터를 저장하는 RQ의 크기를 지정하여 사용할 수 있다.

– RQ의 크기는 자동으로 증가하지 않으므로 RQ가 정의한 크기를 초과하여 에러가 발생하는 것을 막

기 위해 적당한 크기로 설정할 것을 권한다. RQ 파일을 작성한 후에도 RQ에 데이터가 저장되지 않으

면 Tmax가 종료될 때 파일이 자동으로 삭제된다.

● FILEPATH = literal

– 크기 : 255자 이내

– 기본값 : $(TMAXDIR)/path/rq-name

– RQ에서 사용되는 파일 위치를 지정한다.

제3장 환경파일 설정 129

Page 146: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

– 이 필드는 RQ 데이터 파일을 생성하며 전체 파일 이름과 디렉터리 이름으로 정의되어야 한다.

3.7. 장애 대책 환경설정Tmax에서는 다음과 같은 장애 대책 방법을 제공한다.

● 하드웨어적 장애 (노드나 네트워크 장애) : 서비스 백업에 의한 장애 대책

● 소프트웨어적 장애 (프로세스의 다운) : 프로세스의 재기동에 의한 장애 대책

3.7.1. 하드웨어적 장애

장애로 인해 서비스가 불가능할 때 백업 서비스를 통해 계속적인 서비스를 제공할 수 있다. 서비스 백업은

SVRGROUP 절의 BACKUP 항목에 설정한다.

SVRGROUP 절

SVRGROUP Name [BACKUP="group-name"]

● BACKUP = literal

– 크기 : 255자 이내

– 백업 서버 그룹을 지정한다.

– 하나 이상의 백업 서버 그룹을 지정할 수 있으며, 2개 이상의 백업 서버 그룹을 지정할 때는 콤마(,)로

분리하여 나열한다. 여러 개의 백업 서버를 지정한 경우, 원본 서버 노드에 장애가 발생하는 경우 첫

번째로 지정된 백업노드가 동작하게 되고, 그 백업 노드도 이상이 생기면 두 번째로 지정된 백업노드

가 동작하게 되는 다중 장애 대책을 지원한다.

– 백업 노드의 서버 그룹 이름은 반드시 SVGROUP 절에 등록하여야 한다. 또한 서버 그룹과 서버의 환

경 옵션은 기본적으로 원본 서버 그룹의 환경을 그대로 따르며, 환경 옵션을 변경하고자 하는 경우,

서버 그룹이나 서버별로 관련 항목들을 재정의할 수 있다. 다만, 서비스에 대한 환경 옵션은 이중 복

사된 그룹별로 재정의할 수 없으며, 반드시 원본 서버 그룹과 동일한 환경을 갖는다.

이에 대한 규칙들은 부하 조절을 위해 이중 복사된 서버 그룹과 동일다. 백업 노드는 부하 조절을 위

해 복사된 서버 그룹과 달리, 원본 서버 그룹 처럼 Tmax가 기동할 때 동작하는 것이 아니라, 장애가

발생했을 경우에만 원본 서버 그룹의 역할을 대신하여 동작하게 된다.

130 Tmax Administration Guide

Page 147: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.7.2. 소프트웨어적 장애

CLH, CAS 등의 Tmax 내부 프로세스가 비정상 종료되었을 경우, 프로세스가 자동적으로 재기동되어 계

속 서비스를 제공하게 된다.

NODE 절

NODE Name [RESTART=(Y) | N,]

[MAXRSTART=numeric,]

[GPERIOD=time-value]

● RESTART = Y | N

– 기본값 : Y

– Tmax 엔진 프로세스 중 CLH, CAS, CLL, TLM 의 재시작 가능 여부를 결정한다 .

– CLH와 CAS, CLL, TLM에 문제가 발생하여 비정상적으로 종료되었을 경우, 재기동하려면 RESTART

를 Y로 설정한다.

● MAXRSTART = numeric

– 범위 : -11 ~ MAX_INT

– 기본값 : -1

– Tmax 엔진 프로세스 중 CLH와 CAS 프로세스의 최대 재기동 가능 횟수를 결정한다.

– GPERIOD 항목과 함께 사용된다. RESTART가 Y라면 프로세스는 GPERIOD 시간 내에 최대

MAXRSTART 횟수까지 재기동되며 N으로 설정되면 시스템은 이 값을 무시한다. MAXRSTART가 –1

일 경우 프로세스의 최대 재기동 가능 횟수는 무한이 된다.

● GPERIOD = numeric

– 범위 : 1 ~ MAX_INT

– 기본값 : 86400초 (24시간) (단위 : 초 )

– MAXRSTART 횟수가 유효한 시간 주기이다.

– GPERIOD 시간 동안 MAXRSTART 횟수까지 프로세스가 재기동된다. 그 시간이 경과하면 GPERIOD

시간 동안 다시 MAXRSTART 횟수만큼 재기동된다. RQ와 TMS 프로세스가 비정상적으로 종료되었

을 경우, 프로세스가 자동적으로 재기동되어 계속 서비스를 제공하게 된다.

제3장 환경파일 설정 131

Page 148: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

SVRGROUP 절

SVRGROUP Name [RESTART=(Y) | N,]

[MAXRSTART=numeric,]

[GPERIOD=time-value]

● RESTART, MAXRSTART, GPERIOD

– SVGTYPE이 RQMGR의 경우에는 해당 RQ의 재기동을, XA svg의 경우에는 해당 TMS의 재기동을

조절한다.

– 서버 프로세스가 비정상 종료되었을 경우, 프로세스가 자동적으로 재기동되어 계속 서비스를 제공하

게 된다.

SERVER 절

SERVER Name [RESTART=(Y) | N,]

[MAXRSTART=numeric,]

[GPERIOD=time-value]

● RESTART, MAXRSTART, GPERIOD

– 서버 프로세스의 재기동 가능 여부를 결정한다.

– 게이트웨이 프로세스가 비정상 종료되었을 경우, 프로세스가 자동적으로 재기동되어 계속 서비스를

제공하게 된다.

GATEWAY 절

GATEWAY Name [RESTART=(Y) | N,]

[MAXRSTART=numeric,]

[GPERIOD=time-value]

● RESTART, MAXRSTART, GPERIOD

게이트웨이의 재기동 가능 여부를 결정한다.

132 Tmax Administration Guide

Page 149: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.8. 보안 환경설정

3.8.1. 단계별 보안설정

Tmax 시스템은 자체적으로 다음과 같은 3단계 보안을 지원한다.

● 1단계 : 시스템 접속 제어

Tmax 시스템에 접속하는 것을 제한한다.

● 2단계 : 사용자 인증

인증된 사용자만이 서비스를 요청할 수 있다.

● 3단계 : 서비스 접근 제어

서비스별 사용자의 접근을 제어할 수 있다.

보안의 각 단계는 이전 단계를 포함한다. 즉, 2단계 사용자 인증보안이 설정된 경우에, 1단계 시스템 접속

제어 보안도 적용된다.

어느 단계의 보안을 설정할 것인지는 DOMAIN 절의 SECURITY 항목에서 결정한다. SECURITY 항목에

정의 가능한 값은 다음과 같다.

DOMAIN 절

DOMAIN Name [SECURITY=("NO_SECURITY")| "DOMAIN_SEC"|"USER_AUTH",]

[OWNER=user-name]

● SECURITY = "NO_SECURITY"| "DOMAIN_SEC"| "USER_AUTH" | "ACL" | "MANDATORY"

– 기본값 : NO_SECURITY

– 다음을 설정값에 대한 설명이다.

• NO_SECURITY

어떠한 보안 설정도 하지 않겠다는 의미이다.

• DOMAIN_SEC

단계 보안인 시스템 접속제어에 대한 보안을 정의한다.

시스템 접속 제어 (1단계 보안)으로 DOMAIN의 SECURITY항목에 "DOMAIN_SEC"를 정의한다.

제3장 환경파일 설정 133

Page 150: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

mkpw 유틸리티를 이용해 Tmax 시스템에 대한 단일 패스워드를 설정하고 패스워드를 알고 있는

사용자에 한해서만 접속을 허락한다. 이 보안을 설정하고자 한다면 DOMAIN 절에 OWNER 항목을

정의하여야 한다.

• USER_AUTH

2단계 보안인 사용자 인증을 정의한다.

사용자 인증(2단계 보안)으로 DOMAIN의 SECURITY 항목에 "USER_AUTH"를 정의하는 경우에

해당한다.

사용자 계정과 패스워드를 관리하여 인증된 사용자에 한해서만 Tmax 서비스를 제공한다. 사용자

와 패스워드는 mkpw utility로 작성되어야 한다. 사용자는 Tmax 시스템에 접속할 때 TPSTART_T

구조체의 usrname과 usrpwd 항목에 인증 가능한 사용자 계정과 패스워드를 등록하여 접속 신청을

해야 한다. 인증되지 않은 사용자는 Tmax 시스템에 접속할 수 없다.

• ACL/MANDATORY

3단계 보안인 서비스 접근 제어를 정의한다.

서비스 접근 제어(3단계 보안)으로 Tmax 시스템에 접속한 사용자들 중에서 서비스별로 사용자 접

근을 제한할 수 있는 기능이다. 서비스 접근 권한 제어는 사용자 그룹별로 이루어진다. 하나의 서비

스는 그 서비스에 대해 접근 권한이 허용된 그룹에 해당되는 사용자만이 접근이 가능하다. 따라서

이 기능을 사용하기 위해서는 그룹 파일을 만들어 주어야 하며, 해당 그룹에 속하는 사용자 파일이

있어야 한다. 그리고 서비스별 접근 가능한 사용자 그룹을 지정해 주는 acl이라고 불리는 파일도 있

어야 한다.

각 파일을 생성하기 위해서는 각각 mkgrp, mkpw, mkacl 유틸리티를 사용하여야 한다. ACL과

MANDATORY는 동일한 3단계 보안 설정에 해당하지만 아래와 같은 차이점을 가지고 있다.

내용설정값

acl 파일에 지정된 서비스는 지정된 하나의 그룹에 속하는 사용자만 접근할

수 있으며, acl에 지정되지 않은 서비스는 Tmax 시스템에 접속되어 있는 모

든 사용자가 접근할 수 있다.

ACL

acl 파일에 지정된 서비스는 지정된 하나의 그룹에 속하는 사용자만 접근할

수 있다는 점은 ACL과 동일하나, acl 파일에 지정되지 않은 서비스는 Tmax

시스템에 접속되어 있는 모든 사용자에게 접근이 허용되지 않는다.

MANDATORY

● OWNER = string

– 크기 : 15자 이내

– 사용자는 Tmax 시스템에 접속할 때 TPSTART_T 구조체의 dompwd 항목에 이 계정의 패스워드를

입력하여 접속을 신청하여야 한다. 패스워드가 등록되지 않았거나 틀린 경우에는 Tmax 시스템 접속

134 Tmax Administration Guide

Page 151: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

에 실패하게 된다. 이 필드에서 정의된 사용자와 패스워드는 제공된 mkpw 유틸리티로 작성할 수 있

다.

– 보안 환경설정을 한 뒤에 패스워드 파일은 mkpw 유틸리티로 작성되어야 한다. 이 파일은 각각의 사

용자의 패스워드를 포함한다. 이 파일은 암호화 되어있어 패스워드의 노출이 방지된다. Tmax 보안

시스템을 정상적으로 작동하기 위해서는 Tmax 시스템이 설정되기 전에 패스워드 파일이 작성되어

있어야 한다.

DOMAIN_SEC의 경우, 패스워드가 tpstart() 안에 있는 TPSTART_T 구조체의 dompwd 필드의 것과

다르다면 그 클라이언트 프로그램은 서비스를 요청할 수 없다. 이때 tperrno는 TPESECURITY(25)로

설정된다. USER_AUTH 의 경우, TPSTART_T 구조체의 usrpwd 필드와 usrname 필드는 mkpw 유틸

리티로 작성한 패스워드 파일에 등록된 계정과 패스워드가 같아야 한다.

2단계는 1단계를 포함하므로 dompwd도 설정되어 있어 도메인 패스워드와 일치해야 한다.

주의

Tmax 시스템이 기동되기 전에 패스워드 파일이 작성되거나 갱신되어 있어야 한다.

3.8.2. 기타 보안 설정

Tmax에서는 IP를 기준으로 하여 접속을 허용할 클라이언트와 허용하지 않을 클라이언트를 설정할 수 있

다. 접속을 허용/거부할 클라이언트의 설정 파일을 각각 tmax.allow, tmax.deny로 작성한다. 해당 파일들

을 통하여 CLL에서 TCP/IP 클라이어트의 접근 허용/거부 여부를 선택한다.

IP 기반의 접근 제한 기능

● 접속 허용 클라이언트 설정

"$TMAXDIR/path" 디렉터리에 접근 허용 파일(tmax.allow)을 작성하여 접근을 허용할 클라이언트의 IP

를 설정한다.

<tmax.allow>

192.168.1.43

192.168.1.48

● 접속 거부 클라이언트 설정

"$TMAXDIR/path" 디렉터리에 접근 거부 파일(tmax.deny)을 작성하여 접근을 거부할 클라이언트의 IP

를 설정한다.

제3장 환경파일 설정 135

Page 152: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

<tmax.deny>

192.168.1.35

192.168.1.45

● 적용 규칙

ACL(Access Control List)의 적용 규칙은 아래와 같다.

1. tmax.allow를 먼저 검색한 후 일치하는 ACL이 존재하면 접속을 허용한다.

2. tmax.deny를 검색한 후 일치하는 ACL이 존재하면 접속을 거부한다. 해당 ACL에 속하는 클라이언트

접속을 시도 (TPSTART)할 때 TPECLOSE 에러가 발생한다.

3. tmax.allow, tmax.deny 파일에 모두 없으면 접속을 허용한다.

● 사용 문법

1. 첫번째 문자가 '#'일 경우 주석으로 처리한다.

2. IP 또는 NETWORK/NETMASK 방식만 허용한다.

예) 192.168.1.1 또는 192.168.1.0/24

3. 한 라인당 하나의 ACCESS CONTROL LIST만 허용하며 공백이나 탭이 허용되지 않는다.

4. ALL은 모든 IP를 의미하는 예약어이다.

주의

tmax.allow, tmax.deny 파일은 CLL 기동할 때 반영된다. 따라서 운영 도중 변경된 파일은 적용되지

않는다.

3.9. 멀티 도메인 환경설정Tmax에서는 멀티 도메인 환경에서 도메인 사이의 트랜잭션 처리 기능을 제공한다. 사용자에게 글로벌 트

랜잭션 처리가 더욱 확장된 형태로 제공되고, 도메인 사이에 같은 애플리케이션으로 데이터값에 따른 라

우팅을 지원해서 개발에 대한 부담을 줄여 준다.

멀티 도메인 환경을 위해서는 도메인 GATEWAY 절에 게이트웨이 정보를 등록하고, ROUTING 절과

SERVICE 절에는 라우팅 정보를 등록해야 한다.

136 Tmax Administration Guide

Page 153: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.9.1. DOMAIN 절

DOMAIN 절에는 기본적인 내용(Shared Memory Key, Port number, MINCLH, MAXUSER 등)이 등록된다.

분산 트랜잭션과 관련하여 2PC(Two Phase Commit) 가능 여부와 트랜잭션 타임아웃 시간을 설정할 수

있다.

*DOMAIN

site1 SHMKEY = 79990, MAXUSER = 100, MINCLH = 1,

MAXCLH = 3, TPORTNO = 8888,

CMTRET = Y, BLOCKTIME = 60,

DOMAINID=1

3.9.2. NODE 절

NODE 절에는 같은 각각의 도메인에 속해 있는 노드에 대한 정보를 모두 등록한다.

*NODE

tmax1 TMAXDIR = "/user3/tmax",

APPDIR = "/user3/tmax/appbin",

PATHDIR = "/user3/tmax/path",

TLOGDIR = "/user3/tmax/log/tlog",

ULOGDIR = "/user3/tmax/log/ulog",

SLOGDIR = "/user3/tmax/log/slog"

3.9.3. SVRGROUP 절

멀티 도메인 환경에서 각각의 SVRGROUP 절에서는 데이터베이스의 이용 여부에 따라 그룹을 구분하여

등록한다. 도메인 사이의 글로벌 트랜잭션 처리(Two Phase Commit)를 위해서는 반드시 XA 그룹으로 서

버와 서비스가 묶여 있어야 한다.

*SVRGROUP

NXAGRP NODENAME = tmax1

XAGRP NODENAME = tmax1, DBNAME=ORACLE,

OPENINFO="Oracle_XA+Acc=P/scott/tiger+SesTm=80+logdir=.",

TMSNAME = XAGRP_tms, MINTMS=2, MAXTMS=5

3.9.4. SERVER 절

멀티 도메인 환경에서 각각의 SERVER 절에서는 기본적인 내용을 등록한다.

*SERVER

SVG_X SVGNAME=XAGRP, MIN=1, MAX=2,

CLOPT="-o $(SVR).$(DATE).log -- -u scott -p tiger"

제3장 환경파일 설정 137

Page 154: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

SVG_NX SVGNAME=NXAGRP, MIN=1, MAX=2,

CLOPT="-o $(SVR).$(DATE).log"

3.9.5. SERVICE 절

멀티 도메인 환경에서 각각의 SERVICE 절에는 기본적인 내용과 라우팅이 필요한 경우 ROUTING 절의

라우팅 이름을 지정하여야 한다.

*SERVICE

SVC_X SVRNAME=SVG_X, ROUTING=XRID

SVC_NX SVRNAME=SVG_NX, ROUTING=NXRID

3.9.6. GATEWAY 절

멀티 도메인 환경에서 라우팅이 필요한 경우, 각각의 GATEWAY 절을 반드시 등록하고 필요한 정보들을

기록하여야 한다. RGWADDR와 RGWPORTNO는 반드시 상대편 도메인 서버의 IP 주소와 포트 번호가

되어야 하며 NODENAME은 게이트웨이 프로세스가 수행되어야 할 서버 이름이다.

*GATEWAY

DOMAIN_GW1 GWTYPE=TMAX, PORTNO=5000,

RGWADDR="192.168.63.133",

RGWPORTNO = 5000,

NODENAME = tmax1

3.9.7. ROUTING 절

멀티 도메인 환경에서 라우팅이 필요한 경우 반드시 등록되어야 하며 여기에는 라우팅 이름, 필드 이름,

SUBTYPE(버퍼 유형)과 라우팅 범위(RANGES)가 반드시 등록되어야 한다.

3.9.8. 멀티 도메인 라우팅 환경파일 예제

<도메인 Site의 환경파일 예제>

*DOMAIN

site1 SHMKEY=79990, MAXUSER=100, MINCLH=1, MAXCLH=3,

TPORTNO=8888, CMTRET=Y, BLOCKTIME=60,

DOMAINID=1

*NODE

tmax1 TMAXDIR="/user3/tmax",

APPDIR ="/user3/tmax/appbin",

138 Tmax Administration Guide

Page 155: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

PATHDIR = "/user3/tmax/path",

TLOGDIR = "/user3/tmax/log/tlog",

ULOGDIR = "/user3/tmax/log/ulog",

SLOGDIR = "/user3/tmax/log/slog"

*SVRGROUP

NXAGRP NODENAME = tmax1

XAGRP NODENAME = tmax1, DBNAME = ORACLE,

OPENINFO = "Oracle_XA+Acc=P/scott/tiger + SesTm = 80 + logdir = . "

,

TMSNAME = XAGRP_tms, MINTMS=2, MAXTMS=5

*SERVER

SVG_X SVGNAME = XAGRP, MIN=1, MAX=2,

CLOPT = "-o $(SVR).$(DATE).log -- -u scott –p tiger"

SVG_NX SVGNAME = NXAGRP, MIN=1, MAX=2,

CLOPT="-o $(SVR).$(DATE).log"

*SERVICE

SVC_X SVRNAME = SVG_X, ROUTING=XRID

SVC_NX SVRNAME = SVG_NX, ROUTING=NXRID

*GATEWAY

DOMAIN_GW1 GWTYPE = TMAX, PORTNO=5000,RGWADDR ="192.168.63.133"

RGWPORTNO=5000,NODENAME = tmax1

*ROUTING

XRID FIELD = FIELD/ROUTING_ID,

RANGES = "'6400':XAGRP, '6471':DOMAIN_GW1"

NXRID FIELD = FIELD/ROUTING_ID,

RANGES = "'6400':NXAGRP, '6471':DOMAIN_GW1"

*DOMAIN

site2 SHMKEY=79990, MAXUSER=100, MINCLH=1, MAXCLH=3,

TPORTNO=8888, CMTRET=Y, BLOCKTIME=60,

DOMAINID=2

*NODE

tmax2 TMAXDIR="/user3/tmax",

APPDIR ="/user3/tmax/appbin",

PATHDIR = "/user3/tmax/path",

TLOGDIR = "/user3/tmax/log/tlog",

ULOGDIR = "/user3/tmax/log/ulog",

SLOGDIR = "/user3/tmax/log/slog"

*SVRGROUP

NXAGRP NODENAME = tmax2

제3장 환경파일 설정 139

Page 156: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

XAGRP NODENAME = tmax2, DBNAME = ORACLE,

OPENINFO = "Oracle_XA+Acc=P/scott/tiger + SesTm = 80 + logdir = . " ,

TMSNAME = XAGRP_tms, MINTMS=2, MAXTMS=5

*SERVER

SVG_X SVGNAME = XAGRP, MIN=1, MAX=2,

CLOPT = "-o $(SVR).$(DATE).log -- -u scott –p tiger"

SVG_NX SVGNAME = NXAGRP, MIN=1, MAX=2,

CLOPT="-o $(SVR).$(DATE).log"

*SERVICE

SVC_X SVRNAME = SVG_X, ROUTING=XRID

SVC_NX SVRNAME = SVG_NX, ROUTING=NXRID

*GATEWAY

DOMAIN_GW2 GWTYPE = TMAX, PORTNO=5000,RGWADDR = 192.168.63.132",

RGWPORTNO=5000,NODENAME = tmax2

*ROUTING

XRID FIELD = FIELD/ROUTING_ID,

RANGES = "'6471':XAGRP, '6400':DOMAIN_GW2"

NXRID FIELD = FIELD/ROUTING_ID,

RANGES = "'6471':NXAGRP, '6400':DOMAIN_GW2"

< Tmax의 복합적인 기능을 이용한 환경파일 예제>

*DOMAIN

site1 SHMKEY=79990, MAXUSER=100, MINCLH=1, MAXCLH=5,

TPORTNO=8888, CMTRET=Y, BLOCKTIME=30

*NODE

tmax1 TMAXDIR="/tmax/tmax",

APPDIR ="/tmax/tmax/appbin",

PATHDIR = "/tmax/tmax/path",

TLOGDIR = "/tmax/tmax/log/tlog",

ULOGDIR = "/tmax/tmax/log/ulog",

SLOGDIR = "/tmax/tmax/log/slog"

tmax2 TMAXDIR="/tmax/tmax",

APPDIR ="/tmax/tmax/appbin",

PATHDIR = "/tmax/tmax/path",

TLOGDIR = "/tmax/tmax/log/tlog",

ULOGDIR = "/tmax/tmax/log/ulog",

SLOGDIR = "/tmax/tmax/log/slog"

140 Tmax Administration Guide

Page 157: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

*SVRGROUP

SVGtmax1 NODENAME = tmax2, DBNAME = ORACLE,

COUSIN="SVGtmax1",

OPENINFO = "Oracle_XA+Acc=P/scott/tiger + SesTm = 60+DbgFl=0x01",

TMSNAME = svg1_tms, MINTMS=2, MAXTMS=5

SVGtmax2 NODENAME = tmax1, DBNAME = ORACLE,

OPENINFO = "Oracle_XA+Acc=P/scott/tiger + SesTm = 60+DbgFl=0x01",

TMSNAME = svg1_tms, MINTMS=2, MAXTMS=5

SVGtmax2NX NODENAME=tmax1

SVGRQ1 NODENAME=tmax1,

SVGTYPE=RQMGR, CPC=8,

COUSIN="SVGRQ1", LOAD=-1

*RQ

rq1 SVGNAME=SVGRQ, BOOT=COLD, FILEPATH="/tmp/rq1"

QSIZE=24, FSYNC=Y, BUFFERING=N

*SERVER

svr1 SVGNAME = SVGtmax1, MIN=1, MAX=5

svr2 SVGNAME = SVGtmax2, MIN=1, MAX=5

svr3 SVGNAME = SVGtmax2NX, MIN=1, MAX=5

*SERVICE

svc1 SVRNAME = svr1, ROUTING=rout1

svc2 SVRNAME = svr2

svc3 SVRNAME = svr3

svc4 SVRNAME = GW2

#Gateway is directly defined on the server name.

*GATEWAY

GW1 GWTYPE = TMAX, PORTNO=5001,NODENAME = "tmax1",

RGWADDR = "GW1_MAIN", RGWPORTNO=5001

GW2 GWTYPE = TMAX, PORTNO=5002,NODENAME = "tmax2",

RGWADDR = "GW2_MAIN", RGWPORTNO=5001

GW3 GWTYPE = TMAX, PORTNO=5003,NODENAME = "tmax2",

RGWADDR = "GW3_MAIN", RGWPORTNO=5001

*ROUTING

rout FIELD = FIELD/PLACE_CD,

RANGES = "'00000':SVGtmax1, 'A0001'-'A0006':GW2,

'A0007'-'A4000':GW3"

제3장 환경파일 설정 141

Page 158: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

3.10. Tmax 환경파일 컴파일보통 하나의 프로그램을 만드는 과정은 여러 단계를 거친다. 먼저 소스 프로그램을 작성하고 컴파일하여

에러를 수정한 후에 올바른 실행파일을 만들게 된다.

Tmax 환경파일도 실제 프로그램 작성 방법과 동일하다. Tmax 환경파일을 컴파일함으로써 에러 없는 올

바른 Tmax 환경파일을 만들 수 있게 된다.

Tmax 시스템은 기동될 때, Tmax 환경파일을 토대로 환경을 설정하기 때문에, 에러가 존재하는 환경파일

이라면 Tmax 시스템이 동작될 때 예상치 못한 오류가 생길 수 있다. Tmax 시스템은 올바른 환경파일 없

이는 기동될 수 없다. 따라서 Tmax 환경파일의 컴파일 작업을 통해 Tmax가 정상적으로 동작할 수 있도록

올바른 Tmax 환경파일을 만들어 주어야 한다.

컴파일 작업은 cfl 명령에 의해 이루어진다.

cfl -i Tmax 환경파일 이름 [ -o 이진 Tmax 환경파일 이름]

[-h] [-n node name] [-v num][-V]

설명옵션

환경파일 이름으로 컴파일 대상이 되는 환경파일 이름을 지정한다.-i Tmax 환경파일 이름

이진 환경파일 이름이다. 컴파일을 통해 만들어질 이진(binary) 환경파

일 이름을 지정한다. 기본 파일의 이름은 <tmconfig>이다.

[-o 이진 Tmax 환경파일 이름]

여러 노드로 Tmax 시스템이 구축되어있는 경우, 특정 노드에서 중앙 관

리를 하고자 하는 경우에는 각 노드에 racd(remote access control dae

mon)가 미리 기동되어 있어야 한다. racd는 환경파일 컴파일, Tmax 시

스템 부팅, Tmax 시스템 다운, 동적환경 변경 등을 특정 노드에서 한 번

의 명령어로 가능하게 한다. 특정 노드에서 환경파일 컴파일 작업을 수

행하게 되면 모든 노드에 전달되며 모든 노드에 이진 Tmax 환경파일이

전달된다. 이진 Tmax 환경파일은 Tmax 시스템 기동과 종료, 서비스 테

이블 생성 등에 참조되며 하나의 환경파일로 모든 노드가 관리된다. 따

라서 환경파일의 변경 작업에는 상당한 주의가 요구된다.

도움말을 조회한다.[-h]

노드 이름으로 멀티 노드 환경에서 특정 노드의 환경파일만을 컴파일하

고 싶은 경우에 사용하는 옵션이다.

[-n node name]

버전 정보를 조회한다. 0 또는 1을 사용할 수 있다.[-v num]

- 0 : 멀티 노드를 구성하고 있는 노드가 모두 같은 종류이며(예를 들어

모두 SUN os2.6) 관리자가 각각의 노드별로 환경파일을 관리하고자 하

는 경우로 컴파일한 이진 환경파일을 각각의 노드로 복사하여 시스템을

운영할 수 있다.

142 Tmax Administration Guide

Page 159: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

- 1 : 지정된 경우에는 racd를 통해서 환경파일이 각각의 머신에서 자동

적으로 컴파일된다. (기본값 : 1 )

실행파일의 버전을 확인할 수 있다.[-V]

3.11. 서비스 테이블 생성Tmax 시스템에서는 환경파일의 SERVICE 절에 등록된 서비스만 처리가 가능하다. 그러나 하나의 서버

프로세스가 여러 개의 서비스를 제공하는 것이 가능하므로 사용자는 서버 프로세스에서 제공하는 서비스

의 종류를 Tmax 시스템에 제공하여야 한다. 이를 위해 환경파일로부터 서비스 테이블을 생성하는 과정이

필요하며 이는 서버 프로그램의 컴파일 과정에서 반드시 함께 컴파일되어야 한다.

서비스 테이블이란, 서버마다 제공되는 서비스 이름이 나열되어 있는 파일로 Tmax 환경파일에 등록된 서

버와 서비스를 참조하여 생성된다. 서버 프로그램을 만들 때, 서비스 테이블을 함께 컴파일하지 않으면 서

비스 요청이 서버에 넘겨지더라도, 서버 내에서 서비스 루틴의 위치를 알 수 없다.

서비스 테이블은 이진 환경설정 파일을 참조하여 gst 명령어를 이용해 작성된다.

gst [ -f 이진 Tmax 환경파일 이름 ] {-n node name} [-h] {-V}

설명옵션

이진 환경파일 이름이다. 컴파일된 이진 환경파일 이름을 지정한다. 지

정되지 않으면 기본 파일의 이름은 <tmconfig>이다.

[ -f 이진 Tmax 환경파일 이름

]

gst 명령은 컴파일된 이진 환경파일을 참조하여 Tmax 디렉터리 하위에

svct 디렉터리에 각 서버 프로그램의 서비스 테이블을 생성한다. 따라

서, gst 명령을 실행하기에 앞서 먼저 svct 디렉터리 존재 여부를 확인해

야 한다. 다른 파일이름을 정의하지 않으면 tmconfig 파일을 참조한다.

명령 실행 후, svct 디렉터리에 서버별로 "서버이름_svctab.c"의 서비스

테이블이 생성되었는지 확인해 본다.

노드 이름으로 타 노드 서버 프로세스의 서비스 테이블을 현재 노드의

"$TMAXDIR/svct" 디렉터리에 생성되도록 한다.

{-n node name}

도움말을 조회한다.[-h]

실행파일의 버전을 확인할 수 있다.{-V}

제3장 환경파일 설정 143

Page 160: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와
Page 161: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

제4장 기동 및 종료

Tmax를 실행하기 위한 환경이 갖춰졌으며, 관리자는 Tmax 시스템을 기동(boot)할 수 있다. Tmax 시스템

이 기동되면 시스템 소프트웨어의 특성상 아주 치명적인 원인(하드웨어 장애, 운영체제상의 오류 등 외부

적인 요인) 이외에는 다운되지 않는다. 그러나 관리 측면에 있어서는 환경파일의 재작성, 외부요소에 의한

시스템 다운 등의 이유로 시스템을 종료시키고 재기동해야 할 필요가 있다.

일반적으로 Tmax 시스템은 여러 노드로 구성되며 이에 대한 중앙관리가 필요하다. 중앙관리를 위해서

Tmax 시스템에서는 racd(remote access control daemon)를 사용한다. 즉, 각 노드에 racd를 미리 설치해

서 한 노드에서 전체 Tmax 시스템을 관리할 수 있다. 즉, 환경파일 컴파일, Tmax 시스템 기동 및 종료, 동

적 환경파일 변경 등의 동작을 한 번의 명령으로 가능하게 한다. 이 장에서는 이와 같은 다양한 환경에서

Tmax 시스템의 기동 (tmboot)과 종료(tmdown) 방법에 대하여 설명한다.

4.1. Tmax 기동(tmboot)Tmax 시스템을 기동하기 위해서는 기본 환경설정이 잘 갖추어져 있어야 한다.

다음 사항들을 다시 한번 점검해 본다.

● 이진 Tmax 환경파일이 존재하는가?

● 환경파일의 TMAXDIR 항목(NODE 절)에 설정된 디렉터리에 Tmax 실행 프로그램들(TMM, CLL, CLH,

TMS 등)이 존재하는가?

● 환경파일의 APPDIR 항목(NODE 절)에 설정된 디렉터리에 SERVER 절에 등록된 서버 프로그램들이

존재하는가?

● 중앙 관리를 위한 racd가 각 노드에서 동작 중인가?

위 사항들이 모두 점검되었으면 Tmax 시스템의 기동 준비가 끝난 것이다. 환경변수에 TMAX_RAC_PORT

가 정의되어 있어야 racd가 기동된다. Tmax 시스템이 중앙관리에 사용된 racd의 포트 번호를 정의하고

"racd –k"를 사용해 기동하면 Tmax 환경파일에서의 환경변수를 참조하지 않고 시스템을 기동할 수 있다.

4.1.1. racd

멀티 노드로 분산된 환경에서 중앙 집중 관리하기 위한 명령어이다. racd는 여러 노드를 하나의 도메인으

로 Tmax 시스템을 구축한 경우 한 노드에서 Tmax 시스템을 집중 관리하기 위해, 각각의 노드에서 미리

기동되는 하나의 데몬 프로세스라 할 수 있다. 단, Tmax 시스템을 관리하는 노드에서는 racd를 실행하지

않아도 된다.

제4장 기동 및 종료 145

Page 162: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

racd는 도메인 내의 한 노드에서 tmadmin을 통하여 전체 노드를 관리하거나, 또는 cfl로 환경파일을 도메

인 내의 모든 노드에 동일한 내용으로 적용 가능하도록 처리한다.

참조할 이진 Tmax 환경파일 이름을 설정한다. cfl의 결과물로 tmboot와 tmdown에서도 참조되는 파일이

다. 경로와 함께 지정될 수 있으며, 이 옵션이 생략되면 기본적으로 TMAXDIR로 지정된 디렉터리 하위의

config 디렉터리에서 <tmconfig>를 참고한다.

이진 Tmax 환경파일의 참조 여부를 설정한다. 옵션을 지정하면 이진 Tmax 환경파일을 참조하지 않는다.

보통 racd는 이 옵션을 이용하여 실행한다. (passive listen mode)

● 사용방법

$ racd [-d | -f 이진 Tmax 환경파일 이름| -h | -k | -i filename| -l | -V]

설명항목

debug 모드로 racd를 수행하고자 할 때 설정한다.[ -d ]

참조할 이진 Tmax 환경파일 이름을 설정한다. cfl의 결과물로 tmboot와 tm

down에서도 참조되는 파일이다. 경로와 함께 지정될 수 있으며, 이 옵션이

[ -f 이진 Tmax 환경파일

이름]

생략되면 기본적으로 TMAXDIR로 지정된 디렉터리 하위의 config 디렉터리

에서 tmconfig를 참고한다.

명령어 도움말 옵션이다[ -h ]

이진 Tmax 환경파일의 참조 여부를 설정한다. 옵션을 지정하면 이진 Tmax

환경파일을 참조하지 않는다. 보통 racd는 이 옵션을 이용하여 실행한다.

(passive listen mode)

[ -k ]

하나의 물리적 머신에서 여러 논리적 노드를 정의할 때 사용한다.[-i filename]

논리 노드의 NODETYPE이 SHM_RACD일 경우, 각 논리 노드당 하나씩의

racd를 띄워야 하며 RACPORT는 모두 달라야 한다. racd를 띄우기 전에 환

경 변수의 TMAX_RAC_PORT 변수를 설정해 주어야 하는데, 논리 노드의 수

가 많을 경우 이를 일일이 다 바꾸어 줄 수 없으므로 TMAXHOME, TMAXDIR,

TMAX_RAC_PORT가 정의된 파일의 이름을 지정해 줄 수 있다. 자세한 내용

은 예제를 참고한다.

Label은 파일 내에 등록된 환경 정보의 구분자이다. 2개 이상의 시스템 정보

를 하나의 파일에 등록 할 경우에 각각의 시스템을 구별할 수 있는 값이다.

[-l Label]

실행 파일의 버전을 확인할 수 있다.[ -V ]

● 적용환경

Tmax가 설치된 운영 시스템 환경에서 사용할 수 있다.

146 Tmax Administration Guide

Page 163: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● 예제

<tmax.racd>

[tmaxs1]

TMAXHOME=/user2/starbj81/tmax32

TMAXDIR=/user2/starbj81/tmax32

TMAX_RAC_PORT=3333

[NODE1]

TMAXHOME=/user2/starbj81/tmax32

TMAXDIR=/user2/starbj81/proj1

TMAX_RAC_PORT=4335

[NODE2]

TMAXHOME=/user2/starbj81/tmax32

TMAXDIR=/user2/starbj81/proj2

TMAX_RAC_PORT=4337

다음은 NODE1의 RACD를 띄우는 예제이다.

$racd -k -i tmax.racd -l NODE1

다음은 환경파일을 참조하지 않고 다른 명령어(tmboot)에서 사용한 정보만 이용하는 예제이다.

$ racd -k

4.1.2. tmboot

Tmax 시스템의 전체나 또는 일부분을 실행시키는 명령어로 Tmax 환경파일을 바탕으로 시스템을 실행한

다.

tmboot가 옵션 없이 실행되거나 [-f] 옵션만이 사용되면, 모든 Tmax 관리 프로세스들과 Tmax 환경파일의

SERVER 절에 등록된 모든 서버 프로세스들을 실행시킨다.

NODE 절에 등록된 모든 노드에서 Tmax 관리 프로세스인 TMM, CLL, CLH 프로세스가 순서대로 실행된

다.

SVRGROUP 절에 OPENINFO 항목이 등록된 서버 그룹이 존재한다면, 각 서버 그룹별로 TMSNANE과

MINTMS 항목을 참조하여 TMS 프로세스들이 실행된다. Tmax 관리 프로세스들은 노드별로 정의된

TMAXDIR 디렉터리 하위의 bin 디렉터리에서 실행된다.

Tmax 관리 프로세스들이 생성된 후에는 SERVER 절의 모든 응용 서버 프로세스들이 실행된다. 응용 서

버 프로세스들은 SERVER 절에 등록된 순서대로 실행된다. tmboot는 실행된 서버 프로세스의 초기화를

실행한 후에 다음 서버 프로세스를 실행시킨다. 프로세스 초기화는 tpsvrinit()를 이용해서 진행한다.

모든 서버 프로세스들이 모두 초기화를 끝마칠 때까지 다음 프로세스가 실행되지 않는다. tmboot는 각 응

용 서버 프로세스들을 그들의 MIN 항목에 정의된 개수만큼 실행시킨다. MIN 항목이 정의되지 않은 경우

기본은 1개이다.

제4장 기동 및 종료 147

Page 164: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

tmboot는 SERVER 절의 서버들에 대하여 CLOPT, MIN, MAX 항목 값을 사용한다. 서버 프로세스가 실행

될 때 tmboot에 의해 사용되는 서버의 boot 파라미터이며, 서버의 나머지 항목들은 서버가 실행된 후 시스

템에 의해 실행되는 runtime 파라미터이다. 설정 정보는 source config 파일의 SERVER 절을 참고한다.

모든 응용 서버 프로세스들은 동작하는 노드에 정의된 APPDIR 디렉터리에서 실행된다.

● 사용방법

$ tmboot [-A] [-b] [-c] [-f 이진 Tmax 환경파일 이름] [-g servergroup_name]

[-h] {-V} [-n node_name] [-q RQ svg_name] [-s server_name]

[-S server_name] [-t TMS 이름] [-B TRB node] [-T] [-w] [-d boot_time]

[-D] [-r] [-e clh | cas | tlm ] [-k] [-B] [-R]

설명항목

Tmax 환경파일의 SERVER 절에 정의된 모든 응용 서버 프로세스를 실행하

는 옵션이다.

[ -A ]

백업으로 지정된 서버 프로세스를 임의로 기동시키고자 할 때 사용하는 옵션

이다.

[ -b ]

CLH 프로세스를 하나 더 실행시키는 옵션이다. 현재 동작 중인 CLH 프로세

스 개수가 Tmax 환경파일에 정의된 MAXCLH 값을 넘지 않는 범위내에서만

사용 가능하다.

[ -c ]

참조할 이진 Tmax 환경파일(source config 파일을 cfl로 컴파일한 결과물)을

경로와 함께 지정하여야 한다. [-f] 옵션이 생략될 경우, 기본으로 TMAXDIR

디렉터리 하위의 config 디렉터리에서 tmconfig 파일을 참고한다.

[ -f 이진 Tmax환경파일

이름 ]

지정된 서버 그룹에 존재하는 서버 프로세스를 실행하는 옵션이다. 사용되는

서버 그룹명은 Tmax 환경파일내의 SVRGROUP 절에 등록한다.

[ -g서버 그룹 이름 ]

명령어 도움말 옵션이다.[ -h ]

지정된 노드에 존재하는 서버 프로세스들을 실행시키는 옵션이다. 노드명은

Tmax 환경파일내의 NODE절에 미리 등록되어 있어야 한다.

[ -n노드 이름 ]

CLOPT string을 추가하기 위한 옵션이다.[ -o clopt_string ]

RQS를 시동시키기 위한 옵션이다.[ -q RQ svg_name ]

지정된 서버 프로세스만을 실행시키는 옵션이다. 사용되는 서버 프로세스 이

름은 Tmax 환경파일 내의 SVRGROUP절에 미리 정의되어 있어야만 한다.

[ -s서버 이름 [-k count]]

– [-k] 옵션을 함께 사용하여 서버 프로세스 개수를 지정할 수 있다. 서버 프

로세스 개수는 현재 실행되어 있는 개수를 포함하여 SERVER 절의 MAX

항목에 정의된 개수를 넘어서는 안된다.

– [-k] 옵션을 생략하면 해당 서버 프로세스는 하나만 실행된다.

지정된 서버 프로세스를 MIN 개수만큼 실행시키는 옵션이다.[ -S서버 이름]

148 Tmax Administration Guide

Page 165: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명항목

지정된 TMS 프로세스를 하나 더 실행시키기 위한 옵션이다. Tmax 환경파일

에 정의된 MAXTMS 값을 넘지 않을 경우에만 가능하다.

[ -t TMS 이름 ]

Tmax 시스템 프로세스(tmm, cll, clh, tms) 만을 실행시키기 위한 옵션이다.[ -T ]

옵션이 없는 경우에는 등록된 서버 프로세스를 동시에 기동시킨다. 이 경우

운영체제에 따라 동시에 리소스를 만들어내지 못해 서버 프로세스가 올바르

[ -w ]

게 기동되지 못하는 경우가 발생한다. 이러한 문제를 해결하기 위해 프로세

스를 하나씩 기동시켜 올바르게 기동시키는 옵션이다.

– 서버 프로세스들이 TMM에 접속 시 LOCK 사용 조건 (LOCK | NOLOCK)

– 서버 프로세스 기동될 때 WAIT 조건 (NO-WAIT | FINITE-WAIT) –w 옵션

• "-d -1000000 (1sec)"와 동일한 효과를 가진다.

• [-d] 옵션이 없는 경우에만 의미가 있다.

• [–d] 옵션이 사용되면 [–w] 옵션은 무시된다.

한번에 많은 서버 프로세스를 기동시킬 때 CLH로의 등록요구가 폭주하여 생

기는 문제를 해결하기 위하여 서버 프로세스들이 기동하는데 걸리는 총 시간

[ -d 부트시간 ]

을 지정하여 등록 간격을 조절할 수 있다. usec 단위로 지정한다. (기본값은

LOCK, NO-WAIT)

– 서버 프로세스들이 TMM 에 접속 시 LOCK 사용 조건 (LOCK | NOLOCK)

– 서버 프로세스 기동될 때 WAIT 조건 (NO-WAIT | FINITE-WAIT) –d 옵션

• -d val < 0 : LOCK, |VAL| FINITE-WAIT *

• -d val = 0 : NO-LOCK, NO-WAIT

• -d val > 0 : NO-LOCK, |VAL| FINITE-WAIT

• 기본적으로 –d 옵션의 val 이 0 이 아닌 경우, 절대값(|VAL|) 을 사용하며

단위는 usec 이다.

– FINITE-WAIT 시 |VAL| 값은 각 프로세스마다 최대의 WAIT시간이다. (전

체 프로세스의 총 WAIT 시간이 아님)

– 서버 프로세스가 signal 을 줄 경우 WAIT 은 해제된다. 즉 |VAL| 시간이 되

지 않더라도 signal을 받으면 다음 프로세스의 기동을 시도한다. VAL 이 음

제4장 기동 및 종료 149

Page 166: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명항목

수인 경우, LOCK 을 사용한다. 이 옵션이 사용되었을 경우, [-w] 옵션은 무

시된다.

[-d] 옵션과 거의 유사하지만 finite-wait될 때 signal이 오더라도 |VAL| 까지는

무조건 WAIT 하게 된다

[ -D]

리모트 셸(rsh 또는 remsh)을 사용하여 리모트 노드의 Tmax 시스템을 부팅

시키는 경우 [-r] 옵션을 사용한다.

[ -r ]

Tmax 엔진 프로세스 중 CLH와 CAS를 부팅 하기 위한 옵션으로 tmboot 할

경우에 문제가 발생했거나, kill로 인하여 잘못하여 엔진 프로세스가 죽은 경

우에 사용할 수 있도록 한다. tmdown에서는 이 옵션을 제공하지 않는다.

[ -e clh | cas ]

– clh : CLH를 부팅한다.

– cas : CAS를 부팅한다.

트랜잭션 Recovery 기능을 사용하고자 할 경우 필요한 옵션이다. 그룹 전체

를 내렸다 올릴 경우 Recovery가 수행되기 때문에 Recovery는 TMS 그룹 단

[ -k all ]

위로 가능하다. 특정 이름을 가진 TMS 전체를 기동/종료 할 경우 이 옵션을

사용할 수 있다.

실행 파일의 버전을 확인할 수 있다.[ -V ]

TRB 노드를 기동 시키는 명령어이다. 자세한 사항은 Tmax 안내서 중 "Tmax

Administration Guide"의 "트랜잭션 복구 백업 노드"를 참고한다.

[-B]

● 적용환경

Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

● 예제

다음은 TMAXDIR 디렉터리 하위의 config 디렉터리에 있는 ‘tmconfig’ 파일을 참조하여 Tmax 프로세스

와 응용 서버 프로세스들을 모두 실행하는 예제이다.

$ tmboot

다음은 tms_name 으로 이름 지어진 모든 tms가 기동되는 예제이다.

$ tmboot -t tms_name -k all

150 Tmax Administration Guide

Page 167: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

다음은 서버 그룹을 설정 옵션을 사용한 예제이다. 서로 다른 서버 그룹에서 tms_name을 동일하게 사

용하는 경우 위와 같이 [–g] 옵션으로 해당 TMS가 속해있는 서버 그룹 이름을 지정해 준다. 그렇지 않으

면, 해당 TMS 이름을 가진 제일 첫 번째 서버 그룹의 TMS가 기동된다

$ tmboot -t tms_name -k all -g svgname

다음은 ‘tmconfig2’ 환경파일을 참조하여 Tmax 시스템 프로세스만을 실행하는 예제이다.

$ tmboot -T -f tmconfig2

다음은 ‘tmconfig’ 환경파일을 참조하여 SERVER 절에 정의된 모든 응용 서버 프로세스들을 실행하는

예제이다.

$ tmboot -A

다음은 ‘/user1/tmax/con’디렉터리의 ‘exconfig’ 환경파일을 참조하여, NODE 절에 등록된 ‘cosmo’ 노드

에 존재하는 응용 서버 프로세스들을 실행하는 예제이다.

$ tmboot -n cosmo -f /user1/tmax/con/exconfig

다음은 ‘tmconfig2’ 환경파일을 참조하여 svr1프로세스를 5개 실행하는 예제이다.

$ tmboot -s svr1 -k 5 -f tmconfig2

4.2. Tmax 종료(tmdown)Tmax 시스템 종료는 이진 Tmax 환경파일을 기반으로 이루어진다. 시스템에서 사용하던 공유 메모리를

없애고, 기동된 Tmax 프로세스(TMM, TMS, CLL, CLH, RQS)와 응용 서버 프로세스를 종료한다.

4.2.1. tmdown

Tmax 시스템 전체나 또는 일부분을 종료시키는 명령어이다.

tmdown은 Tmax 환경파일을 바탕으로 하여 Tmax 시스템을 종료시키기 때문에, 기본적으로 [-f] 옵션을

사용하여 참조할 이진 Tmax 환경파일(source config 파일을 cfl로 컴파일한 결과물(cfl 참조)을 경로와 함

께 지정하여야 한다. [-f] 옵션이 생략될 경우, 기본값으로 TMAXDIR 디렉터리 하위의 config 디렉터리에

있는 tmconfig파일을 참고한다.

[-f] 이외의 옵션이 사용되지 않는다면, tmdown은 Tmax의 모든 관리 프로세스와 Tmax 환경파일의

SERVER 절에 등록된 모든 서버 프로세스를 종료시키고 Tmax 시스템과 관련된 IPC 자원들을 제거한다.

제4장 기동 및 종료 151

Page 168: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

종료 순서는 SERVER 절에 등록된 응용 서버 프로세스들이 종료되고 서버 그룹별로 TMS 프로세스가 동

작 중이라면 TMS 프로세스가 종료된다. 이후, Tmax 시스템 관리 프로세스들이 종료된다.

프로세스 종료는 CLH, CLL, TMM 순서로 진행된다. 이 순서가 일반적인 시스템 관리 프로세스 종료 순이

나, CLH의 MIN값이 1이 아닌 경우에는 CLL이 CLH보다 먼저 종료 될 수도 있다.

백업으로 기동된 서버에 동적으로 등록된 서비스가 있을 경우, 이 서버가 모두 다운되어 동적으로 등록된

서비스가 공유 메모리에서 사라지게 되면 장애 복구 후 즉, 백업 서버들이 모두 종료되고 정상 노드의 서

버들이 재 기동되어 있는 상황에서 백업 노드로 접속한 클라이언트에 대해서 naming 서비스를 제공할 수

없게 된다. 따라서 백업 서버의 동적 서비스는 해당 서버가 모두 종료된 후에도 공유 메모리에서 삭제되지

않는다.

● 사용방법

$ tmdown [-A] [-f이진 Tmax 환경파일 이름] [-g서버 그룹 이름] [-h] {-V} [-i]

[-n노드 이름] [-p서버 번호] [-q RQ svg_name] [-s서버 이름] [-S서버 이름]

[-t TMS 이름] [-w wait_time] [-k all]

설명항목

모든 응용 서버 프로세스들을 종료 시킨다.[ -A ]

시스템이 종료될 때 참조할 이진 Tmax 환경파일을 이름을 지정하는 항목으

로 파일명을 지정하지 않으면 기본값으로 TMAXDIR 디렉터리 하위의 config

디렉터리에 있는 <tmconfig> 파일을 참고한다.

[ -f 이진 Tmax 환경파일

이름 ]

지정된 서버 그룹에 속한 서버 프로세스들을 종료한다.[ -g서버 그룹 이름 ]

명령어 도움말 옵션이다.[ -h ]

tmdown 명령을 즉시 수행한다.[ -i ]

기본적으로 tmdown 명령은 해당 업무를 모두 종료하고 수행되지만 [-i] (im

mediately) 옵션에 의한 종료는 현재 수행 중인 업무를 무조건 중단하기 때문

에 신중하게 사용해야 한다.

지정된 노드에 존재하는 모든 서버 프로세스들을 종료시킨다. 노드명은 Tmax

환경파일의 NODE절에 등록되어 있어야 한다.

[ -n노드 이름 ]

지정된 서버 프로세스를 종료시킨다. [-s] 옵션에 의한 종료와 달리 tmadmin

에서 “st -p” 명령으로 확인할 수 있는 프로세스 번호(spr_no)를 사용하여 특

정 프로세스를 종료시킨다.

[ -p서버 번호 ]

RQS를 종료한다.[ -q RQ svg_name ]

지정된 서버 프로세스 하나만 종료시킨다.[ -s서버 이름 [-k count]]

사용되는 서버 프로세스 이름은 Tmax 환경파일 내의 SERVER 절에 미리 등

록되어 있어야 한다.

지정된 서버 프로세스들을 모두 종료시킨다. 하나 이상의 프로세스가 지정되

어 있다면 그것들을 모두 종료시킨다.

[ -S서버 이름]

152 Tmax Administration Guide

Page 169: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명항목

지정된 TMS 프로세스를 하나만 종료시킨다.[ -t TMS 이름 ]

wait_time에 지정된 시간이 지나면 tmdown을 수행한다.[ -w대기 시간]

트랜잭션 Recovery 기능을 사용하고자 할 경우 필요한 옵션이다. 그룹 전체

를 내렸다 올릴 경우 Recovery가 수행되기 때문에 Recovery는 TMS 그룹 단

[ -k all ]

위로 가능하다. 특정 이름을 가진 TMS 전체를 기동/종료 할 경우 이 옵션을

사용할 수 있다.

실행 파일의 버전을 확인할 수 있다.[ -V ]

TRB 노드를 기동 시키는 명령어이다. 자세한 사항은 Tmax 안내서 중에 "Tmax

Administration Guide" 에 "트랜잭션 복구 백업 노드"를 참고한다.

[-B]

클라이언트 요청 메시지의 유실을 막기 위한 옵션. 해당 옵션으로 Tmax 시스

템을 종료하는 경우, CLL 은 클라이언트로부터의 Listen Port 를 막으며, 이

미 처리되고 있는 요청에 대해서만 응답을 준 후 종료한다

[-R]

● 예제

다음은 TMAXDIR 디렉터리 하위의 config 디렉터리에 있는 <tmconfig>파일을 참조하여 전체 Tmax 시

스템을 종료하는 예제이다. Tmax 관리 프로세스와 응용 서버 프로세스들을 모두 종료한다.

$ tmdown

다음은 tms_name으로 이름 지어진 모든 TMS가 종료되는 예제이다.

$ tmdown -t tms_name -k all

다음은 서버 그룹을 설정 옵션을 사용한 예제이다. 서로 다른 서버 그룹에서 tms_name을 동일하게 사

용하는 경우 위와 같이 [-g] 옵션으로 해당 TMS가 속해있는 서버 그룹 이름을 지정해 준다. 그렇지 않으

면, 해당 TMS 이름을 가진 제일 첫 번째 서버 그룹의 TMS가 종료된다.

$ tmdown -t tms_name -k all -g svgname

다음은 <tmconfig2> 환경파일을 참조하여 전체 Tmax 시스템을 종료하는 예제이다.

$ tmdown -f tmconfig2

다음은 <tmconfig> 환경파일을 참조하여 svr1이라는 응용 서버 프로세스를 모두 종료하는 예제이다.

$ tmdown -S svr1

제4장 기동 및 종료 153

Page 170: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

다음은 <tmconfig> 환경파일을 참조하여 svr1이라는 응용 서버 프로세스를 강제로 모두 종료하는 예제

이다. svr1중 특정 서버 프로세스의 서비스가 종료되지 않는 경우 [-i] 옵션을 사용하여 강제로 종료한다.

$ tmdown -S svr1 -i

다음은 <tmconfig> 환경파일을 참조하여 <spr_no> 인 서버 프로세스만 강제로 종료하는 예제이다. 해

당 서버의 서버 프로세스가 복수개일 때, 특정 서버가 looping인 경우 해당 프로세스만 강제로 종료한다.

$ tmdown -k <spr_no> -i

다음은 /user1/tmax/con 디렉터리의 <exconfig> 환경파일을 참조하여, NODE 절에 등록된 ‘cosmo’ 노

드에 존재하는 응용 서버 프로세스를 종료하는 예제이다.

$ tmdown -n cosmo -f /user1/tmax/con/exconfig

다음은 <tmconfig2> 환경파일을 참조하여 동작 중인 svr1프로세스 하나만 종료하는 예제이다.

$ tmdown -s svr1 -f tmconfig2

Rolling Down [tmdown -R]클라이언트의 요청을 처리하고 있던 Tmax 시스템이 다운될 경우, 기존 버전에서는 현재 처리 중인 요청

에 대해서만 응답을 처리하여 전달한 후, 큐에 쌓여 있는 요청에 대하여 TPECLOSE 에러를 전달하였다.

하지만 5.0 에서는 Tmax 엔진을 다운시키기 이전에 요청된 모든 클라이언트에 대하여 정상적으로 응답을

주도록 되어 있다.

NODEA 와 NODEB 가 멀티 노드 (혹은 멀티 도메인)로 구성되어 있으며, 총 100 개의 클라이언트가 NODEA

에 접속되어 있다고 가정할 경우의 처리 과정은 아래와 같다.

● NODEA의 Tmax 시스템을 종료시킬 경우

tmdown –R –n NODEA

1. NODEA의 CLL은 클라이언트로부터의 listen port 를 막는다.

2. NODEA에서 기존에 처리되고 있던 요청에 대해서는 처리를 완료한 후 클라이언트에게 처리 결과를

전달한다.

3. 큐에 쌓여 있는 요청에 대해서는 TMAX_BACKUP_ADDR 로 설정된 NODEB 에 요청을 보낸다.

4. NODEA의 Tmax 시스템이 종료된다.

5. NODEB에서는 NODEA로부터 받은 요청을 처리한 후, 처음 해당 리퀘스트를 요청한 클라이언트에

게 처리 결과를 직접 전달한다.

154 Tmax Administration Guide

Page 171: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

6. NODEA에 접속되어 있는 모든 클라이언트는 정상 응답을 받는다.

● NODEB의 Tmax 시스템을 종료시킬 경우

tmdown –R –n NODEB

1. 100개의 클라이언트 요청을 NODEA의 CLH가 약 50:50으로 NODEA와 NODEB에 분배된다.

2. tmdown -R –n NODEB로 NODEB의 Tmax 시스템을 종료시킨다.

3. NODEB의 CLL은 클라이언트부터 listen port 를 막는다.

4. NODEB에서 기존에 처리되고 있던 요청에 대해서는 처리를 완료한다.

5. 클라이언트는 NODEA에 접속되어 있는 상황이므로 해당 처리 결과를 NODEA의 CLH에게 전달,

NODEA의 CLH는 클라이언트에게 처리 결과를 전달한다.

6. NODEB의 큐에 쌓여 있는 요청에 대해서는 TMAX_BACKUP_ADDR로 설정된 NODEA 에 요청을 보

낸다.

7. NODEB의 Tmax 시스템이 종료된다.

8. NODEA에서는 NODEB로부터 받은 요청을 처리한 후, 처음 해당 리퀘스트를 요청한 클라이언트에

게 처리 결과를 전달한다.

9. NODEA에 접속되어 있는 모든 클라이언트는 정상 응답을 받는다. (100개의 클라이언트가 모두 정상

응답을 받아야 한다.

주의

NODEA의 요청을 NODEB가 처리하기 위해서는 NODEA에 접속한 클라이언트의 TMAX_BACK

UP_ADDR, TMAX_BACKUP_PORT 가 NODEB 로 설정되어 있어야 한다. 그렇지 않을 경우, NODEA

의 Tmax 시스템이 종료되는 순간, 아직 처리되지 않은 클라이언트 요청에 대하여 TPESYSTEM 에

러를 전달하게 된다.

● 적용환경

Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

제4장 기동 및 종료 155

Page 172: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와
Page 173: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

제5장 Tmax 관리 도구

Tmax 시스템이 동작하고 있다면, 현재 환경설정에 대한 정보를 확인해 보고 이를 동적으로 변경한다든지,

서버 프로그램에 서비스를 추가하는 등의 시스템에 대한 관리가 필요하다. 또한 제공되는 서비스 중 특정

서비스에 대하여 현재 처리 상태 즉, 몇 건의 서비스를 처리해 왔으며, 평균 처리 시간이 얼마나 되며, 몇

건의 요청이 대기하고 있는지, 그 서비스를 제공받기 위해서는 얼마나 기다려야 하는지 등의 정보를 확인

할 필요가 있다. 이 정보에 따라 서버 프로세스를 더 기동시켜 준다든지 아니면 종료시키는 등의 조치도

필요하다.

Tmax 시스템은 tmadmin을 제공하여 command interpreter 형태의 명령어를 이용하여 동적 시스템 관리

를 할 수 있다.

5.1. tmadmintmadmin 프로그램은 UNIX 환경의 셸과 비슷한 command interpreter이다. 항상 프롬프트(prompt) 상태로

대기 중이다가 입력되는 명령어를 해석하여 이를 실행하게 된다. 여러 노드를 한 도메인으로 사용하는 경

우 tmadmin으로 전체에 대한 중앙 관리가 가능하며, 각각의 노드별로 로컬에서 관리가 가능하다.

다음은 tmadmin의 옵션에 대한 설명이다.

설명옵션

자신의 노드만 로컬로 관리를 한다.-l

racd를 통하여 여러 노드로 구성된 시스템이 중앙에서 집중 관리될 경우에,

로컬 노드만을 관리하기 위해서 사용하는 옵션이다. 각각의 노드들은 이 옵

션으로 자신의 시스템만을 관리할 수 있게 된다.

read-only 모드로 관리한다. (기본값)-s

읽기 전용 모드로 각각의 tmadmin 툴을 10개까지 띄울 수 있는 옵션이다. 이

옵션을 사용하면 환경을 동적으로 변경시킬 수 없다.

마스터 모드로 동적으로 환경을 변경할 수 있다. 한 명의 사용자만이 마스터

모드를 사용할 것을 권장한다. 1명 이상의 사용자가 환경 변경을 할 경우 심

-m

각한 시스템 문제가 발생할 수 있다. 환경파일은 변경하지 않고 정해진 매뉴

얼을 따른다.

옵션을 보여준다.-h

지정해준 이진 파일을 관리한다.-f [Config File]

환경파일을 기본값인 tmconfig가 아닌 다른 이름으로 이진 파일을 생성한 경

우 tmadmin 기동될 때 이진 파일 이름을 지정한다.

제5장 Tmax 관리 도구 157

Page 174: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

특정 노드에 대한 모니터링이 가능하도록 한다. 즉, 멀티 노드 환경에서

tmadmin을 구동시키는 경우, -n <nodename>을 설정하면 지정된 노드에 대

한 정보만을 확인함으로써 보다 편리하게 시스템을 관리할 수 있다.

-n [Node Name]

Tmax의 버전을 확인한다. -v 옵션을 사용하면, Tmax 기동과 상관없이 어느

위치에서나 버전 확인이 가능하다.

-v

st –p, st –s, si, ci, cfg의 명령어가 수행될 때 결과가 화면 단위로 출력되도록

하는 옵션이다. (more 기능)

-p

인터프리터 형태의 시스템 관리

tmadmin 프로그램은 다음과 같이 실행한다.

$tmadmin

아래와 같은 메시지와 함께 프롬프트(prompt)가 나타난다. 이것은 tmadmin 프로그램이 실행 상태임을 나

타낸다.

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmax1 (tmadm):

tmadmin에서 사용 가능한 명령어들은 다음의 표와 같다.

● 환경정보 조회

설명명령어

Tmax 시스템 정보를 확인한다.tmaxinfo(ti)

접속 클라이언트를 확인한다.cliinfo(ci)

서버 정보를 확인한다.svrinfo(si)

트랜잭션 처리 정보를 확인한다.txquery(txq)

RQ의 상태를 보여주거나 디스크 큐에 쌓여있는 서비스를 처리한다.rqstat (rqs)

이전에 저장된 명령어를 조회한다.history(hist)

환경설정 내용을 조회한다.config(cfg)

● 동작상태 정보 조회

설명명령어

프로세스 및 서비스 상태의 통계를 낸다.stat(st)

Tmax GW의 정보를 확인한다.txgwinfo (txgwi)

TMAXNONTX GW의 정보를 확인한다.nontxgwinfo (ntxgwi)

158 Tmax Administration Guide

Page 175: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명명령어

GID를 이용하여 해당 서비스의 수행 상태를 조회한다.smtrc

멀티 노드 환경에서 CLH 사이 연결 상태 정보를 확인한다.clhsinfo

멀티 노드 환경에서 TMM 사이 연결 상태 정보를 확인한다.tmmsinfo

명령어를 반복한다.repeat(r)

● 운용 관리

설명명령어

동작 중인 서버 프로세스를 중지한다.suspend(sp)

중지된 서버 프로세스를 재개한다.resume(rs)

특정 서비스의 이름을 advertise/unadvertise한다.advertise, unadvertise

특정 서버 프로세스 혹은 모든 서버 프로세스의 통계정보를 초기화한다.restat

서버 프로그램을 교체한다.rebootsvr(rbs)

동적으로 서비스를 추가한다.cfgadd(ca)

현재 설정된 환경 설정값을 동적으로 변경한다.set

큐에 쌓인 업무를 삭제한다.qpurge(qp)

접속 중인 클라이언트 강제로 해제한다.discon(ds)

로깅을 시작한다.logstart(logs)

로깅을 종료한다.logend(loge)

Trace 관리를 한다.chtrc

TMM, CLH, 특정 서버의 로그 레벨을 런타임 도중 동적으로 변경한다.chlog

트랜잭션 처리 중에 장애가 발생하는 경우 commit/rollback을 재이슈하여 해

당 트랜잭션을 종료하는 기능이다.

txcommit/txrollback

● 기타

설명명령어

직전 명령어를 반복한다.!

tmadmin을 종료한다.quit(q)

사용가능한 옵션 리스트를 조회한다.help(h)

멀티 노드환경에서 특정 노드에 대한 정보만을 얻고자 하는 경우에 사용한

다.

nodeset(ns)

멀티 노드환경에서 특정 노드에 대한 정보만을 얻고자 설정한 것을 해제한

다.

nodeunset(nus)

제5장 Tmax 관리 도구 159

Page 176: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명명령어

가상의 클라이언트 애뮬레이터로서 서비스 프로그램의 유효성을 검토하는

경우 클라이언트 프로그램을 별도로 작성하지 않고 이 유틸리티를 이용한다.

tmd

st, si의 명령어에서 와일드카드(Wild card)를 사용할 수 있다.

tmadmin에서는 이러한 명령어를 통하여 Tmax 시스템을 기동 또는 종료시킬 수 있으며, 현재 동작 중인

시스템의 환경설정 내용을 조회 및 수정할 수 있다. 또한 각 서버 프로세스의 상태와 서비스의 처리 상태

등을 확인할 수 있다.

tmadmin을 끝내기 위해서는 'quit'이나 'q' 명령이 사용된다.

$$1 tmax1 (tmadm):quit

5.2. 환경정보

5.2.1. tmaxinfo(ti)

현재 접속된 Tmax 시스템의 환경정보를 알려 준다. 시스템 버전(version), 최대 사용자 수(maxuser) 등을

확인할 수 있다.

Tmax System Info: REAL version 3.8.5:

maxuser = UNLIMITED,

domaincount = 1,

nodecount = 1,

svgrpcount = 3,

svrcount = 14, svccount = 20

rout_groupcount = 0, rout_elemcount = 0

cousin_groupcount = 0, cousin_elemcount = 0

backup_groupcount = 0, backup_elemcount = 0

Tmax All Node Info: nodecount = 1:

----------------------------------------------------------------

no name portno racport shmkey shmsize minclh maxclh

----------------------------------------------------------------

0 tmaxs1 8844 3443 79970 19548 1 2

160 Tmax Administration Guide

Page 177: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

5.2.2. clientinfo(ci)

현재 접속된 클라이언트의 환경정보를 알려 준다. 현재 상태(status), 접속 IP 주소, 처리 건수(count)와 같

은 클라이언트의 제반 정보를 확인할 수 있다. –s 옵션으로 연결된 총 클라이언트의 개수를 파악할 수 있

다.

$$1 tmax1 (tmadm): ci

CLH 0:

----------------------------------------------------------------

cli_id status count lastin_time ipaddr usrname

----------------------------------------------------------------

0 RDY 0 20 61.77.153.1

1 RDY 2 10 61.77.153.1 tmax

2 RDY 4 123 61.77.153.1

----------------------------------------------------------------

Total Connected Clients = 1

----------------------------------------------------------------

클라이언트의 상태를 볼수 있는 ci 명령으로 나타나는 결과에서 status 열에 다음과 같은 상태 정보가 있

다.

설명옵션

클라이언트가 정상적으로 CLH에 접속되어 있는 상태이다.RDY

CLH와 연결을 맺고 있는 클라이언트 중 TCP/IP 소켓만 연결되어 있고 정상적으로 연

결 메시지(TPSTART 메시지)를 보내지 않은 상태이다.

NRDY

클라이언트의 서비스 요청이 서버 큐에 쌓여 있는 상태이다.QED

비정상적으로 연결된 클라이언트가 CLH에 무한정 연결되어 있을 경우 다른 클라이언트가 접속하지 못하

는 현상이 발생할 수 있다. CLH에서 소켓 연결 이후 60초 이내에 TPSTART 연결 메시지가 오지 않는 클

라이언트에 대해서는 자동으로 연결을 종료한다. 클라이언트 연결을 종료할 때 다음과 같은 에러가 발생

한다.

(I) CLH0209 internal error : disconnect client because client didn't send tpstart

msg for 60 sec.(192.168.1.43) [CLH0058]

5.2.3. svrinfo(si)

현재 동작 중인 각 서버의 정보를 알려 준다. 즉, 현재 상태(status), 처리 건수(count), 큐잉 건수(qcount),

큐에서 삭제된 건수(qpcount), 최대 큐잉 건수(maxqcount)를 초과하여 반환된 건수(emcount) 등을 확인

할 수 있다.

$$5 tmaxs1 (tmadm): si

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

clh svrname (svri) status count qcount qpcount emcount

제5장 Tmax 관리 도구 161

Page 178: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

0 scoresdl ( 0) NRDY 0 0 0 0

0 bank2 ( 1) RDY 0 0 0 0

0 svr1 ( 2) RDY 0 0 0 0

0 svr2 ( 2) RDY 0 0 0 0

0 svr3 ( 2) NRDY 0 0 0 0

0 api ( 2) RDY 0 0 0 0

0 syncrtn ( 2) RDY 0 0 0 0

0 ucs ( 2) NRDY 0 0 0 0

0 ucssvr ( 2) RDY 0 0 0 0

0 broad ( 2) NRDY 0 0 0 0

0 selins ( 2) NRDY 0 0 0 0

5.2.4. txquery (txq)

현재 처리 중인 트랜잭션 정보를 알려 준다. 현재 접속되어 처리 중인 클라이언트 식별 번호(cli_id)와 트랜

잭션 처리 시작 시간(txstime), 현재 트랜잭션 큐에 쌓여 있는 트랜잭션 큐잉 건수(txqcount), 트랜잭션 처

리 건수(txrcount), 트랜잭션 식별 번호(XID), 트랜잭션의 처리 상태(txstate TXBEGIN, TXCOMMIT,

TXROLLBACK), 통신 프로토콜 처리 상태(xastate) 등 다양한 정보를 확인할 수 있다.

$txquery(txq) [-x] [-g svgname] [-w [-r] [-G gwname]]

[<upper-global-xid><lower-global-xid>]

설명옵션

트랜잭션 브랜치별 상세 정보 출력한다.[ -x ]

svgname의 그룹에 대한 트랜잭션 브랜치를 조회한다.[ -g svgname ]

도메인 서브 트랜잭션 트리에 대해 조회한다.[ -w ]

리모트 도메인의 XID로 검색한다.[ -r ]

gwname의 도메인 게이트웨이에 대해 조회한다.[ -G gwname]

다음은 명령어 사용 예제이다.

$$14 tmax1 (tmadm): txq

CLH0:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

cli_id txstime txqcount txrcount XID txstate xastate

- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - -

c0023 8:33:34 1 0 000:000:00022 TXBEGIN TX_OK

c0024 18:33:34 1 0 000:000:00023 TXBEGIN TX_OK

c0025 18:33:34 1 0 000:000:00024 TXBEGIN TX_OK

c0026 18:33:34 1 0 000:000:00025 TXBEGIN TX_OK

c0027 18:33:34 1 0 000:000:00026 TXBEGIN TX_OK

c0028 18:33:34 1 0 000:000:00027 TXBEGIN TX_OK

162 Tmax Administration Guide

Page 179: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

c0029 18:33:34 1 0 000:000:00028 TXBEGIN TX_OK

c0030 18:33:34 1 0 000:000:00029 TXBEGIN TX_OK

c0031 18:33:34 1 0 000:000:00030 TXBEGIN TX_OK

$$6 tmaxh4 (tmadm): txquery -x

CLH 0:

----------------------------------------------------------------

cli_id clid txstime txqcount txrcount XID txstate

xastate bqualno nodename svgname txbstate xabstate

----------------------------------------------------------------

c1526 0x000005f6 15:13:35 4 0 34800000:0008c087 TXBEGIN

TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK

(B)00000001 tmaxh4 gw2301X BEGIN XA_OK

(B)00000002 tmaxh4 gw2302X BEGIN XA_OK

(B)00000003 tmaxh4 svg12302X BEGIN XA_OK

c1527 0x000005f7 15:13:35 4 0 34800000:0008c089 TXBEGIN

TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK

(B)00000001 tmaxh4 gw2301X BEGIN XA_OK

(B)00000002 tmaxh4 gw2302X BEGIN XA_OK

(B)00000003 tmaxh4 svg12302X BEGIN XA_OK

$$7 tmaxh4 (tmadm): txq -g svg12301X

CLH 1:

----------------------------------------------------------------

cli_id clid txstime txqcount txrcount XID txstate

xastate bqualno nodename svgname txbstate xabstate

----------------------------------------------------------------

c1595 0x0000463b 15:14:10 1 0 34800001:0008e953 TXBEGIN

TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK

c1596 0x0000463c 15:14:10 1 0 34800001:0008e956 TXBEGIN

TX_OK

(B)00000000 tmaxh4 svg12301X BEGIN XA_OK

c1597 0x0000463d 15:14:10 1 0 34800001:0008e957 TXBEGIN

TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK

$$9 tmaxh4 (tmadm): txquery -w

CLH 0:

----------------------------------------------------------------

gw_no txstime txqcount txrcount XID RXID txstate xastate

----------------------------------------------------------------

g0004 17:00:00 2 0 34800000:0008c38e 39800000:0003bcf7 PHASE2 TX_OK

제5장 Tmax 관리 도구 163

Page 180: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

g0004 17:00:00 2 0 34800000:0008c38f 39800000:0003bcf8 PHASE1 TX_OK

g0004 17:00:00 2 0 34800000:0008c391 39800000:0003bcf9 PHASE2 TX_OK

g0004 17:00:00 2 0 34800000:0008c39a 39800000:0003bd00 PHASE1 TX_OK

g0004 17:00:00 2 0 34800000:0008c3a1 39800000:0003bd08 PHASE1 TX_OK

g0004 17:00:00 1 0 34800000:0008c3a3 39800000:0003bd09 sTXBEGIN TX_OK

g0005 17:00:00 2 0 34800000:0008c38b 3e800100:000177f6 PHASE2 TX_OK

g0005 17:00:00 2 0 34800000:0008c38d 3e800101:00014ff7 PENDING TX_OK

g0005 17:00:00 2 0 34800000:0008c390 3e800101:00014ff8 PENDING TX_OK

g0005 17:00:00 2 0 34800000:0008c392 3e800000:0006e050 PHASE1 TX_OK

g0005 17:00:00 2 0 34800000:0008c396 3e800000:0006e052 PHASE1 TX_OK

g0005 17:00:00 2 0 34800000:0008c397 3e800100:000177f8 PHASE1 TX_OK

g0005 17:00:00 2 0 34800000:0008c398 3e800000:0006e055 PHASE1 TX_OK

g0005 17:00:00 2 0 34800000:0008c399 3e800101:00014ff9 sTXBEGIN TX_OK

g0005 17:00:00 2 0 34800000:0008c39c 3e800100:000177f9 PENDING TX_OK

g0005 17:00:00 2 0 34800000:0008c39d 3e800000:0006e05a sTXBEGIN TX_OK

g0005 17:00:00 2 0 34800000:0008c39e 3e800101:00014ffa PHASE1 TX_OK

g0005 17:00:00 1 0 34800000:0008c39f 3e800000:0006e05b sTXBEGIN TX_OK

g0005 17:00:00 1 0 34800000:0008c3a2 3e800100:000177fa sTXBEGIN TX_OK

g0004 17:00:00 2 0 34800000:0008eb51 39800001:0003e50d PHASE2 TX_OK

g0004 17:00:00 2 0 34800000:0008eb53 39800001:0003e510 PHASE2 TX_OK

g0004 17:00:00 2 0 34800000:0008eb58 39800001:0003e516 PHASE1 TX_OK

g0004 17:00:00 2 0 34800000:0008eb5b 39800001:0003e519 sTXBEGIN TX_OK

g0005 17:00:00 2 0 34800000:0008eb4d 3e800001:0007084f PHASE2 TX_OK

g0005 17:00:00 2 0 34800000:0008eb50 3e800001:00070852 PHASE2 TX_OK

g0005 17:00:00 2 0 34800000:0008eb52 3e800001:00070854 PHASE2 TX_OK

g0005 17:00:00 1 0 34800000:0008eb56 3e800001:00070858 sTXBEGIN TX_OK

g0005 17:00:00 1 0 34800000:0008eb5a 3e800101:00014ffb sTXBEGIN TX_OK

g0005 17:00:00 1 0 34800000:0008eb5c 3e800001:0007085b sTXBEGIN TX_OK

### txquery -w -r ###

$$11 tmaxh4 (tmadm): txquery -w -r

CLH 1:

----------------------------------------------------------------

gw_no txstime txqcount txrcount XID RXID txstate xastate

----------------------------------------------------------------

g0004 17:00:00 2 0 34800001:0008ed0a 39800001:0003e6bc PENDING TX_OK

g0004 17:00:00 2 0 34800001:0008ed0b 39800001:0003e6bd PENDING TX_OK

g0004 17:00:00 2 0 34800001:0008ed0c 39800001:0003e6be PHASE1 TX_OK

g0004 17:00:00 2 0 34800001:0008ed0f 39800001:0003e6c1 PHASE1 TX_OK

g0005 17:00:00 2 0 34800001:0008ed00 3e800001:000709aa PHASE2 TX_OK

g0005 17:00:00 2 0 34800001:0008ed03 3e800101:00015046 PHASE2 TX_OK

g0005 17:00:00 2 0 34800001:0008ed04 3e800100:00017846 PHASE2 TX_OK

g0005 17:00:00 2 0 34800001:0008ed05 3e800001:000709b1 PENDING TX_OK

g0005 17:00:00 2 0 34800001:0008ed06 3e800100:00017847 PENDING TX_OK

g0005 17:00:00 2 0 34800001:0008ed07 3e800001:000709b2 sTXBEGIN TX_OK

164 Tmax Administration Guide

Page 181: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

g0005 17:00:00 2 0 34800001:0008ed08 3e800100:00017848 PENDING TX_OK

g0005 17:00:00 2 0 34800001:0008ed09 3e800100:00017849 PHASE2 TX_OK

g0004 17:00:00 2 0 34800001:0008c53f 39800000:0003bea9 PHASE2 TX_OK

g0004 17:00:00 2 0 34800001:0008c540 39800000:0003beab PHASE2 TX_OK

g0004 17:00:00 2 0 34800001:0008c545 39800000:0003beaf PHASE1 TX_OK

g0004 17:00:00 2 0 34800001:0008c546 39800000:0003beb0 PHASE1 TX_OK

g0004 17:00:00 2 0 34800001:0008c548 39800000:0003beb2 sTXBEGIN TX_OK

g0005 17:00:00 2 0 34800001:0008c51c 3e800000:0006e192 PHASE2 TX_OK

g0005 17:00:00 2 0 34800001:0008c536 3e800000:0006e1a5 PHASE2 TX_OK

g0005 17:00:00 2 0 34800001:0008c537 3e800100:00017845 PHASE2 TX_OK

g0005 17:00:00 2 0 34800001:0008c539 3e800000:0006e1a7 PHASE2 TX_OK

g0005 17:00:00 2 0 34800001:0008c53e 3e800000:0006e1ad PENDING TX_OK

g0005 17:00:00 2 0 34800001:0008c541 3e800101:00015047 PENDING TX_OK

g0005 17:00:00 2 0 34800001:0008c542 3e800000:0006e1af PENDING TX_OK

g0005 17:00:00 2 0 34800001:0008c543 3e800101:00015048 PENDING TX_OK

g0005 17:00:00 2 0 34800001:0008c544 3e800101:00015049 PHASE1 TX_OK

5.2.5. rqstat(rqs)

현재 사용 가능한 RQ의 상태를 보여주거나 디스크 큐에 쌓여있는 서비스를 사용자가 처리할 수 있다.

-f 옵션과 -c 옵션을 사용하여 RQ를 처리하기 위해서는 tmadmin -m 옵션을 사용하여 마스터 모드로 들어

가야 한다.

$rqstat (rqs) [ -l ][ -s rqname ][ -f rqname ][ -c rqname ]

설명옵션

사용 가능한 RQ를 보여준다.-l

해당 RQ의 상태를 보여준다.-s rqname

RQ에 쌓여있는 서비스를 처리한다.-f rqname

정체된 RQ를 제거한다.-c rqname

다음은 -l 옵션으로 사용 가능한 RQ를 조회한 예제이다.

$$15 tmax1 (tmadm): rqs -l

list of available RQs:

rq1 rq2

다음은 -s rqname 옵션을 사용해서 RQ의 상태를 조회한 예제이다.

$$15 tmax1 (tmadm): rqs -s rq1

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Number of queue entries

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

제5장 Tmax 관리 도구 165

Page 182: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

request 0

reply 0

fail 0

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Accumulated queue activities

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

request enqueued 0

request dequeued 0

reply enqueued 10

reply dequeued 0

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

다음은 -f rqname 옵션을 사용해서 RQ에 쌓여있는 서비스를 처리한 예제이다.

$$15 tmax1 (tmadm): rqs -f rq2

RQ(rq2) flushed

다음은 -c rqname 옵션을 사용해서 정체된 RQ를 제거하는 예제이다.

$$15 tmax1 (tmadm): rqs -c rq2

RQ(rq2) statics cleared

5.2.6. history

셸에서와 같이 명령어를 기억함으로써 편리하게 사용할 수 있다.

$$15 tmax1 (tmadm): history

5 : si

4 : txq

3 : ci

2 : st -p

1 : st -s

0 : ci

! 로 직전 명령어를 반복 할 수 있으며 history에서 출력된 번호를 사용하여 명령을 재실행할 수도 있다.

$$21 tmax 1 (tmadm): !5

si

----------------------------------------------------------------

clh svri status count qcount qpcount emcount

----------------------------------------------------------------

0 0 RDY 2 0 0 0

0 1 RDY 0 0 0 0

166 Tmax Administration Guide

Page 183: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

0 2 RDY 0 0 0 0

0 3 RDY 45 0 0 0

$$21 tmax 1 (tmadm): !

si

----------------------------------------------------------------

clh svri status count qcount qpcount emcount

----------------------------------------------------------------

0 0 RDY 2 0 0 0

0 1 RDY 0 0 0 0

0 2 RDY 0 0 0 0

0 3 RDY 45 0 0 0

5.2.7. config (cfg)

현재 동작 중인 시스템의 환경정보를 알려 준다. 환경파일에서 정의된 도메인, 노드, 서버 그룹, 서버, 서

비스별로 기본값까지 포함한 모든 환경정보를 확인할 수 있다.

다음은 config 명령어의 옵션에 대한 설명이다.

$config (cfg) [ -d ][ -n ][ -g Server Group Name ][ -v Server Name ]

[-s Service Name][-w][-r][-b][-f][-pr]

설명옵션

도메인에 대한 환경정보 조회한다.-d

전체 노드에 대한 환경정보를 조회한다.-n

서버 그룹에 대한 환경정보를 조회한다.-g [Server Group Name]

서버에 대한 환경정보를 조회한다.-v [Server Name]

서비스에 대한 환경정보를 조회한다.-s [Service Name]

게이트웨이에 대한 환경 정보를 조회한다.-w

라우팅 환경 정보를 조회한다.-r

백업 환경 정보를 조회한다.-b

Topend's function-f

Topend's product-pr

도메인에 대한 환경정보(-d)

도메인에 대한 환경정보를 확인하기 위해서는 -d 옵션을 사용한다. 이를 이용하면 환경파일의 DOMAIN

절과 관련된 모든 항목 내용과 도메인에 존재하는 노드 개수(nodecount), 서버 그룹 개수(svgcount), 부하

조절을 위한 복사 서버 그룹의 개수(cousin_gcount, cousin_count), 라우팅 개수(routcount, relem_count),

노드 사이 장애를 감지하는 시간 간격 등의 정보를 확인할 수 있다.

제5장 Tmax 관리 도구 167

Page 184: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

cousin_gcount는 COUSIN 항목이 정의된 그룹 개수로 복사가 이루어진 그룹 개수이고 cousin_count는

모든 복사본 서버 그룹의 개수이다.

다음은 명령어 사용 예제이다.

$$4 tmax1 (tmadm): cfg -d

domain_name = tmax1,

shmkey = 79990,

minclh = 1,

maxclh = 3,

maxuser = UNLIMITED,

portno = 8850,

racport = 3333,

cmtret = YES,

blocktime(bt) = 30,

txtime(tt) = 0,

nliveinq(ni) = 30,

security = NONE,

cpc = 1,

maxfunc = 0,

clichkint = 0,

idletime = 0,

node_count = 1,

svg_count = 4,

svr_count = 10,

cousin_count = 0,

cousin_gcount = 0,

backup_count = 0,

backup_gcount = 0,

rout_count = 0,

rout_gcount = 0,

maxsacall = 8,

maxcacall = 16,

nclhchkint = -1,

maxconv_node = 16,

maxconv_server = 8,

maxnode = 32,

relem_count = 0

maxsvg = 32,

maxspr = 64,

maxsvr = 64,

maxsvc = 512,

maxcpc = 32,

maxtms = 32,

maxrout = 16,

maxroutsvg = 32,

maxrq = 2,

168 Tmax Administration Guide

Page 185: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

maxgw = 2,

maxcousin = 16,

maxcousinsvg = 32,

maxbackup = 16,

maxbackupsvg = 32,

maxtotalsvg = 64,

maxprod = 0

routcount는 ROUTING 절에 정의된 라우팅 개체의 개수이고, relem_count는 각 라우팅 개체의 범위 항목

에 정의된 각 범위별 라우팅 단위 개수이다.

전체 노드에 대한 환경정보(-n)

전체 노드에 대한 환경정보를 확인하기 위해서는 -n 옵션이 사용된다.

환경파일의 NODE 절과 관련된 모든 항목 내용과 시스템에서 내부적으로 정의된 노드 번호(node_no), 노

드 내에 존재하는 서버 그룹 개수(svgcount)와 서버 개수(svrcount), 서비스 개수(svccount), 노드에서 동

작 중인 CLH 프로세스 개수(curclh), 동작 가능한 최대 서버 프로세스의 개수(maxsprs)와 최대 TMS 프로

세스 개수(maxtms) 등의 정보를 확인할 수 있다.

다음은 명령어 사용 예제이다.

$$2 tmax1 (tmadm): cfg -n

node_name = tmaxs1, lnid = tmaxs1, node_no = 0

load = 0,

shmkey = 79990,

minclh = 1,

maxclh = 3,

clhqtimeout(hqt) = 0,

maxuser = UNLIMITED,

portno = 8850,

racport = 3333,

tmaxdir = /user2/starbj81/tmax3816/,

appdir = /user2/starbj81/tmax3816/appbin/,

pathdir = /user2/starbj81/tmax3816/path/,

tlogdir = /user2/starbj81/tmax3816/log/tlog/,

slogdir = /user2/starbj81/tmax3816/log/slog/,

ulogdir = /user2/starbj81/tmax3816/log/ulog/,

envfile = ,

svgcount = 4,

svrcount = 10,

svccount = 15,

curclh = 1,

ipcperm = 1c0,

clichkint = 0,

idletime = 0,

tmmopt = ,

clhopt = ,

제5장 Tmax 관리 도구 169

Page 186: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

realsvr = ,

rscpc = 4,

maxsvg = 32,

maxsprs = 64,

maxsvr = 64,

maxtmss = 32,

maxcpc = 32,

maxgwsvr = 2,

maxrqsvr = 2,

maxgwcpc = 8,

autobackup = YES,

logoutsvc =

서버 그룹에 대한 환경정보(-g)

서버 그룹에 대한 환경정보를 확인하기 위해서는 -g 옵션이 사용된다.

서버 그룹 이름을 지정하면 그 서버 그룹에 대한 정보만을, 이름을 지정하지 않으면 모든 서버 그룹에 대

한 정보를 출력한다. 그룹별로 각 서버 그룹에 대하여 환경파일의 SVRGROUP 절과 관련된 모든 항목 내

용을 확인할 수 있다.

다음은 명령어 사용 예제이다.

$$1 tmax1 (tmadm): cfg -g svg2

svg_name = svg2, svg_no = 1

dbname = ORACLE,

openinfo = ORACLE_XA+Acc=P/scott/tiger+SesTm = 60,

closeinfo = ,

appdir = ,

ulogdir = ,

svgtype = TMAX,

envfile = ,

tmsname = svg1_tms,

mintms = 2,

maxtms = 3,

load(ld) = -1,

tms starti = 0,

tms endi = 2,

서버에 대한 환경정보( -v)

서버에 대한 환경정보를 확인하기 위해서는 -v 옵션이 사용된다.

서버 이름을 지정하면 그 서버에 대한 정보만을, 이름을 지정하지 않으면 모든 서버에 대한 정보를 출력한

다. 서버별로 각 서버에 대하여 환경파일의 SERVER 절과 관련된 모든 항목 내용과 내부적으로 정의된

서버 번호(svr_no), 서버와 관련된 데이터 의존형 라우팅 정보(ddri)를 확인할 수 있다.

다음은 명령어 사용 예제이다.

170 Tmax Administration Guide

Page 187: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

$$3 tmax1 (tmadm): cfg -v kapi1

svr_name = kapi1, svr_no = 0

svgno = 0,

cursvr = 1,

clopt = ,

seq = -1,

minsvr = 5,

maxsvr = 10,

ulogdir = ,

maxqcount(mq) = -1,

asqcount(aq) = -1,

conv = NO,

ddri = DDR_NO_ROUT,

restart(rs) = YES,

maxrstart(mr) = 5,

gperiod(gp) = 86400,

svrtype = TMAX_STD,

schedule = FA,

cpc = 1

서비스에 대한 환경정보( -s)

서비스에 대한 환경정보를 확인하기 위해서는 -s 옵션이 사용된다.

서비스 이름을 지정하면 그 서비스에 대한 정보만을, 이름을 지정하지 않으면 모든 서비스에 대한 정보를

출력한다. 서비스별로 각 서비스에 대하여 환경파일의 SERVICE 절과 관련된 모든 항목 내용을 확인할

수 있다.

다음은 명령어 사용 예제이다.

$$4 tmax1 (tmadm): cfg –s

- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - -

svc_name prio(pr) autotran svctime(st) routno svrname svgno

- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - -

SDLSEL 50 YES 0 –1 sdlsel 1

SSYNC 50 NO 0 –1 kapi 10

SYNC 50 NO 0 –1 kapi 10

게이트웨이에 대한 환경정보(-w)게이트웨이에 대한 환경정보를 확인하기 위해서는 -w 옵션이 사용된다. 게이트웨이 이름을 지정하면 그

게이트웨이에 대한 정보만을, 이름을 지정하지 않으면 모든 게이트웨이에 대한 정보를 출력한다.

다음은 명령어 사용 예제이다.

$$6 tmaxh4 (tmadm): cfg -w

no backup is defined

gw_name = gw1, node_no = 0, gw_no = 0

제5장 Tmax 관리 도구 171

Page 188: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

gw_type = TMAX,

portno = 7154,

rgwaddr = 192.168.1.42,

rgwportno = 7154,

backup_rgwaddr = ,

backup_rgwportno = -1,

cpc = 2,

timeout = 300,

direction = BIDIR,

maxinrgw = 32,

clopt = ,

ptimeout = 100,

ptimeint = 10

5.3. 동작 상태 정보

5.3.1. stat(st)

실질적인 시스템 동작 상태를 나타내며, 동작중인 서버 프로세스와 서비스에 대한 정보를 알 수 있다. 서

버 프로세스의 현재 상태, 처리중인 서비스 이름, 처리한 서비스 개수, 서비스에 대한 상태, 서비스 큐에

존재하는 서비스 요청 개수 등과 같은 동적인 정보를 확인할 수 있다.

stat명령어의 약어는 st이며, 다음과 같은 옵션들이 제공된다.

$stat (st) [-p 서버 프로세스 이름][-s 서비스 이름][-t tms 이름]

[ -v 서버 프로세스 이름][-o sort할 조건][-n 출력되는 메시지 라인]

[-x][-X]

설명옵션

서버 프로세스에 대한 정보를 보여준다.-p [서버 프로세스 이름]

서비스에 대한 정보를 보여준다.-s [서비스 이름]

TMS에 대한 정보를 보여준다.-t [tms 이름]

서버 프로세스에 대한 정보를 보여준다. (si와 동일)-v [서버 프로세스 이름]

st(-s, -p) 명령어로 정보를 출력할 때 원하는 조건에 따라 sort하여

출력할 수 있다.

-o [sort할 조건]

sort되어 출력되는 메시지 라인을 지정할 수 있다.-n [출력되는 메시지 라인]

st(-s, -p, -t) 명령어로 정보를 출력할 때 더 상세한 결과를 볼 수 있다.-x

- 최소/최대 서비스 수행 시간 : fail count, error count

- tms(-t) 정보를 조회할 때 : xid, xa_status

172 Tmax Administration Guide

Page 189: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

-X 옵션을 사용한 경우 COUSIN 서비스에 대하여 상태1(상태2) 의

형태로 로컬 상태를 따로 조회할 수 있다.

-X

예) RDY(NRDY)

(상태2) 가 실제적인 로컬 상태이며, -X 옵션을 사용하지 않을 경우

COUSIN 환경에서는 로컬 상태가 항상 RDY 로 조회되는 문제점을

해결할 수 있다. 반드시 -s 와 함께 사용되어야 한다.

시스템 동작 상태를 볼 수 있는 st 등의 명령으로 나타나는 결과에서 status 열에 다음과 같은 상태 정보가

있다.

설명상태

Ready 상태이다.RDY

Non-Ready 상태이다.NRDY

NRDY인 경우는 tpstart하고 클라이언트가 소켓으로 연결이 맺어진

상태에서 서버로부터 데이터가 전송이 안 되는 경우에 발생할 수 있

는 상태이다. 예를 들면, 네트워크 상태가 좋지 않을 경우에 발생 할

수 있다.

실행 중인 상태이다.RUN

등록되지 않은 상태이다. 클라이언트에 tpend 직후에 잠시 나왔다가

상태가 변경된다.

Unregisted

해당 서비스의 모든 프로세스가 suspend된다.BLK

해당 서비스의 일부 프로세스가 suspend된다.PBLK

해당 서비스가 속한 모든 서버 프로세스가 unadvertise된 상태이다.UNADV

해당 서비스가 속한 모든 서버 프로세스가 unadvertise된 상태이다.PUNADV

서버 프로세스에 대한 정보 (–p)

Tmax 시스템에서 동작하는 개별적인 서버 프로세스에 대한 정보를 알 수 있다. Tmax 환경파일에 등록된

서버는 MIN과 MAX항목을 사용하여 여러 개 동작할 수 있는데, 이들 각각의 동작 상황을 확인할 수 있다.

즉, 각 서버별 프로세스의 ID(spr_no), 서버 프로세스가 속해있는 서버 그룹 이름(svgname), 현재 상태

(status), 처리한 서비스 개수(count), 프로세스 평균처리시간(avg), 처리 중인 서비스 이름(svc)등이 출력

된다.

-p 옵션을 사용하여 서버 이름을 지정하면 해당 서버 이름의 서버 프로세스들에 관한 정보들이 출력되고,

이름을 지정하지 않으면 동작 중인 모든 서버 프로세스들에 대한 정보가 출력된다. st –p 명령의 마지막

라인에 총 처리 건수, 전체 평균 처리 시간, 현재 수행 중인 총 서비스 개수 통계 정보를 출력하여 시스템

처리 현황을 파악할 수 있다.

제5장 Tmax 관리 도구 173

Page 190: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

다음은 명령어 사용 예제이다.

$$7 (tmadm): st –p

CLH 0 :

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svr_name svgname spr_no status count avg svc

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svr1 svg1 1 RDY 1 0.001 -1

svr2 svg1 2 RDY 1 0.001 -1

svr3 svg1 3 RDY 1 0.001 -1

syncrtn svg1 4 RDY 1 0.001 -1

syncrtn svg1 5 RDY 1 0.001 -1

ucs svg1 6 RDY 1 0.001 -1

ucs svg1 7 RDY 1 0.001 -1

ucs svg1 8 RDY 1 0.001 -1

_rqsvg rqsvg1 9 RDY 1 0.001 -1

_rqsvg rqsvg1 10 RDY 1 0.001 -1

TOTAL COUNT = 1

TOTAL AVG = 0.001

TOTAL RUNNING COUNT = 0

와일드 카드사용도 가능하다. st –p s*을 입력하면 s로 시작하는 svr_name에 관한 정보만을 보여준다.

$$7 (tmadm): st –p s*

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svr_name svgname spr_no status count avg svc

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svr1 svg1 1 RDY 0 0.000 -1

svr2 svg1 2 RDY 0 0.000 -1

svr3 svg1 3 RDY 0 0.000 -1

syncrtn svg1 4 RDY 0 0.000 -1

syncrtn svg1 5 RDY 0 0.000 -1

TMS가 멀티 스레드 TMS일 경우에는 각 스레드의 상태를 조회할 수 있다.

$$1 tmaxh3 (tmadm): st -t -x

CLH 0:

----------------------------------------------------------------

tms_name svgname spr_no(tid) status count avg cqcount

XID xastate

----------------------------------------------------------------

tms_ora_mt svgora1 0 RUN 0 0.00 0

000:000:13505 commit

tms_ora_mt svgora1 0( 1) RDY 0% 0.00 ( 0)

000:000:00000 -

tms_ora_mt svgora1 0( 2) RDY 0% 0.00 ( 0)

000:000:00000 -

----------------------------------------------------------------

174 Tmax Administration Guide

Page 191: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

tms_ora_mt svgora1 1 RDY 0 0.00 ( 0)

000:000:00000 -

tms_ora_mt svgora1 1( 1) RDY 0% 0.00 ( 0)

000:000:00000 -

tms_ora_mt svgora1 1( 2) RDY 0% 0.00 ( 0)

000:000:00000 -

----------------------------------------------------------------

tms_ora_mt svgora2 10 RDY 0 0.00 0

000:000:00000 -

tms_ora_mt svgora2 10( 1) RDY 0% 0.00 ( 0)

000:000:00000 -

tms_ora_mt svgora2 10( 2) RDY 0% 0.00 ( 0)

000:000:00000 -

----------------------------------------------------------------

tms_ora svgora3 20 RDY 0 0.00 0

000:000:00000 -

----------------------------------------------------------------

tms_ora svgora3 21 RDY 0 0.00 ( 0)

000:000:00000 -

----------------------------------------------------------------

서비스에 대한 정보(–s)

Tmax 시스템에서 제공하는 서비스에 대한 동적정보를 알려 준다. 즉, 해당 서비스를 관리하는 CLH 정보

(clh), 서비스 처리 건수(count), 평균 처리시간(avg), 현재 대기 중인 서비스 요청 건수(cq_count), 잠시라

도 대기했던 총 서비스 요청 건수(aq_count), 평균 대기 시간(q_avg), 서비스의 현재 상태를 조회한다. -s

옵션을 사용하며, 서비스 이름을 지정하면 해당 서비스에 관한 정보만 출력되고, 서비스 이름을 지정하지

않으면 제공되는 모든 서비스에 관한 정보들이 출력된다.

다음은 명령어 사용 예제이다.

$$7 (tmadm): st –s

CLH 0:

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svc_name svr_name count avg cq_count aq_count q_avg status

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

FORW svr1 0 0.000 0 0 0.000 RDY

COMVER svr1 3 0.670 0 0 0.000 RDY

REGIST svr1 0 0.000 0 0 0.000 RDY

VIEW svr1 0 0.000 0 0 0.000 RDY

SYNC svr1 10 0.000 0 0 0.000 RDY

ASYNC svr1 0 0.000 0 0 0.000 RDY

CONVER_R svr1 0 0.000 0 0 0.000 RDY

와일드 카드의 사용도 가능하다. st -s *W를 입력하면 W로 끝나는 서비스에 대한 정보만을 조회한다.

제5장 Tmax 관리 도구 175

Page 192: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

$$7 (tmadm): st –s *W

CLH 0:

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svc_name svr_name count avg cq_count aq_count q_avg status

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

FORW svr1 0 0.000 0 0 0.000 RDY

VIEW svr1 0 0.000 0 0 0.000 RDY

TMS 정보 조회(-t)

시스템에서 제공하는 TMS에 대한 동적 정보를 알려 준다. 즉, 해당 TMS의 이름(tms_name), 해당 TMS가

속해 있는 서버 그룹 이름(svgname), TMS의 프로세스 ID(spr_no), 처리 건수(count), 평균 처리 시간(avg),

현재 대기 중인 요청 건수(cq_count), 대기했던 총 요청 건수(aq_count), 평균 대기 시간(q_avg) 등이다.

-t 옵션을 사용하며, TMS 이름을 지정하면 해당 TMS에 관한 정보만 출력된다. TMS 이름을 지정하지 않

으면 제공되는 모든 TMS에 관한 정보가 출력된다.

$$2 tmaxh4 (tmadm): st -t

CLH 0:

----------------------------------------------------------------

tms_name svgname spr_no status count avg cqcount

----------------------------------------------------------------

tms_ora svg1 0 RDY 5 0.00 2

tms_ora svg1 1 RDY 4 0.00 ( 1)

상세 정보 조회(-x)

-x 옵션은 'st –p' 또는 'st –s' 명령어를 이용하여 서버 프로세스나 서비스의 상태를 조회할 때 최소/최대 서

비스 수행 시간인 mintime과 maxtime, TPESVCFAIL이 발생한 경우인 fail_cnt, 서버가 TPESVCFAIL 이

외의 다른 에러가 발생한 경우 err_cnt 등의 정보를 추가적으로 조회할 수 있도록 해 주는 명령어로 반드

시 –s 옵션이나 –p 옵션과 함께 사용되어야 한다.

● OS 에서 제공하는 프로세스 ID(PID), Fail count, Error count,

● 최소/최대 서비스 수행 시간 (min_time, max_time)

● tms(-t) 정보를 조회할 때 xid, xa_status

다음은 명령어 사용 예제이다.

$$1 tsci1 (tmadm): st -s -x

CLH 0:

-----------------------------------------------------------------------------------------------

176 Tmax Administration Guide

Page 193: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

svc_name svr_name count cq_cnt aq_cnt q_avg avg status

fail_cnt err_cnt mintime maxtime

utime umin_time umax_time stime smin_time smax_time

-----------------------------------------------------------------------------------------------

INSERT2 xagwtest2 0 0 0 0.000 0.000 RDY

0 0 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

$$1 tmaxh2 (tmadm): st -p -x

CLH 0:

----------------------------------------------------------------

svr_name svgname spr_no status count avg svc

PID fail_cnt err_cnt min_time max_time

----------------------------------------------------------------

svr01011 svg1 36 RDY 1200 0.004 -1

18375 5 6 0.000 0.013

----------------------------------------------------------------

TOTAL COUNT = 1200

TOTAL SVCFAIL COUNT = 5

TOTAL ERROR COUNT = 6

TOTAL AVG = 0.004

TOTAL RUNNING COUNT = 0

$$1 tsci1 (tmadm): st -s -X

CLH 0:

-----------------------------------------------------------------------------------------------

svc_name svr_name count cq_cnt aq_cnt q_avg avg status

fail_cnt err_cnt mintime maxtime

utime umin_time umax_time stime smin_time smax_time

-----------------------------------------------------------------------------------------------

INSERT2 xagwtest2 0 0 0 0.000 0.000 RDY(RDY)

0 0 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

제5장 Tmax 관리 도구 177

Page 194: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

결과를 조건별로 sort해서 출력(–o)

Tmax 시스템에서 제공하는 서버 프로세스와 서비스에 대한 동적 정보를 조회할 경우 특정 조건을 바탕으

로 sort해서 원하는 정보를 볼 수 있도록 한다. sort는 내림차순, 오름차순으로 설정이 가능하다. 결과를 특

정 조건을 기준으로 sort하여 출력하기 위한 –o 옵션은 반드시 –p 옵션이나 –s 옵션과 함께 사용되어야 한

다.

다음은 명령어 사용 예제이다.

$$7 (tmadm): st –p –o ca

CLH 0 :

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svr_name svgname spr_no status count avg svc

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svr2 svg1 37 RDY 10 0.000 -1

svr1 svg1 36 RDY 6 0.000 -1

svr3 svg1 38 RDY 2 0.000 -1

TOTAL COUNT = 18

TOTAL AVG = 0.000

TOTAL RUNNING COUNT = 0

$$7 (tmadm): st –s –o ca

CLH 0:

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svc_name svr_name count avg cq_count aq_count q_avg status

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

TOUPPER svr2 10 0.000 0 0 0.000 RDY

SDLTOUPPER svr1 5 0.000 0 0 0.000 RDY

FDLTOUPPER svr3 2 0.000 0 0 0.000 RDY

SDLTOLOWER svr1 1 0.000 0 0 0.000 RDY

FDLTOLOWER svr3 0 0.000 0 0 0.000 RDY

TOLOWER svr2 0 0.000 0 0 0.000 RDY

출력되는 메시지의 라인 수 지정(-n)

-n 옵션은 sort되어 출력되는 메시지 라인(서버 프로세스 또는 서비스의 개수)을 지정하는 옵션으로 반드

시 –o 옵션과 함께 사용되어야 한다.

다음은 명령어 사용 예제이다.

$$7 (tmadm): st –p –o ca –n 2

CLH 0 :

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svr_name svgname spr_no status count avg svc

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svr2 svg1 37 RDY 10 0.000 -1

svr1 svg1 36 RDY 6 0.000 -1

TOTAL COUNT = 18

178 Tmax Administration Guide

Page 195: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

TOTAL AVG = 0.000

TOTAL RUNNING COUNT = 0

$$7 (tmadm): st –s –o ca –n 3

CLH 0:

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

svc_name svr_name count avg cq_count aq_count q_avg status

- -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

TOUPPER svr2 10 0.000 0 0 0.000 RDY

SDLTOUPPER svr1 5 0.000 0 0 0.000 RDY

FDLTOUPPER svr3 2 0.000 0 0 0.000 RDY

5.3.2. txgwinfo, nontxgwinfo

tmadmin에 리모트 게이트웨이와의 연결 상태를 확인할 수 있는 명령어이다. 이와 더불어 현재 메인 노드

와 연결되어 있는지 백업 노드와 연결되어 있는지, 어떤 노드와 연결되어 있는지 상세한 정보를 확인할 수

있다. txgwinfo(txgwi)는 Tmax 게이트웨이의 정보를 확인하며, nontxgwinfo(ntxgwi)는 TMAXNONTX 게이

트웨이의 정보를 확인한다.

10/user2/starbj81>tmadmin

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmaxs1 (tmadm): txgwinfo

----------------------------------------------------------------

gw_no channel type foreign_address status

----------------------------------------------------------------

0 OUTCH PRIM tmaxc1(192.168.1.12:9400) RDY

1 OUTCH PRIM tmaxc1(192.168.1.12:9400) RDY

4 INCH - tmaxc1(192.168.1.12:1434) RDY

5 INCH - tmaxc1(192.168.1.12:1436) RDY

6 INCH - tmaxh2(192.168.1.48:58094) RDY

7 INCH - tmaxh2(192.168.1.48:58093) RDY

< 백업 노드와 연결되어 있을 경우 >

10/user2/starbj81>tmadmin

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmaxs1 (tmadm): nontxgwinfo

----------------------------------------------------------------

gw_no channel type foreign_address status

----------------------------------------------------------------

0 OUTCH BACK tmaxh2(192.168.1.48:9200) RDY

1 OUTCH BACK tmaxh2(192.168.1.48:9200) RDY

6 INCH - tmaxh2(192.168.1.48:58091) RDY

7 INCH - tmaxh2(192.168.1.48:58092) RDY

제5장 Tmax 관리 도구 179

Page 196: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

5.3.3. smtrc

환경파일 NODE 절의 SMSUPPORT가 Y로 설정되어 있을 경우, 'st –p –x'를 실행하면, 수행 중인 서비스

에 대해서 해당 GID를 출력한다.

$$ node0 (tmadm) : smtrc [-a] GID0 GID1

설명항목

기존 정보 외에 서버 프로세스 인덱스 (spri), 사용자 CPU 사용 시간, 시스템

CPU 사용 시간, 리턴 정보 등을 모두 표시한다

-a

SysMaster의 GID 상위 4byte를 Hexa decimal로 표기한다.GID0

SysMaster의 GID 하위 4byte를 Hexa decimal로 표기한다.GID1

다음은 명령어 사용 예제이다.

$$1 tmaxh4 (tmadm): st –p -x

CLH 0:

--------------------------------------------------------------

svr_name svgname spr_no status count avg svc

PID fail_cnt err_cnt min_time max_time

SysMaster_GID

--------------------------------------------------------------

evtsvr svg1 36 RDY 0 0.000 -1

17980 0 0 0.000 0.000

00000000-00000000-00000000

svr1 svg1 37 RUN 0 0.000 SDLTOUPPER

17981 0 0 0.000 0.000

00000000-00000101-00000000

svr2 svg1 38 RUN 0 0.000 SDLTOUPPER2

17982 0 0 0.000 0.000

00000000-00080101-00000000

svr3 svg1 39 RUN 0 0.000 SDLTOUPPER3

17983 0 0 0.000 0.000

00000000-00100101-00000000

svr_sys svg1 40 RDY 3 0.000 -1

17984 0 0 0.000 0.000

00000000-00000000-00000000

----------------------------------------------------------------

TOTAL COUNT = 3

TOTAL SVCFAIL COUNT = 0

TOTAL ERROR COUNT = 0

TOTAL AVG = 0.000

TOTAL RUNNING COUNT = 3

$$1 tmaxh4 (tmadm): smtrc 0 0101

180 Tmax Administration Guide

Page 197: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

CLH 0:

-------------------------------------------------------------

sysmaster_global_id status svc_name

-------------------------------------------------------------

00000000:00000101:00000000 SVC_RUNNING SDLTOUPPER2

45670701 tmaxi4 (tmadm): smtrc -a 0 0101

CLH 0:

----------------------------------------------------------------

sysmaster_global_id status svc_name

ctime svctime spri ucpu scpu

----------------------------------------------------------------

00000000:00000101:00000000 SVC_RUNNING SDLTOUPPER2

14:05:32:159 0.000 38 0.000 0.000

00000000:00000101:00010000 SVC_RUNNING SMTRACE

14:05:32:159 0.000 40 0.000 0.000

00000000:00000101:00010000 SVC_DONE SMTRACE

14:05:32:159 0.000 40 0.000 0.000

5.3.4. clhsinfo

clhsinfo 명령어는 멀티 노드 환경에서 각각의 CLH 사이 연결 상태 정보를 확인할 수 있다.

멀티 노드 환경에서는 서로 다른 노드 간의 연결이 반드시 이루어져야 한다. 하지만 방화벽이나 장비 노후

로 인해 네트워크가 불안정한 경우에는 노드 사이의 연결이 끊어져 정상적인 서비스가 이루어질 수 없는

경우가 있다. 이와 같은 문제를 확인할 수 있는 명령어로 clhsinfo, tmmsinfo가 추가되었다.

다음은 minclh =1, maxclh=2로 설정한 경우 clhsinfo를 사용한 예제이다.

tmaxh4@starbj81:/EMC01/starbj81/tmax/config>tmadmin

TMADMIN for rnode (tmaxh2): starting to connect to RAC

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmaxh4 (tmadm): clhsinfo

CLH 0:

---------------------------------------

nodename clhno cpc status

---------------------------------------

tmaxh2 0 2 RDY

tmaxh2 1 0 NRDY

---------------------------------------

CLH 1 is not available

Msg from rnode(tmaxh2):

제5장 Tmax 관리 도구 181

Page 198: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

CLH 0:

---------------------------------------

nodename clhno cpc status

---------------------------------------

tmaxh4 0 2 RDY

tmaxh4 1 0 NRDY

---------------------------------------

CLH 1 is not available

5.3.5. tmmsinfo

tmmsinfo 명령어는 멀티 노드 환경에서 TMM 사이 연결 상태 정보를 확인할 수 있다.

다음은 명령어 사용 예제이다.

tmaxh4@starbj81:/EMC01/starbj81/tmax/config>tmadmin

TMADMIN for rnode (tmaxh2): starting to connect to RAC

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmaxh4 (tmadm): tmmsinfo

------------------------------------------

no nodename livectime status

------------------------------------------

1 tmaxh2 13:53:53 RDY

Msg from rnode(tmaxh2):

------------------------------------------

no nodename livectime status

------------------------------------------

0 tmaxh4 13:53:08 RDY

5.3.6. repeat(r)

repeat은 상태 정보 반복 표시 기능으로 다음의 방식으로도 사용될 수 있다. 반복적인 명령어 수행은 상태

정보를 모니터링할 뿐 아니라 업무수행에 대한 디버깅에도 많은 도움을 줄 수 있다.

다음은 5초의 간격을 두고 'st -s'를 30번 수행하는 것을 반복하라는 예제이다.

$$1 tmax1 (tmadm): r -k 30 -i 5 st -s

다음은 5초의 간격을 두고 'st -p'를 30초간 수행하는 것을 반복하라는 예제이다.

$$1 tmax1 (tmadm): r -k 30 -i 5 st -p

182 Tmax Administration Guide

Page 199: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

5.4. 운용 관리

5.4.1. suspend(sp)

응용 서버 프로그램 오류 등으로 더 이상의 업무 처리가 불가능한 경우 이를 해결하기 위해 동작 중인 서

버 프로세스를 중지시키는 경우 사용하는 기능이다. 명령어가 실행되면, 중지된 서버 프로세스가 현재 처

리 중인 서비스를 정상 완료한 후 동작을 중지하고, 큐에 있는 서비스는 대기 상태가 된다. 이때 계속적으

로 요청되는 서비스는 모두 큐에 쌓인다.

suspend 명령어의 약어는 sp이며, 다음과 같은 옵션들이 제공된다.

설명옵션

서버 프로세스의 스케줄링을 막는 옵션이다.-v [서버 프로세스 이름]

서비스를 서버 프로세스별로 suspend를 한다.-p [서버 프로세스 ID]

-s 옵션과 함께 사용된다.

예) syspend(sp) -s svc_name [-p pid]

5.4.2. resume(rs)

동작이 중지된 서버 프로세스의 활동을 재개시킨다. 활동이 재개된 서버 프로세스는 큐에 대기 중이던 서

비스를 처리하기 시작하며 요청되는 서비스에 대해 처리 가능 상태가 된다. resume 명령어의 약어는 rs이

며, 다음과 같은 옵션이 제공된다.

설명옵션

서버 프로세스의 스케줄링을 재개하는 옵션이다.-v [서버 프로세스 이름]

서비스의 스케줄링을 재개하는 옵션이다.-s [서비스 이름]

서비스를 서버 프로세스별로 재개한다. -p 옵션을 사용하여 서비스를 서버

프로세스별로 suspend/resume하고자 할 때 suspend를 수행하는 경우 관련

-p [서버 프로세스 ID]

서비스가 수행 중일 경우는 수행이 완료된 후에 suspend가 진행되므로 시간

이 오래 걸릴 수 있다. 이 경우 tmadmin을 강제 종료시키면 해당 서비스가 재

개된다. suspend 이후 해당 서비스에 대한 요청은 큐에 쌓이게 된다. -s 옵션

과 함께 사용된다.

예) resume(rs) -s svc_name [-p pid]

제5장 Tmax 관리 도구 183

Page 200: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● suspend 상태의 서버 resume 처리방식 변경 및 추가 기동 제한

tmadmin에서 서버 프로세스를 suspend한 경우에 해당 프로세스를 tmdown 후 tmboot 하게 되면 해당

프로스세의 status가 자동으로 재개된다. 서버 프로세스가 suspend 된 상태에서는 해당 프로세스를

tmboot할 수 없도록 제한하고 있다.

$ tmboot -s svr02011

TMBOOT for node(tmaxh4) is starting:

Welcome to Tmax demo system: it will expire 2006/1/25

Today: 2005/12/19

(E) BOOT3020 svr02011 is suspended, resume(or tmdown) it first. [BOOT0038]

● 한 노드의 COUSIN 그룹에 속한 서버에 대한 suspend/resume

한 노드에 2개 이상의 서버 그룹이 COUSIN으로 설정된 경우 COUSIN 서버 그룹에 속한 모든 서버에

대하여 suspend/resume이 적용된다.

● 주의사항

ASQCOUNT의 설정은 SVR절에서 설정을 하며, 서버프로세스를 BLK으로 설정하기 위해선 -v 옵션을

사용해야 한다.

5.4.3. advertise, unadvertise

tmadmin의 advertise/unadvertise 명령어를 통하여 특정 서비스의 이름을 등록/등록해제(advertise/unad

vertise)를 할 수 있다.

특정 서비스를 advertise할 경우, CLH가 관리하는 서버별 서비스의 이름 테이블에 해당 서비스의 이름을

등록할 수 있으며 unadvertise할 경우 서버별 서비스의 이름 테이블에서 삭제하게 된다. 등록(advertise)은

서버 프로세스의 서버가 제공하는 새로운 서비스를 등록(advertise)할 수 있도록 하며 등록해제(unadvertise)

는 그 서버가 제공하는 서비스를 등록해제(unadvertise)할 수 있도록 한다. 등록해제(unadvertise)된 서비

스를 호출하고자 할 경우 TPENOENT 에러를 수신하게 된다

특정 서비스가 하나의 서버 프로세스에서 등록해제(unadvertise)가 되었다 하더라도, 다른 서버 프로세스

에서 제공되고 있으면 여전히 서비스 루틴을 수행할 수 있게 된다.

● 등록(advertise)

설명옵션

서비스 이름[-s]

서버 프로세스 PID[-p]

● 등록해제(unadvertise)

184 Tmax Administration Guide

Page 201: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

서비스 이름[-s]

서버 프로세스 PID[-p]

다음은 명령어의 사용 예제이다.

$$6 tmaxh4 (tmadm): st -p -x

CLH 0:

----------------------------------------------------------------

svr_name svgname spr_no status count avg svc

PID fail_cnt err_cnt min_time max_time

utime umin_time umax_time stime smin_time smax_time

----------------------------------------------------------------

svr2 svg1 36 RDY 0 0.000 -1

15285 0 0 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

svr2 svg1 37 RDY 0 0.000 -1

15286 0 0 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

svr2 svg1 38 RDY 0 0.000 -1

15287 0 0 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

----------------------------------------------------------------

TOTAL COUNT = 0

TOTAL SVCFAIL COUNT = 0

TOTAL ERROR COUNT = 0

TOTAL RUNNING COUNT = 0

$$7 tmaxh4 (tmadm): unadvertise -s TOUPPER –p 15287

TOUPPER is unadvertise

$$8 tmaxh4 (tmadm): st -s

CLH 0:

----------------------------------------------------------------

svc_name svr_name count cq_cnt aq_cnt q_avg avg status

----------------------------------------------------------------

TOUPPER svr2 0 0 0 0.000 0.000 PUNADV

$$10 tmaxh4 (tmadm): advertise -s TOUPPER –p 15287

TOUPPER is advertise

$$11 tmaxh4 (tmadm): st -s

제5장 Tmax 관리 도구 185

Page 202: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

CLH 0:

----------------------------------------------------------------

svc_name svr_name count cq_cnt aq_cnt q_avg avg status

----------------------------------------------------------------

TOUPPER svr2 0 0 0 0.000 0.000 RDY

5.4.4. restat

특정 서버 프로세스 혹은 모든 서버 프로세스의 통계 정보를 초기화한다. 마스터 모드로 사용할 때만 가능

하다.

설명옵션

지정된 서버 프로세스의 통계 정보를 초기화한다.- v [서버 프로세스 이름]

모든 서버 프로세스의 통계 정보를 초기화한다.- a

5.4.5. rebootsvr(rbs)

rbs(Reboot Server Process)는 현재 사용 중인 서버 프로세스를 새로운 프로세스로 변경한다.

TMAX_BKAPPDIR를 '.profile'의 환경변수에 지정하고 새로운 프로그램의 실행파일로 지정한다.

(예:$TMAXDIR/bkappbin)에 옮기고 다음의 명령어를 수행한다.

$$1 tmax1 (tmadm): rbs new_file old_file

설명항목

새 파일 이름new_file

사용 중인 파일 이름old_file

해당 이름의 서버 프로세스가 2개 이상일 경우, 해당 프로세스를 모두 종료시키고 새로운 프로세스를 기

동시켜 처리를 하게 되면 업무의 공백상태가 발생하게 된다. 따라서 이 경우 서버 프로세스를 하나씩 종료

시키면서 기동된다.

예를 들어 svr1 서버의 MIN=2인 상황에서 rbs를 실행시켰을 경우 다음과 같은 순서로 rbs가 수행된다.

1. svr1 1 종료

2. bk_appbin 디렉터리에 임시파일(_rbs00_svr1)을 복사

3. 기동

4. svr1 2 종료

186 Tmax Administration Guide

Page 203: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

5. bk_appbin 디렉터리에 임시파일(_rbs00_svr1)을 복사

6. 기동

다음은 rbs 수행 과정이다.

1. .profile 에 아래와 같이 환경변수를 추가한다.

export TMAX_BKAPPDIR=/data2/starbj81/tmax64/bk_appbin

2. 환경변수에 설정해준 것과 동일한 위치에 bk_appbin 디렉터리를 만든다

$mkdir bk_appbin

3. appbin 디렉터리에 있는 실행 파일을 bk_appbin 디렉터리로 복사한다.

$cp appbin/svr2 bkappbin/

4. tmadmin -m을 실행한 후 rbs를 실행시킨다.

● 현재 3개의 svr2 서버 프로세스가 기동된 경우

$$1 tmaxh2 (tmadm): rbs svr2 svr2

TMBOOT for node(tmaxh2) is starting:

TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting:

Fri Dec 19 11:21:06 2003

TMBOOT for node(tmaxh2) is starting:

TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting:

Fri Dec 19 11:21:06 2003

TMBOOT for node(tmaxh2) is starting:

TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting:

Fri Dec 19 11:21:06 2003

>> 3 servers booted using tmp execfile _rbs01_svr2

>> reboot svr /data2/starbj81/tmax64/appbin/svr2 finished

● 현재 1개의 svr2 서버 프로세스가 기동된 경우

$$1 tmaxh2 (tmadm): rbs svr2 svr2

>> suspend ok

>> down ok

>> cp ok

>> boot ok

>> resume ok

>> reboot svr /data2/starbj81/tmax64/appbin/svr2 finished

제5장 Tmax 관리 도구 187

Page 204: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

5. ps를 이용하여 서버 프로세스가 정상적으로 기동되었는지 확인한다.

● 현재 3개의 svr2 서버 프로세스가 기동된 경우

$ps –ef | grep svr2

starbj81 21710 1 0 11:46:32 pts/ts 0:00 _rbs00_svr2 -b -21709

-S svr2 -s svr2 -d -1 -v 21689

starbj81 21713 1 0 11:46:32 pts/ts 0:00 _rbs00_svr2 -b -21712

-S svr2 -s svr2 -d -1 -v 21689

starbj81 21716 1 0 11:46:32 pts/ts 0:00 _rbs00_svr2 -b -21715

-S svr2 -s svr2 -d -1 -v 21689

● 현재 1개의 svr2 서버 프로세스가 기동된 경우

$ps –ef | grep svr2

starbj81 21607 1 0 11:43:46 pts/ts 0:00 svr2 -s svr2 -g 2

동시성 보장 서버 교체동시성 보장은 서로 다른 버전의 프로세스가 동시에 서비스를 수행하지 않도록 제한하는 것을 의미한다.

rbs 수행할 경우 동시성 보장 및 변경되지 않은 서비스에 대한 무중단 서버 프로세스 교체가 가능하다.

$$1 tmaxh2 (tmadm): rbs [-S | -s svc_name,...] newfile svrname [svgname]

설명옵션

해당 서버의 전체 서비스를 suspend한다.-S

해당 서버의 하나의 서비스를 suspend한다.-s

● 해당 서버의 특정 서비스만 변경하고자 하는 경우

svr2 서버의 TOUPPER 서비스만 일시적으로 중단되며 다른 서비스는 중단되지 않고 계속 서비스 수행

이 가능하다.

$$1 tmaxh2 (tmadm): rbs -s TOUPPER svr2_new svr2

● 해당 서버의 특정 서비스 2개를 변경하고자 하는 경우

svr2 서버의 TOUPPER 및 TOLOWER 서비스만 일시적으로 중단되며 다른 서비스는 중단되지 않고 계

속 서비스 수행이 가능하다. svc_name을 여러 개를 지정하는 경우 콤마( , )로 구분하며 공백이 포함되

지 않아야 한다.

$$1 tmaxh2 (tmadm): rbs -s TOUPPER,TOLOWER svr2_new svr2

● 해당 서버의 모든 서비스를 변경하고자 하는 경우

svr2 서버의 모든 서비스가 일시적으로 중단될 수 있다.

188 Tmax Administration Guide

Page 205: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

$$1 tmaxh2 (tmadm): rbs -S svr2_new svr2

● 해당 서버 그룹에 속한 해당 서버의 모든 서비스를 변경하고자 하는 경우

svg1에 속한 svr2 서버의 모든 서비스가 일시적으로 중단될 수 있다.

$$1 tmaxh2 (tmadm): rbs -S svr2_new svr2 svg1

주의

1. rbs 에 옵션(-s 또는 -S 옵션)을 미지정할 경우, 동시성 보장이 안 된다.

2. 한 노드에 COUSIN 그룹으로 설정된 환경에서는 rbs에서 svgname별 rbs가 제한된다.

멀티 노드 동시성 보장 서버 교체멀티 노드 동시성 보장은 멀티 노드에서, 서로 다른 버전의 프로세스가 동시에 서비스를 수행하지 않도록

제한하는 것을 의미한다.

부하 분산이 설정된 멀티 노드에서 rbs를 수행할 때 동시성 보장 및 변경되지 않은 서비스에 대한 무중단

서버 프로세스 교체가 가능하다.

$$1 tmaxh2 (tmadm): mrbs [-S | -s svc_name,...] newfile svrname

설명옵션

해당 서버의 전체 서비스를 suspend한다.-S

해당 서버의 하나의 서비스를 suspend한다.-s

● 해당 서버의 특정 서비스만 변경하고자 하는 경우

svr2 서버의 TOUPPER 서비스만 일시적으로 중단되며 다른 서비스는 중단되지 않고 계속 서비스 수행

이 가능하다.

$$1 tmaxh2 (tmadm): mrbs -s TOUPPER svr2_new svr2

● 해당 서버의 특정 서비스 2개를 변경하고자 하는 경우

svr2 서버의 TOUPPER 및 TOLOWER 서비스만 일시적으로 중단되며 다른 서비스는 중단되지 않고 계

속 서비스 수행이 가능하다. svc_name을 여러 개 지정하는 경우 콤마( , )로 구분하며 공백이 포함되지

않아야 한다.

$$1 tmaxh2 (tmadm): mrbs -s TOUPPER,TOLOWER svr2_new svr2

● 해당 서버의 모든 서비스를 변경하고자 하는 경우

제5장 Tmax 관리 도구 189

Page 206: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

svr2 서버의 모든 서비스가 일시적으로 중단될 수 있다.

$$1 tmaxh2 (tmadm): mrbs -S svr2_new svr2

한 노드의 COUSIN 그룹에 속한 서버에 대한 rbs

한 노드에 2개 이상의 서버 그룹이 COUSIN으로 설정된 경우 COUSIN 서버 그룹에 속한 모든 서버에 대

하여 rbs(서버 교체)가 가능하다.

5.4.6. cfgadd(ca)

서비스 동적 추가

cfgadd(ca) 명령어는 Tmax 운영 도중, 특정 서버 프로그램에 서비스가 추가될 때에 해당 서버만 다운시킨

후 이 명령을 사용하여 동적으로 서비스를 추가할 수 있다.

$$1 tmax1 (tmadm) : cfgadd (ca) - i cfgfile

적용 순서는 다음과 같다.

1. 해당 환경파일의 이름을 다른 이름으로 복사한다.

$cp tmconfig.m tmchg.m

2. 새로 복사한 환경파일에 서비스명을 추가하고, cfl로 –o 옵션을 주어 다른 이름의 바이너리 환경파일을

만든다.

$cfl -i tmchg.m -o tmchg

3. gst로 서비스 테이블을 생성한다.

$gst -f tmchg

4. "tmadmin –m"을 수행하고, cfgadd(ca)를 이용하여 서비스를 추가시킨다.

$cfgadd -i tmchg

5. 해당 서버 프로그램을 컴파일한다.

$compile c svr1

6. 해당 서버 프로세스를 기동시킨다.

190 Tmax Administration Guide

Page 207: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

$tmboot –S svr1

참고

cfgadd(ca)를 사용하여 서비스를 동적으로 추가할 때 제약사항은 cfgadd(ca) 사용하여 동적으로 추

가할 때 제약사항을 참고한다.

서버 동적 추가

적용 순서는 다음과 같다.

1. 새로운 서버 추가 환경파일 tmchg.m을 만든 후 추가 환경만 등록시킨다.

<tmchg.m>

*SERVER

hello SVGNAME=svg1

*SERVICE

HELLO SVRNAME=hello

2. 환경파일을 컴파일한다.

cfl -i tmconfig.m -a tmchg.m -o tmchg

- tmconfig.m : 기존의 환경파일

- tmchg.m : 서버 추가 환경파일

3. 서비스 테이블을 생성한다.

gst -f tmchg

4. cfgadd -i로 환경파일을 추가한다.

tmaxi1@dhjang ./config > tmadmin -m

$$3 tmaxi1 (tmadm): si

-------------------------------------------------------------

clh svrname (svri) status count qcount qpcount emcount

-------------------------------------------------------------

0 tmaxgw ( 0) RDY 0 0 0 0

0 toupper ( 18) RDY 0 0 0 0

$$4 tmaxi1 (tmadm): cfgadd -i tmchg

config is successfully added

$$5 tmaxi1 (tmadm): si

-------------------------------------------------------------

clh svrname (svri) status count qcount qpcount emcount

제5장 Tmax 관리 도구 191

Page 208: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

-------------------------------------------------------------

0 tmaxgw ( 0) RDY 0 0 0 0

0 toupper ( 18) RDY 0 0 0 0

0 hello ( 19) NRDY 0 0 0 0

아직 hello 서버는 NRDY 상태이다.

5. tmboot -S hello -f tmchg를 입력한다.

tmaxi1@dhjang ./config > tmboot -S hello -f tmchg

TMBOOT for node(tmaxi1) is starting:

Welcome to Tmax demo system: it will expire 2002/8/31

Today: 2002/8/19

TMBOOT: SVR(hello) is starting: Mon Aug 19 15:37:44 2002

6. tmadmin에서 hello 서버가 RDY 상태인지 확인한다.

$$6 tmaxi1 (tmadm): si

-------------------------------------------------------------

clh svrname (svri) status count qcount qpcount emcount

-------------------------------------------------------------

0 tmaxgw ( 0) RDY 0 0 0 0

0 toupper ( 18) RDY 0 0 0 0

0 hello ( 19) RDY 0 0 0 0

추가 명령어 설명

- tmboot -f tmchg

- mdown -f tmchg

참고

cfgadd(ca)를 사용하여 서비스 동적추가시 제약사항은 cfgadd(ca) 사용하여 동적으로 추가할 때 제

약사항을 참조한다.

서버 그룹 동적 추가

서버 그룹을 동적으로 추가하는 방법은 새로운 추가 환경파일만 조금 다르고 나머지는 동일하다. 새로 등

록되는 서버 그룹과 서버와 서비스를 추가 환경파일로 만든다. 그외의 과정은 서버를 동적으로 추가하는

방법과 동일하다.

<tmchg.m>

*SVRGROUP

svg2 NODENAME = "aix5l"

192 Tmax Administration Guide

Page 209: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

*SERVER

svr3 SVGNAME = svg2, MIN = 1, MAX = 10

*SERVICE

FDLTOUPPER SVRNAME = svr3

FDLTOLOWER SVRNAME = svr3

참고

cfgadd(ca)를 사용하여 서버 그룹을 동적으로 추가할 때 제약사항은 cfgadd(ca) 사용하여 동적으로

추가할 때 제약사항을 참조한다.

노드 동적 추가

cfgadd를 이용하여 노드를 동적으로 추가할 수 있다. 또한 COUSIN 서버 그룹이 속한 노드도 동적으로 추

가할 수 있다.

적용 순서는 다음과 같다.

1. 환경파일을 작성한다.

<tmconfig.m>

*DOMAIN

tmax1 SHMKEY =@SHMEMKY@, MINCLH=1, MAXCLH=3,

TPORTNO=@TPORTNO@, BLOCKTIME=300, MAXCPC =100,

RACPORT=@TRACPORT@

*NODE

@HOSTNAME@ TMAXDIR = "@TMAXDIR@",

APPDIR = "@TMAXDIR@/appbin",

@RMTNAME@ TMAXDIR = "@RMTDIR@",

APPDIR = "@RMTDIR@/appbin",

*SVRGROUP

svg1 NODENAME = "@HOSTNAME@",COUSIN="svg2",LOAD=2

svg2 NODENAME = "@RMTNAME@",LOAD=1

*SERVER

svr2 SVGNAME = svg1

*SERVICE

TOUPPER SVRNAME = svr2

TOLOWER SVRNAME = svr2

<tmconfig_add.m>

제5장 Tmax 관리 도구 193

Page 210: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

*NODE

@RMTNAME2@ TMAXDIR = "@RMTDIR2@",

APPDIR = "@RMTDIR2@/appbin",

*SVRGROUP

svg1 NODENAME = "@HOSTNAME@",COUSIN="svg2,svg3",LOAD=2

svg3 NODENAME = "@RMTNAME2@",LOAD=1

2. 추가된 새로운 노드에 racd 를 기동한다.

Node3>$ racd -k

3. 환경파일을 컴파일한다. 새로운 노드가 추가된 환경파일 tmconfig_add.m을 컴파일한다. 컴파일 시 –o

옵션을 주어 다른 이름의 이진 환경파일을 만든다.

node1>$cfl -i tmconfig.m -a tmconfig_add.m –o tmchg

CFL is done successfully for node(node1)

CFL: rcfl start for rnode (node2)

CFL is done successfully for node(node2)

CFL: rcfl start for rnode (node3)

CFL is done successfully for node(node3)

4. 서버를 컴파일한다. 새로 추가할 노드의 서버를 컴파일한다.

node3>$ gst -f tmchg

node3>$ compile c svr2

5. 동적 노드를 추가한다. tmadmin의 cfgadd 명령어를 통하여 동적으로 노드를 추가한다. 주의할 점은 각

각의 노드에서 tmadmin –l 로 모두 해당 명령어를 실행한다.

아래는 기존에 node1, node2가 존재하는 상황에서 node3를 추가할 경우에 대한 예제이다.

# node1

$ node1>tmadmin –l -m

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$2 node1 (tmadm): cfgadd -i tmchg

(I) TMM0211 General Infomation : CFGADD started [TMM0902]

(I) TMM0211 General Infomation : CFGADD completed [TMM0907]

config is successfully added

# node2

$ node2>tmadmin –l -m

--- Welcome to Tmax Admin (Type "quit" to leave) ---

194 Tmax Administration Guide

Page 211: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

$$2 node2 (tmadm): cfgadd -i tmchg

(I) TMM0211 General Infomation : CFGADD started [TMM0902]

(I) TMM0211 General Infomation : CFGADD completed [TMM0907]

config is successfully added

6. 새로 추가된 노드(node3)를 기동한다.

Node3>tmboot -n tmaxh4 -f tmchg

TMBOOT for node(tmaxh4) is starting:

Welcome to Tmax demo system: it will expire 2008/11/23

Today: 2008/9/24

TMBOOT: TMM is starting: Wed Sep 24 11:11:59 2008

TMBOOT: CLL is starting: Wed Sep 24 11:11:59 2008

(I) TMM0211 General Infomation : node register (nodeno = 0(0)) success [TMM0404]

(I) TMM0211 General Infomation : node register (nodeno = 1(1)) success [TMM0404]

TMBOOT: CLH is starting: Wed Sep 24 11:11:59 2008

(I) CLH9991 Current Tmax Configuration: Number of client handler(MINCLH) = 1

Supported maximum user per node = 7966

Supported maximum user per handler = 7966 [CLH0125]

TMBOOT: TLM(tlm) is starting: Wed Sep 24 11:11:59 2008

TMBOOT: SVR(svr2) is starting: Wed Sep 24 11:11:59 2008

7. 새로 추가된 노드를 확인한다. 노드가 정상적으로 추가 되었는지 확인한다.

node1>tmadmin

TMADMIN for rnode (node2): starting to connect to RAC

TMADMIN for rnode (node3): starting to connect to RAC

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 node1 (tmadm): ti

Tmax System Info: DEMO version 4.0 SP #3 Fix #8:

expiration date = 2008/11/22

maxuser = UNLIMITED,

domaincount = 1,

nodecount = 3,

svgrpcount = 3,

svrcount = 9, svccount = 6

rout_groupcount = 0, rout_elemcount = 0

cousin_groupcount = 1, cousin_elemcount = 3

backup_groupcount = 0, backup_elemcount = 0

Tmax All Node Info: nodecount = 3:

----------------------------------------------------------------

no name portno racport shmkey shmsize minclh maxclh

----------------------------------------------------------------

제5장 Tmax 관리 도구 195

Page 212: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

0 node1 8350 3155 88350 225760 1 3

1 node2 8350 3155 88350 225760 1 3

2 node3 8350 3155 88350 225760 1 3

$$2 (tmadm): st -s

CLH 0:

--------------------------------------------------------------

svc_name svr_name count cq_cnt aq_cnt q_avg avg status

--------------------------------------------------------------

TOLOWER svr2 0 0 0 0.000 0.000 RDY

TOUPPER svr2 0 0 0 0.000 0.000 RDY

Msg from rnode(node2):

CLH 0:

--------------------------------------------------------------

svc_name svr_name count cq_cnt aq_cnt q_avg avg status

--------------------------------------------------------------

TOLOWER svr2 0 0 0 0.000 0.000 RDY

TOUPPER svr2 0 0 0 0.000 0.000 RDY

Msg from rnode(node3):

CLH 0:

--------------------------------------------------------------

svc_name svr_name count cq_cnt aq_cnt q_avg avg status

--------------------------------------------------------------

TOLOWER svr2 0 0 0 0.000 0.000 RDY

TOUPPER svr2 0 0 0 0.000 0.000 RDY

cfgadd(ca) 사용하여 동적으로 추가할 때 제약사항

cfgadd(ca)사용하여 동적으로 추가할 때 아래와 같은 제약사항이 있다.

● CLH를 동적으로 제거한다.

● 노드를 동적으로 추가 및 제거한다.

● 서버 그룹 추가할 때 XA 그룹인 경우 TMS를 추가한다.

● 게이트웨이를 추가 및 제거한다.

● RQ를 추가 및 제거한다.

● COUSIN/BACKUP이 있는 서버 그룹을 추가 및 제거한다.

196 Tmax Administration Guide

Page 213: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

● COUSIN/BACKUP이 있는 게이트웨이를 추가 및 제거한다.

● COUSIN/BACKUP이 있는 서버 그룹에 동적으로 추가된 서비스를 제거한다.

● 서비스를 추가할 때 기존 서비스의 마지막에 설정하여 추가를 할 수 있다.

● 서비스, 서버, 서버 그룹을 추가할 때, CFL을 이용해 동적추가를 위한 이진 환경파일을 만든다.

CFL의 –a 옵션을 사용하지 않고 만든 이진 환경파일을 동적 추가하게 되면, 다음과 같은 에러메시지가

출력된다.

(E) ADM2048 Engine type mismatch (0): 'a' option must be used [ADM0417]

5.4.7. set

현재 설정되어 있는 환경파일의 설정값을 동적으로 변경할 수 있는 명령어이다. 변경 가능항목은 tmadmin

에서 cfg 명령어를 통해서 확인할 수 있다. 각 항목 중에서 괄호로 약어가 표시된 항목이 동적으로 변경 가

능한 항목이다.

$set -d[g, v, s] 도메인[서버 그룹, 서버, 서비스]명 항목 값

다음은 명령어 사용 예제이다.

$$1 tmax1 (tmadm): set -d res1 bt 100

$$1 tmax1 (tmadm): set -g svg1 ld 5

$$1 tmax1 (tmadm): set -v kfdl1 mq 1000

$$1 tmax1 (tmadm): set -s SYNC pr 100

$$1 tmax1 (tmadm): set -n tmaxh4 cb n

$$1 tmax1 (tmadm): set -s svc_name pr 99

5.4.8. qpurge(qp)

업무의 폭주 현상이 발생하여 많은 업무가 쌓여 정상적으로 거래를 처리하지 못하는 경우, 현재 큐에 누적

되어 있는 서비스 요청을 삭제하는 기능이다.

하루에도 수십 만 건의 업무를 처리하는 은행이나 관공서에서 유용하게 사용될 수 있는 기능이다. 삭제된

업무는 클라이언트의 재요청을 통해 다시 처리될 수 있다. Tmax에서는 서버 프로세스별로 큐를 관리함으

로써 관리자는 특정 서버별로 큐를 삭제할 수 있어 타 업무의 효과적인 수행에도 도움을 준다.

-s 옵션을 사용해 큐에 쌓여있는 특정 서비스에 대한 요청을 삭제할 수도 있다.

$$1 tmax1 (tmadm): qp -v sdlsel

$$1 tmax1 (tmadm): qp -s TOUPPER

제5장 Tmax 관리 도구 197

Page 214: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

Queue Purge 명령어의 약어는 qp이며, 다음과 같은 옵션들이 제공된다.

설명옵션

큐에 쌓여있는 특정서버에 대한 요청을 삭제한다.-v [서버 프로세스 이름]

큐에 쌓여있는 특정 서비스에 대한 요청을 삭제한다.-s [서비스 이름]

qp를 통해 삭제된 서비스는 클라이언트에게 TPEQPURGE(tperrno = 27)를 반환하게 된다. 따라서 클라이

언트는 이에 맞게 적절한 대처를 할 수 있다.

qp의 내역과 삭제된 클라이언트 ID는 slog에 함께 기록된다.

5.4.9. discon(ds)

현재 접속되어 있으나 아무 일도 수행하지 않는 클라이언트를 강제로 연결을 해제한다. 클라이언트 정보

를 얻을 수 있는 ci 명령어로 확인 후 사용한다.

ds [-h clhno][-f]{-a | -n | -i idle_time | -c clid | -A}

설명옵션

해당 CLH에 연결된 클라이언트 접속을 해제한다.-h [clhno]

해당 CLH에 접속되어 있는 모든 클라이언트의 접속을 해제한다.-a

-h 옵션이 적용되어 있지 않을 경우, 기본값으로 0번 CLH에 접속되어 있는

클라이언트의 연결이 해제된다.

정확한 정보가 없는 클라이언트와의 연결을 해제한다. "tpalloc"로 할당된 버

퍼는 사용하지 않는다.

-n

지정된 시간(초 단위)을 초과한 세션의 클라이언트와의 접속을 해제한다.-i [idle time]

클라이언트에게 부여한 ID 번호로 접속을 해제한다.-c [clid]

클라이언트와의 접속을 즉시 해제하는 옵션이다.-f

모든 CLH에 접속되어 있는 클라이언트와의 접속을 해제한다.-A

5.4.10. logend

관리자는 tmadmin을 사용하여 여러 가지 실시간 정보를 조회할 수 있다. 주어진 상황에 맞는 즉각적이고

효과적인 조치를 취할 수 있다. tmadmin은 통계적 정보 분석을 위해 관리자 데이터를 로그로 남길 수 있

다. Logging 파일은 현재 디렉터리에 만들어진다. 로그 데이터를 통해 업무 폭주 시간, 불필요한 서버 프

로세스, 큐잉 상태 등을 확인하여 전반적인 시스템 분석이 가능하다.

명령어 사용은 다음과 같다. logstart 명령어를 통해서 로그 처리를 시작할 수 있으며 logend 명령어를 통

해 끝낸다.

198 Tmax Administration Guide

Page 215: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

$$1 tmax1 (tmadm): logstart filename

$$1 tmax1 (tmadm): logend

5.4.11. chtrc

TMAX_TRACE는 Run-time tracing facility로 Tmax 애플리케이션의 실행에 대한 Run-time tracing이 이루

어질 수 있도록 하는 기능이다. 이 기능은 환경변수 TMAX_TRACE를 설정함으로써 사용할 수 있으며, 시

스템 운영 중에 동적으로 설정을 변경하고자 하는 경우에는 tmadmin의 chtrc 명령어를 사용할 수 있다.

$$1 tmaxs1 (tmadm) : chtrc [-g, -v, -i] [svgname, server, sprno] -s newspec

● 특정 노드에 속하는 모든 서버의 spec을 변경하고자 하는 경우 (단일노드)

$$1 tmaxs1 (tmadm): chtrc -s newspec

● 멀티 노드 환경에서 특정 노드에만 새로운 TRACE spec을 적용하고자 할 경우

$$1 tmaxh3 (tmadm): nodeset $HOSTNAME

node is set to $HOSTNAME

$$2 tmaxh3 (tmadm): chtrc –s newspec

● 특정 서버 그룹에 속하는 모든 서버의 spec을 변경하고자 하는 경우

$$1 tmaxs1 (tmadm): chtrc -g svgname -s newspec

● 서버의 spec을 변경하고자 하는 경우

$$3 tmaxs1 (tmadm): chtrc -g svgname -v server -s newspec

● 특정 서버의 spec을 변경하고자 하는 경우

$$1 tmaxs1 (tmadm): chtrc -g svgname -s newspec

● 특정 서버 프로세스의 spec을 변경하고자 하는 경우

$$4 tmaxs1 (tmadm): chtrc -g svgname -i sprno -s newspec

5.4.12. chlog

특정 에러 상황에 보다 신속하게 대응하기 위하여 tmadmin의 chlog 명령어를 이용하여 런타임 도중에 로

그 레벨을 동적으로 변경할 수 있다. 로그 레벨 변경 기능을 사용하여 로그를 확인하기 위해서는 반드시

해당 모듈을 디버그 모드로 사용해야 한다.

tmadmin의 cfg 명령어를 통하여 로그 레벨이 실제로 변경되었는지 확인할 수 있다.

제5장 Tmax 관리 도구 199

Page 216: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

$$1 tmaxs1 (tmadm) : chlog [-t, -c, -v svrname, -g svgname, -m] -l loglvl

설명옵션

TMM의 로그 레벨을 설정한다.-t

CLH의 로그 레벨을 설정한다.-c

지정된 서버에 대한 로그 레벨을 설정한다.-v [서버 이름]

지정된 서버 그룹에 대한 로그 레벨을 설정한다.-g [서버 그룹 이름]

TMS에 대한 로그 레벨을 설정한다.-m

실제 로그 레벨을 설정한다. COMPACT, BASIC, DETAIL, DEBUG1, DEBUG2,

DEBUG3, DEBUG4 중 하나를 선택하여 설정한다. 오른쪽으로 설정할수록

더 자세한 로그 확인이 가능하다.

-l [로그 레벨]

● TMM의 동적 로그 레벨 변경

tmaxh2:/data1/starbj81/tmax/config> tmadmin -l -m

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmaxh2 (tmadm): chlog -t -l DEBUG4

log level is updated

$3 tmaxh2 (tmadm): cfg -n

node_name = tmaxh2, hostname = tmaxh2, node_no = 1

...

tmmloglvl = DEBUG4,

...

● CLH의 동적 로그 레벨 변경

tmaxh2:/data1/starbj81/tmax/config> tmadmin -m -l

--- Welcome to Tmax Admin (Type "quit" to leave) ---

$$1 tmaxh2 (tmadm): chlog -c -l COMPACT

log level is updated

$$2 tmaxh2 (tmadm): cfg -n

node_name = tmaxh2, hostname = tmaxh2, node_no = 1

tmmloglvl = DEBUG4,

clhloglvl = COMPACT,

...

● TMS의 동적 로그 레벨 변경

$$3 tmaxh4 (tmadm): chlog -m -g svg32306X -l debug3

log level is updated

$$4 tmaxh4 (tmadm): cfg –g

200 Tmax Administration Guide

Page 217: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

svg_name = svg32306X, svg_no = d

tmsloglvl = DEBUG3,

...

● 특정 서버 그룹의 동적 로그 레벨 변경

$$4 tmaxh2 (tmadm): chlog -g svg3 -l DETAIL

log level is updated

$$5 tmaxh2 (tmadm): cfg -g

svg_name = svg3, svg_no = 10002

loglvl = DETAIL

...

5.4.13. txcommit/txrollback

트랜잭션 처리 중, TMS 장애 혹은 네트워크 장애로 인하여 일정 시간 트랜잭션이 처리되지 않을 경우, 관

리자가 commit/rollback을 재이슈하여 해당 트랜잭션을 종료하는 기능이다. txcommit의 경우는 PHASE 2

단계에서 Decision이 commit일 경우에만 사용 가능하며 txrollback의 경우는 PHASE 1단계 또는 PHASE

에서 Decision이 rollback일 경우에만 사용 가능하다.

$$1 tmaxh4 (tmadm): txrollback(txr) | txcommit(txc) [-w] [-y]

<upper-global-xid><lower-global-xid>

설명옵션

도메인 서브 트랜잭션일 경우 사용한다.[ -w ]

txcommit/txrollback의 확인 과정을 거치지 않는다.[ -y ]

주의

txcommit/txrollback은 txquery에서 조회된 트랜잭션에 대한 재처리 도구이며, 재이슈 후 처리 결과를

다시 txquery를 통해서 확인해야 한다.

제5장 Tmax 관리 도구 201

Page 218: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와
Page 219: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

Appendix A. 게이트웨이 CLOPT 절

Tmax 도메인 게이트웨이, Java 게이트웨이, Tuxedo 게이트웨이의 CLOPT 절의 설정 옵션에 대해 설명한

다.

A.1. Tmax 트랜잭션 도메인 게이트웨이GWTYPE이 "TMAX"인 게이트웨이의 CLOPT 절의 옵션을 설명한다.

설명옵션

“3.2.6. GATEWAY 절”의 CLOPT에서 -r 옵션 설명과 동일하다.[-r]

“3.2.6. GATEWAY 절”의 CLOPT에서 -h 옵션 설명과 동일하다.[-h]

옵션이 설정되지 않을 경우 리모트 게이트웨이와 연결하지 않은 상태에서는

요청이 있을 경우에만 리모트 게이트웨이로 연결을 시도한다.

[-i]

이 옵션이 설정되어 있는 경우에는 설정의 NLIVEINQ 주기로 연결을 시도한

다.

이 연결이 없는 상태에서 요청은 TPNOREADY로 클라이언트에게 응답한다.

리모트 게이트웨이의 버전이 Tmax3.x 버전일 경우 설정한다. 리모트 게이트

웨이에서 시작한 트랜잭션에 대해 로컬에서 팬딩 트랜잭션이 발생한 경우 트

[-R DECISION]

랜잭션에 대해서 게이트웨이에서 rollback할 것인지 commit할 것인지에 대해

서 결정해야 한다.

- RBK : rollback을 한다.

- COM : commit을 한다.

- IGN : 아무 작업을 하지 않는다.

게이트웨이와 CLH 연결이 종료되어 있는 경우 TIME 주기로 CLH에 연결을

시도한다.

[-c TIME]

A.2. Tmax Non-Transaction 도메인 게이트웨이GWTYPE이 "TMAXNOTX"인 게이트웨이의 CLOPT 절의 옵션을 설명한다.

설명옵션

Tmax 트랜잭션 도메인 게이트웨이와 동일하다.[-h]

Appendix A. 게이트웨이 CLOPT 절 203

Page 220: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

Tmax 트랜잭션 도메인 게이트웨이와 동일하다.[-i]

Tmax 트랜잭션 도메인 게이트웨이와 동일하다.[-c TIME]

A.3. Java 게이트웨이GWTYPE이 "JEUS"인 게이트웨이의 CLOPT 절의 옵션을 설명한다.

설명옵션

디버그 레벨을 결정한다.[-D DEBUG_LEVEL]

- 1 : 요청, 응답 관련 로그를 출력한다.

- 2 : XA 관련 로그를 출력한다.

- 4 : 메시지 DUMP 관련 로그를 출력한다.

파이프 ( | ) 연산을 하여 출력할 로그를 결정할 수 있다.

표준 에러를 저장할 로그 파일 경로를 설정한다.[-e LOGFILE_PATH]

표준 출력을 저장할 로그 파일 경로를 설정한다.[-o LOGFILE_PATH]

WebT 3.14 이후에는 항상 설정해야 한다.[-r]

wWebT 3.x 버전과 WebT 5.x에서 헤더 설정을 기본값으로 할 경우에는 1로

설정한다.

[-h VERSION]

WebT 5.x 에서 header 설정을 extendedV4로 할 경우에는 4로 설정한다.

여러 도메인에서 한 JTmax로 연결할 때 반드시 설정해야한다. 여러 도메인

이 한 JTmax로 연결하는 환경에서 옵션이 미설정될 때 복구 작업이 비정상

적으로 동작한다.

[-t]

A.4. Java Async 게이트웨이GWTYPE이 "JEUS_ASYNC"인 게이트웨이의 CLOPT 절의 옵션을 설명한다.

설명옵션

디버그 레벨을 결정한다.[D DEBUG_LEVEL]

- 1 : 요청, 응답 관련 로그를 출력한다.

- 2 : XA 관련 로그를 출력한다.

- 4 : 메시지 DUMP 관련 로그를 출력한다.

파이프( | ) 연산을 하여 출력할 로그를 결정할 수 있다.

204 Tmax Administration Guide

Page 221: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

표준 에러를 저장할 로그 파일 경로를 설정한다.[-e LOGFILE_PATH]

표준 출력을 저장할 로그 파일 경로를 설정한다.[-o LOGFILE_PATH]

항상 설정해야 한다.[-r]

항상 4로 설정해야 한다.[-h 4]

외부와 연결된 커넥션으로 alive 체크를 시도하는 주기 및 설정한 시간 이상

으로 응답이 오지 않는다면 연결을 종료시킨다.

[-A TIME]

RGWADDR, RGWPORTNO와 설정한 파일의 "IP:PORT" 리스트로 연결을

맺는다.

[-a FILE_PATH]

한 트랜잭션에 대해서는 같은 채널로 메시지를 전송한다.

기본은 라운드 로빈으로 각 채널당 한 번씩 메시지를 전송한다.( 파일은 라인

당 하나의 "ip:port" 형식으로 입력한다.)

설정하면 로그를 출력할 때 alive 체크 메시지는 출력하지 않도록 한다.[-H]

여러 도메인에서 한 JTmax로 연결할 때 반드시 설정해야 한다. 여러 도메인

이 한 JTmax로 연결하는 환경에서 이 옵션을 미설정하는 경우 복구 작업이

비정상적으로 동작한다.

[-t]

게이트웨이에서 JTmax로 요청할 수 있는 요청 제한 건수를 설정한다. 설정

하지 않는 경우 기본값은 500이다.

[-m MAX_COUNT]

A.5. Tuxedo 게이트웨이GWTYPE이 "TUXEDO"인 게이트웨이의 CLOPT 절의 옵션을 설명한다.

설명옵션

Tuxedo의 도메인 게이트웨이와 연결하기 위해서 사용하는 도메인 이름을 설

정한다. 이 항목이 설정되어 있지 않으면 "3005 gateway name (-a domname)

not defined" 에러 메시지를 출력한다.

[-a LOCAL_DO

MAIN_NAME]

표준 에러를 저장할 로그 파일 경로를 설정한다.[-e LOGFILE_PATH]

표준 출력을 저장할 로그 파일 경로를 설정한다.[-o LOGFILE_PATH]

ACL을 사용하는 경우 Tmax 클라이언트가 시작하지 않은 call이 요청될 수

있으므로 UID를 지정한다.

[-u UID]

Tuxedo에서 전송하는 메시지 타입이 FML16일 경우 설정한다. 설정하지 않

으면 FML32로 처리한다.

[-F]

Tuxedo에서 전송하는 메시지 타입이 VIEW16일 경우 설정한다. 설정하지 않

으면 VIEW32로 처리한다.

[-v]

Appendix A. 게이트웨이 CLOPT 절 205

Page 222: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

설명옵션

Tuxedo 에서 Tmax로 연결을 시도할 때 인증 작업을 수행한다. REMOTE_DO

MAIN_NAME으로 로컬 도메인 이름이 설정된 Tuxedo 도메인 게이트웨이의

연결만을 허용하는 검사를 수행한다.

[-r REMOTE_DO

MAIN_NAME]

인증이 실패하면 "0046 incorrect local name(REMOTE_DOMAIN_NAME),

remote domain name(상대방 로컬 도메인 이름)" 에러 메시지를 출력한다.

A.6. Tuxedo Async 게이트웨이GWTYPE이 "TUXEDO_ASYNC"인 게이트웨이의 CLOPT 절의 옵션을 설명한다.

CLOPT 옵션 사용은 Tuxedo 게이트웨이와 동일하다.

206 Tmax Administration Guide

Page 223: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

색인

Symbols2PC, 113

Aadvertise, 184

BBLK, 173

Cca, 190

CAS, 3

cfg, 167

cfg -d, 167

cfg -g, 170

cfg -n, 169

cfg -s, 171

cfg -v, 170

cfg -w, 171

chtrc, 199

ci, 161

CLH, 2

clhsinfo, 181

CLL, 2

DDDR, 117, 120

DLM, 117

domain, 4

DOMAIN, 19

ds, 198

FFDLFILE, 12, 13

GGATEWAY, 19

GW, 3

Hhistory, 166

Llogend, 198, 199

NNODE, 19

NRDY, 161, 173

PPBLK, 173

PUNADV, 173

QQED, 161

qp, 197

Rr, 182

racd, 4

rbs, 186

RDY, 161, 173

restat, 186

ROUTING, 19

RQ, 19

rqs, 165

RQS, 3

rs, 183

RUN, 173

SSDLFILE, 12, 13

SERVER, 19

SERVICE, 19

set, 197

si, 161

색인 207

Page 224: Tmax Administration Guide · 2019-04-09 · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax®(이하 Tmax)을 사용하여 프로그램을 개발하는 사용자와

SLM, 117

slog, 9

smtrc, 180

sp, 183

st, 172

st -n, 178

st -o, 178

st -p, 173

st -s, 175

st -t, 176

st -x, 176

SVRGROUP, 19

Tti, 160

tlog, 9

tmadmin, 4

TMAX_BACKUP_ADDR, 12

TMAX_BACKUP_PORT, 12

TMAX_BKAPPDIR, 11

TMAX_CONNECT_TIMEOUT, 13

TMAX_DEBUG, 12, 14

TMAX_ERR_MSG, 12

TMAX_HOST_ADDR, 11, 13

TMAX_HOST_PORT, 11, 13

TMAX_PATHDIR, 12

TMAX_RAC_PORT, 12

TMAX_SEMANTICS, 12, 14

TMAX_STRING_NULL, 12

TMAX_TRACE, 12, 13

TMAXDIR, 11

TMAXHOME, 12

tmboot, 4

tmdown, 4

TMM, 2

tmmsinfo, 182

TMS, 3

TP모니터, 112

Txgwinfo, 179

txq, 162

Uulog, 9

ULOG, 13

UNADV, 173

unadvertise, 184

Unregisted, 173

도메인, 19

동적 관리, 6

분산 트랜잭션 처리, 112

서버 환경변수, 11

서비스 테이블, 143

정적 관리, 6

208 Tmax Administration Guide