제2장 명령어

내용 목차

2.1. cfl
2.2. etmm / eclh
2.3. fdlc
2.4. gst
2.5. mkcli
2.6. mkacl
2.7. mkgrp
2.8. mkpw
2.9. mksvr
2.10. racd
2.11. racdr
2.12. sdlc
2.13. svcrpt
2.14. tdlclean
2.15. tdlinit
2.16. tdlnm
2.17. tdlrm
2.18. tdlshm
2.19. tdlsync
2.20. tdlupdate
2.21. tencrypt
2.22. tmadmin
2.23. tmapm
2.24. tmaxlibver
2.25. tmaxtrace
2.26. tmboot
2.27. tmd
2.28. tmdown
2.29. tmmbfgen
2.30. tmsnmpd
2.31. tperr
2.32. uncfl
2.33. untmmbfgen
2.34. xwsdlgen

본 장에서는 Tmax에서 사용할 수 있는 명령어를 설명한다.

2.1. cfl

텍스트 형태의 Tmax 환경 파일을 컴파일하여 tmconfig(이진 Tmax 환경 파일)을 생성하는 명령어이다. 프로그램을 동작시키기 위해서는 프로그램에 맞는 환경 파일 정의가 필요하고 환경 파일의 정의가 완료된 후엔 환경 파일이 올바르게 생성되었는지 검증이 이루어져야 한다. cfl은 텍스트 형태로 작성된 Tmax 환경 파일을 이진 파일로 컴파일하는 명령어이다.

컴파일하는 중에 에러가 발견되면 이진 환경 파일을 만들지 않고 컴파일을 중단된다. 에러가 발견되지 않으면 이진 파일로 변환된 Tmax 환경 파일이 생성된다. 컴파일이 완료된 이진 Tmax 환경 파일은 gst, tmboot, tmdown 등에서 사용한다. 멀티 노드 환경에서 특정 노드의 환경 파일을 컴파일하고 싶은 경우에 [ -n node_name ] 옵션을 사용한다.

다음은 멀티 노드 감시 환경을 설명한다.

[그림 2.1] 멀티 노드 감시 환경

멀티 노드 감시 환경

  • 사용 방법

    $ cfl [-i 텍스트 Tmax 환경 파일명] [-o 이진 Tmax 환경 파일명]
          [-h] [-V] [-n node_name] [-A] [-v num] [-I] [-r][-x]
    항목설명
    [ -i 텍스트 Tmax 환경 파일명 ]컴파일 대상이 되는 원본 설정 파일인 텍스트 형태의 Tmax 환경 파일명을 설정한다. 디렉터리는 사용자가 지정할 수 있으며 지정하지 않았을 경우에 기본적으로 환경설정 디렉터리는 $TMAXDIR/config이다. 원본 설정 파일을 찾지 못한 경우에는 경고 메시지를 출력한다.
    [ -o 이진 Tmax 환경 파일명 ]컴파일 결과물인 이진 Tmax 환경 파일명을 설정한다. 경로와 함께 지정할 수 있으며, 경로가 지정되지 않은 경우 $TMAXDIR/config에 이진 Tmax 환경 파일이 생성된다. 옵션이 생략되면 파일명은 tmconfig로 생성된다.
    [ -h ]명령어 도움말 옵션이다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [ -n node_name ]멀티 노드 환경에서 특정 노드의 환경 파일을 컴파일하고 싶은 경우에 사용하는 옵션이다. 멀티 노드 환경에서 다른 노드를 관리하기 위해서는 racd를 설정해야 한다.
    [ -A ]

    서비스 접근 제어(제3단계 보안)를 사용할 때만 유효한 옵션이다.

    하나의 도메인 내에 있는 ACL 서비스에 대한 접근 권한은 모든 노드에서 동일하게 적용되어야 하므로 현재 노드의 $TMAXDIR/config/group, acl, user 파일을 같은 도메인에 속해 있는 다른 노드들의 $TMAXDIR/config에 배포해 주기 위한 옵션이다. 옵션을 사용하여 환경 파일을 컴파일할 경우에는 미리 mkgrp, mkpw, mkacl을 이용하여 group, acl, user 파일이 생성되어 있어야 한다.

    생성된 파일은 하나의 도메인 내에 있는 모든 노드들이 공용으로 사용하기 때문에 파일을 생성할 때 도메인에 속하는 노드의 모든 사용자를 고려해야 한다. group_name, group_id, user_name, user_id는 한 도메인을 통틀어서 unique하게 생성해야 한다. passwd 파일은 복사되지 않으므로 노드별로 생성하거나, 별도로 복사해야 한다.

    [ -v num ]

    num에는 0과 1을 지정할 수 있다. (기본값: 1)

    • 0: 멀티 노드를 구성하고 있는 노드가 모두 같은 타입의 머신이며 관리자가 노드별로 환경 파일을 관리하는 경우에 0으로 설정한다. 컴파일된 이진 파일은 각각의 머신으로 복사해서 관리한다.

    • 1: racd를 통해서 환경 파일이 자동적으로 머신에서 컴파일된다.

    [ -I ]기본적으로 cfl을 수행할 때 환경 파일 DOMAIN 절의 SHMKEY 항목에 설정한 값이 현재 사용 중이라면 해당 값의 UID를 비교하며, 다를 경우 에러 메시지가 발생한다. 해당 옵션은 shared memory 값의 현재 사용 여부 및 UID 동일 여부를 체크하지 않을 때 사용한다.
    [ -r ]

    cfl 수행 단계에서 ulimit –n으로 조회할 때 출력되는 현재 시스템의 사용 가능한 FD 최대 수를 미리 체크하여 사용자에게 알려준다. CLH 1개당 열 수 있는 최대 FD 개수를 미리 계산하여 체크한다.

    (I) CFL9991 Current Tmax Configuration: Number of client handler(MINCLH) = 2  
    Supported maximum user per node = 1380 
    Supported maximum user per handler = 691 [CFL5065] 

    Tmax 시스템에서 사용하는 FD 값이 시스템에서 사용 가능한 FD보다 더 크게 설정되어 있다면 다음과 같은 에러가 발생한다.

    (E) CFL9990 Current Tmax configuration contains more servers or nodes than current system can support[CFL5056]

    [-a Tmax 환경 파일명]동적 추가할 Tmax 환경 파일명을 지정한다. 서버 동적 추가의 경우 cfl을 이용하여 이진(binary) 환경 파일을 만들 때에는 [-a] 옵션을 반드시 사용해야 한다. 만약 이 옵션을 사용하지 않고 동적 추가한 경우에는 (E) ADM2048 에러가 발생한다. 자세한 내용은 Tmax Administration Guide”의 “5.5.6. cfgadd(ca)”를 참고한다.
    [ -Z ]

    현재 cfl에서 MAXSACALL/MAXCACALL 1024이하 제한되어 있으나, 이 제한을 해제하는 옵션이다.

    (예: - cfl -Z -i sample.m)

    [ -x ]

    환경설정 파일 SERVER절 설정의 TARGET 항목, CLOPT 항목의 -x 옵션을 사용하는 경우 실제로 존재하는 서버/서비스 이름인지 체크하는 옵션이다. 이 옵션을 사용하지 않으면 실제 서버나 서비스가 존재하지 않을 경우에 cfl 수행은 정상적으로 처리되지만, Tmax 시스템 기동시 문제가 발생할 수 있다.

    이 옵션을 사용한다면 이와 같은 경우에 다음과 같은 에러가 발생한다.

    (E) CFL3184 line %d(서버가 선언된 라인): invalid target server name %s(TARGET에 설정한 서버명)
    (E) CFL3183 line %d(서버가 선언된 라인): invalid service name %s(-x로 설정한 서비스명)

  • 적용 환경

    Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    • 다음은 /user1/tmax/temp 디렉터리에 있는 <basic> Tmax 환경 파일(텍스트 형태)을 컴파일하여 현재 디렉터리에 기본값으로 <tmconfig>라는 이진 Tmax 환경 파일을 생성하는 예제이다.

      $ cfl -i /user1/tmax/temp/basic
    • 다음은 디렉터리의 <ex_config>라는 텍스트 형태의 Tmax 환경 파일을 컴파일하여, /user1/tmax/bin 디렉터리에 <tmconfig>라는 이름으로 이진 Tmax 환경 파일을 생성하는 예제이다.

      $ cfl -i ex_config -o /user1/tmax/bin/tmconfig

참고

gst, tmboot, tmdown 명령어에 대한 자세한 내용은 각가 “2.4. gst”, “2.26. tmboot”, “2.28. tmdown”을 참고한다.

2.2. etmm / eclh

이벤트 기반 방식의 통신을 사용하여 기존의 통신 방식에 비해 많은 FD를 사용할 경우, 더 빠른 성능을 기대할 수 있다. 이벤트 기반 방식의 etmn과 eclh를 기존의 $TMAXDIR/bin에 있는 tmmclh로 바꿔서 사용한다. 명령어는 각 플랫폼별로 구분되어 지원한다.

  • 적용 환경

    각 플랫폼별로 지원 환경을 확인한다.

    플랫폼지원 환경
    HP, SUN/dev/poll
    LINUXepoll
    IBM AIX 5.3pollset

주의

이벤트 기반의 tmm, clh은 Tmax 5의 기본 바이너리에 포함되어 있지 않으므로 사용할 경우 별도로 요청해야 한다.

2.3. fdlc

필드 키 테이블을 컴파일하는 명령어이다. 필드 키 방식은 서버와 클라이언트 사이의 데이터 통신에서 구조체를 전송하는 방법처럼 전체 구조체의 항목을 전달하지 않고 필요한 항목만 전달한다. 항목을 전달하기 위해서는 각각의 항목을 구별할 수 있는 유일한 키가 있어야 한다. fdlc는 텍스트 형태로 정의된 필드키 테이블을 컴파일하여 필드 키를 생성하는 명령어이다.

  • 사용 방법

    $ fdlc {-a|c|d|u} [-f] [-h 헤더 파일명] {-i 필드 키 테이블 파일명} 
           [-jc|ji] [-o 결과물 이름] [-p 패키지명] [-x] [-r 출력될 파일명][-V]
    항목설명
    { -a }생성된 이진 형태의 파일에, 텍스트로 작성된 필드 키 테이블을 컴파일하여 필요한 부분을 추가하는 옵션이다. [-f] 옵션을 사용하여 대상 파일을 지정하며 기본 파일은 <tmax.fdl>이다. 중복되는 필드의 경우에 대해서는 새로운 값으로 대체된다.
    { -c }텍스트로 작성된 필드 키 테이블을 컴파일하여 이진 형태의 파일을 생성한다. 이미 이진 파일이 존재하면 새 내용을 대체한다. (기본값)
    { -d }생성된 이진 형태의 파일에 텍스트로 작성된 필드 키 테이블을 컴파일하여 필요한 부분을 삭제한다. [-f] 옵션을 사용하여 대상 파일을 지정하며 기본 파일은 <tmax.fdl>이다.
    { -u }생성된 이진 형태의 파일에 텍스트로 작성된 필드 키 테이블을 컴파일하여 필요한 부분을 수정하거나 추가하는 옵션이다. [-f] 옵션을 사용하여 대상 파일을 지정하며 기본 파일은 <tmax.fdl>이다.
    [ -f ]텍스트로 작성된 필드 키 테이블을 컴파일하여 필요한 부분을 추가, 수정, 삭제하는 경우 대상 파일을 지정하는 옵션이다.
    [ -h 헤더 파일명 ]헤더 파일명을 다른 이름으로 변경하고자 할 때 사용하는 옵션이다. [-h] 옵션 없이 컴파일하면 fdl 헤더 파일명은 <필드 키 테이블명_fdl.h>이다.
    { -i 필드 키 테이블 파일명 }클라이언트 프로그램과 서버 프로그램에서 사용될 필드 키 테이블을 정의한 파일을 지정한다. 필수 옵션이며 경로와 함께 지정할 수 있다.
    [ -jc|ji ]

    WebT에서 사용되는 것으로서 생성될 필드 정의 클래스의 형태를 지정한다.

    • ji : 인터페이스 형태의 필드 정의 클래스 파일을 생성한다.

    • jc : 클래스 형태의 필드 키 정의 Java 파일을 생성한다.

    [ -o 결과물 이름 ]컴파일 결과물을 다른 이름으로 변경하고자 할 때 사용하는 옵션이다. [-o] 옵션 없이 컴파일하면 fdl 파일명은 <tmax.fdl>이다.
    [ -p 패키지명 ]WebT에서 사용되는 옵션으로, 생성된 필드 정의 클래스의 패키지명을 주어진 값으로 설정한다.
    [ -x ]반드시 [-a] 옵션과 함께 사용되어야 하며 이 옵션이 사용되는 경우에는 중복되는 필드에 대해서 원본값을 유지한다.
    [ -r 출력될 파일명 ]이진 형태의 파일을 텍스트 파일로 환원하는 옵션이다. 반드시 [ -f fdl 파일명 ] 옵션과 함께 사용되어야 한다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
  • 적용 환경

    UNIX 운영 시스템과 MS - DOS 운영 시스템에서 지원된다.

  • 예제

    • 다음은 [-jc|ji] 옵션을 설정해서 생성한 Java 파일의 예이다.

      'number' 값으로 사용할 수 있는 값의 범위는 0 ~ 2^24-1(0~16777215) 이다.

      <demo.f>

      #demo.f
      #name   number  type    flags   comments
      INPUT   101     string  -       -
      OUTPUT  102     string  -       -
      $> fdlc -c -i demo.f -ji -jc webtdemo
    • 다음은 생성된 <demo_fdl.java>의 내용이다.

      package webtdemo;
      public interface demo_fdl {
          public int INPUT = (469762149);    /* number: 101 type: string */
          public int OUTPUT = (469762150);  /* number: 102 type: string */
      }
    • 다음은 현재 디렉터리에 있는 'demo.f' 필드 키 테이블 파일을 fdlc로 컴파일하는 명령이다. 컴파일 후 <tmax.fdl>과 <demo_fdl.h> 파일이 생성된다. <demo_fdl.h>는 필드 키가 정의되어있는 헤더 파일이다.

      $ fdlc -c -i demo.f
    • 다음은 이진 형태의 fdl 파일을 텍스트 파일로 환원하는 명령이다. 실행 후 <tmax.fdl> 파일에 정의된 필드키 테이블이 텍스트 형태로 <tmax_text.f> 파일에 생성된다.

      $ fdlc -f tmax.fdl -r tmax_text.f

필드 키

서버 / 클라이언트 데이터 통신에서 필드 키 버퍼를 사용하여 데이터를 보내는 경우 FDL 방식을 사용한다. FDL(Field Definition Language)은 필드 키 버퍼에 2개의 쌍으로 되어 있는 식별자와 식별자에 대응하는 데이터 값을 저장하여 서로 다른 프로세스 간에 데이터를 교환하는 방식이다. 필드 키 버퍼에서 각각의 식별자는 데이터 타입과 중복되지 않는 식별 번호의 조합으로 만들어지는데 이 식별자가 필드 키이다.

애플리케이션에서는 필드 키 대신에 프로그램에 대한 판독성을 높이기 위한 필드명을 사용한다. 각각의 필드명은 실행 중에 필드 키 이진 파일을 참조하여 필드 키로 전환되어 버퍼에 저장된다.

FDL 방식은 해당 필드를 사용하는 프로그램의 변경없이도 필드의 타입(type)과 길이를 변경할 수 있고 각 필드의 길이를 가변적으로 사용할 수 있다. 데이터 타입은 일반 C 언어에서 제공되는 Char, Short, Integer, Long, Float, Double, String, Carray 등의 타입을 지원하며 필드명은 16자까지 사용 가능하다.

fdlc 컴파일러는 텍스트 형태로 정의된 필드 키 정의 파일을 컴파일하여 사용자 프로그램에서 참조되는 필드 키를 이진 파일을 생성한다. 사용되는 필드 키 정의 파일은 텍스트 파일이며 테이블 파일명은 <.f> 형식의 파일이어야 한다. 기본 결과물은 <tmax.fdl>과 <필드 키 정의 파일명_fdl.h>이다. 서버 프로그램은 생성된 헤더 파일을 참조하여 컴파일되어 필드의 데이터를 저장하거나 읽어올 수 있다. 클라이언트는 fdlc 명령어로 생성된 파일을 FDLFILE이라는 환경변수에 반드시 등록해야 한다.

필드 키 버퍼의 장점은 데이터의 독립성이다. 구조체 버퍼의 경우에는 사용되지 않는 필드가 존재하더라도 구조체 전체를 전송할 수 밖에 없지만 필드 키 버퍼의 경우에는 필요한 필드만을 선택하여 전송할 수 있다. 또한 개발의 생산성 향상을 위해 다양한 필드 키 조작 함수를 제공하고 있다.

참고

필드 키 조작 함수의 자세한 내용은 “Tmax FDL Reference Guide”를 참고한다.

2.4. gst

이진 Tmax 환경 파일을 참조하여 서비스 테이블을 생성하는 데 사용되는 명령어이다. gst는 cfl 명령어에 의해서 생성된 이진 Tmax 환경 파일의 SERVER 절과 SERVICE 절을 참조하여 각 서버별로 서비스 테이블을 생성한다. 이 테이블은 서버 프로세스에서 제공하는 서비스 목록으로, 서버 프로그램과 함께 작성하여 프로그램이 컴파일될 때 함께 컴파일된다. 서버 프로세스가 동작할 때 서비스 위치를 찾는 데 사용된다.

gst 명령의 결과 파일은 지정된 TMAXDIR 디렉터리 하위에 svct 디렉터리에 <서버명_svctab.c>로 생성된다. TMAXDIR은 source config 파일의 NODE 절을 참고한다. 서버명은 SERVER 절에 등록된 서버명이며, 각 파일의 내용은 SERVICE 절에 등록된 해당 서버가 제공하는 서비스명이다.

Tmax 환경 파일에 등록된 서비스는 반드시 해당 서버의 서비스 테이블에도 등록되어야 한다. Tmax 환경 파일의 SERVER 절이나 SERVICE 절에 서버명, 서비스명, 서비스의 SVRNAME 등이 변경된 경우, gst 명령을 사용해서 서비스 테이블과 서버 프로그램을 컴파일해야 한다.

  • 사용 방법

    $ gst [-f 이진 Tmax 환경 파일명| -v server_name | -h | -n node_name | -V]
    항목설명
    [ -f 이진 Tmax 환경 파일명 ]참조할 이진 Tmax 환경 파일명을 설정한다. cfl명령의 결과물로 tmboottmdown에서도 참조되는 파일이다. 경로와 함께 지정될 수 있으며, 생략되면 기본값으로 $TMAXDIR/config로 지정된 디렉터리 하위의 config 디렉터리에서 tmconfig를 참고한다.
    [ -v server_name ]서버명에 해당하는 서비스 테이블을 설정한다.
    [ -h ]명령어 도움말 옵션이다.
    [ -n node_name ]멀티 노드 환경에서 타 노드의 서버 프로세스의 서비스 테이블을 현재 노드의 $TMAXDIR/svct에 생성하도록 한다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
  • 적용 환경

    Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    다음은 /user1/park/tmax/bin 디렉터리의 <exconfig> 환경 파일을 참조하여 서버별로 서비스 테이블을 생성하는 예제이다.

    $ gst -f /user1/park/tmax/bin/exconfig

    예를 들어 환경 파일을 다음 페이지와 같이 등록한 경우 /user1/park/tmax/svct 디렉터리에 <svr1_svctab.c>와 <svr2_svctab.c>라는 서비스 테이블이 생성된다.

              ….
    *SERVER
    svr1         SVGNAME = svg1
    svr2         SVGNAME = svg1
    *SERVICE
    svc1         SVRNAME = svr1
    svc2         SVRNAME = svr2 

참고

cfl, tmboot, tmdown 명령어에 대한 자세한 내용은 “2.1. cfl”, “2.26. tmboot”, “2.28. tmdown”을 참고한다.

2.5. mkcli

Tmax 클라이언트 모듈을 생성하는 명령어이다. 파라미터는 최대 1024자까지 사용할 수 있으며 이 명령어가 실행되면 cc 컴파일러에 의해 클라이언트 모듈이 생성된다.

  • 사용 방법

    $ mkcli {-o outfile} {-f firstfiles} [-v] [-l lastfiles] [(-32)|-64] [-V] 
            [-u UserCompileOption]
    항목설명
    { -o outfile }클라이언트 모듈명을 outfile에 지정한다.
    { -f firstfiles }사용자 정의 파일을 지정하면 Tmax에서 제공하는 클라이언트 라이브러리보다 먼저 링크되어 컴파일된다. 사용자 정의 파일으로 보통 클라이언트 프로그램을 지정한다.
    [ -v ]verbose 모드로 컴파일되어 컴파일하는 과정이 모두 콘솔창에 출력된다.
    [ -l lastfiles ]사용자 정의 파일을 지정하면 Tmax에서 제공하는 클라이언트 라이브러리보다 나중에 링크되어 컴파일된다.
    [ (-32) | -64 ]

    생성하려는 클라이언트 모듈이 32Bit 혹은 64Bit인지를 지정한다.

    • [-32]: Tmax 라이브러리 경로가 $TMAXDIR/lib로 지정된다. (기본값)

    • [-64]: Tmax 라이브러리 경로가 $TMAXDIR/lib64로 설정된다.

    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [ -u UserCompileOption ]

    mkcli 명령어가 자체적으로 설정한 플랫폼에 맞는 기본 컴파일 옵션을 제거하고 사용자가 지정한 컴파일 옵션으로 대체한다.라이브러리 및 include 관련 옵션은 적용되지 않으므로 주의한다.

    둘 이상의 옵션을 지정해야 할 경우 다음과 같이 설정한다.

    (예 -u opt1 opt2)

  • 적용 환경

    Tmax가 설치된 운영 시스템 환경에서 사용할 수 있다.

2.6. mkacl

ACL(access control list)을 생성하는 명령어이다. 서비스 접근 권한 제어 (제 3단계 보안)는 사용자 그룹별로 이루어진다. 서비스는 접근 권한이 허용된 그룹에 해당되는 user만 접근이 가능하다. 해당 기능을 사용하기 위해서는 group 파일을 생성해야 하며, 해당 그룹에 속하는 user 파일이 있어야 한다. 그리고 서비스별 접근 가능한 사용자 그룹을 지정하는 acl 파일이 있어야 한다.

acl 파일을 생성하기 위해서는 mkacl 명령어를 사용해야 한다.

  • 사용 방법

    $ mkacl [-a] [-d] [-G group_name] [-t type] [-s service_name] [-h] [-V]
    항목설명
    [ -a ]기존의 ACL 파일에 새로운 하나의 ACL 서비스를 추가하기 위한 옵션이다. ACL 파일이 존재할 경우 파일의 가장 끝에 새로운 서비스가 추가되며, 존재하지 않을 경우 새로운 ACL 파일이 생성된 후 추가된다.
    [ -d ]

    생성된 ACL 서비스를 삭제하기 위한 옵션으로 [-G], [-s], [-t] 옵션과 함께 지정해야 한다.

    ACL 파일에서 [-s] 옵션으로 지정한 ACL 서비스를 삭제하며, [-G] 옵션은 해당 서비스와 반드시 일치해야 한다.

    [ -G group_name ]

    [-s]로 지정한 서비스에 대해 접근이 허용된 그룹명을 지정한다.

    반드시 $TMAXDIR/config/group에 지정된 이름을 사용해야 한다.

    [ -t type ]ACL의 타입을 지정한다. 현재 'SERVICE'만을 지원한다.
    [ -s service_name ]ACL을 적용할 서비스명을 지정한다. [-G] 옵션으로 지정된 하나의 서버 그룹에 속한 사용자만 접근 가능하다.
    [ -h ]명령어 도움말 옵션이다.
    [ -V ]명령어를 지원하는 Tmax 버전 정보를 조회한다.
  • 결과

    $TMAXDIR/config/acl 파일이 생성되고 형식과 내용은 다음과 같다.

    service_name:type:group_id

    TOUPPER1:SERVICE:1
    TOUPPER5:SERVICE:5
    TOUPPER7:SERVICE:7
    TOUPPER9:SERVICE:9

참고

멀티 노드에서 사용하는 경우에는 “2.1. cfl”의 [-A] 옵션 설명을 참고한다.

2.7. mkgrp

사용자 그룹을 생성하는 명령어이다. 서비스 접근 권한 제어(제 3단계 보안)는 사용자 그룹별로 이루어진다. 하나의 서비스는 서비스에 대해 접근 권한이 허용된 그룹에 해당되는 사용자만 접근이 가능하다. 따라서 이 기능을 사용하기 위해서는 group 파일을 생성해야 하며, 해당 그룹에 속하는 사용자 파일이 있어야 한다. 그리고 서비스별 접근 가능한 사용자 그룹을 지정하는 acl 파일이 있어야 한다. group 파일을 생성하려면 mkgrp 명령어를 사용해야 한다.

  • 사용 방법

    $ mkgrp {-a} {-G group_name} {-g group_id} [-d] [-h] [-V]
    항목설명
    { -a }기존의 group 파일에 새로운 하나의 사용자 그룹을 추가하기 위한 옵션이다. 기존의 group 파일이 존재할 경우 파일의 맨 끝에 새로운 그룹이 추가되며, 존재하지 않을 경우 새로운 group 파일이 생성된 후 추가된다.
    { -G group_name }생성할 그룹의 이름을 지정한다. 다른 그룹과 중복되지 않도록 지정해야 한다.
    { -g group_id }생성할 그룹의 ID를 지정한다. 이 옵션도 다른 그룹과 중복되지 않도록 지정해야 한다.
    [ -d ]기존에 생성된 그룹을 삭제하기 위한 옵션이다. [-g], [-G] 옵션과 함께 지정해 주어야 하며 [-g] 옵션으로 지정한 ID의 사용자 그룹을 삭제한다.
    [ -h ]명령어 도움말 옵션이다.
    [ -V ]명령어를 지원하는 Tmax 버전 정보를 조회한다.
  • 결과

    $TMAXDIR/config/group 파일이 생성이 되며 형식과 내용은 다음과 같다.

    Group_name:x:Group_id

    grp1:x:1
    grp2:x:2
    grp3:x:3
    grp4:x:4
    grp5:x:5
    grp6:x:6
    grp7:x:7
    grp8:x:8
    grp9:x:9
    grp10:x:10

2.8. mkpw

암호 관리 명령어로 Tmax 사용자가 선택할 수 있는 보안 확인 메커니즘은 4가지가 있다.

  1. 보안 사용 안함

  2. 도메인 보안 확인

  3. 사용자 보안 확인

  4. 서비스 접근 제어

보안 확인 메커니즘을 사용하려면 사용자명과 암호를 $(TMAXDIR)/config 디렉터리의 passwd 파일에 등록해야 한다. mkpw는 passwd 파일을 관리하는 데 사용된다.

  • 사용 방법

    $ mkpw [-f file_name] [-a | -d | -i | -n | -p | -h | -V] 
           [-G group_name] [-u uid]
    항목설명
    [ -f filename ]

    passwd 파일명을 지정한다.

    기본 passwd 파일은 $(TMAXDIR)/config/passwd이다.

    [ -a ]사용자를 추가하는 옵션이다.
    [ -d ]사용자를 삭제하는 옵션이다.
    [ -i ]사용자의 정보를 변경하는 옵션이다.
    [ -n ]새로운 패스워드 파일을 생성하는 옵션이다.
    [ -p ]

    사용자의 암호를 변경하는 옵션이다.

    파라미터가 지정되지 않을 때 기본값으로 $ mkpw -f $(TMAXDIR)/config/passwd -p를 실행한다.

    [ -h ]사용법을 보여주는 옵션이다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [ -G group_name ]

    해당 사용자가 속하는 그룹명을 지정한다. 서비스 접근 제어 보안 기능을 사용할 경우, group 파일을 생성해야 하며, 해당 그룹에 속하는 사용자가 있어야 하고 user 파일을 생성해야 한다. user 파일은 mkpw 명령어를 이용하여 passwd 파일과 함께 생성된다.

    passwd 파일을 생성할 경우 [-G] 옵션을 사용하여 이전 버전과는 다른 방식으로 생성해야 한다. ACL로 지정된 서비스를 호출하기 위해서는 하나의 그룹에 속해야 하기 때문이다. [-G] 옵션을 사용하여 그룹명을 지정할 경우 반드시 group 파일에 지정된 그룹 중 하나를 선택해서 지정해야 하며, [-u] 옵션과 함께 지정한다.

    [ -u uid ]

    해당 사용자의 유일한 ID를 지정한다.

    [-G] 옵션과 함께 지정하며, 제 3단계 보안인 서비스 접근 제어를 사용할 경우에만 지정한다.

  • 결과

    다음은 [ -G], [ -u] 옵션을 사용했을 경우에 대한 passwd 파일과 user 파일의 형식 및 예제이다.

    • passwd 파일

      형식은 다음과 같다.

      username:passwd:user_id:group_id:Description:x:x

      <passwd 파일 예제>

      starbj1:UnQGcdDkNqXNc:1:1:starbj1:x:x
      starbj2:mPLY7VZtNvRXs:2:2:starbj2:x:x
      starbj3:aiu6Mt36rqwe6:3:3:starbj3:x:x
      starbj4:vVdS9naV02jA.:4:4:starbj4:x:x
      starbj5:568kCzyzYXriQ:5:5:starbj5:x:x
      starbj6:ouKrHf/89QMW6:6:6:starbj6:x:x
      starbj7:Mx8PaESrqWR4I:7:7:starbj7:x:x
      starbj8:LL59popHJp59U:8:8:starbj8:x:x
      starbj9:RG/S5BetAPeFs:9:9:starbj9:x:x
      starbj10:Ebbzv1Ecx0abE:10:10:starbj10:x:x
    • user 파일

      형식은 다음과 같다.

      user 파일:username:user_id:group_id

      <user 파일 예제>

      starbj1:1:1
      starbj2:2:2
      starbj3:3:3
      starbj4:4:4
      starbj5:5:5
      starbj6:6:6
      starbj7:7:7
      starbj8:8:8
      starbj9:9:9
      starbj10:10:10

  • 적용환경

    Tmax가 설치된 운영 시스템 환경에서 사용할 수 있다.

2.9. mksvr

Tmax 서버 모듈을 생성하는 명령어이다. mksvr를 사용하여 서버 모듈을 생성하는 경우 Tmax의 환경 파일에 서비스를 등록하지 않아도 동적으로 서비스를 등록할 수 있다. 파라미터는 최대 1024자까지 사용할 수 있으며 이 명령어가 실행되면 cc 컴파일러에 의해 서버 모듈이 생성되며 옵션들은 다음과 같다.

  • 사용 방법

    $ mksvr {-s { @filename | service[,service...] [:func]}} [-o outfile] 
            [-f firstfiles] [-v] [-r rmname ] [-S sdlfilename] [-l lastfiles] 
            [-t servertype] [(-32)|-64] [-V] [-a autotran] [-T svctime]
            [-u UserCompileOption] 
    항목설명
    [ -s { @filename | service[,service...] [:func] } ]

    서비스명을 service에 지정한다. filename인 파일에 서비스명을 한 줄에 하나씩 기록하여 그 파일명을 @ 뒤에 추가하여 서버 모듈을 생성할 수 있다. 서비스에 대한 func을 지정하면 서비스에 대한 요청이 올 때 그 처리를 func에서 할 수 있다. 서비스명을 세미콜론(;) 뒤에 계속해서 넣으려면 세미콜론 뒤에 스페이스를 사용해서는 안된다.

    옵션은 여러 번 지정할 수 있다(예 : -s TOUPPER -s TOLOWER).

    AUTOTRAN과 SVCTIME에 관한 내용을 함께 설정할 수도 있다. 항상 큰따옴표("")를 사용해야 한다. -s TOUPPER -a 1 -T 10 으로 설정한 것과 동일한 것으로 간주된다. Function List 파일 안에서도 위와 동일하게 설정할 수 있다(예: -s "TOUPPER 1 10").

    [ -o outfile ]서버 모듈명을 outfile에 지정한다.
    [ -f firstfiles ]사용자 정의 파일을 지정하면 Tmax에서 제공하는 서버 라이브러리보다 먼저 링크되어 컴파일된다. 사용자 정의 파일로 보통 서버 프로그램을 지정한다.
    [ -v ]verbose 모드로 컴파일되어 컴파일하는 과정이 모두 콘솔창에 출력된다.
    [ -r rmname ]

    생성하려고 하는 서버 모듈과 연결되는 리소스 매니저를 지정한다.

    rmname은 $TMAXDIR/config/RM 파일 안에 "rmname:stub:XA libraries"와 같은 형식으로 지정한다. stub으로는 Tmax에서 제공하는 DBMS stub(liboras.so, libsybs.so, libinfs.so, libdb2s.so)이 설정된다. mksvr 명령어를 사용할 때 [-r rmname]을 지정하면 stub들과 XA libraries들이 cc 컴파일할 때 링크되어 컴파일된다. [-r] 옵션이 지정되지 않은 경우 기본적으로 libnodb.so가 링크된다.

    [ -S sdlfilename ]SDL 버퍼를 사용하는 서버 모듈인 경우 sdl 파일(.s)의 object file을 sdlfilename으로 설정한다. [-S] 옵션이 지정되지 않은 경우 기본적으로 $TMAXDIR/lib/sdl.o가 링크된다.
    [ -l lastfiles ]사용자 정의 파일을 지정하면 Tmax에서 제공하는 서버 라이브러리보다 나중에 링크되어 컴파일된다.
    [ -t servertype ]Tmax 환경 파일의 SERVER 절에 'SVRTYPE'으로 지정되는 값을 mksvr에서 설정한다. [-t] 옵션이 지정되지 않은 경우 서버 타입을 STD라고 인식을 하고 cc 컴파일할 때 <libsvr.so>가 링크된다. [-t] 옵션이 지정된 경우 설정된 Tmax 라이브러리가 cc 컴파일할 때 링크된다.
    [(-32) | -64]

    생성하려는 서버 모듈이 32Bit 혹은 64Bit인지를 설정한다.

    • [-32]: Tmax 라이브러리 경로가 $TMAXDIR/lib로 지정된다. (기본값)

    • [-64]: Tmax 라이브러리 경로가 $TMAXDIR/lib64로 설정된다.

    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [ -a autotran ]

    동적으로 등록한 서비스의 AUTOTRAN 유무를 설정한다.

    • 0 : NO

    • 1: YES

    [ -T svctime ]

    동적으로 등록한 서비스의 SVCTIME를 설정한다.

    • 0 : 무한대로 SVCTIME을 설정한다.

    • 0보다 큰 수: 해당 값만큼 SVCTIME을 설정한다.

    [ -u UserCompileOption ]

    mksvr 명령어가 자체적으로 설정한 플랫폼에 맞는 기본 컴파일 옵션을 제거하고 사용자가 지정한 컴파일 옵션으로 대체한다.라이브러리 및 include 관련 옵션은 적용되지 않으므로 주의한다.둘 이상의 옵션을 지정해야 할 경우 다음과 같이 설정한다.

    (예: -u opt1 opt2)

  • 적용 환경

    Tmax가 설치된 운영 시스템 환경에서 사용할 수 있다. Tmax 3.8.16 버전부터 Windows NT와 Windows 2000 환경에서 사용 가능하다.

  • 주의사항

    mksvr는 COUSIN이나 BACKUP 서버 그룹 형태의 서버 모듈에 서비스를 동적으로 등록하는 경우 사용에 제약이 따른다. COUSIN이나 BACKUP 서버 그룹의 경우 여러 노드에 등록된 서비스의 정보를 관리해야 하기 때문에 mksvr로 특정 서비스를 동적으로 등록한 경우 이 서비스를 해제할 수 없다.

    일반 서버 그룹에서는 해당 서버를 tmdownmksvr로 재등록하면 서비스의 이동과 삭제가 가능하다. 그러나 COUSIN/BACKUP 서버 그룹에서는 등록된 서비스 해제를 허용하지 않기 때문에 서비스의 이동과 삭제가 불가능하다.

    mksvr를 통한 서비스 동적 등록을 할 경우에는 다음의 사항을 고려하여 사용해야 한다.

    • 해당 서버의 서버 그룹 유형

    • 해당 서비스의 기 등록 여부

2.10. racd

멀티 노드로 분산된 환경에서 각 노드를 중앙 관리하기 위한 명령어이다. racd는 여러 노드를 하나의 도메인으로 Tmax 시스템을 구축한 경우 한 노드에서 Tmax 시스템을 집중 관리하기 위해 각각의 노드에서 미리 기동되는 데몬 프로세스이다. Tmax 시스템을 관리하는 노드에서는 racd를 실행하지 않아도 된다.

racd는 도메인 내의 한 노드에서 tmadmin을 통하여 전체 노드를 관리하거나, 또는 cfl로 환경 파일을 도메인 내의 모든 노드에 동일한 내용으로 적용 가능하도록 처리한다.

IP 버전이 IPv6라면 환경 파일에 다음을 반드시 지정해야 한다.

SYSTEM_IPV6=Y

만약 racd를 -k 옵션과 함께 사용한다면 환경 변수에 다음을 지정해야 한다.

TMAX_RAC_IPV6=Y

다음은 racd 명령어 사용법에 대한 설명이다.

  • 사용 방법

    $ racd [-d] [-f 이진 Tmax 환경 파일명] [-h] [-k]
           [-i filename] [-l Label] [-P umask] [-V]
    항목설명
    [ -d ]디버그 모드로 racd를 수행할 때 설정한다.
    [ -f 이진 Tmax 환경 파일명 ]참조할 이진 Tmax 환경 파일명을 설정한다. cfl의 결과로 tmboottmdown에서도 참조되는 파일이다. 경로와 함께 지정될 수 있으며, 이 옵션이 생략되면 기본적으로 TMAXDIR로 지정된 디렉터리 하위의 config 디렉터리에서 tmconfig를 참고한다.
    [ -h ]명령어 도움말 옵션이다.
    [ -k ]

    이진 Tmax 환경 파일의 참조 여부를 설정한다. 옵션을 지정하면 이진 Tmax 환경 파일을 참조하지 않는다. 보통 racd는 이 옵션을 이용하여 실행한다. (passive listen mode)

    만약 IP 버전이 IPv6이고 이 옵션을 사용할 경우 환경 파일을 참조하지 않기 때문에 환경 변수에 'TMAX_RAC_IPV6=Y'를 반드시 지정해야 한다.

    [ -i filename ]

    하나의 물리적 머신에서 여러 논리적 노드를 정의할 때 사용한다.

    논리 노드의 NODETYPE이 SHM_RACD일 경우, 각 논리 노드당 하나씩의 racd를 실행해야 하며 RACPORT는 모두 달라야 한다. racd를 실행하기 전에 환경 변수의 TMAX_RAC_PORT 변수를 설정해야 하는데, 논리 노드의 수가 많을 경우 이를 일일이 모두 변경할 수 없으므로 TMAXHOME, TMAXDIR, TMAX_RAC_PORT가 정의된 파일명을 지정할 수 있다. 자세한 내용은 예제를 참고한다.

    [ -l Label ]Label은 파일 내에 등록된 환경 정보의 구분자이다. 2개 이상의 시스템 정보를 하나의 파일에 등록할 경우에 각각의 시스템을 구별할 수 있는 값이다.
    [ -P umask ]racd를 통해 기동되는 프로세스의 경우 umask를 사용자가 설정하여 원하는 권한의 파일을 생성할 수 있도록 한다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
  • 적용 환경

    Tmax가 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    • 다음은 racd에 -P 옵션을 지정하여 원하는 umask를 설정하는 예제이다.

      <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
      1. 환경 파일을 작성한다.

        *DOMAIN
        tmax1      SHMKEY = @SHMEMKY@, MINCLH = 1, MAXCLH = 3,
                   TPORTNO = @TPORTNO@, BLOCKTIME = 30, RACPORT = 3255
        
        *NODE
        @HOSTNAME@ TMAXDIR = "@TMAXDIR@",
                   APPDIR = "@TMAXDIR@/appbin",
                   PATHDIR = "@TMAXDIR@/path",
        
        @RMTNAME@  TMAXDIR = "@RMTDIR@",
                   APPDIR = "@RMTDIR@/appbin",
                   PATHDIR = "@RMTDIR@/path",
        
        *SVRGROUP
        svg1       NODENAME = "@HOSTNAME@", COUSIN = "svg2"
        svg2       NODENAME = "@RMTNAME@"
        
        *SERVER
        svr2       SVGNAME = svg1, CLOPT = "-o $(SVR).out -e $(SVR).err"
        
        *SERVICE
        TOUPPER    SVRNAME = svr2

      2. 리모트 노드에 racd를 기동한다.

        $ export TMAX_RAC_PORT = 3255
        $ racd –k –P 055
      3. HOST 노드에서 전체 Tmax를 기동한다. (tmboot)

      4. RMT 노드의 ULOGDIR에 svr2.out의 파일 권한을 확인한다.

    • 다음은 NODE1의 RACD를 실행시키는 예제이다.

      $ racd -k -i tmax.racd -l NODE1
    • 다음은 환경 파일을 참조하지 않고 다른 명령어(tmboot)에서 사용한 정보만 이용하는 예제이다.

      $ racd -k

참고

1. tmboot, tmdown 명령어의 자세한 내용은 “2.26. tmboot”, “2.28. tmdown”의 설명을 참고한다.

2. 논리 노드 설정에 대한 자세한 내용은 Tmax Administration Guide”의 "3.2.2. NODE 절"의 HOSTNAME 항목의 설명을 참고한다.

2.11. racdr

다른 도메인에 기동된 racd를 통해 tmboot, tmdown, cfl, gst 명령을 수행하거나 특정 디렉터리 위치에 파일을 전송하는 기능을 제공한다. Tmax 시스템을 관리하는 노드에서는 racd를 실행하지 않아도 된다. 다른 도메인의 racd는 반드시 racdr의 요청을 처리할 수 있는 버전으로 운영되어야 한다.

racdr은 다른 도메인의 IP 주소와 racd가 사용하는 RACPORT, 파일 전송하는 경우 디렉터리 위치를 아래와 같은 형식의 환경파일로 작성해야 한다.

#nodename  #ip-address  #racport  #dest1          #dest2          #dest3
tmdom1no1  192.168.1.1  5000      /tmax/appbin    /tmax/applib    /tmax/etc
tmdom1no2  192.168.1.2  5000      /tmax/appbin    /tmax/applib    /tmax/etc
aphost1    192.168.10.1 9999      /apps/tp/appbin /apps/lib       /apps/tp/config
...

다음은 racd 명령어 사용법에 대한 설명이다.

  • 사용 방법

    $ racdr [-f cfg_file] [-n node_name] [-c command] [-s file_name] [-d dest_no] [-V] [-h]
    항목설명
    [ -f cfg_file ]

    다른도메인의 노드 정보를 저장한 환경파일을 지정한다.

    별도로 지정하지 않으면 현재 디렉터리의 racdr.cfg 또는 $TMAXDIR/config/racdr.cfg 파일을 사용한다.

    [ -n node_name ]필수 옵션이다. 환경파일에서 정의한 노드이름을 지정한다. 모든 요청들은 해당 노드의 racd 로 전달되어 수행된다.
    [ -c command ]

    racd에서 명령을 실행한다. 명령행이 파라미터를 가지는 경우 따옴표로 묶어서 하나의 인자로 전달되도록 해야 한다.

    명령은 tmboot, tmdown, cfl, gst만 허용된다. 그 외의 명령이나 셸 스크립트는 수행할 수 없다.

    [ -s file_name ]

    파일을 해당 노드로 전송한다. 반드시 -d 옵션과 함께 사용해야 한다.

    저장될 위치에 이미 파일이 존재하는 경우 해당 파일의 이름을 변경하고 전송된 파일을 기존 파일 이름으로 저장한다. 기존 파일의 이름은 뒷부분에 현재의 "_년월일시분초"가 추가되며, 같은 이름의 파일이 또 존재하면 그 뒤에 "_번호"를 추가한다.

    파일 전송 도중 실패하면 전송 중이던 파일은 삭제하고 기존 파일을 복원한다.

    [ -d dest_no ]

    파일이 저장될 경로를 지정한다. 경로는 최대 3개까지 지정 가능하다.

    경로는 환경파일에서 설정하며, dest_no는 설정한 디렉터리의 번호를 지정한다. 첫 번째 경로(dest1)는 1, 두 번째 경로(dest2)는 2, 세 번째 경로(dest3)는 3을 지정한다.

    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [ -h ]명령어 도움말 옵션이다.
  • 주의 사항

    • racdr의 -c 옵션의 명령을 수행시 입력을 요구하는 경우에는 처리할 수 없다. 따라서 입력을 요구하지 않는 방식으로 수행되도록 명령 인자를 설정해야 한다.

      처리 불가능한 예:
      $ tmdown
             Do you really want to down whole Tmax? (y : n):
      처리 가능한 예:
      $ tmdown -n node1
    • 명령 수행의 결과는 즉시 콘솔에 출력되는 것이 아니라, 해당 명령이 모든 수행을 마치고 종료될 때 racdr로 전달되어 출력된다. 예를 들어 tmboot의 경우 기동이 오래 걸리더라도 racdr에서는 기동되는 과정을 곧바로 볼 수 없다.

    • 명령 수행의 결과중 stdout과 stderr로 출력이 되었을 때 출력 순서가 실제와 다른 순서로 출력될 수 있다. 또한 tmboot의 stderr 출력 내용은 racdr로 전달되지 않는다.

    • racd가 racdr의 요청을 처리하는 중에는 다른 요청을 처리할 수 없다.

    • 명령을 수행할 때 맨 마지막에 숫자를 인자로 가지고 있는 옵션이 올 경우 숫자를 입력하지 않아도 racd 내부적으로 -r 옵션이 붙는데 -r이 숫자 0으로 해석되어 에러없이 처리를 한다.

      예를 들어 -c "tmboot -d"을 수행하면 에러가 발생되지 않고, "tmboot -d 0"과 같이 동작하므로 명령어를 입력할 때 주의해야 한다.

  • 예제

    • 다음은 /app/svr2 파일을 tmdom1no1 노드의 /tmax/appbin 디렉터리로 전송하는 예제이다(환경 파일은 위의 예제와 같다).

      $ racdr -f racinfo.txt -n tmdom1no1 -s /app/svr2 -d 1
    • 다음은 tmdom1no1 노드에 cfl 명령을 수행하는 예제이다. tmaxconfig.m 파일은 해당 노드의 $TMAXDIR/config 디렉터리에 복사되어 있어야 한다.

      $ racdr -f racinfo.txt -n tmdom1no1 -c "cfl -i tmaxconfig.m"
    • 다음은 tmdom1no1 노드에 tmboot 명령을 수행

      $ racdr -f racinfo.txt -n tmdom1no1 -c "tmboot -n tmdom1no1"
    • 다음은 tmdom1no1 노드에서 특정 서버를 종료

      $ racdr -f racinfo.txt -n tmdom1no1 -c "tmdown -n tmdom1no1 -S svr2"

참고

racd 명령어의 자세한 내용은 “2.10. racd”의 설명을 참고한다.

2.12. sdlc

서버 및 클라이언트 사이의 데이터 통신에 사용하는 방식은 여러 가지가 있지만 그 중에서 구조체(Struct)를 사용할 경우에는 해당 구조체를 Tmax 시스템에서 인식할 수 있어야 한다. sdlc는 이런 구조체를 정의한 파일을 컴파일하는 명령어이다.

SDL(Structure Data Language)은 Tmax에서 정한 표준 구조체 데이터 형식이다. 이기종 노드 간 통신할 때 Integer, Float, Double 등의 데이터 타입과 관련해서 다음의 문제를 갖는다.

  • Type Length

  • Machine Type - Big / Little Endian

  • Alignment

SDL은 이러한 문제를 해결하기 위해서 하나의 표준형을 정한 것으로 Integer, Float, Double의 통신을 지원하여 자유로운 통신 타입을 지원한다.

클라이언트 프로그램과 서버 프로그램에서 사용되는 구조체는 동일해야 한다. 구조체가 변경되었을 경우 클라이언트와 서버별로 구조체가 sdlc에 의하여 재컴파일되어야 하며, 새롭게 생성된 <구조체 파일명_sdl.c>는 서버 프로그램과 함께 반드시 재컴파일해야 한다. 사용되는 구조체 파일명은 <.s> 형식의 파일이고 결과물은 <구조체 파일명_sdl.c> 형식이다. 구조체 파일에는 서버 및 클라이언트 사이의 통신에 사용되는 버퍼 타입 구조체가 정의되고 이 구조체 이름은 통신 버퍼로 tpalloc(), tpcall(), tpacall() 등에 사용된다.

sdlc 명령어로 생성된 파일은 클라이언트에 SDLFILE이라는 환경변수에 반드시 등록해야 한다.

  • 사용 방법

    $ sdlc [-c] [-h 헤더 파일명] {-i 구조체 파일명} [-o 결과물 이름] 
           [-s] [-v VIEW 정의 파일] [-32] [-4vb|-4dp] [-f] [-V]
    항목설명
    [ -c ]

    클라이언트를 위해 사용되는 옵션이다. 클라이언트 프로그램에서 사용하는 구조체 파일을 sdlc로 컴파일하면 구조체의 각 데이터가 표준 데이터형으로 변환되어 필요한 정보의 이진 형태의 파일이 생성된다.

    <구조체 파일명.sdl>은 클라이언트 프로그램을 실행할 때 표준 통신형으로 데이터가 송수신되는 데 사용된다.

    [-c] 옵션을 사용하는 경우 여러 개의 구조체 파일들을 함께 컴파일할 수 있다(예: sdlc -c -i *.s 또는 sdlc -c -i demo.s sam.s abc.s). 생성되는 sdl 파일명은 <demo.sdl>이며 다른 이름을 사용하려면 [-o] 옵션을 이용하여 원하는 파일명을 적는다.

    [-c] 옵션을 사용하지 않는 경우 sdlc는 구조체 파일을 컴파일하여 구조체의 각 필드를 표준 통신형인 SDL 형식에 맞춰 암호화(encoding:노드 데이터형을 표준 데이터형으로 변환), 복호화 (decoding:표준 데이터형을 노드 데이터 형으로 변환)하는 프로그램이 생성된다. 서버 프로그램과 함께 컴파일되어 표준 SDL 형식의 데이터형으로 통신이 이루어진 <구조체 파일명_sdl.c> 파일이 생성된다.

    [ -h 헤더 파일명 ][-h] 옵션 없이 컴파일하면 sdl 헤더 파일명은 <구조체 파일명_sdl.h>이다. 헤더 파일명을 변경할 때 사용하는 옵션이다.
    { -i 구조체 파일명 }

    서버/클라이언트 프로그램에서 사용하는 구조체를 정의한 파일을 설정한다.

    필수 옵션이며 경로와 함께 지정할 수 있다. 구조체 이름은 16자까지 설정할 수 있다.

    [ -o 결과물 이름 ]구조체 파일이 하나인 경우 [-o] 옵션없이 컴파일하면 sdl 파일명은 <구조체 파일명.sdl>이다. 파일명을 다른 이름으로 변경할 때 사용하는 옵션이다.
    [ -s ]

    서버 프로그램을 위해서 사용되는 옵션으로 구조체 정의 이진 파일을 생성한다. 구조체 정의 이진 파일은 [-c] 옵션을 사용한 경우에 생성되는 파일과 같다.

    구조체 파일을 컴파일하여 구조체의 각 필드를 표준 통신형인 SDL 형식에 맞춰 암호화, 복호화하는 프로그램이 생성된다. 생성되는 파일명은 <구조체 파일명_sdl.c>이며 이 파일은 서버 프로그램과 함께 컴파일해야 한다. [-c] 옵션과는 배타적으로 사용되고 [-c] 옵션이 사용되지 않는 경우 기본값으로 사용된다.

    [ -v VIEW 정의 파일]

    구조체 버퍼와 필드 키 버퍼 사이에서 형태 변환을 원하는 경우에 이 옵션을 사용하여 구조체 정의 이진 파일을 생성해야 한다. 구조체 버퍼의 데이터를 필드 키 버퍼에 저장하여 서비스를 요청하거나 그 반대로 필드 키 버퍼의 내용을 구조체 버퍼에 저장하여 서비스를 요청할 수 있다.

    사용되는 함수는 fbftos()fbstof()가 있다. 자세한 설명은 예제를 참고한다.

    [ -32 ]64Bit 환경에서 32Bit 라이브러리를 사용하기 위해서 구조체 파일을 32Bit로 컴파일한다.
    [ -4vb ]Visual Basic 인터페이스 파일을 생성한다.
    [ -4dp ]Delphi 인터페이스 파일을 생성한다.
    [ -f ][-4vb] 또는 [-4dp] 옵션과 함께 사용하여야 하며 Visual Basic 혹은 Delphi 인터페이스 파일명을 지정한다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
  • 적용 환경

    UNIX 운영 시스템과 MS - DOS 운영 시스템에서 지원된다

  • 예제

    • VIEW 정의 파일의 구조는 다음과 같다.

      <demo.v>

      VIEW demo
      #type   Cname   fldkey count  flag size null
      String  Demodata       INPUT  5    -    20     “”
      Int     Num     INTDATA       5    -    -       0
      END
      항목설명
      type구조체 안의 멤버 변수의 데이터 타입이다.
      Cname멤버 변수명이다.
      fldkey지정한 멤버 변수와 매핑되는 필드 키이다.
      count구조체에서 저장할 수 있는 최대의 필드 순번이다.
      flag현재 사용하지 않는다.
      sizestring 타입일 경우 배열의 크기이다.
      null초기화할 때의 값이다.

      구조체 정의 이진 파일은 다음과 같은 명령어로 생성될 수 있다.

      $ sdlc -c -v demo.s -o tmax.sdl

    • 다음은 서버를 위하여 현재 디렉터리에 있는 <demo.s> 구조체 파일을 sdlc로 컴파일하는 명령에 대한 예제이다. 결과로 <demo.sdl>과 <demo_sdl.c>라는 파일이 생성된다. <demo_sdl.c>는 서버 프로그램을 생성하는 데 사용된다.

      $ sdlc -i demo.s
    • 다음은 클라이언트를 위하여 현재 디렉터리에 있는 <demo.s> 구조체 파일을 sdlc로 컴파일하는 명령에 대한 예제이다. 결과로 이진 데이터 파일인 <demo.sdl>라는 파일이 생성된다.

      $ sdlc -c -i demo.s

2.13. svcrpt

Tmax 시스템을 운용할 때 서비스 수행에 관련된 로그 기록을 분석하여 출력하는 명령어이다. 출력 내용은 수행된 서버 및 서비스의 이름과 횟수, 평균 서비스 수행시간이며 원하는 시간 범위 내에서 1시간 단위로 출력이 가능하다. 서비스 로그는 서버별로 CLOPT 절에 [-l] 옵션을 설정하면 5분 간격으로 $ULOGDIR에 <svclog.mmddyyyy>라는 이름의 파일이 저장된다.

  • 사용 방법

    $ svcrpt [-T | -N] [-s svcname] [-v svrname] [-x] [-S] [-d mm:dd] [-c column] 
             [-f hh:mm:ss] [-t hh:mm:ss] [-V] -i logfile
    항목설명
    [ -T | (-N) ]
    • [-T]: 서비스의 총 수행시간 순서로 결과를 정렬한다.

    • [-N]: 서비스 수행 횟수를 바탕으로 정렬한다. (기본값)

    [ -s svcname ]출력을 원하는 서비스명을 설정한다.
    [ -v svrname ]출력을 원하는 서버명을 설정한다.
    [ -x ]서버 프로그램명, 최대 및 최소 처리시간 등 더 자세한 내용을 조회한다.
    [ -S ]서비스 요약을 조회한다.
    [ -d mm:dd ]서비스 로그 분석할 날짜를 입력한다.
    [ -c column ]출력하는 기본 컬럼을 입력한 숫자로 변경한다. (기본값: 5)
    [ -f hh:mm:ss ]분석을 시작하는 시간대를 입력한다.
    [ -t hh:mm:ss ]분석을 종료하는 시간대를 입력한다.
    [ -V ]실행 파일의 버전을 조회한다.
    -i logfile분석할 로그 파일명을 입력한다.
  • 적용 환경

    Tmax가 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    • 다음은 <svclog.04152002>라는 로그 파일을 분석하여 1시간 단위로 결과를 표시하는 예제이다.

      $ svcrpt -i svclog.04152002
    • 다음은 <svclog.04012002>라는 로그 파일의 4월15일 오전에 수행된 account라는 서비스의 수행 횟수 및 평균 수행시간을 1시간 단위로 출력하는 예제이다.

      $ svcrpt -s account -d 04:15 -f 09:00:00 -t 12:00:00 -i svclog.04012002

2.14. tdlclean

run 디렉터리의 구버전 라이브러리 파일이나 불필요한 파일을 정리하는 명령어이다. 특히, [-m] 옵션 또는 [-M] 옵션을 사용하면 공유 메모리에서 지정한 동적 모듈이 완전히 삭제된다.

  • 사용 방법

    $ tdlclean [-p TDL 루트 디렉터리 경로] [-m 라이브러리명] [-M 함수명] [-b] 
               [-d yyyymmddhhmi] [-D “n hour|day” [-N 개수] [-v | -V] [-h]
    옵션설명
    [ -p TDL 루트 디렉터리 경로 ]

    TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다.

    루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.

    [ -m 라이브러리명 ]TDL 공유 메모리에서 지정한 라이브러리와 run 디렉터리에 파일을 삭제한다.
    [ -M 함수명 ]공유 메모리에서 지정한 함수만 삭제하며, run 디렉터리의 관련 파일은 삭제하지 않는다. 단, VERSION=1로 설정된 경우는 [-m] 옵션과 동일하게 동작한다.
    [ -b ]

    TDL 환경 파일(tdl.cfg)에 BACKUP 파라미터가 지정되어 있더라도, 공유 메모리 파일 백업을 수행하지 않는다.

    [-m] 또는 [-M] 옵션과 함께 사용한다.

    [ -d yyyymmddhhmi ]

    지정한 시각(yyyymmddhhmi) 이전의 구 버전 라이브러리 파일을 모두 삭제한다.

    [-m] 또는 [-M] 옵션과 함께 사용할 수 없다.

    [ -D “n hour|day” ]

    n은 시간(hour) 또는 일(day)을 설정한다. 지정한 시간 또는 일 이전의 구버전 라이브러리 파일을 모두 삭제한다.

    [-m] 또는 [-M] 옵션과 함께 사용할 수 없다.

    [ -N 개수 ]

    지정한 개수(number)만큼의 구버전 라이브러리 파일을 남기고 나머지 구버전 파일을 모두 삭제한다.

    [-m] 또는 [-M] 옵션과 함께 사용할 수 없다.

    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    • 다음은 구버전 라이브러리 파일을 삭제하는 예제이다.

      $ tdlclean
    • 다음은 2009년 2월 1일 00시 00분 이전의 구버전 라이브러리 파일을 삭제하는 예제이다.

      $ tdlclean –d 200902010000
    • 다음은 5일 이전의 구버전 라이브러리 파일을 삭제하는 예제이다.

      $ tdlclean -D "5 day"
    • 다음은 mylibrary를 TDL 공유 메모리에서 완전히 제거하고 구버전 파일들도 삭제하는 예제이다.

      $ tdlclean -m mylibrary

2.15. tdlinit

TDL 공유 메모리 및 동적 모듈을 초기화하는 명령어이다. tdlinit은 설치될 때 단 한 번만 수행하며 Tmax를 부팅하기 전에 수행해야 한다. 멀티 노드 환경인 경우 마스터 노드에서만 수행 가능하다.

  • 사용 방법

    $ tdlinit [-p TDL 루트 디렉터리 경로] [-x export 함수 추출 스크립트 파일 경로] 
              [-f] [-b] [-B 백업 파일 경로] [-i] [-v | -V] [-h]
    옵션설명
    [ -p TDL 루트 디렉터리 경로 ]TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다. 루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
    [ -x export 함수 추출 스크립트 파일 경로 ]export 함수 추출을 위한 스크립트 파일 경로를 지정한다.
    [ -f ]공유 메모리가 이미 존재할 경우 강제로 초기화한다.
    [ -b ]백업 파일로부터 공유 메모리를 복구한다.
    [ -B 백업 파일 경로 ]지정된 백업 파일로부터 공유 메모리를 복구한다.
    [ -i ]백업 복구 후 run 디렉터리를 체크한다. [-b] 또는 [-B] 옵션과 함께 사용한다.
    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    • 다음은 TDL 환경 파일(tdl.cfg)을 참조하여 공유 메모리 및 모듈을 초기화하는 예제이다.

      $ tdlinit
    • 다음은 장비 장애 또는 재시작할 경우 백업 파일로부터 공유 메모리를 복구하는 예제이다.

      $ tdlinit -b

  • 참고

    VERSION=4로 설정한 경우에는 export 함수 추출을 위한 스크립트 파일이 반드시 필요하다.

    /* Example of exp file */
    /* dlib.exp */
    
    #! dlib.so
    TmaxSoft::Airplain
    Car

2.16. tdlnm

VERSION=2 이상에서 지정한 라이브러리에 대한 자동 export될 함수 목록을 조회하는 명령어이다.

  • 사용 방법

    $ tdlnm [-p TDL 루트 디렉터리 경로] [-x export 함수 추출 스크립트 파일 경로]
            [-m 라이브러리명] [-v | -V] [-h]
    항목설명
    [ -p TDL 루트 디렉터리 경로 ]TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다. 루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
    [ -x export 함수 추출 스크립트 파일 경로 ]export 함수 추출을 위한 스크립트 파일 경로를 지정한다.
    [ -m 라이브러리명 ]자동 export 함수 목록 조회를 위한 라이브러리명을 지정한다.
    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    다음은 mylibrary 파일의 export 함수 목록을 조회하는 예제이다.

    $ tdlnm -m mylibrary

2.17. tdlrm

TDL을 더 이상 사용하지 않을 경우에 공유 메모리를 완전히 제거하기 위한 명령어이다. tdlrm을 할 경우, tdlcall()을 사용할 수 없다.

  • 사용 방법

    $ tdlrm [-p TDL 루트 디렉터리 경로] [-v | -V] [-h]
    항목설명
    [ -p TDL 루트 디렉터리 경로 ]TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다. 루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    다음은 TDL 공유 메모리를 삭제하는 예제이다.

    $ tdlrm

2.18. tdlshm

TDL 공유 메모리 정보를 조회하거나, 통계 모니터링 활성화 여부 및 모듈 활성화 여부를 설정하는 명령어이다.

  • 사용 방법

    $ tdlshm [-p TDL 루트 디렉터리 경로] [-r] [-S] [-n 노드명] [-m 함수명] 
             [-M 라이브러리명] [-C] [-c start_index end_index] [-s e|d|r] 
             [-u e|d] [-I mincol] [-v | -V] [-h]
    옵션설명
    [ -p TDL 루트 디렉터리 경로 ]TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다. 루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
    [ -r ]멀티 노드 환경에서 업데이트 동기화 중인 모듈 정보를 조회한다.
    [ -S ]동적 모듈 통계 정보를 조회한다. 통계 정보는 각 모듈별 수행시간 AVG/MIN/MAX와 CPU AVG/MIN/MAX가 조회된다.
    [ -n 노드명 ]멀티 노드 환경에서 조회할 노드를 지정한다.
    [ -m 함수명 ]조회할 함수명을 지정한다.
    [ -M 라이브러리명 ]조회할 라이브러리명을 지정한다.
    [ -C ]전체 모듈에 대해 dlopen, dlsym을 수행한다.
    [ -c start_index end_index ]지정한 인덱스 범위의 모듈에 대해 dlopen, dlsym을 수행한다.
    [ -s e|d|r ]

    동적 모듈 통계 수집을 설정한다.

    • e : 활성화

    • d: 비활성화

    • r : 초기화

    [ -u e|d ]

    동적 모듈을 설정한다.

    • e : 활성화

    • d: 비활성화

    한 번에 하나의 모듈만 설정 가능하므로, 반드시 [-m] 또는 [-M] 옵션을 함께 사용해야 한다.

    VERSION=1, VERSION=2인 경우 모듈은 전체 라이브러리에서 유일함으로 보장해야 하기 때문에 [-m] 옵션만 지정한다. 함수명이 전체적으로 유일해야 한다. VERSION=3이고 라이브러리가 다를 경우 함수명은 중복되어도 상관없기 때문에 [-m] 옵션과 [-M] 옵션은 반드시 입력해야 한다. [-m] 옵션 없이 [-M] 옵션만 사용해서는 안된다.

    [ -I mincol ]

    각 모듈들에 대해서 hash collision 발생하는 경우 모듈 이름 비교횟수를 ", Collision=n"의 형식으로 덧붙여 표시한다. n의 값이 0이면 한 번의 비교로 검색이 완료된 것을 의미한다.

    mincol은 비교횟수의 최소값으로 0 이상의 값을 지정해야 한다. 각 모듈을 출력하는 경우 비교 횟수가 지정한 값 이상인 경우에만 해당 모듈의 정보를 출력한다. 큰 값을 입력하면 비교 횟수가 큰 함수를 빠르게 찾을 수 있다.

    [-m], [-M], [-r], [-p] 옵션들을 함께 사용할 수 있다.

    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    • 다음은 기본적인 tdlshm 사용 예이다.

      $ tdlshm TDLDIR = /home/jeffry/tmax LOGDIR = /home/jeffry/tmax/log/dlog 
      - BACKUP = /home/jeffry/tmax/log/dlog/tdl.bak VERSION = 2, SHMKEY = 0x90000, 
      - IPCPERM = 0750 MAXMODULES = 256, CURMODULES = 3, Global SEQNO = 45e27d28, 
      - MONITOR = Y MODE = SINGLE, DOMAINID = 1 Index = 125, Funcname = myfunction1,
      - Libname = myfunction1, Seqno = 45e27d28, Active = Y Index = 126, 
      - Funcname = myfunction2, Libname = myfunction2, Seqno = 45e27d28, Active = Y,
      - Index = 127, Funcname = myfunction3, Libname = myfunction3, Seqno = 45e27d28,
       Active = Y 
    • 다음은 TDL 통계 정보 조회를 위한 사용 예이다.

      $ tdlshm -S TDLDIR = /home/jeffry/tmax LOGDIR = /home/jeffry/tmax/log/dlog 
      - BACKUP = /home/jeffry/tmax/log/dlog/tdl.bak VERSION = 2, SHMKEY = 0x90000,
      - IPCPERM = 0750 MAXMODULES = 256, CURMODULES = 3, Global SEQNO = 45e27d28,
      - MONITOR = Y MODE = SINGLE, DOMAINID = 1 Index = 125, Funcname = myfunction1,
      - Libname = myfunction1, Seqno = 45e27d28, Active = Y Count = 0 SVC: Avg = 0.000,
      - MinTime = 0.000, Maxtime = 0.000 CPU: Avg = 0.000, MinTime = 0.000,
      - Maxtime = 0.000 Index = 126, Funcname = myfunction2, Libname = myfunction2,
      - Seqno = 45e27d28, Active = Y Count = 0 SVC: Avg = 0.000, MinTime = 0.000,
      - Maxtime = 0.000 CPU: Avg = 0.000, MinTime = 0.000, Maxtime = 0.000 Index = 127,
      - Funcname = myfunction3, Libname = myfunction3, Seqno = 45e27d28, Active = Y,
      - Count = 0 SVC: Avg = 0.000, MinTime = 0.000, Maxtime = 0.000 CPU: Avg = 0.000,
      - MinTime = 0.000, Maxtime = 0.000 
    • 다음은 [-s] 또는 [-u] 옵션 사용 예이다.

      $ tdlshm -s r
      $ tdlshm -s e -m myfunction
      $ tdlshm -s d -m myfunction
      $ tdlshm -u e -m myfunction
      $ tdlshm -u d -m myfunction
    • 다음은 [-C] 또는 [-c] 옵션 사용 예이다.

      $ tdlshm -C
      $ tdlshm -c 0 1024
      $ tdlshm -c 1024

2.19. tdlsync

TDL 공유 메모리와 백업 파일 동기화를 수행하는 명령어로, 자동 백업을 사용하지 않을 경우 필요한 관리 툴이다.

  • 사용 방법

    $ tdlsync [-p TDL 루트 디렉터리 경로] [-B 백업 파일 경로] [-v | -V] [-h]
    항목설명
    [ -p TDL 루트 디렉터리 경로 ]TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다. 루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
    [ -B 백업 파일 경로 ]백업 파일 경로를 지정한다.
    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    다음은 TDL 환경 파일(tdl.cfg)의 BACKUP 파라미터에 지정된 파일로 공유 메모리를 백업하는 예제이다.

    $ tdlsync

2.20. tdlupdate

지정한 동적 모듈을 업데이트하는 명령어이다. [-m] 옵션으로 라이브러리명을 반드시 지정해야 한다. 지정한 라이브러리가 이미 등록되어 있을 경우는 지정한 라이브러리를 업데이트하며 아직 등록되어 있지 않을 경우 새로 추가한다. 멀티 노드 환경인 경우 마스터 노드에서 수행 가능하다.

  • 사용 방법

    $ tdlupdate [-p TDL 루트 디렉터리 경로] [-x export 함수 추출 스크립트 파일 경로] [-f] 
                [-m 라이브러리명] [-b] [-c] [-l 파일명] [-v | -V] [-h] 
    옵션설명
    [ -p TDL 루트 디렉터리 경로 ]

    TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다.

    루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 사용하여 경로를 지정할 수 있다.

    [ -x export 함수 추출 스크립트 파일 경로 ]export 함수 추출을 위한 스크립트 파일 경로를 지정한다.
    [ -f ]VERSION=2에서 다른 라이브러리에 함수명이 이미 존재하더라도 강제로 업데이트한다.
    [ -m 라이브러리명 ]업데이트할 라이브러리명을 지정한다.
    [ -b ]TDL 환경 파일(tdl.cfg)에 BACKUP 파라미터가 지정되어 있더라도, 공유 메모리 파일 백업을 수행하지 않는다.
    [ -c ]멀티 노드 환경에서 노드 사이 버전 동기화를 수행한다.
    [ -l 파일명 ]업데이트할 목록을 파일로 작성하여 업데이트를 수행한다. 모듈의 구분자는 콤마(,) 또는 <Enter>이다.
    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    • 다음은 <mylibrary.so> 파일을 업데이트하는 예제이다.

      $ tdlupdate -m mylibrary
    • 다음은 여러 개의 모듈을 업데이트하는 예제이다. 구분자는 콤마(,)이며, 공백 없이 작성해야 한다. 개수 제한은 없으며, 멀티 노드일 경우는 1024개로 제한한다.

      $ tdlupdate -m mylibrary,mylibrary2,mylibrary3
    • 다음은 업데이트할 목록을 파일로 작성하여 업데이트를 수행하는 예제이다. 파일 내에 명시하는 모듈 수 제한은 없으며, 멀티 노드일 경우는 1024개로 제한한다.

      $ tdlupdate -l update.list
    • update.list 작성 방법이다. 다음과 같이 콤마(,)나 <Enter>를 구분자로 사용하여 작성한다.

      mylibrary,mylibrary2
      mylibrary3
    • 다음은 멀티 노드 환경에서 공유 메모리 정합성에 문제가 있을 경우, 동기화를 수행하는 예제이다.

      $ tdlupdate -c

  • 참고

    VERSION=4로 설정한 경우에는 export 함수 추출을 위한 스크립트 파일이 반드시 필요하다.

    /* Example of exp file */
    /* dlib.exp */
    
    #! dlib.so
    TmaxSoft::Airplain
    Car

2.21. tencrypt

환경 설정의 OPENINFO 절을 암호화한다. cfl때마다 OPENINFO 절의 암호화를 수행하는 것이 아니라 암호화하는 툴을 통해 평문을 암호화해서 이를 환경설정 파일에 기입하는 방식이다. 출력된 결과물을 환경설정 파일의 OPENINFO 절에 기입하여 사용한다.

  • 사용 방법

    $ tencrypt [ -e OPENINFO 절 내용 ]
    옵션설명
    [ -e OPENINFO 절 내용 ]OPENINFO 절의 내용을 입력하여 암호화한다.
  • 예제

    $ tencrypt [-e ORACLE_XA+Acc=P/scott/tiger+SesTm=6]
    Please insert the following text in the configuration file "OPENIFNO" field.
    [@@QEAzMWU4Y0lOYXd2Y2lkSzdpTW1lL0F4U0d1NCswekkxSFlaMjJweldOTERaM2ptVT0jQEBvNV
    JPVUE9PQ==@@]
    
    > 환경설정 파일에 추가
    원하는 OPENINFO 절에 수행한 [ ]안의 결과물을 입력한다.
    OPENINFO="@@QEAzMWU4Y0lOYXd2Y2lkSzdpTW1lL0F4U0d1NCswekkxSFlaMjJweldOTERaM2ptVT
    0jQEBvNVJPVUE9PQ==@@"
    
    > cfl을 수행하고, tmax를 기동한다.

2.22. tmadmin

Tmax 시스템 관리 명령어이다. Tmax 시스템의 동적인 관리를 위해 Command 인터프리터 형태로 제공되는 모니터 프로그램이다. Tmax 시스템이 사용하는 공유 메모리의 정보를 읽어서 동작 중인 시스템의 환경설정 내용이나 서버 프로세스의 동작상태, 또는 서비스 상태 등을 파악할 수 있다.

  • 사용 방법

    $ tmadmin [-l] [-s|m] [-h] [ -f [Config File ]] [-n [Node Name]]
              [-v] [-V] [-p] [-t]
    옵션설명
    [ -l ]racd를 통하여 여러 노드로 구성된 시스템이 중앙에서 집중 관리될 경우에 로컬 노드만을 관리하기 위해서 사용하는 옵션이다. 각각의 노드들은 이 옵션으로 자신의 시스템만을 관리할 수 있다.
    [ -s ]읽기 전용 모드로 각각의 tmadmin 툴을 10개까지 사용할 수 있는 옵션이다. 이 옵션을 사용하면 환경을 동적으로 변경시킬 수 없다. (기본값)
    [ -m ]동적으로 환경을 변경할 수 있는 마스터 모드이다. 1명의 사용자만이 마스터 모드를 사용할 것을 권장한다. 1명 이상의 사용자가 환경을 변경할 경우 심각한 시스템 문제가 발생할 수 있다. 환경 파일은 변경하지 않고 정해진 매뉴얼을 따른다.
    [ -h ]명령어 도움말 옵션이다.
    [ -f [ Config File ] ]지정해 준 이진 파일을 관리한다. 환경 파일을 기본값인 tmconfig가 아닌 다른 이름으로 이진 파일을 생성한 경우 tmadmin을 구동할 때 이진 파일명을 지정한다.
    [-n [ Node Name ] ]특정 노드에 대한 모니터링이 가능하도록 한다. 멀티 노드 환경에서 tmadmin을 구동하는 경우 이 옵션을 설정하면 지정된 노드에 대한 정보만을 확인하므로 보다 편리하게 시스템을 관리할 수 있다.
    [ -v ]Tmax의 버전을 확인한다. 이 옵션을 설정하면 Tmax 기동과 상관없이 어느 위치에서나 버전 확인이 가능하다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [ -p ]st –p, st –s, si, ci, cfg의 명령어가 수행될 때 결과가 화면 단위로 출력되도록 하는 옵션이다(more 기능).
    [-t]명령어 수행에 대한 시작 및 종료시간을 출력한다. 옵션에 대한 자세한 내용은 아래 설명을 참고한다.

    -t 옵션을 주고 tmadmin을 실행하면 다음과 같은 형식으로 시간을 출력한다.

    [TIME][타입   ] : hh:MM:ss:millisec
    타입설명
    START콘솔에서 명령어 실행 시 시작시간을 출력한다.
    END콘솔에서 명령어 실행이 종료되면 종료시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다).
    R_END콘솔에서 명령어 실행 시 리모트 노드의 수행이 종료되면 종료한 시간(tmadmin을 실행한 로컬의 시간으로, 리모트 노드의 시간이 아니다)을 출력한다.
    RP_STARTtmadmin의 repeat 명령어를 사용하여 수행할 경우 한 건의 명령을 시작하기 전 시간을 출력한다.
    RP_ENDtmadmin의 repeat 명령어를 사용하여 수행할 경우 한 건의 명령이 종료되면 종료시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다).
  • 적용 환경

    Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    다음은 tmadmin 프로그램이 실행 상태임을 나타내는 예제이다. tmadmin 툴은 다음과 같이 실행된다.

    $ tmadmin

    tmadmin을 실행하면 다음의 메시지와 함께 프롬프트(prompt)가 나타낸다.

    --- Welcome to Tmax Admin (Type “quit” to leave) --- $$1 (tmadm):

참고

cfl, tmboot, tmdown 명령어에 대한 자세한 내용은 각각 “2.1. cfl”, “2.26. tmboot”, “2.28. tmdown”을 참고한다.

tmadmin 툴에서 사용할 수 있는 명령어

다음은 tmadmin을 실행한 후 사용할 수 있는 명령어이다.

  • 환경 정보 조회

    명령어설명
    tmaxinfo(ti)Tmax 시스템 정보를 확인한다.
    history(hist)이전에 저장된 명령어를 조회한다.
    config(cfg)환경설정 내용을 조회한다.
  • 동작상태 정보 조회

    명령어설명
    stat(st)프로세스 및 서비스 상태의 통계를 조회한다. 와일드카드(Wild card)를 사용할 수 있다.
    gwinfoGATEWAY 절에 설정하는 게이트웨이들의 채널 상태를 확인한다.
    txgwinfo(txgwi)Tmax 게이트웨이의 정보를 확인한다.
    nontxgwinfoTmax Non 트랜잭션 게이트웨이의 정보를 확인한다.
    jgwinfoJEUS 게이트웨이의 정보를 확인한다.
    ajgwinfoJEUS Async 게이트웨이의 정보를 확인한다.
    wsgwinfo웹 서비스 게이트웨이의 정보를 확인한다.
    smtrcGID를 이용하여 해당 서비스의 수행 상태를 조회한다.
    clhsinfo멀티 노드 환경에서 CLH 사이의 연결 상태 정보를 확인한다.
    tmmsinfo멀티 노드 환경에서 TMM 사이의 연결 상태 정보를 확인한다.
    repeat(r)명령어를 반복한다.
    clientinfo(ci)접속 클라이언트를 확인한다.
    svrinfo(si)서버 정보를 확인한다. 와일드카드(Wild card)를 사용할 수 있다.
    txquery(txq)트랜잭션 처리 정보를 확인한다.
    rqstat(rqs)RQ의 상태를 확인하거나 디스크 큐에 쌓여 있는 서비스를 처리한다.
  • 운용 관리

    명령어설명
    suspend(sp)동작 중인 서버 프로세스를 중지한다.
    resume(rs)중지된 서버 프로세스를 재개한다.
    advertise / unadvertise특정 서비스명을 advertise / unadvertise한다.
    restat특정 서버 프로세스 혹은 모든 서버 프로세스의 통계 정보를 초기화한다.
    rebootsvr(rbs)서버 프로그램을 교체한다.
    cfgadd(ca)동적으로 서비스를 추가한다.
    set현재 설정된 환경설정값을 동적으로 변경한다.
    qpurge(qp)큐에 쌓인 업무를 삭제한다.
    discon(ds)접속 중인 클라이언트를 강제로 해제한다.
    logstart / logend로깅을 시작 및 종료한다.
    chtrcTrace 관리를 한다.
    chlogTMM, CLH, 특정 서버의 로그 레벨을 런타임 도중 동적으로 변경한다.
    txcommit / txrollback트랜잭션 처리 중에 장애가 발생하는 경우 Commit 및 Rollback을 재이슈하여 해당 트랜잭션을 종료하는 기능이다.
    wsgwreload웹 서비스 게이트웨이의 서비스 정보, 설정 변경을 적용한다.
    restart서버 프로세스를 재기동한다.
  • 기타

    명령어설명
    !바로 앞에서 사용한 명령어를 반복한다.
    quit(q)tmadmin을 종료한다.
    help(h)사용 가능한 옵션 리스트를 조회한다.
    nodeset(ns)멀티 노드 환경에서 특정 노드에 대한 정보만을 얻고자 하는 경우에 사용한다.
    nodeunset(nus)멀티 노드 환경에서 특정 노드에 대한 정보만을 얻고자 설정한 것을 해제한다.
    tmd가상의 클라이언트 애뮬레이터로서 서비스 프로그램의 유효성을 검토하는 경우 클라이언트 프로그램을 별도로 작성하지 않고 이 유틸리티를 이용한다.

참고

각 명령어의 사용방법 및 처리 결과에 대한 자세한 내용은 Tmax Administration Guide”의 “5.2. tmadmin”을 참고한다.

2.23. tmapm

Tmax 시스템에서는 시그알람을 사용한 서비스 타임아웃 설정을 기본으로 한다. tmapm은 시그알람이 사용 가능하지 않거나, 용이 하지 않은 경우 서비스 타임아웃을 설정 및 사용할 수 있는 별도의 서버이다.

tmapm은 USC서버로 환경설정 SERVER 절에 다음과 같이 설정한다.

*SERVER
tmapm    CLOPT = [ -i sec ]
                 [-r sec ]
                 [-c command ]
                 [-l [ 0 | 1 | 2 ]]
옵션설명
[ -i sec ]서비스 타임을 체크하는 주기(초)이다. 짧을 수록 시스템 부하가 증가한다. 소수점도 설정 가능하다.
[-r sec]서비스 타임 이후 커맨드를 실행하기까지의 제한 시간(초)이다. 정수형으로 설정해야 한다.
[-c command]해당 서비스가 수행시간(SCVTIME + 커맨드 실행 제한시간)까지 RUNNING 상태일 경우 실행할 커맨드이다. 셸 명령어나 스크립트가 될 수 있다.
[-l [ 0 | 1 | 2 ]]사용자 로그 레벨이다. 기본값은 0이며, 높을 수록 좀 더 자세한 정보 출력한다.

-c 옵션으로 설정한 커맨드를 실행할 경우 다음과 같이 파라미터를 전달한다.

User CommandPIDSVRNAMESVCNAME[Elapse Time]
kill.sh9659svr2TOUPPER[5]

다음은 tmapm 설정의 예이다.

*SERVER
tmapm    SVGNAME = svg, 
         SVRTYPE = UCS, 
         CLOPT = "-o ulog  --  -i 5 -r 1 -c kill.sh -l 1"

2.24. tmaxlibver

Tmax 라이브러리의 버전 정보를 조회하는 명령어이다. UNIX용 라이브러리를 사용하는 경우, 해당 라이브러리만으로 Tmax의 버전을 알 수 없다. Tmax v5.0 SP1 이후에서는 tmaxlibver이라는 명령어를 통해 Tmax 라이브러리의 버전을 확인할 수 있다.

  • 사용 방법

    $ tmaxlibver {-l filename} {-d | -s} [-6] [-L directory] [-o arg] [-h]
    항목설명
    { -l filename }조회하기 위한 라이브러리명을 지정한다.
    { -d | -s }라이브러리의 dynamic (-d) 또는 static (-s)의 여부를 설정한다.
    [ -6 ]라이브러리가 64Bit일 경우 설정하는 옵션으로 설정하지 않으면 32Bit로 동작한다. -6이 설정되고 [–L] 옵션이 설정되지 않은 경우 $TMAXDIR/lib64 디렉터리에 위치한 라이브러리를 자동 참조한다.
    [ -L directory ]조회하기 위한 라이브러리가 위치하는 절대경로 또는 상대경로를 입력한다. 지정하지 않은 경우 [-6] 옵션에 따라 디폴트 경로가 달라지게 된다.
    [ -o arg ]실행할 때 생성되는 임시 파일의 경로로 설정하지 않는다면, 해당 유틸리는 "/tmp/tmaxlibver_stub" 이름으로 파일들을 생성되고 실행을 종료할 때 삭제한다.
    [ -h ]명령어 도움말 옵션이다.
  • 예제

    $ tmaxlibver -l libsvr.a –s -6
    libsvr.a for TMAX Version 5.0 SP #1 64bit binary for AIX 5L

주의

Tmax v5.0 SP1이후에서는 libcli, libclithr, libsvr, libsvrucs의 4개 라이브러리에 대해서만 버전 정보 조회 기능을 사용할 수 있다.

2.25. tmaxtrace

Tmax 애플리케이션 관리자나 개발자가 각 애플리케이션에 대하여 Runtime Tracing을 할 수 있도록 하는 명령어이다. Runtime Tracing은 애플리케이션이 실행하는 동안의 수행에 대하여 기록을 남기는 Trace point 개념에 근거하고 있다. Trace point는 tpcall()과 같은 atmi 함수의 시작이나 끝, 트랜잭션의 시작 등을 예로 들 수 있다.

Trace point가 발생했을 때 나타나는 현상은 다음과 같다.

  1. Trace point가 유효한 것인지를 확인하기 위해 필터가 적용된다. 유효하다면 Trace record가 receiver 파일에 기록되고 마지막으로 Action이 일어난다. Action은 프로세스를 종료(abort)시키거나, 시스템 call을 호출하는 등 여러 가지가 있을 수 있으며 이는 선택 옵션이다.

  2. Filter, Receiver, Trigger 항목은 아래에서 설명하는 스펙에 따라 정의된다. 이 항목은 TMAX_TRACE의 환경변수를 선언하면 정의할 수 있으며 클라이언트와 서버 모두 설정할 수 있다.

    실행 중인 프로세스의 spec을 변경하기 위해서는 tmadmin 툴의 chtrc 명령어로 변경할 수 있다.

  3. TMAX_TRACE 스펙 중 Trigger 옵션을 'dye'로 설정하였을 경우에는 해당 프로세스의 요청을 받는 서버의 프로세스들도 Runtime Tracing이 수행된다. 클라이언트에서 dye를 설정하였다면 해당 서비스를 수행하는 프로세스가 atmi category가 되며, Runtime Tracing이 수행된다.

  4. 클라이언트에서 TMAX_TRACE를 사용할 경우, 클라이언트 환경설정 파일(tmax.env)이나 환경변수에 ULOGPFX를 반드시 지정한다. 아래와 같이 지정할 경우, 해당 디렉터리에 <clilog.날짜> 파일이 생성되며, 이 파일에 해당 로그가 쌓인다.

    예) ULOGPFX=/data1/tmax50/client/clilog

다음은 TMAX_TRACE의 사용법에 대한 설명이다.

  • 사용 방법

    TMAX_TRACE=filter-spec:receiver-spec[:trigger-spec]
    • filter-spec : category

      특정 category에 대하여 Runtime Tracing을 수행할지를 결정한다. 모든 category를 표현하기 위해서 애스터리스크(*) 문자를 설정할 수 있으며 filter-spec에 값을 설정하지 않을 경우 아무런 category가 선택되지 않았다는 것을 의미한다.

      다음은 category의 목록이다.

      category설명
      atmi사용자가 호출한 ATMI 및 TX 인터페이스(tp 혹은 tx로 시작하는 함수)를 호출하는 경우 Runtime Tracing이 수행된다.
      iatmi사용자가 호출한 ATMI 및 TX 인터페이스 외에도 인터페이스에서 내부적으로 호출한 인터페이스들까지도 Runtime Tracing이 수행된다.
      xa모든 XA 인터페이스를 호출하는 경우 Runtime Tracing이 수행된다.
      traceTmax Trace가 설정된 정보를 출력한다.

    • receiver-spec : [/regular-expression/]receiver

      receiver는 trace record가 보내지는 파일이다. 현재 receive는 ulog만이 사용된다. ulog로 설정된 경우, user log로 Runtime Tracing이 수행된다. regular-expression이 사용되면 filter-spec에 적용되는 Trace point를 제한할 수 있다. receiver-spec를 설정하지 않을 경우 아무런 trace record도 기록이 되지 않는다.

      항목설명
      trace recordreceiver에 'process-name.pid.hhmmss: TMAXTRACE:cc data' 와 같은 형태로 기록된다. cc는 category에 따라서 달라지는데 atmi인 경우 at, iatmi인 경우 dt, xa인 경우 xa, trace인 경우 tr로 나타낸다.
    • trigger-spec : [/regular-expression/]action

      trigger는 trace record가 receiver로 보내진 후의 action을 설정하는 항목으로, 옵션 항목이다.

      다음은 action에 설정할 수 있는 동작에 대한 설명이다.

      항목설명
      abortabort()를 호출하여 프로세스를 종료시킨다.
      ulog(message)user log에 메시지를 쓴다.
      system(command)system()을 사용하여 command를 실행시킨다. Windows에서는 지원하지 않는다.
      trace(trace-spec)trace-spec으로 Tmax trace의 스펙을 변경한다.
      dye메시지를 dyeing한다.
      undye메시지를 dyeing하지 않는다.
      sleep(seconds)설정한 seconds만큼 sleep한다. Windows에서는 지원하지 않는다.
  • 예제

    • 다음은 atmi 인터페이스를 호출한 경우 모두 Runtime Tracing이 수행되는 예제이다.

      export TMAX_TRACE=atmi:ulog
    • 다음은 atmi/tx 인터페이스 중에서 tpcall()을 호출한 경우에만 Runtime Tracing이 수행되는 예제이다.

      export TMAX_TRACE=atmi:/tpcall/ulog
    • 다음은 atmi/tx 인터페이스가 호출될 경우, abort()를 이용하여 해당 서버 프로세스를 종료시키는 예제이다.

      export TMAX_TRACE=atmi:ulog:abort
    • 다음은 atmi/tx 인터페이스를 호출한 경우 모두 Runtime Tracing이 수행되지만 tpend()를 호출한 경우에는 해당 프로세스는 abort()에 의해 종료되는 예제이다.

      export TMAX_TRACE=atmi:ulog:/tpend/abort
    • 다음은 모든 category에 대해서 Runtime Tracing이 수행되는 예제이다.

      export TMAX_TRACE=*:ulog:dye
    • 다음은 atmi/tx 인터페이스의 호출 뒤에 trace spec이 “*:ulog:dye”로 수정되는 예제이다.

      export TMAX_TRACE=atmi:ulog:trace(*:ulog:dye)
    • 다음은 tpalloc() 호출 후에 trace spec이 “*:ulog:dye”로 수정되는 예제이다.

      export TMAX_TRACE=atmi:ulog:/tpalloc/trace(*:ulog:dye)
    • 다음은 'TMAX_TRACE=atmi:ulog:dye' 와 동일한 예제이다.

      export TMAX_TRACE=on
    • 다음은 tmaxtrace를 사용하지 않는 예제이다. (기본값)

      export TMAX_TRACE=off

2.26. tmboot

Tmax 시스템의 전체나 또는 일부분을 실행시키는 명령어로, Tmax 환경 파일을 바탕으로 시스템을 실행한다.옵션 없이 실행되거나 [-f] 옵션만이 사용되면, 모든 Tmax 관리 프로세스들과 Tmax 환경 파일의 SERVER 절에 등록된 모든 서버 프로세스들을 실행시킨다.

NODE 절에 등록된 모든 노드에서 Tmax 관리 프로세스인 TMM, CLL, CLH 프로세스가 순서대로 실행된다. SVRGROUP 절에 OPENINFO 항목이 등록된 서버 그룹이 존재한다면, 각 서버 그룹별로 TMSNANEMINTMS 항목을 참조하여 TMS 프로세스들이 실행된다. Tmax 관리 프로세스들은 노드별로 정의된 TMAXDIR 디렉터리 하위의 bin 디렉터리에서 실행된다.

Tmax 관리 프로세스들이 생성된 후에는 SERVER 절의 모든 응용 서버 프로세스들이 실행된다. 응용 서버 프로세스들은 SERVER 절에 등록된 순서대로 실행된다. tmboot는 실행된 서버 프로세스의 초기화를 실행한 후에 다음 서버 프로세스를 실행시킨다. 프로세스 초기화는 tpsvrinit()를 이용해서 진행한다. 모든 서버 프로세스들이 초기화를 모두 완료할 때까지 다음 프로세스가 실행되지 않는다. tmboot는 각 응용 서버 프로세스들을 그들의 MIN 항목에 정의된 개수만큼 실행시킨다. MIN 항목이 정의되지 않은 경우 기본값은 1개이다.

tmboot는 SERVER 절의 서버들에 대하여 CLOPT, MIN, MAX 항목의 값을 사용한다. 서버 프로세스가 실행될 때 tmboot에 의해 사용되는 서버의 boot 파라미터이며, 서버의 나머지 항목들은 서버가 실행된 후 시스템에 의해 실행되는 runtime 파라미터이다. 설정 정보는 source config 파일의 SERVER 절을 참고한다.

모든 응용 서버 프로세스들은 동작하는 노드에 정의된 APPDIR 디렉터리에서 실행된다.

  • 사용 방법

    $tmboot [-A] [-b] [-c] 
            [-f 이진 Tmax 환경 파일명] 
            [-g servergroup_name [-a] [-i]] 
            [-h] [-V] [-n node_name] 
            [ -o clopt_string ]
            [-q RQ svg_name]
            [-s server_name [-k count] [-a]] 
            [-S server_name [-a]] 
            [-t TMS_name[-k all]]
            [-B TRB_node] [-T] [-w] 
            [-d boot_time] [-D] 
            [-e clh | cas | tlm ] 
            [-k] [-R] 
    항목설명
    [ -A ]Tmax 환경 파일의 SERVER 절에 정의된 모든 응용 서버 프로세스를 실행하는 옵션이다.
    [ -b ]백업으로 지정된 서버 프로세스를 임의로 기동시키고자 할 때 사용하는 옵션이다.
    [ -c ]CLH 프로세스를 하나 더 실행시키는 옵션이다. 현재 동작 중인 CLH 프로세스 개수가 Tmax 환경 파일에 정의된 MAXCLH 값을 넘지 않는 범위 내에서만 사용 가능하다.
    [ -f 이진 Tmax 환경 파일명 ]참조할 이진 Tmax 환경 파일(source config 파일을 cfl로 컴파일한 결과물)을 경로와 함께 지정하여야 한다. [-f] 옵션이 생략될 경우, 기본으로 TMAXDIR 디렉터리 하위의 config 디렉터리에서 tmconfig 파일을 참조한다.

    [-g servergroup_name [-a]

    [-i]]

    지정된 서버 그룹에 존재하는 서버 프로세스를 실행하는 옵션이다. 사용되는 서버 그룹명은 Tmax 환경 파일 내의 SVRGROUP절에 등록한다.

    만약 [-a] 옵션을 함께 사용하면 서버의 기동을 TMBOOT 프로세스가 아닌 TMM 프로세스에 위임한다.

    만약 [-i] 옵션을 함께 사용하지 않는다면 기본적으로 서버를 부팅시키는 과정에서 기동 과정 중간에 이미 max에 도달한 서버가 있을 때 전체 기동 과정이 중지된다. 그러나 [-i] 옵션을 함께 사용하면 max에 도달한 서버가 있더라도 다음 서버들을 기동할 수 있도록 중지하지 않고 계속 진행하게 된다. 대신 모든 서버들이 max에 도달했을 경우에는 다음과 같은 메시지를 출력한다.

    (I) BOOT3022 all servers in group (svgname) reached max [BOOT0039]

    [ -h ]명령어 도움말 옵션이다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [-n node_name]지정된 노드에 존재하는 서버 프로세스들을 실행시키는 옵션이다. 노드명은 Tmax 환경 파일 내의 NODE 절에 미리 등록되어 있어야 한다.
    [ -o clopt_string ]CLOPT string을 추가하기 위한 옵션이다.
    [ -q RQ svg_name ]RQS를 시동시키기 위한 옵션이다.
    [ -s server_name [-k count] [-a]]

    지정된 서버 프로세스만을 실행시키는 옵션이다. 사용되는 서버 프로세스명은 Tmax 환경 파일 내의 SERVER 절에 미리 정의되어 있어야만 한다. [-k] 옵션을 함께 사용하여 서버 프로세스 개수를 지정할 수 있다.

    서버 프로세스 개수는 현재 실행되어 있는 개수를 포함하여 SERVER 절의 MAX 항목에 정의된 개수를 넘어서는 안된다.

    [-k] 옵션을 생략하면 해당 서버 프로세스는 하나만 실행된다. 만약 -a 옵션을 함께 사용하면 서버의 기동을 TMBOOT 프로세스가 아닌 TMM 프로세스에 위임한다.

    [ -S server_name [-a]]지정된 서버 프로세스를 MIN 개수만큼 실행시키는 옵션이다. 만약 -a 옵션을 함께 쓰면 서버의 기동을 TMBOOT 프로세스가 아닌 TMM 프로세스에 위임한다.
    [-t TMS_name [-k all]]

    지정된 TMS 프로세스를 하나 더 실행시키기 위한 옵션이다. Tmax 환경 파일에 정의된 MAXTMS 값을 넘지 않을 경우에만 가능하다.

    [-k all]은 트랜잭션 Recovery 기능을 사용하고자 할 경우 필요한 옵션이다. 그룹 전체를 종료했다가 기동할 경우 Recovery가 수행되기 때문에 Recovery는 TMS 그룹 단위로 가능하다. 특정 이름을 가진 TMS 전체를 기동/종료할 경우 이 옵션을 사용할 수 있다.

    [-B TRB node]TRB 노드를 기동시킨다.
    [ -T ]Tmax 시스템 프로세스(TMM, CLL, CLH, TMS)만을 실행시키는 옵션이다.
    [ -w ]

    옵션이 없는 경우에는 등록된 서버 프로세스를 동시에 기동시킨다. 이 경우 운영체제에 따라 동시에 리소스를 만들어내지 못해 서버 프로세스가 올바르게 기동되지 못하는 경우가 발생한다. 이러한 문제를 해결하기 위해 프로세스를 하나씩 기동시켜 올바르게 기동시키는 옵션이다.

    • 서버 프로세스들이 TMM에 접속할 때 LOCK 사용 조건 (LOCK | NOLOCK)

    • 서버 프로세스가 기동될 때 WAIT 조건 (NO-WAIT | FINITE-WAIT)

      • "-d -1000000 (1sec)"와 동일한 효과를 가진다.

      • [-d] 옵션이 없는 경우에만 의미가 있다.

      • [–d] 옵션이 사용되면 [–w] 옵션은 무시된다.

    [ -d boot_time]

    한 번에 많은 서버 프로세스를 기동시킬 때 CLH로의 등록요구가 폭주하여 생기는 문제를 해결하기 위해 서버 프로세스들이 기동하는 데 걸리는 총 시간을 지정하여 등록 간격을 조절할 수 있다. (기본값: LOCK, NO-WAIT, 단위: usec)

    • 서버 프로세스들이 TMM에 접속할 때 LOCK 사용 조건 (LOCK | NOLOCK)

    • 서버 프로세스 기동될 때 WAIT 조건 (NO-WAIT | FINITE-WAIT)

      • -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이 음수인 경우, LOCK을 사용한다. 이 옵션이 사용되었을 경우 [-w] 옵션은 무시된다.

    [ -D][-d] 옵션과 거의 유사하지만 finite-wait될 때 signal이 오더라도 |VAL|까지는 무조건 WAIT한다.
    [-e clh | cas | tlm ]

    Tmax 엔진 프로세스 중 CLH, CAS, TLM을 부팅하기 위한 옵션으로 tmboot 할 경우에 문제가 발생했거나, kill로 인하여 잘못하여 엔진 프로세스가 비정상 종료된 경우에 사용한다. tmdown에서는 이 옵션을 제공하지 않는다.

    • clh : CLH를 부팅한다.

    • cas : CAS를 부팅한다.

    • tlm: TLM을 부팅한다.

    [-R]리모트 셸(rsh 또는 remsh)을 사용하여 리모트 노드의 Tmax 시스템을 부팅시키는 경우 [-R] 옵션을 사용한다.
  • 적용 환경

    Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    • 다음은 TMAXDIR 디렉터리 하위의 config 디렉터리에 있는 tmconfig 파일을 참조하여 Tmax 프로세스와 응용 서버 프로세스들을 모두 실행하는 예제이다.

      $ tmboot
    • 다음은 tms_name으로 생성된 모든 TMS가 기동되는 예제이다.

      $ tmboot -t tms_name -k all
    • 다음은 서버 그룹의 설정 옵션을 사용한 예제이다. 서로 다른 서버 그룹에서 tms_name을 동일하게 사용하는 경우 다음과 같이 [–g] 옵션으로 해당 TMS가 속해있는 서버 그룹명을 지정한다. 그렇지 않으면 해당 TMS명을 가진 가장 첫 번째 서버 그룹의 TMS가 기동된다.

      $ tmboot -t tms_name -k all -g svgname
    • 다음은 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

참고

cfl, tmdown 명령어에 대한 자세한 내용은 각각 cfl, “2.28. tmdown”을 참고한다.

tmboot를 실행할 때의 tmconfig 경로 참조

tmboot 명령어로 Tmax를 기동할 경우 이진 바이너리 환경 파일 $TMAXDIR/config/tmconfig를 $TMAXDIR/path/tmconfig에 복사한 후 $TMAXDIR/path 디렉터리에 있는 환경 파일을 사용한다.

하지만 이미 Tmax 엔진이 기동되어 있는 상황에서 tmboot –S 또는 –s 를 이용하여 특정 서버만을 기동하고자 할 경우에도 $TMAXDIR/config/tmconfig를 참조한다면 아래와 같은 환경에서 문제가 될 수 있다.

  • 환경 파일

    <기존 운영 환경 파일>

    *SVRGROUP
    svg1       NODENAME = "tmaxh4"
    *SERVER
    svr1       SVGNAME = svg1
    svr2       SVGNAME = svg1
    *SERVICE
    TOUPPER1   SVRNAME = svr1
    TOUPPER2   SVRNAME = svr2

    <운영 중 변경된 환경 파일>

    *SVRGROUP
    svg1       NODENAME = "tmaxh4"
    *SERVER
    svr1       SVGNAME = svg1
    svr3       SVGNAME = svg1
    svr2       SVGNAME = svg1
    *SERVICE
    TOUPPER1   SVRNAME = svr1
    TOUPPER3   SVRNAME = svr3
    TOUPPER2   SVRNAME = svr2

다음과 같이 운영 중 변경된 환경 파일을 CFL로 재컴파일한다.

$ cfl –i node1.m

새로 추가된 서버를 기동한다.

$ tmboot –S svr3

운영 중인 환경에서 환경 파일을 변경한 후 tmboot –S를 시도하려면 다음과 같은 에러가 발생할 수 있다.

(E) BOOT3007 maxsvr (1) is over for svr(svr3:svr2): nodeno = 0, svri = 5, cur = 1, ksvr = 1 [BOOT0015]

운영 환경에서 CFL을 수행하였을 경우, $TMAXDIR/config/tmconfig는 변경된 내용이 적용되지만 실제 공유 메모리에는 변경되기 이전인 $TMAXDIR/path/tmconfig와 동일하게 구성되어 있기 때문에 tmboot –S로 새로 추가한 서버 프로세스가 기동될 때 실제로는 기존에 이미 실행 중인 서버 프로세스를 추가로 기동하는 결과가 발생한다. Tmax 엔진이 기동되어 있는 상황에서의 CFL은 허용되지 않지만 이 실수로 인한 에러가 발생하면 해당 에러는 디버깅 하기가 쉽지 않다.

따라서 Tmax 엔진 동작 중 tmboot –S, -s –g, -q, -t, -A 등의 옵션으로 각 서버를 기동시킬 때 참조하는 tmconfig의 경로는 $TMAXDIR/config/tmconfig가 아닌 $TMAXDIR/path/tmconfig이다(단, 엔진을 기동할 경우 $TMAXDIR/path/tmconfig를 참조한다).

$ cfl –i new_config.m –o tmchg
$ tmadmin : cfgadd –I tmchg
$ tmboot –S new_svr –f tmchg

주의

tmboot를 수행할 때 [-f] 옵션을 사용하여 특정 이진 바이너리 환경 파일을 지정하면 $TMAXDIR/config/tmconfig를 참조하여 서버를 기동한다. 동적 서버를 추가할 때에는 반드시 [–f] 옵션으로 특정 환경 파일을 지정하여 $TMAXDIR/config/의 변경된 이진 바이너리 환경 파일을 참조하도록 한다.

2.27. tmd

서버 프로그램을 테스트하기 위해 클라이언트를 시뮬레이션하는 명령어이다. 프로그래머는 직접 클라이언트 프로그램을 작성하지 않아도 쉽게 서버 프로그램의 동작 상태를 확인할 수 있다.

참고

tmd 명령어는 Windows NT와 Windows 2000 환경에서는 작동하지 않는다.

tmd에서 지원하는 버퍼 유형은 STRING, CARRAY, FIELD, 구조체 버퍼이다. CARRAY 버퍼의 경우에는 print 가능한 데이터에 대해서 지원한다. STRING이나 CARRAY 데이터는 공백으로 데이터의 끝을 간주하기 때문에 계속되는 데이터를 표시하기 위해서는 큰따옴표(" ")로 데이터를 처리해야 한다. 구조체 버퍼의 경우 단일 구조체에 대해서 지원하고 있으며 송, 수신 구조체 타입이 일치해야 한다. 수신한 버퍼 유형과 같은 버퍼를 tpreturn() 함수 내의 파라미터로 사용해야 한다.

그렇지 않으면 다음과 같은 에러 메시지를 출력한다.

(E) 3004 not supported output type

  • 사용 방법

    $ tmd [-X] [-T 시간(초)] [-t 시간(초)] [-s] [-V] 
          [-i file_name][-l 크기(byte)][-q]
    항목설명
    [ -X ]트랜잭션 사용 유무를 지정한다. flags가 지정되면 주어진 서비스를 트랜잭션으로 간주하여 처리한다.
    [ -T 시간(초) ]트랜잭션 타임아웃을 지정한다. tx_set_transaction_timeout(시간)과 같은 기능을 수행하게 된다.
    [ -t 시간(초) ]블록 타임아웃을 지정한다. tpset_timeout(시간)과 같은 기능을 수행한다.
    [ -s ]tpstart 정보를 콘솔에서 입력받을 수 있도록 하여 사용자에 대한 정보가 시스템에 전달될 수 있도록 하는 기능을 수행한다. 옵션을 설정한 경우 tmd 수행할 때 domain password와 user name, user password를 입력받게 된다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [ -i file_name ]호출할 서비스를 정의한 파일이다.
    [ -l 크기(byte) ][-i] 옵션의 파일의 각 라인을 기본값으로 최대 1024Byte만 불러온다. 한 라인에 1024Byte가 넘어가는 데이터가 있다면 옵션에 지정한 값으로 최대 크기를 조정할 수 있다.
    [ -q ][-i] 옵션의 파일에서 \"가 포함된 string 타입의 데이터를 처리한다. \" 형태의 문자열을 만나면 이를 "로 치환하고 문자열의 일부로 처리한다.
  • 예제

    • 다음은 tmd 명령어를 사용한 예이다.

      $ tmd -i input_data  
      $ tmd -i tmdTest 
      $ tmd -i tmd.sh -s
      $ tmd -i tmdTest -l 4096
    • 다음은 필드 키 버퍼를 사용하는 예제이다. 필드 키 버퍼는 애스터리스크(*)로 시작되며 함수명, 서비스명, 버퍼 타입으로 첫 번째 행이 구성된다. 다음 행에는 필드명과 데이터가 나열되며 서비스 수행의 의미로 마지막에는 Newline을 넣는다.

      Input File  ( input_data ) 작성
      *tpcall BR_ADD FIELD
      BRANCH_ID     1
      LAST_ACCT     9999
      LAST_TELLER   99
      ADDRESS      “25 Powell St. San Francisco, CA 94188”
      PHONE         415-753-9000
      (Newline)
    • STRING 버퍼를 사용하는 경우에는 버퍼 타입에 FIELD 대신 STRING을 입력한다.

      <tmdTest File 작성 예>

      *tpcall TOUPPER STRING
      abc
      (Newline)

2.28. tmdown

Tmax 시스템 전체나 또는 일부분을 종료시키는 명령어이다. tmdown은 Tmax 환경 파일을 바탕으로 하여 Tmax 시스템을 종료시키기 때문에, 기본적으로 [-f] 옵션을 사용하여 참조할 이진 Tmax 환경 파일(source config 파일)을 cfl로 컴파일한 결과물을 경로와 함께 지정해야 한다.

[-f] 옵션이 생략될 경우 기본값으로 TMAXDIR 디렉터리 하위의 config 디렉터리에 있는 tmconfig 파일을 참조한다. [-f] 이외의 옵션이 사용되지 않는다면 tmdown은 Tmax의 모든 관리 프로세스와 Tmax 환경 파일의 SERVER 절에 등록된 모든 서버 프로세스를 종료시키고 Tmax 시스템과 관련된 IPC 자원들을 제거한다. 종료 순서는 다음과 같다.

  1. SERVER 절에 등록된 응용 서버 프로세스들이 종료된다.

  2. 서버 그룹별로 TMS 프로세스가 동작 중이라면 TMS 프로세스가 종료된다.

  3. Tmax 시스템 관리 프로세스들이 종료된다. 프로세스 종료는 CLH, CLL, TMM 순서로 진행된다. 이 순서가 일반적인 시스템 관리 프로세스 종료 순이나, CLH의 MIN 값이 1이 아닌 경우에는 CLL이 CLH보다 먼저 종료될 수도 있다.

백업으로 기동된 서버에 동적으로 등록된 서비스가 있는데 이 서버가 모두 다운되어 동적으로 등록된 서비스가 공유 메모리에서 사라질 경우를 가정해본다. 이 경우 장애 복구 후(백업 서버들이 모두 종료되고 정상 노드의 서버들이 재기동되어 있는 상태), 백업 노드로 접속한 클라이언트에 대해서 naming 서비스를 제공할 수 없게 된다. 따라서 백업 서버의 동적 서비스는 해당 서버가 모두 종료된 후에도 공유 메모리에서 삭제되지 않도록 처리한다.

  • 사용 방법

    $tmdown [-A] [-f 이진 Tmax 환경 파일명] 
            [-g servergroup_name] [-h] [-V][-i] 
            [-n node_name] [-p server_num] [-q RQ svg_name] 
            [ -s server_name [-k count]] [-S server_name] 
            [-t TMS_name[-k all]] 
            [-w wait_time] [-B Nodename][-R] [-y]

    항목설명
    [ -A ]모든 응용 서버 프로세스들을 종료시킨다.
    [ -f 이진 Tmax 환경 파일명 ]시스템이 종료될 때 참조할 이진 Tmax 환경 파일명을 지정하는 항목으로 파일명을 지정하지 않으면 기본값으로 TMAXDIR 디렉터리 하위의 config 디렉터리에 있는 tmconfig 파일을 참조한다.
    [ -g servergroup_name ]지정된 서버 그룹에 속한 서버 프로세스들을 종료한다.
    [ -h ]명령어 도움말 옵션이다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [ -i ]tmdown 명령을 즉시 수행한다. 기본적으로 tmdown 명령은 해당 업무를 모두 종료하고 수행되지만 [-i] (immediately) 옵션에 의한 종료는 현재 수행 중인 업무를 무조건 중단하기 때문에 신중하게 사용해야 한다.
    [ -n node_name ]지정된 노드에 존재하는 모든 서버 프로세스들을 종료시킨다. 노드명은 Tmax 환경 파일의 NODE 절에 등록되어 있어야 한다.
    [ -p server_num ]지정된 서버 프로세스를 종료시킨다. [-s] 옵션에 의한 종료와 달리 tmadmin에서 “st -p” 명령으로 확인할 수 있는 프로세스 번호(spr_no)를 사용하여 특정 프로세스를 종료시킨다.
    [ -q RQ svg_name ]RQS를 종료시킨다.
    [ -s server_name [-k count]]지정된 서버 프로세스 하나만 종료시킨다. 사용되는 서버 프로세스명은 Tmax 환경 파일 내의 SERVER 절에 미리 등록되어 있어야 한다. [-k] 옵션을 함께 사용하여 서버 프로세스 개수를 지정할 수 있다. 서버 프로세스 개수를 현재 실행되어 있는 개수보다 크게 지정하여도 에러는 발생되지 않고 현재 실행되고 있는 모든 프로세스를 종료시킨다. [-k] 옵션을 생략하면 해당 서버 프로세스는 하나만 실행된다.
    [ -S server_name]지정된 서버 프로세스들을 모두 종료시킨다. 하나 이상의 프로세스가 지정되어 있다면 해당되는 모든 프로세스를 종료시킨다.
    [ -t TMS_name [ -k all ]]

    지정된 TMS 프로세스를 하나만 종료시킨다.

    [ -k all ]은 트랜잭션 Recovery 기능을 사용하고자 할 경우 필요한 옵션이다. 그룹 전체를 종료했다가 기동할 경우 Recovery가 수행되기 때문에 Recovery는 TMS 그룹 단위로 가능하다. 특정 이름을 가진 TMS 전체를 기동/종료할 경우 이 옵션을 사용할 수 있다.

    [ -w wait_time]wait_time에 지정된 시간이 지나면 tmdown을 수행한다.
    [-B Nodename]TRB 노드를 종료시킨다.
    [-R]rolling down 시 사용한다.
    [-y]tmdown 시 종료 여부(y | n)를 묻지 않고 바로 종료시킨다.
  • 예제

    • 다음은 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
    • 다음은 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 기능

클라이언트의 요청을 처리하고 있던 Tmax 시스템이 비정상적으로 종료될 경우, 기존 버전에서는 현재 처리 중인 요청에 대해서만 응답을 처리하여 전달한 후, 큐에 쌓여 있는 요청에 대하여 TPECLOSE 에러를 전달하였다. 하지만 Tmax 5에서는 Tmax 엔진을 다운시키기 이전에 요청된 모든 클라이언트에 대하여 정상적으로 응답을 주는 Rolling Down 기능을 제공한다.

  • 사용 방법

    $ tmdown –R –n node_name
    항목설명
    –n node_name종료되는 노드명을 지정한다.
  • 적용 환경

    Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    다음은 NODEA와 NODEB가 멀티 노드(혹은 멀티 도메인)로 구성되어 있으며, 총 100개의 클라이언트가 NODEA에 접속되어 있다고 가정할 경우의 처리 과정을 설명하는 예제이다.

    • NODEA의 Tmax 시스템을 종료시킬 경우

      $ tmdown –R –n NODEA
      1. NODEA의 CLL은 클라이언트로부터의 Listen 포트를 막는다.

      2. NODEA에서 기존에 처리되고 있던 요청에 대해서는 처리를 완료한 후 클라이언트에게 처리 결과를 전달한다.

      3. 큐에 쌓여 있는 요청에 대해서는 TMAX_BACKUP_ADDR로 설정된 NODEB에 요청을 보낸다.

      4. NODEA의 Tmax 시스템이 종료된다.

      5. NODEB에서는 NODEA로부터 받은 요청을 처리한 후, 처음 해당 request를 요청한 클라이언트에게 처리 결과를 직접 전달한다.

      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 포트를 막는다.

      4. NODEB에서 기존에 처리되고 있던 요청에 대해서는 처리를 완료한다.

      5. 클라이언트는 NODEA에 접속되어 있는 상황이므로 해당 처리 결과를 NODEA의 CLH에게 전달, NODEA의 CLH는 클라이언트에게 처리 결과를 전달한다.

      6. NODEB의 큐에 쌓여 있는 요청에 대해서는 TMAX_BACKUP_ADDR로 설정된 NODEA에 요청을 보낸다.

      7. NODEB의 Tmax 시스템이 종료된다.

      8. NODEA에서는 NODEB로부터 받은 요청을 처리한 후, 처음 해당 request를 요청한 클라이언트에게 처리 결과를 전달한다.

      9. NODEA에 접속되어 있는 모든 클라이언트는 정상 응답을 받는다. 100개의 클라이언트가 모두 정상 응답을 받아야 한다.

    주의

    NODEA의 요청을 NODEB가 처리하기 위해서는 NODEA에 접속한 클라이언트의 TMAX_BACKUP_ADDR, TMAX_BACKUP_PORT가 NODEB로 설정되어 있어야 한다. 그렇지 않을 경우 NODEA의 Tmax 시스템이 종료되는 순간 아직 처리되지 않은 클라이언트 요청에 대하여 TPESYSTEM 에러를 전달한다.

2.29. tmmbfgen

텍스트의 서비스 정보 파일을 서비스 정보 바이너리 파일로 만드는 명령어이다. 사용자가 작성한 서비스 정보 파일은 그대로 웹 서비스 게이트웨이와 xwsdlgen에서 사용할 수 없기 때문에 tmmbfgen으로 새로운 파일을 생성해야 한다. tmmbfgen에 의해서 생성된 파일을 서비스 정보 바이너리 파일이라고 한다. tmmbfgen을 하면 문법을 체크하고 파라미터의 타입 체크를 통해서 웹 서비스 게이트웨이에서 참조하기 전에 미리 유효성 검사를 할 수 있으며 텍스트 문서를 여러 개로 분할하여 관리가 가능하다.

  • 사용 방법

    $ tmmbfgen [-r text_file,] [-i text_file] [-d svc] -o binary_file 
    항목설명
    [ -r text_file ]서비스 정보 파일(text) 리스트를 입력한다.
    [ -i text_file ]서비스 정보 파일(text)을 입력한다.
    [ -d svc ]삭제할 서비스명 리스트를 입력한다.
    -o binary_file생성할(변경할) 서비스 정보 바이너리 파일(default = sample)한다.
  • 예제

    • 다음은 새로운 서비스 정보 바이너리 파일을 생성하는 예제이다. sample을 생성하고 sample.txt와 sample2.txt에 정의된 서비스 정보를 sample에 입력한다.

      $ tmmbfgen -r sample.txt,sample2.txt -o sample
    • 다음은 기존 서비스 정보 바이너리 파일에 서비스 정보를 추가하는 예제이다. 기존 sample 파일에 sample.txt에 정의된 서비스 정보를 추가한다. 같은 서비스가 있는 경우 파일이 교체된다.

      $ tmmbfgen -i sample.txt -o sample
    • 다음은 기존 서비스 정보 바이너리에서 특정 서비스 삭제하는 예제이다. sample 파일에서 서비스 SVC1, SVC2의 정보를 삭제한다.

      $ tmmbfgen -d SVC1,SVC2 -o sample

참고

untmmbfen 명령어에 대한 자세한 내용은 “2.33. untmmbfgen”을 참고한다.

2.30. tmsnmpd

표준 SNMP 프로토콜에 의해서 Tmax 구성 및 성능 정보 조회하는 명령어로 조회가 가능하도록 SNMP Agent인 tmsnmpd가 추가되었다. CNMP 프로토콜은 기본적으로 UDP 161번을 사용하므로 이 포트를 사용하려면 root 권한이 있어야 하며, 1024 이후의 포트를 사용할 경우 일반 사용자 계정으로도 사용 가능하다. Tmax SNMP Agent는 tmboot와 무관하게 tmsnmpd를 실행해야 한다. racd와 동일하게 tmboot / tmdown과 무관하게 동작한다. tmsnmpd를 실행하기 전에 환경변수로 TMAXDIR이 지정되어 있어야 한다.

  • 사용 방법

    $ tmsnmpd [[-h | -d| -f | -n node_name | -i| -l| -t| -p| -V] [[프로토콜:][IP:][PORT]]
    항목설명
    [ -h ]사용법을 조회한다.
    [ -d ]디버그 모드로 동작한다.
    [ -f ]config_file로 해당 위치의 config 파일을 사용하고, 설정하지 않을 경우 $TMAXDIR/snmp/tmsnmpd.conf를 사용한다.
    [ -n node_name ]멀티 노드 환경에서 노드명을 지정한다.
    [ -i ]env_file로 해당 위치의 env_file 파일을 사용한다.
    [ -l ]환경 파일 내에서 적용할 라벨을 지정한다.
    [ -t ]TMM과의 연결 체크 주기를 설정한다.
    [ -p ]성능 정보의 수집 주기를 설정한다.
    [ -V ]버전 정보를 조회한다.
    [ 프로토콜 ]TCP, UDP 중 지정한다. (기본값: UDP)
    [ IP ]모니터링할 IP를 지정한다.
    [ PORT ]SNMP 유틸리티가 접속할 때 사용할 tmsnmpd의 listen 포트를 지정한다.
  • 예제

    tmsnmpd를 실행할 때 root 권한이 없으면 아래와 같이 포트를 지정한다. 혹은 tmsnmpd.conf에서 agentAddress로 지정할 수 있다.

    $ tmsnmpd 9999

참고

tmmbfgen 명령어에 대한 자세한 내용은 “2.29. tmmbfgen”을 참고한다.

Tmax SNMP MIB

사용자는 Tmax 서버의 속성 및 통계 정보에 접근할 수 있으며, 이것들은 Tmax MIB에 정의되어 있다. MIB는 표준 SNMP의 한 부분이다. MIB에 대한 내용은 www.ietf.org 사이트를 참고한다.

  • MIB 브라우징

    Tmax MIB 파일은 $TMAXDIR/snmp/mib/TMAXSOFT-TMAX-MIB.mib로 존재해야 한다. 직접 MIB 파일을 확인할 수 있으며, 3rd-party MIB 브라우저를 사용할 수 있다. Tmax에서는 MIB 브라우저를 제공하지는 않지만, SNMP 유틸리티 벤더 대부분에서 MIB 브라우저를 제공한다.

  • 객체 식별(OID)

    OID는 관리되는 객체를 구별하기 위한 정수를 나열한 것으로, OID 트리 구조를 사용해서 객체의 경로를 정의한다. OID는 MIB 파일에서 정의된다. Tmax SNMP Agent로 특정한 OID 값을 가진 SNMP 패킷을 보내면 OID와 일치하는 정보를 얻을 수 있다.

다음은 Tmax MIB의 OID 트리를 나타낸다. TmaxSoft의 Enterprise OID는 1.3.6.1.4.1.14586이다. 모든 Tmax의 속성값의 접두어는1.3.6.1.4.1.14586.200이 된다.

[그림 2.2] Tmax SNMP의 OID

Tmax SNMP의 OID

  • 주의사항

    현재 버전에서는 SNMP v1, v2c만을 지원한다. 구성 및 성능에 대한 조회만 가능하다(READ-ONLY 기능만 지원). SNMP 유틸리티(snmpget, snmpwalk등)는 해당 OS 벤더에서 지원받거나, NET-SNMP(http://net-snmp.sourceforge.net/) 등을 사용할 수도 있다.

    NET-SNMP의 간단한 사용 예는 아래와 같다.

    $ nmpwalk –v 2c –c tmax 192.168.1.100:9999 1.3.6.1.4.1.14586.200

환경설정

  • 환경설정 파일의 위치

    SNMP Agent(tmsnmpd)를 사용하기 위해서 $TMAXDIR/snmp/tmsnmpd.conf 환경설정 파일이 있어야 한다.

  • 환경설정 방법

    SNMP 유틸리티(snmpget, snmpwalk 등)를 사용하여 정보를 조회하거나 값을 설정하는 등의 통신을 위한 community string을 지정한다. Tmax 4.0 SP1 이상에서는 rocommunity 설정만 지원한다. IPv6 통신 환경이라면 'rocommunity6'로 설정한다.

    rocommunity <string>

  • 환경설정 예제

    만약 tmax라는 community명으로 UDP로 포트 9999로 IPv4와 IPv6로 동시에 열고 싶다면 $TMAXDIR/snmp/tmsnmpd.conf 파일에 아래와 같이 설정하고 tmsnmpd를 기동한다.

    agentAddress udp:9999, udp6:9999
    rocommunity tmax
    rocommunity6 tmax

2.31. tperr

tperr은 Tmax 에러 번호와 에러 타입을 이용하여 에러에 관한 자세한 정보를 조회할 수 있도록 하는 명령어로, Tmax 시스템 운용 중에 발생하는 에러에 대해서 쉽게 원인을 찾아 해결할 수 있도록 해준다.

  • 사용 방법

    $ tperr {-t error type} {-e errno number} [-f filename] [-h] [-V]
    항목설명
    { -t error type }에러 타입을 설정한다. 모듈명을 지정하는 옵션으로 반드시 필요하다. 자세한 내용은 아래 표를 참고한다.
    { -e errno number }에러 번호를 지정하는 옵션으로 반드시 필요하다.
    [ -f filename ]에러 메시지에 관한 내용이 담겨 있는 텍스트 파일로 지정하지 않을 경우 $TMAXDIR/bin/_tmax_errno라는 텍스트 파일이 적용되며 이 파일은 기본적으로 제공된다.
    [ -h ]명령어 도움말 옵션이다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.

    다음은 에러 타입에 대한 설명이다.

    에러 타입설명
    TPETmax API 에러이다.
    ADMTmax Administration 툴(tmadmin) 에러이다.
    BOOTTmax Boot-up 툴(tmboot) 에러이다.
    CASCAS(Client Authentication Server) 에러이다.
    CFLCFL(Tmax Configuration File Compiler) 에러이다.
    CLHCLH(Client Handler) 에러이다.
    CLICLI(Client Library) 에러이다. (libcli.a, tmax.dll)
    CLLCLL(Client Listener) 에러이다.
    DOWNTmax Shutdown 툴(tmdown) 에러이다.
    FDLCfdlc(FDL File Compiler) 에러이다.
    GST서비스 테이블 생성 툴(gst) 에러이다.
    MKPW패스워드 관리 Tool(mkpw) 에러이다.
    RACracd(Remote Access Control Daemon) 에러이다.
    RQSrqs(Reliable Queue Server) 에러이다.
    SDLCsdlc(SDL File Compiler) 에러이다.
    SVR서버 라이브러리 에러이다. (libsvr.a)
    TCPGWCustom TCP/IP 게이트웨이 에러이다. (libtcpgw.a)
    TMDServer Application Test Tool (tmd)
    TMGWCustom TCP/IP Gateway (libtcpgw.a)
    TMMTmax 관리(tmm) 에러이다.
    TMSTMS 라이브러리 에러이다. (libtms.a)
  • 적용 환경

    Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    (E) BOOT3008 server(svr000) is not in config [BOOT0022] 
    
    $ tperr -t BOOT -e 3008 
    [BOOT3008] : server (svr_name) is not in config. 
    Type : ERROR 
    Description : You specified invalid server name. 
    Action : Check the configuration file for valid server names. 
    TPEBADDESC (2) 
    
    $ tperr -t TPE ?e 2 
    [TPE 2] : TPEBADDESC 
    Cause : invalid call descriptor. 
    Solution : After confirm whether cd is valid, must call again tpstart().

참고

에러 메시지의 자세한 내용은 "Tmax Error Message Reference"를 참고한다.

2.32. uncfl

텍스트 형태의 Tmax 환경 파일을 컴파일하여 생성된 tmconfig(이진 Tmax 환경 파일)을 다시 역으로 분석하여 텍스트 형태의 환경 파일로 변환하는 명령어이다. 환경 파일을 컴파일하고 기동시킨 후 실수로 텍스트 환경 파일을 삭제한 경우에 유용하게 사용할 수 있다.

또한 여러 개의 텍스트 환경 파일을 작성 후 시스템 운용 중에 현재 어떤 환경으로 동작하고 있는지 확인할 경우에도 유용하게 사용할 수 있으며 tmadmin의 cfgadd 명령어를 이용하여 서비스를 동적으로 추가할 때에도 유용하게 사용될 수 있다. cfgadd 명령어에 대한 자세한 설명은 "Tmax Administration Guide"의 "cfgadd" 부분을 참고한다.

  • 사용 방법

    $ uncfl [-i 이진 Tmax 환경 파일명] [-o 텍스트 Tmax 환경 파일명] [-h] [-V]
    항목설명
    [ -i 이진 Tmax 환경 파일명 ]역으로 분석하여 텍스트 파일로 변환할 이진 Tmax 환경 파일명을 설정한다. 경로와 함께 지정할 수 있으며, 경로가 지정되지 않은 경우 현재 디렉터리에 위치해 있는 이진 환경 파일이 참조된다. 옵션이 생략되면 기본으로 tmconfig라는 이름의 파일을 참조하여 텍스트 환경 파일이 생성된다.
    [ -o 텍스트 Tmax 환경 파일명 ]이진 Tmax 환경 파일을 역으로 분석하여 변환할 텍스트 형태의 Tmax 환경 파일명을 명시하는 데 사용되는 옵션으로 반드시 필요하다. 경로와 함께 지정될 수 있으며 경로가 지정되지 않았을 경우에 기본적으로 현재 디렉터리에 텍스트 환경 파일이 생성된다.
    [ -h ]명령어 도움말 옵션이다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
  • 적용 환경

    Tmax 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

  • 예제

    • 다음은 현재 디렉터리에 있는 tmconfig라는 이진 Tmax 환경 파일을 참조하여 /user1/tmax/temp 디렉터리에 basic.m이라는 텍스트 형태의 Tmax 환경 파일을 생성하는 예제이다.

      $ uncfl -o /user1/tmax/temp/basic.m
    • 다음은 /user1/tmax/bin 디렉터리에 있는 tmconfig라는 이진 Tmax 환경 파일을 참조하여 현재 디렉터리에 basic.m이라는 텍스트 형태의 Tmax 환경 파일을 생성하는 예제이다.

      $ uncfl -i /user1/tmax/bin/tmconfig -o basic.m

참고

cfl 명령어의 자세한 내용은 “2.1. cfl”을 참고한다.

2.33. untmmbfgen

untmmbfgen은 서비스 정보 바이너리 파일을 서비스 정보 파일(텍스트)로 변환하는 명령어이다. tmmbfgen 명령어의 자세한 내용은 “2.29. tmmbfgen”를 참고한다.

  • 사용 방법

    $ untmmbfgen -i binary_meta_file -o text_file  
    항목설명
    -i binary_meta_file서비스 정보 바이너리 파일을 지정한다.
    -o text_file생성될 서비스 정보 파일(텍스트)을 지정한다.
  • 예제

    다음은 untmmbfgen으로 서비스 정보 바이너리 파일을 사용자들이 알아볼 수 있도록 텍스트 형태의 파일로 변환하는 예제이다.

    $ untmmbfgen -i sample -o unsample.txt

2.34. xwsdlgen

웹 서비스 스펙 중 명세서 역할을 하는 WSDL 문서를 생성하는 명령어이다. 현재 WSDL 문서는 1.1, 2.0이 존재한다. xwsdlgen은 웹 서비스 게이트웨이 환경설정 파일과 서비스 정보 바이너리 파일을 입력받아서 WSDL 문서를 생성한다.

  • 사용 방법

    $ xwsdlgen [options] -g wsgw_config_file -m binary_meta_file -o wsdl_file

    • [options]

      옵션설명
      -w version
      • 0 : WSDL1.1 (기본값)

      • 1 : WSDL2.0

      -b binding_style
      • 0 : rpc (기본값)

      • 1 : document

    • 입력항목

      항목설명
      -g wsgw_config_file웹 서비스 게이트웨이 환경설정 파일을 설정한다.
      -m binary_meta_file서비스 정보 바이너리 파일을 설정한다.
      -o wsdl_file생성할 WSDL 파일을 설정한다.