336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Nikkon D300, 28mm, 1/15s, f5.6, 명암
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

원문 : http://blog.daum.net/hahahohozzang/67

한화 불꽃축제에서 사진잘찍는법-불꽃사진찍는법이에요~~

 

한화 불꽃축제 아시죠??^^~~ 올해도 어김없이 우리곁을 찾아 올테지만..아직 많이 남았죠?ㅋㅋ 불꽃 사진잘찍는법은 알고 계시나요? 한화에서는 불꽃사진 전시회를 갖는데요~ 잘찍힌 불꽃사진을 뽑아 상을 주기도 한답니다! 이번년도 연습해서 한 번 한화 불꽃사진에 도전해보세요~^^사진잘찍는법 시작!!

 

사진잘찍는법을 배워서 일상생활에서도 써먹어보자구요~^^ 불꽃사진잘찍는법을 이제부터 소개할텐데요~ 야간에 사진찍는게 어렵긴하지만..사진잘 찍는법으로 불꽃사진찍는법도 배우고 이를 응용해서 불재미있는 사진을 연출해보세요~

 

불꽃사진을 잘 찍는법은 가능한 셔터스피드와 조리개의 조절이 자유롭고 렌즈교환이 가능한 slr카메라가 있으면 좋습니다. 똑딱이 디지털카메라도 노출수동 기능을 가진 카메라면 괜찮답니다^^

 

그리고 반드시 챙겨야 할 도구는 삼각대!

불꽃사진찍는법에서는 노출시간이 길어지므로 불꽃놀이 사진을 멋지게 찍으려면 삼각대를 가지고 가야된답니다. 삼각대는 무거울수록좋구요. 기본적으로 불꽃이 터질 위치를 적당히 가늠해 삼각대와 카메라를 세워야 해요. 좋은 자리에 세우려면 대여섯 시간 전에 미리 가서 자리싸움도 해야하고...^^ 하지만 이런 노력이 사진잘찍는법이 아니겠어요~ 

 

불꽃놀이에 등장하는 불꽃들은 가지각색이지요

크기,밝기,색깔 등등 모두 다 제각각 다르고 순간순간 불꽃들의 모양이나 크기,속도 등을 파악해서 구도,노출을 결정해야 하는 순발력이 필요합니다. 많은 사람들이 불꽃사진을 찍으려면 셔터스피드와 조리개 수치를 얼마에 놓고 찍으면 되는지 궁금해하는데 이 글을 읽는 여러분들은 제발 그런 어리석은 질문은 하지 마시길..

그럼 이제 구체적인 테크닉을 실제 불꽃사진과 비교해보면서 공부해보도록 하겠습니다.

 

1.노출정도

일반적으로 불꽃놀이 사진을 찍을 때 주로 사용되는 노출은 정확히 꼬집어 말할 수는 없지만 셔터스피드는 2초~6초, 조리개는 4~11정도의 범위 안에서 일반적으로 촬영되어집니다. 불꽃의 밝기와 크기 속도에 따라 또는 촬영하는 사람의 의도에 따라 노출시간은 조절해야 합니다. 사진의 예를 들어보겠습니다.

 

이 사진은 iso100, 셔터스피드 3초, 조리개8의 데이터로 촬영된 사진입니다. 불꽃의 흔적을 선명하게 표현하기 위하여 조리개는 8을 선택하였습니다. 만약 이 사진에서 불꽃 궤적의 길이를 더 길게 하고 싶으면 셔터스피드를 4초,5초,6초 등을 늘려주면 불꼬치 움직인 흔적이 더 길게 남을 것이고 불꽃의 밝기를 좀더 밝게 하고 싶으면 조리개를 5.6이나 4정도로 열어주면 불꽃이 더 밝게 표현될 것입니다.

 

2.다중노출

한장의 사진에 다중노출을 통하여 여러개의 불꽃을 담으면 더재미있는 사진을 얻을수도 있습니다. 과거의 필름 카메라들에는 다중노출의 기능이 있지만 현재 많이 쓰이는 디지털 카메라에는 다중노출기능이 없는 경우가 많습니다. 하지만 우리는 할 수 있습니다^^!

 

셔터를 T셔터나 벌브셔터로 놓고 열어놓는 것이지요. 그리고 렌즈의 앞부분은 검은색 우드락으로 완전히 밀착해서 가려줍니다. 그리고 내 맘에 드는 불꽃이 터지면 그때 렌즈 앞을 가렸던 검은 우드락을 치웁니다.그리고 몇 초 후 다시 렌즈 앞을 가려줍니다. 그리고 기다리다가 맘에 드는 불꽃이 터지면 다시 렌즈앞을 가린 검은 우드락을 열어줍니다. 이 방법은 여러 번의 노출을 가능하게 하여 한 화면에 몇개의 불꽃을 기록할 수 있으나 조리개를 너무 열어두면 노출이 오버될 염려가 있으니 조리개를 8이상으로 조여주는 것이 좋습니다.

이사진은 화면 오른쪽 위의 커다란 불꽃과 아래쪽의 불꽃이 각각 다른 순간 터진 불꽃인데 노출을 위의 방법으로 두 번을 주어 한 화면에 표현한 예입니다.

 

이 사진도 아래쪽의 하얀 불꽃과 윗 쪽의 빨간 불꽃이 약1분간의 차이를 두고 터진 불꼿인데 두번의 노출을 통하여 한 화면에 기록한 사진입니다.

 

3.적절한 구도

불곷사진을 찍을 때 흔히 할 수 있는 실수는 오직 불꽃만을 바라보고 찍는다는 것입니다.불론 불꽃놀이니까 불꽃이 주가 되겠지만 불꽃만을 화면 가득히 채운 사진은 몇 장 보다 보면 싫증이 날 수 밖에 없습니다. 그러므로 우리는 정신 없이 머리위에서 터져대는 불꽃을 보면서도 그와 함께 어울릴 수 있는 주변환경을 염두에 두고 촬영을 하면 훨씬 업그레이된 사진을 얻을 수 있습니다. 63빌딩이나 원효대교, 혹은 함께 구경간 연인의 얼굴등을 불꽃과 함께 적절히 배치를 한다면 나중에 여자친구가 손이라도 한번 더 잡아줄 것입니다^^

이 사진은 마치 63빌딩 바로 옆에서 번개가 치는듯한 느낌으로 찍힌 사진입니다. ^^

 

기존벅이 조리개, 셔터 등에 대한 이야기를 언급하지 못했지만 어느 정도의 기본적인 노출의 개념만 공부하고 위의 3가지 내용을 머릿속에 넣고 불꽃사진을 찍는다면 예전보다 훨씬 더 좋은 사진을 얻어낼 수 있을 거라 생각해요~^^

 

출처:한화 홈페이지

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
SPECIFICATIONS:
  •  Focal Length: 28mm
  •  Lens Construction: 6 elements in 6 groups
  •  Aperture Range: f3.5 - f22
  •  Minimum Focus: 0.3m (1 ft.)
  •  Filter Size: 52mm
  •  Dimensions: 63.5mm D x 46.5mm L
  •  Weight: 235g 
  • 336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

    HP-UX 부팅시 아래와 같은 메시지 출력 후 부팅이 진행 되지 않는 경우는
    NFS Server 설정이 'hard' 인 경우 이며 무한정 반복하게 된다.
    이때 간단히  "Ctrl + Shift + '|'"를 눌려 강제 스킵을 시킨 후
    정상 부팅이 되면 nfs 관련 config(?)를 수정한다.

    'NFS Server (PID 1078@\net) not responding still trying'

    이것은 일반적인 HP-UX 부팅시 Error또는 Step이 넘어가지 않는 상황에 사용 가능하다.
    336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


    ***********************************************************
    * 리눅스서버 보안관리
    ***********************************************************
    * 리눅스서버 기본 보안설정하기(설치직후 초기보안셋팅하기)
    1. 중요한 시스템 파일들 퍼미션과 속성 재설정
    2. 중요한 시스템파일들 별도 압축보관하기
    3. 시스템디스크와 데이터디스크를 가능한 구분하라.
    4. 백업데이터 자정공간을 별도의 파티션이나 별도의 디스크를 이용
    5. root의 crontab에 로컬백업설정해 두기
    6. /etc/xinetd.d/ 에서 불필요한 서비스 파일들 삭제
    7. /etc/rc.d/init.d/에서 불필요한 초기화 파일들 삭제
    8. /etc/services에서 사용하지 않는 포트정보 주석처리
    9. /etc/hosts.allow, /etc/hosts.deny 파일에서 접근허용 설정
    10. ssh에서 root의 원격접속 금지설정
    # vi /etc/ssh/sshd_config
    PermitRootLogin yes -> root 로그인 허용
    PermitRootLogin no -> root 로그인 허용하지 않음
    11. FTP서비스에서 root의 원격접속 금지설정
    # vi proftpd.conf
    RootLogin off
    12. 일반사용자의 FTP접속에서 상위디렉토리 이동제한 설정하기
    # vi proftpd.conf
    DefaultRoot ~
    DefaultRoot ~ !wheel
    13. FTP 익명(anonymous) 접속금지 설정
    14. su 명령어 사용제한설정 및 중요한 관리자 명령어 사용제한 설정하기
    # chmod 4750 /bin/su
    # chown root:wheel /bin/su
    # chattr +i /bin/su
    # grep wheel /etc/group
    wheel:x:10:root,bible,admin
    # chmod 750 /usr/sbin/useradd
    # chmod 750 /usr/bin/top
    # chmod 750 /sbin/fdisk
    # chmod 750 /sbin/mkfs
    # chmod 750 /sbin/fsck
    # chown root:wheel /usr/sbin/useradd
    # chown root:wheel /usr/bin/top
    # chown root:wheel /sbin/fdisk
    # chown root:wheel /sbin/mkfs
    # chown root:wheel /sbin/fsck
    # chattr +i /usr/sbin/useradd
    # chattr +i /usr/bin/top
    # chattr +i /sbin/fdisk
    # chattr +i /sbin/mkfs
    # chattr +i /sbin/fsck
    15. root소유의 setuid, setgid 파일 찾아서 조치하기
    # find / -user root -perm -4000 -print
    16. 기본 실행되는 불필요한 프로세스를 죽이기
    17. ntsysv에서 초기 실행할 서비스데몬 내리기
    18. 리눅스서버 설치직후 파일시스템의 badblock 점검하기
    19. 시스템 정보유출파일 삭제 및 수정하기
        /etc/issue  콘솔에서 로그인 시도시에 보여줄 메시지 저장
        /etc/issue.net 원격에서 로그인 시도시에 보여줄 메시지 저장
        /etc/redhat-release 원격에서 로그인 시도시에 리눅스 배포판 정보를 보여주는 메시지
        /etc/motd  로그인 이후에 보여줄 공지사항 저장
    20. rootkit점검을 위한 chkrootkit 설치 및 실행결과 확인
    21. 파일 무결성을 위한 tripwire 설치 및 초기화 설정
    22. /etc/sysctl.conf파일에서 커널 옵션값 설정하기
    23. 로그보안을 위한 원격로그서버 설정
    24. /etc/rc.d/rc.local내에 부팅시 실행할 내용 등록
    25. 서버의 정확한 시간을 위한 설정
    # crontab -l | grep rdate
    00 01 * * * su - root /usr/bin/rdate -s time.bora.net && /sbin/clock -w
    26. 아파치 설정파일(httpd.conf) 보안설정하기
    * setuid, setgid, stickybit 다루기
    - 4XXX : setuid 비트를 의미함
    - 2XXX : setgid 비트를 의미함
    - 1XXX : sticky-bit 비트를 의미함
    * 보안을 위한 find
    - 지정된 일자 이후에 변경된 모든 파일 찾기
    # find / -used 2 -exec ls -l {} \;
      -> 2일전부터 현재까지 변경된 적이 있는 파일들을 검색
    - 지정된 파일보다 이후에 생성된 파일 찾기
    # find / -newer /root/file1.txt -exec ls -l {} \;
      -> /root/file1.txt라는 파일이 생성된 날짜 이후에 생성된 파일들만을 검색
    - root 소유의 setuid파일 찾기
    # find / -user root -perm -000 -print
      -> 소유자가 root이고 setuid가 설정되어 있는 파일을 검색
    # find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {}\;
      -> 퍼미션에 setuid가 있거나 setgid가 있는 파일들을 모두 검색
    - 서버내의 백도어파일 찾기
    # find /dev -type f -exec ls -l {} \;
      -> /dev 내에 존재하는 파이들 중 일반적인 보통파일을 검색
    - 서버내부의 .rhosts 파일 찾아서 확인
    # find / -name .rhosts -exec ls -l {} \;
    - 서버내부에 .bash_history파일을 모두 찾아서 확인
    # find / -name .bash_history -exec ls -l {} \;
      -> 시스템전체를 대상으로 .bash_history파일을 찾아서 보여달라는 의미.
    - 소유자가 없는 파일 또는 소유그룹이 없는 무적파일을 찾기
    # find / -nouser -o -nogroup -print
      -> 소유자가 없거나 소유그룹이 없는 파일을 검색한다.
    * 파일속성설정으로 리눅스파일 보안 구현(chattr, lsattr)
    chattr 사용법 : # chattr [-RV] [-v 설정버전] [+-=설정모드] 대상파일들
      -R : 서브디렉토리이하까지 그 속성을 변경할 수 있다.
      -V : 자세한 출력모드를 제공한다.
      -v version : 지정된 파일에 버전을 설정할 수 있다.
                    [설정모드]
        + : 지정한 속성을 부여한다.
        - : 지정한 속성을 해제한다.
        = : 원래 파일이 가지고 있던 그 속성만을 유지하게 한다.
        -a : 해당 파일을 추가만 할 수 있다.
        -c : 이 속성이 설정된 파일은 커널에 의해 디스크상에 자동적으로 압축된 상태로 저장이 된다.
        -d : 이 속성이 설정된 파일은 dump로 백업이 되지 않는다.
        -i : 이 속성이 지정되어 있다면 해당파일의 변경, 삭제, 이름변경뿐 아니라 파일추가 및 리으파일도 만들수 없게 된다.
        -s : 이 속성이 설정된 파일은 파일삭제가 될 경우에 해당블럭이 모두 0으로 되어버리고 디스크에 다시 쓰기가 발생하나.
        -S : 이 속성이 설정된 파일은 변경이 될 경우에 디스크동기화가 일어나는 효과를 그대로 누릴 수 있다.
        -u : 이 속성을 가진 파일이 삭제가 되었을 경우에는 그 내용이 저장이 되며 삭제되기 전의 데이터로 복구가 가능해진다.
    lsattr 사용법 : # lsattr [-RVadv] [대상파일들]
    - 파일의 삭제, 변경, 추가등을 불가능하게 하는 속성 설정
    # lsattr rc.local
    ------------- rc.local
    # chattr +i rc.local 
    # lsattr rc.local
    ----i-------- rc.local
    # rm -f rc.local 
    rm: cannot remove `rc.local': 명령이 허용되지 않음
    - 파일의 삭제, 변경, 추가 등을 불가능하게 하는 i속성 제거
    # chattr -i rc.local 
    # lsattr rc.local 
    ------------- rc.local
    # rm -f rc.local 
    #
    - 파일의 삭제는 불가능하지만 내용추가는 가능하도록 하는 속성 설정하기
    # chattr +a messages 
    # lsattr messages 
    -----a------- messages
    # rm -f messages 
    rm: cannot remove `messages': 명령이 허용되지 않음
    # chattr -a messages 
    # lsattr messages 
    ------------- messages
    # rm -f messages 

    - 특정 디렉토리내의 모든 파일과 디렉토리에 대하여 한번에 속성부여하고 확인하기
    # chattr -R +i directory
    - 특정 디렉토리내의 모든 파일과 디렉토리에 부여되어 있는 속성을 동시에 제거하기
    # chattr -R -i directory
    * nmap
    사용형식 : nmap [스캔타입] [옵션] <대상서버[네트워크|IP주소]>
               스캔옵션
        -sS                          : TCP SYN 스캔
        -sT                          : TCP 연결을 스캔
        -sF -sX -sN                  : Stealth FIN, Xmas Tree, 또는 NUll 스캔모드
        -sP                          : Ping 스캐닝
        -sU                          : UDP 스캐닝
        -sO                          : IP 프로토ㅗㄹ 스캔
        -sI <zombi host[:probeport]> : Idle scan
        -sA                          : ACK 스캔
        -sW                          : Window 스캔
        -sR                          : RPC 스캔
        -sL                          : LIST 스캔
    - nmap 설치
    # wget http://download.insecure.org/nmap/dist/nmap-3.75.tgz
    # tar xvf nmap-3.75.tgz
    # cd nmap-3.75
    # ./configure
    # make
    # make install
    - nmap으로 로컬서버 스캔하기
    # nmap -sT -O -v localhost
      -sT : TCP conect에 대한 스캔을 한다.
      -O  : TCP/IP fingerprinting을 통하여 지정한 서버를 확인한다.
      -v : 스캔별과를 자세히 보여준다.
    - 원격지의 특정 서버에 대한 스캔작업하기
    # nmap -sT -O -v 192.168.0.101
    - 원격서버의 UPD 사용포트 스캔작업하기
    # nmap -sU -O -v 192.168.0.101
    * root의 원격접속제한
    # grep PermitRootLogin /etc/ssh/sshd_config
    PermitRootLogin no
    # grep RootLogin /etc/proftpd/conf/proftpd.conf
    RootLogin off
    * 포트번호를 바꾸어서 서비스하는 서버보안
    # grep telnet /etc/services 
    telnet          30023/tcp
    # /etc/init.d/xinetd restart
    * PortSentry를 이용한 실시간 해킹방어 구현
    원격지에서 스ㅐㄴ하는 것을 실시간으로 차단할 수 있는 도구이다.
    portsentry는 ping이나 기타 다른 도구들을 이용하여 불법적인 스캔을 이지하고 이를 차단하려고 할 때 /etc/hosts.deny파일에 실시간으로 추가되어 서버접근 및 포트스탬을 막는 막강한 보안툴이다.
    portsentry는 다음과 같은 프로톸ㄹ의 스캔을 실시간으로 차단할 수 있다.
    tcp  프로토콜 스캔차단(basic port-bound TCP mode)
    stcp 프로토콜 스캔차단(Stealth TCP scan detection)
    atcp 프로토콜 스캔차단(Advanced Stealth TCP scan detection)
    udp  프로토콜 스캔차단(basic port-bound UDP mode)
    sudp 프로토콜 스캔차단(Stealth UDP scan detection)
    audp 프로토콜 스캔차단(Advanced Stealth UDP scan detection)
    - 설치
    # wget ftp://ftp.superuser.co.kr/secureity/portsentry/portsentry-1.0.tar.gz
    # tar xvfz portsentry-1.0.tar.gz
    # cd portsentry-1.0
    # make linux
    # make install
    # ls -l /usr/local/psionic/portsentry/
    # cat /etc/rc.d/rc.local
    #!/bin/sh
    /usr/local/psionic/portsentry/portsentry -tcp # tcp  프로토콜 스캔차단
    /usr/local/psionic/portsentry/portsentry -stcp # stcp 프로토콜 스캔차단
    /usr/local/psionic/portsentry/portsentry -atcp # atcp 프로토콜 스캔차단
    /usr/local/psionic/portsentry/portsentry -udp # udp  프로토콜 스캔차단
    /usr/local/psionic/portsentry/portsentry -sudp # sudp 포트토콜 스캔차단
    * tripwire를 이용한 파일무결성 구현
    tripwire는 파일시스템무결성 점검을 하는 서버보안도구로서 파일들의 변경사항유무를 검사할 수 있는 대표적인 보안툴이다.
    이 툴을 이용하면 파일들의 추가/삭제/변경유무를 확인할 수 있다.
    - 설치
    # wget ftp://ftp.superuser.co.kr/security/tripwire/tripwire-2.3-47.bin.tar.gz
    # tar xvfz tripwire-2.3-47.bin.tar.gz
    # cd tripwire-2.3
    # ./install.sh
    - 파일확인
    /usr/sbin/tripwire  tripwire의 주된 실행파일
    /usr/tripwire/*   tripwire에 관련된 설정파일과 key파일 및 정책파일들이 저장될 디렉토리
    /var/lib/tripwire/report tripwire실행결과 보고서가 저장될 디렉토리
    /var/libtripwire  tripwire DB파일이 저장될 디렉토리
    - tripwire 데이터베이스 생성하기(tripwire 초기화)
    tripwire 초기화는 점검했던 파일들의 무결성 점검결과를 저장하고있던 DB를 초기화 하다는 것이다.
    즉, 초기화시키기 전의 변공사항은 이후에는 적용되지 않는다.
    # tripwire --init
    - tripwire 실행으로 파일 생성/변조/삭제유무 점거마기
    # tripwire --check
    - tripwire 설정파일확인 및 변경
    twcfg.txt 파일은 tripwire의 주설정파일로서 /etc/tripwire/twcfg.txt 에 존재한다.
    이 파일은 tripwire가 어떤 환경으로 실행될 것인가를 정의해둔 파일이다.
    즉, tripwire실행파일의 위치, 정책파일(tw.pol)의 위치, tripwire 데이터베이스파일의 위치등을 모두 이 파일에서 정의하고 있다.
    - tripwire정책파일 수정 및 변경
    tripwire는 /etc/tripwire/twcfg.txt파일을 이용하여 점검할 대상파일을 결정한다.
    이 파일을 수정해서 점검할 파일을 추가/삭제할 수 있다.
    이 파일에 등록된 파일들은 tw.pol파일(바이너리로 되어있음)에 적용되어 tripwire에서 사용하게 된다.
    * chkrootkit을 이용한 rootkit 탐지
    백도가 설치되어 있는가를 검사하는 툴이다.
    chkrootkit을 이용해서 다음과 같은 검색이 가능하다.
      rootkit의 흔적 및 설치여부를 검색(chkrootkit)
      NIC으 promisc모드 설정여부 검색(ifpromisc)
      lastlog의 변조 및 삭제여부 검색(chklastlog)
      wtmp의 변조 및 삭제여부 검색(chkwtmp)
      기타 파일벼조여부를 검색
    chkrootkit툴에는 다음가 같은 파일들이 존재하며 이 파일들은 다음과 같은 역할을 한다.
      ifpromisc.c 랜카드가 promiscuous mode로 설정되어 있는가를 검사
      chklastlog.c /var/log/lastlog의 삭제유무 검사
      chkwtmp.c /var/log/wtmp의 삭제유무 검사
      check_wtmpx.c wtmpx파일의 삭제유무검사(Solaris의 경우만 해당됨)
      chkproc.c LKM트로이목가 검사
      strings.c 점검되는 파일들의 변조여부 검사
    - 설치
    # chkroot.tar.gz다운로드
    # tar xvfz chkrootkit.tar.gz
    # cd chkrootkit-0.44
    # 컴파일 전 로그파일위치 확인 및 수정하기
      모든 파일을 열어서 로그파일의 정확한 위치를 확인한다.
      chklastlog.c 파일에 리눅스에 대한 설정부분을 추가해 준다.
      #ifdef _LINUX_
      #define WTMP_FILENAME  "/var/log/wtmp"
      #define LASTLOG_FILENAME "/var/log/lastlog"
      #endif
    # make sense
    - chkrootkit으로 rootkit설치여부 및 서버점검하기
    # ./chkrootkit
    ***********************************************************
    * 리눅스 서버관리를 위한 쉘스크립트
    ***********************************************************
    * 쉘프로그램에서 실행상태 반환하는 true와 false
    쉘프로그램내에서 실행한 명령의 결과가 정상적으로 종료되었다는 의미로 true를 실행하여 실행이 정상적으로 완료되었음을 알려주는 역할을 한다.
    이 때 true가 반한하는 종료상태값은 실행성공을 의미하는 0이다.
    그리고 false는 쉘프로그램내에서 특정 명령수행이 항상 실패햤음을 의미하는 1을 반환한다.
    * 쉘프로그램에서 사용자 입력값 받아서 처리하기
    - 사용자 입력값 처리하는 read문 기본 사용법
    read -p "Select Number(1, 2, 3 or 4): " MENU1
    화면에 "Select Number(1, 2, 3 or 4): "가 출력이 된 후에 사용자의 입력을 대기한다. 사용자가 입력한 내용을 MENU1에 저장한다.
    - 쉘프로그램내에서 read 문에서 배열로 받아서 처리하기
    입력내용을 받아들일 지정된 변수를 배열변수로 사용하려면 -a 옵션을 사용해야 한다.
    쉘프로그램에서도 C와 마찬가지로 배열인자는 0부터 시작한다.
    배열변수를 출력하려면 ${변수명[인자]}와 같은 형식을 사용한다.
    * 쉘프로그램 실행시 발생되는 메시지 처리하기
    logger는 로그메시지를 시스템로그파일(/var/log/messages 등)에 기록할 수 있는 로그리고기이다.
    logger명령어를 사용하여 원하는 로그를 기록하면 지정된 메시지가 시간표시와 함께 시스템로그파일(/var/log/messages)에 기록된다.
    사용형식 : logger [-is] [-f file] [-p pri] [-t tag] [메시지]
    # logger SystemCheck
    # tail -1 /var/log/messages
    Apr  3 00:55:03 rh9  4월  3 00:55:03 widemail: SystemCheck
    * 반복메뉴방식의 쉘프로그램 만들기
    select문은 반복되는 메뉴방식의 쉘프로그램을 만들 때에 최적이다.
    사용형식 :
     select 변수 in 메뉴리스트
     do
      실행될 명령문들
     done
    select문으로 반복메뉴방식의 쉘프로그램을 작성할 때에는 PS3라는 쉘변수를 사요하는 것이 일반적이다.
    즉, PS3쉘변수를 사용하면 PS3에 지정된 메시지를 화면으로 출력하고 사용자의 입력을 기다린다.
    select문이 실행되면 in 다음의 메뉴리스트에 번호를 붙여서 화면으로 출력한다.
    그리고 선택된 번호가 지정되면 변수에 메뉴리스트에서 선택된 해당리스트를 저장한 다음 "do ~ done"의 내용이 실행된다.
    * 동종류 프로세스 한번에 죽이는 쉘명령어 직접만들기
    # cat prokill.sh
    #!/bin/sh
    ps -ef | grep $1 | awk '{ print $2 }' | xargs kill -9 {}
    * superuse 사이트에 있는 스크립트를 이용하자.
    ***********************************************************
    * 리눅스서버 응급복구와 삭제파일 복구
    ***********************************************************
    [1] 다운된 리눅스서버 응급복구
    * 복구보다는 백업을 우선하라.
    * 파일시스템이 깨졌을 때 부팅안되는 상황 조치
    # fdisk -l    -> 깨진 파일시스템 확인
    # e2fsck -j ext3 /dev/sda3 -> 파일시스템 점검
    * 리눅스CD linux rescue 모드로 보구하기
    파일시스템이 깨졌을 때 : e2fsck로 파일시스템 복구
    비밀번호 및 로그인장애 : /etc/passwd 파일 점검
    grub정보로 부팅장애    : /boot/grub/grub.conf 파일 점검
    부팅시 마운트정보 장애 : /etc/fstab 점검
    * 리눅스CD linux rescue nomount 로 복구하기
    현재 상태에서는 장치파일명이 생성되어있지 않으며 마운트도 되어있지 않기 때문에 현재 시스템의 어떠한 수정작업도 할 수 없는 상황이다.
    먼저 필요할 것 같은 장치명들을 임의대로 생성한다.
    # mknod /dev/sda -> /dev/sda  장치명 생성
    # mknod /dev/sda1 -> /dev/sda1 장치명 생성
    # mknod /dev/sda2 -> /dev/sda2 장치명 생성
    생성한 장치와 마운트할 마운트포인트(디렉토리)를 생성한다.
    # mkdir /temp
    # mkdir /temp1
    # mkdir /temp2
    위에서 생성한 각 장치명과 각 디렉토리들을 마운트한다.
    # mount /dev/sda1 /temp1
    # mount /dev/sda2 /temp2
    * 리눅스 시스템업그레이드 방법으로 복구하기
    * 시스템 서버 다운시 매직키를 이용한 응급조치 
    - ALT + SysRq + S : Alt키와 SysRq키와 S키를 동시에 누른다. sync 작업
    - ALT + SysRq + E : Alt키와 SysRq키와 E키를 동시에 누른다. tem SIG 작업
    - ALT + SysRq + U : Alt키와 SysRq키와 U키를 동시에 누른다. umount 작업
    - ALT + SysRq + B : Alt키와 SysRq키와 B키를 동시에 누른다. reboot 작업
    [3] 삭제된 파일 복구하기
    * 리눅스 휴지통(safedelete)을 이용한 삭제파일 복구하기
    safedelete라는 명령어는 파일을 삭제하는 명령어이다.
    단 rm과는 달리 safedelete라는 명령어로 파일을 삭제하면 특정한 디렉토리에 삭제된 파일을 보관하게 된다.
    그리고 삭제된 사용자의 홈디렉토리에 삭제 파일리스트를 저장하고 있는 로그파일에 그 파일정보들을 보관한다.
    그리고 safedelete명령어로 삭제된 파일은 undelete라는 명령어로 복구가 가능하다.
    따라서, 이 툴로서 삭제된 파일을 복구하려면 파일삭제시에 사용하는 명령어를 rm 대신에 safedelete 명령어를 사용해야한다.
    이 툴의 이름은 safedelete이며 삭제와 복구시에 사용되는 명령어는 다음과 같다.
        safedelete : rm 대신에 사용하게 될 파일보구가 가능한 삭제명령어
        undelete   : safedelete로 삭제한 파일을 복구하는 명령어
        safecnvt   : safedelete 로그파일(.safedelete.log)을 컨버전하는 명령어
        safedelchk : 지정한 일자 이후의 safedelete로 삭제한 파일을 완전 삭제함
    - safedelete 설치
    # wget ftp://ftp.nuri.net/pub/RedHat/redhat/redhat-7.1-en/powertools/i386/RedHat/RPMS/saedelete-1.3-0.i386.rpm
    # rpm -Uvh saedelete-1.3-0.i386.rpm
    - rm 명령어를 safedelete로 대체하기
    # grep safedelete ~/.bashrc
    alias rm='safedelete'
    * tct의 unrm으로 삭제파일 복구하기
    - 설치
    http://www.fish.com/tct 에서 다운로드한다.
    # tar xvfpz tct-.09.tar.gz
    # cd tct-1.09
    # make
    # cd bin
    # cp rnrm /usr/local/bin
    # cp lazarus /usr/local/bin
    - 삭제파일 복구
    # /usr/local/bin/unrm /dev/sda1 > /tmp_dir/dump_temp
    # /usr/local/bin/lazarus -h /tmp_dir/dump_temp
    * e2fsck 파일시스템 점검복구유틸리티
    - e2fsck 종료코드
      0 - 에러없이 정상적인 종료를 의미함
      1 - 파일시스템을 복구하였음을 의미함
      2 - 파일시스템이 복구되어 시스템이 재부팅되어야함을 의미함.
      4 - 작업대상 파일시스템에 문제가 있으나 복구하지 않고 그대로 두었음을 의미함.
      8 - 실행에러를 의미함
      16 - 사용법 또는 문법에러를 의미함
      32 - e2fsck작업이 사용자에 의해서 취소되었음을 의미함.
      128 - 공유 라이브러리에러를 의미함
    - e2fsck작업에서 기본적으로 점검하는 항목
      inode 점검
      blocks 점검
      sizes 점검
      디렉토리구조 점검
      디렉토리 연결성점검
      파일링크 정보
      전체파일갯수 점검
      전체블록수중 사용중인 블록 정검
    - 사용형식
      e2fsck [-pacnyrdfvtFV] [-b 수퍼블록] [-B 블록크기] [-l|-L 배드블록목록화일] 장치명
      마운트되어 있는 상태에서 e2fsck실행을 자제한다.
    - e2fsck 명령어로 특정 파일시스템의 점검 및 복구하기
    # e2fsck /dev/hda1
    - e2fsck로 특정 파일시스템 강제 점검 및 복구하기
    # e2fsck -f /dev/hda1
    - ext3(저널링)파일시스템 점검 및 복구하기
    # e2fsck -j ext3 /dev/hda1
    - e2fsck로 특정 파일시스템 강제 점검 및 상세 작업내역보기
    # e2fsck -fv /dev/hda1
    - 파일시스템의 수퍼블록을 이용한 파일시스템 복구
           -b superblock
                  Instead  of  using  the  normal  superblock,  use an alternative
                  superblock specified by superblock.   This  option  is  normally
                  used  when the primary superblock has been corrupted.  The loca-
                  tion of the backup superblock is dependent on  the  filesystem's
                  blocksize.    For  filesystems  with  1k  blocksizes,  a  backup
                  superblock can be found at block 8193; for filesystems  with  2k
                  blocksizes,  at  block  16384;  and  for 4k blocksizes, at block
                  32768.
                  Additional backup superblocks can be  determined  by  using  the
                  mke2fs  program  using  the  -n  option  to  print out where the
                  superblocks were created.   The -b option to mke2fs, which spec-
                  ifies blocksize of the filesystem must be specified in order for
                  the superblock locations that are printed out to be accurate.
                  If an alternative superblock is specified and the filesystem  is
                  not  opened  read-only,  e2fsck  will make sure that the primary
                  superblock is  updated  appropriately  upon  completion  of  the
                  filesystem check.
    # e2fsck -b 8193 /dev/hda1
    # e2fsck -b 16385 /dev/sda1
    - e2fsck로 파일시스템 점검시 버퍼캐쉬의 내용을 디스크에 저장하기
    -F옵션을 사용하면 e2fsck를 수행하기 이전에 sync작업을 수행한다.
    # e2fsck -F /dev/sda1
    - e2fsck로 특정 파일시스템 점검시 오류 자동수정하기
    # e2fsck -p /dev/sda1
    - e2fsck로 파일시스템 점검시 모든 질문항목에 yes라고 자동입력하기
    # e2fsck -y /dev/sda1
    - e2fsck로 파일시스템 점검시 모든 질문항목에 no라고 자동입력하기
    # e2fsck -n /dev/sda1
     
     
     
     
    ***********************************************************
    * 리눅스서버 NFS와 NIS
    ***********************************************************
    * NFS 서버와 NFS 클라이언트의 필요한 데몬들
    - rpc.nfsd : NFS 데몬
    - rpc.mountd : rpc 기반하에서 NFS 사용을 위한 마운트를 가능하게 하는 데몬
    - portmap : NFS가 원래 RPC기반하에서 작동되는 깃이기 때문에 rpcbind를 필요로 하면, rpcbind의 매핑을 위해 필요한 데몬이 portmap이다.
    - /etc/exports : 마운트를 허용한 디렉토리와 사용옵션 nfs 설정파일
    * NFS 서버와 클라이언트의 데몬 시작, 종료 및 재시작
    - NFS 데몬
    # /etc/init.d/nfs start
    # /etc/init.d/nfs stop
    # /etc/init.d/nfs restart
    - portmap 데몬
    # /etc/init.d/portmap start
    # /etc/init.d/portmap stop
    # /etc/init.d/portmap restart
    * NFS 관련 데몬들의 실행점검
    "rpcinfo -p"라고 하면 현재 NFS서버에서 구동중인 NFS관련 데몬들을 점검해 볼 수 있다.
    관련된 데몬은  portmapper, mountd, nfs, nlockmgr, rquotad, status 가 있다.
    # rpcinfo -p
       프로그램 버전 원형   포트
        100000    2   tcp    111  portmapper
        100000    2   udp    111  portmapper
        100011    1   udp    736  rquotad
        100011    2   udp    736  rquotad
        100011    1   tcp    739  rquotad
        100011    2   tcp    739  rquotad
        100003    2   udp   2049  nfs
        100003    3   udp   2049  nfs
        100021    1   udp  32780  nlockmgr
        100021    3   udp  32780  nlockmgr
        100021    4   udp  32780  nlockmgr
        100005    1   udp  32781  mountd
        100005    1   tcp  33434  mountd
        100005    2   udp  32781  mountd
        100005    2   tcp  33434  mountd
        100005    3   udp  32781  mountd
        100005    3   tcp  33434  mountd
    # rpcinfo -p 192.168.0.102
       프로그램 버전 원형   포트
        100000    2   tcp    111  portmapper
        100000    2   udp    111  portmapper
        100011    1   udp    736  rquotad
        100011    2   udp    736  rquotad
        100011    1   tcp    739  rquotad
        100011    2   tcp    739  rquotad
        100003    2   udp   2049  nfs
        100003    3   udp   2049  nfs
        100021    1   udp  32780  nlockmgr
        100021    3   udp  32780  nlockmgr
        100021    4   udp  32780  nlockmgr
        100005    1   udp  32781  mountd
        100005    1   tcp  33434  mountd
        100005    2   udp  32781  mountd
        100005    2   tcp  33434  mountd
        100005    3   udp  32781  mountd
        100005    3   tcp  33434  mountd
    * NFS설정파일(/etc/exports)
    설정형식 : [마운트할 디렉토리] [허용할 NFS크라리언트](설정옵션들)
    # cat /etc/exports
    /web_data 192.168.0.101(rw)  # 192.168.0.101 NFS 클라이언트에서 NFS 서버의 /web_data 로 read와 write가 가능하도록 마운트를 허용한다.
    /db_data 192.168.0.101(rw)
    /data  192.168.0.109(ro)  # NFS서버의 /data 디렉토리를 NFS클라이언트에서 read 만 가능하도록 마운트 허용
    /home  192.168.0.109(rw)  # NFS서버의 /home 디렉토리 전체를 NFS 클라이언트가 마운트하도록 허용
    /home/sspark 192.168.0.109(noaccess)  # /home/sspark 은 NFS마운트를 허용하지 않는다.
    /var/log 192.168.0.109(rw,root_squash) # NFS클라이언트에서 NFS서버로 root권한으로 마운트를 할 경우에 NFS서버에서 root권한을 부여하는 것이 아니라 nfsnobody권한을 부여한다.
            NFS클라이언트에서 NFS서버의 마운트시에 root를 일치시키려면 no_root_squash 옵션을 사용한다.(기본값은 root_squash)
    /var/log 192.168.0.109(rw,no_root_squash)# NFS클라이언트그의 root는 NFS서버로 마운트 할 때 NFS서버에서의 root와 일치한다. 가능한 이 설정은 보안을 위해 사요하지 마라.
    /home  192.168.0.109(rw,all_squash) # root사용자와는 반대로 일반사용자으 경우에는 no_all_squash가 기본값이다.
            NFS클라이언트에서 NFS서버로 마운트할 때 동일사용자가 존재한다면 root를 제외한 일반사용자는 도일한 사용자로 매핑이 된다.
            all_squash라는 옵션을 사용했기 때문에 일반사용자의 경우에도 모두 nfsnobody로 매핑이 된다.
    * NFS마운트 방법
    설정형식 : mount -t nfs NFS서버_IP주소_또는_호스트명:/NFS서버_마운트포인트 /NFS클라이언트_마운트포인트
               -t nfs   파일시스템형식을 nfs로 지정
        NFS서버_IP주소_또는_호스트명 NFS서버의 IP주소 또는 호스트명
        NFS서버_마운트포인트  NFS서버에서 NFS클라이언트의 마운트가 허용되어 있는 위치를 지정
        NFS클라이언트_마운트포인트 NFS클라이언트의 마운트포인트 지정
    # mount -t nfs 192.168.0.102:/web_data /web_data
    # mount -t nfs 192.168.0.103:/db_data /db_data
    * 부팅시 NFS 자동마운트 설정
    /etc/fstab 에서 사용가능한 NFS 마운트 옵션들
    - rsize=n 지정된 NFS서버로부터 읽어오는 바이트수를 지정. 기본값은 1024
    - wsize=n 지정된 NFS서버에 쓰기를 할 때 사용하는 바이트수를 지정. 기본값은 1024
    - timeo=n RPC타임아웃이 발생되고 나서 첫번째 재전송요구를 보낼 때 사용되는 시간
    - retrans=n timeout이 발생시 재전송시도 횟수를 제한한 것임. 기본값은 3
    - port=n 지정된 NFS서버와 연결할 때의 포트번호 지정
    - fg  첫번째 마운트시도하여 timeout되면 바로 중단됨. default값
    - intr  timeout발생시 신호를 보내는 NFS호추를 인터럽트함.
    - hard  timeout이 발생하면 "server not responding"이라는 메시지를 출력한 후에 계속 재시도 함
    - soft  timeout이 발생하면 I/O에러가 발생하였을을 알려줌.
    # cat /etc/fstab | grep nfs
    192.168.0.100:/home/bible /bible nfs timeo=10,intr
     
    ***********************************************************
    * 리눅스 서버이전
    ***********************************************************
    * 서버이전시 고려할 사항들
    - 서버 네트워크환경문제
    - 일반사용잘의 ID와 패스워드문제
    - 사용자들의 도메인문제
    - 서버내의 홈페이지 데이터들의 문제
    - 아파치웹서버 이전문제
    - MySQL 데이터베이스 이전문제
    * 서버이전 계획표 작성
    구분   이전하기전 서버(A)  이전후 서버(B)
    작업자   김길동
    작업일시  2006년 4월 5일 새벽 04시부터 06시까지
    지역   용산구    구로구
    IDC(업체)명  A-IDC    B-IDC
    IDC(업체)담당자명 박길동    이길동
    IDC(업체)연락번호 111-1111   222-2222
    서버모델명(서버명) SU-S2001(A서버)   SU-2002(B서버)
    서버IP주소  192.168.0.101   192.168.1.211
    네트워크주소  192.168.0.0   192.168.1.0
    브로드캐스트주소 192.168.0.255   192.168.1.255
    넷마스크주소  255.255.255.0   255.255.255.0
    웹서버(위치)  APACHE(/usr/local/apace2) APACHE(/usr/local/apace2)
    DB서버(위치)  MySQL(/usr/local/mysql)  MySQL(/usr/local/mysql)
    FTP서버   Proftpd(/usr/local/proftpd) Proftpd(/usr/local/proftpd)
    DNS서버   BIND9    BIND9
    메일서버  SENDMAIL, Qpopper  SENDMAIL, Qpopper
    사용자수  10명    10명
    기타   gd,libpng,freetype,zlib 등 gd,libpng,freetype,zlib 등
    주의사항  이전하기전 사용 도메인 TTL값 최소화
       cron설정주의
       로그파일들 이전주의(/var/log)
       이전후 홈페이지로딩테스트 및 게시판업로드테스트
       작업 7일전 작업관련 홈페이지 공지사항 등록
       각 사용자에게 작업관련 메일발송
    * 서버에서 서비스하던 도메인들의 TTL값 변경하기
    서버이전 작업을 시작하기 쵯 몇일전에 각 도메인들의 DNS정보가 세팅된 네임서버에서 각 도메인들의 zone파일들에 설정된 TTL값을 0또는 1로 설정한다.
    즉, 도메인의 IP주소를 변경하기 전에 DNS의 TTL값을 0 또는 1로 설정해 둔다.
    * 서버의 서비스데몬들 중지하기
    - 웹서비스 중지
    - 메일서비스 중지
    - 데이터베이스 서버 중지
    서비스를 중지하는 이유는 서버이전을 하는 도중에 계속 서비스를 하게 되면 작업하는 동안에 업데이트된 데이터들은 유실되기 때문이다.
    * 이전대상서버에서 네트워크 설정작업
    다음과 같이 네트워크 설정명령어들과 파일들을 통하여 새로운 네트워크 환경을 설정한다.
    - route      서버라우팅 설정 명령어
    - ifconfig     네트워크 인터페이스 설정 명령어
    - netconfig     네트워크 설정 명령어
    - /etc/resolv.conf    DNS설정 파일
    - /etc/sysconfig/network   기본게이트웨이 설정파일
    - /etc/sysconfig/network-scripts/ifcfg-eth0 첫번째 NIC 네트워크 설정파일
    - /etc/sysconfig/network-scripts/ifcfg-eth1 두번째 NIC 네트워크 설정파일
    - /etc/init.d/network    설정된 네트워크 start|stop|restart
    * 사용자 계정정보 이전하기
    - /etc/passwd파일내의 사용자계정부분 이전하기
      A서버의 /etc/passwd 파일에서 일반사용자들의 계정정보만을 복사해서 B서버의 /etc/passwd에 복사한다.
    - /etc/group파일내의 사용자 그룹설정 부분 이전하기
      A서버의 /etc/group파일에서 시스템사용 그룹설정 부분을 제외한 나머지 그룹부분들을 그대로 복사하여 B서버의 /etc/group파일에 그대로 추가한다.
    - /etc/shadow 파일내의 사용자 설정부분 이전하기
      /etc/shadow파일에서 사용자들의 정보만을 복사해서 B서버의 /etc/shadow에 복사한다.
    * 일반사용자 홈디렉토리 파일들 이전하기
    - A서버에서 home을 모두 압축한다.
    # cd /
    # tar cvfpz home.tar.gz home
    - B서버에서 home.tar.gz 파일을 가져온다.
    # cd /
    # ncftp -u bible 192.168.0.101
    ncftp / > get /home.tar.gz
    - B서버에서 가져온 home.tar.gz 압축을 해제한다.
    # tar xvfpz home.tar.gz -C /
    * APACHE 웹서버 이전하기
    아파치를 이전할 때에는 다음과 같은 주의사항이 있다.
    1. httpd.conf파일 내에 설정되어 있는 가상호스트정보 수정
    2. httpd.conf파일 내의 DocumentRoot정보의 확인 및 수정
    3. httpd.conf파일 내의 ServerName정보의 확인 및 수정
    4. httpd.conf파일 내의 UserDir정보의 확인 및 수정
    - A서버에서 APACHE 디렉토리를 압축한다.
    # cd /usr/local
    # tar cvfp apache2.tar.gz apache2
    - B서버에서 A서버에 있는 apache2.tar.gz 파일을 가져오고 압축을 해제한다.
    # cd /usr/local
    # ncftp -u bible 192.168.0.101
    ncftp /usr/local > get /usr/local/apache2.tar.gz
    # tar xvfpz apche2.tar.gz
    - httpd.conf 파일 수정
      NameVirtualHost 값 수정
      VirutalHost 부분 수정
      DocumentRoot 저옵 수정
      ServerName 정보 수정
    - php와 Zend 이전
    * MySQL 데이터베이스 이전하기
    - A서버에서 MySQL을 압축한다.
    # cd /usr/local
    # tar xvfpz mysql.tar.gz mysql
    - A서버에서 압축한 파일을 B서버로 가져오고 압축을 해제한다.
    # cd /usr/local
    # ncftp -u bible 192.168.0.101
    ncftp /usr/local > get /usr/local/mysql.tar.gz
    # tar xvfpz mysql.tar.gz
    - MySQL 실행에러문제 해결하기
      호스트명 인식불능문제
      /usr/local/mysql/var/호스트명.pid
      /usr/local/mysql/var/호스트명.err
      /usr/local/mysql/var 소유자 계정확인
    * 메일서버 이전하기
    - A서버에서 /etc/mail 디렉토리를 압축하여 B서버로 가져온 후에 원래위치에 압축해제한다.
    - A서버의 /usr/local/lib/popper파일을 B서버로 가져와서 원래위치에 넣어둔다.
    - A서버의 /var/spool/mail 디렉토리내용과 /var/spool/mqueue 디렉토리의 내요을 그대로 가져와서 B서버에 넣어둔다.
    - A서버의 /etc/xinetd.d 디렉토리내에 있는 pop3파일을 B서버로 가져와서 넣어둔다.
    - A서버의 /usr/sbin/sendmail 파일과 /etc/aliases 파일을 B서버로 가져와서 각자 위치에 넣어둔다.
    - 이와 같이 작업한 후에 B서버에서 /etc/init.d/sendmail 스크립트를 이용하여 sendmail을 재시작하고 /etc/init.d/xinetd 스크립트를 재시작하여 /etc/xinetd.d/pop3 파일이 적용되도록 한다.
    * 기타 서버이전시 작업해야할 사항들
    - A서버의 /etc/hosts파일의 정보를 확인하고 필요한 정보는 B서버의 /etc/hosts파일에 등록한다.
    - A서버의 /etc/hosts.allow파일과 /etc/hosts.deny파일의 내용을 B서버에 그대로 설정한다.
    - A서버의 /var/spool/cron 디렉토리내의 파일들을 B서버로 그대로 가져와서 설정한다.
    - A서버의 /var/log 디렉토리내에 존재하는 필요한 로그파일들(특히 wtmp, secure 파일)을 B서버로 가져와서 /var/log에 저장한다.
    - A서버의 /etc/sysctl.conf 파일의 내용을 B서버의 서버사양에 맞도록 수정하여 적용한다.
    - A서버의 /etc/motd, /etc/issue, /etc/issue.net 파일들의 니용을 B서버로 가져와서 해당 파일들에 저장한다.
    - A서버의 /etc/rc.d/rc.local 파일을 그대로 가져와서 B서버에 복사한다.
    * DNS 서버에서 해당 도메인들의 IP주소 변경작업
    도메인들의 DNS서버에서 각 도메인들의 IP주소를 B서버의 IP주소(192.168.1.211)ㄹ 변경한다.
    TTL값을 원래의 값으로 복원한다.
    * 서버이전후 확인할 사항들
    1. 홈페이지가 정상로딩 테스트
    2. 홈페이지의 게시판 및 업로드 테스트하기
    3. 사용자계정 정보확인 및 로그인 테스트
    4. 메일수발신 테스트와 MySQL접속 테스트
    5. B서버에서 응용프로그램들의 경로 확인하기
    ***********************************************************
    * PROC 파일시스템을 이용한 커널최적화 및 시스템튜팅
    ***********************************************************
    * /proc파일시스템에 존재하는 커널파라미터 변경하는 방법들
    1. /etc/sysctl.conf 파일에 등록한다.
       지속적으로 적용하려면 이 파일에 넣어둔다.
    2. sysctl 명령어를 이용한다.
       "sysctl -w 파라미터변수=값"의 형식으로 변경이 가능하다.
    3. /proc/sys 디렉토리내에 존재하는 각가의 파일들을 vi로 열어서 직접 변경한다.
       좋지않은 방법으로 추천하지 않는다.
    4. echo 명령어를 이용한다.
       "echo 1 > 파일위치"와 같은 방법으로 간편하게 수정할 수 있다.
    5. redhat-config-proc을 이용한다.
    * sysctl을 이용한 커널 옵션 설정 및 확인
    - sysclt
      configure kernel parameters at runtime 으로서 커널 파라미터를 설정하는 명령어이다.
    - 커널옵션값 전체 확인하기
    # sysctl -a
    - 특정커널옵션값의 설정
    # sysctl -w net.ipv4.tcp_syncookies=1
    * /proc/sys/kernel에서 획득할 수 있는 몇가지 커널 정보들
    - 서버의 호스트네임 확인
    # cat /proc/sys/kernel/hostname
    - 커널버전 확인
    # cat /proc/sys/kernel/osrelease
    - 운영체제명 확인
    # cat /proc/sys/kernel/ostype
    - 커널 매직키(Magic Key)사용가능 확인
    # cat /proc/sys/kernel/sysrq
    * /proc/sys/net/ipv4에서 설정 가능한 서버보안
    - 외부의 ping 막기
    # cat /proc/sys/net/ipv4/icmp_echo_ignore_all
    0
    # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    - smurf 공격방지를 위한 broadcast 패킷방지하기
    # cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    0
    # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    - 세션 종료시간 조정
      tcp_fin_timeout은 TCP 세션이 종료된 후에 얼마나 오랫동안 세션연결을 유지하고 있을 것인가를 설정한다.
    # cat /proc/sys/net/ipv4/tcp_fin_timeout
    60
    # echo 20 > /proc/sys/net/ipv4/tcp_fin_timeout
    - tcp keepalive time 설정
    # cat /proc/sys/net/ipv4/tcp_keepalive_time
    7200
    # echo 1200 > /proc/sys/net/ipv4/tcp_keepalive_time
    - 서버에서 로컬 포트사용범위 설정
    # cat /proc/sys/net/ipv4/ip_local_port_range
    32768 61000
    - IP 포워딩(forwarding)기능 막기
    # cat /proc/sys/net/ipv4/ip_forward
    0
    - 서버의 날짜정보 유출막기
    # cat /proc/sys/net/ipv4/tcp_timestamps
    1
    # echo 0 > /proc/sys/net/ipv4/tcp_timestamps
    - SYN_Flooding 공격 막기
      일종의 서비스거부공격(DoS: Denial of Service)의 일종이다.
      TCP세션을 맺기 위해서는 패킷을 보낼 서버와 받을 서버간에 몇단계 확인작업을 거치게 되는데 SYN과 ACK패킷을 이용하여 송수신 준비확인을 한다.
      SYN패킷을 박은 목적지 서버는 SYN과 ACK패킷을 보낸 후에 소스서버에서 ACK패킷을 보내기를 기다리게 된다.
      이 때에 계속적으로 기다리는 것이 아니라 백로그큐(Backlog Queue)가 허용하는 공간에 연결정보를 보관한다.
      이런 상태가 숟없이 쌓이게 되면 복적지 서버의 특정 서비스가 정상적으로 이루어 지지않는 서비스다운상태가 된다.
      해결방법은 백로그큐를 늘려주거나 tcp_syncookies값을 로 설정하는 것이다.
    # cat /proc/sys/net/ipv4/tcp_syncookies
    0
    # echo 1 > /proc/sys/net/ipv4/tcp_syncookies
    # cat /proc/sys/net/ipv4/tcp_max_syn_backlog
    1024
    * /proc/sys/net/ipv4/conf 에서 가능한 네트워크 설정
    - ICMP redirect의 변조된 패킷 차단(accept패킷 차단설정)
    # cat /proc/sys/net/ipv4/conf/default/accept_redirects
    1
    # echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects
    - ICMP redirect 의 변조된 패킷 차단(send 패킷 차단설정)
    # cat /proc/sys/net/ipv4/conf/default/send_redirects
    1
    # echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
    - DoS공격 source로 사용 차단(IP 스푸핑 방지하기)
    # cat /proc/sys/net/ipv4/conf/default/rp_filter
    1
    # echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
    - 스푸핑등의 패킷에 대한 로그를 남기자
    # cat /proc/sys/net/ipv4/conf/default/log_martians
    0
    # echo 1 > /proc/sys/net/ipv4/conf/default/log_martians
    - source route 패킷허용 막기(신뢰받는 호스트로 위장하는 것 막기)
    # cat /proc/sys/net/ipv4/conf/default/accept_source_route
    0
    # echo 0 > /proc/sys/net/ipv4/conf/default/accept_source_route
    * /proc/sys/fs 에서의 옵션설정
    - 커널에서 사용할 수 있는 푀대파일 수 설정하기
    # cat /proc/sys/fs/file-max
    102709
    - 현재 활동중인 파일 수 확인
    # cat /proc/sys/fs/file-nr
    834     0       102709
    * /proc에서 커널정보 확인하기
    - cpu 정보 확인
    # cat /proc/cpuinfo
    - 사용중이거나 사용가능한 장치(device)파일 확인
    # cat /proc/devices
    - 현재 커널에서 인식되어 있는 파일시스템 타입 확인
    # cat /proc/filesystems
    - 현재 사용되고 있는 메모리 번지별 사용내역 확인
    # cat /proc/iomem
    - 입출력포트의 번지별 사용내역
    # cat /proc/ioports
    - 서버 펴윤부하율 정보 확인
    # cat /proc/loadavg
    - 메모리 일반정보 확인
    # cat /proc/meminfo
    - 커널에 로드ㅗ디어 있는 모듈확인
    # cat /proc/modules
    - 현재 마운트되어 있는 정보확인
    # cat /proc/mouts
    - 현재 설정된 파티션정보 확인
    # cat /proc/partitions
    - 커널버전 정보확인
    # cat /proc/version
    - IRQ값 정보확인
    # cat /proc/interrupts
    ***********************************************************
    * SAMBA 서버
    ***********************************************************
    * 설치
    삼바서버패키지 : samba-3.0.8-0.pre1.3
    삼바클라이언트 패키지 : samba-client-3.0.8-0.pre1.3
    삼바서버와 클라이언트에서 모두 사용하는 파일들 패키지 : samba-common-3.0.8-0.pre1.3
    삼바서버 웹관리 패키지 : samb-swat-3.0.8-0.pre1.3
    삼바서버 설정툴 패키지 : system-config-samba-1..21-1
    # wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/samba-3.0.8-0.pre1.3.rpm
    # wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/samba-client-3.0.8-0.pre1.3.rpm
    # wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/samba-common-3.0.8-0.pre1.3.rpm
    # wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/samb-swat-3.0.8-0.pre1.3.rpm
    # wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/system-config-samba-1..21-1.rpm
    # rpm -Uvh --nodeps samba-3.0.8-0.pre1.3.rpm
    # rpm -Uvh --nodeps samba-client-3.0.8-0.pre1.3.rpm
    # rpm -Uvh --nodeps samba-common-3.0.8-0.pre1.3.rpm
    # rpm -Uvh --nodeps samb-swat-3.0.8-0.pre1.3.rpm
    # rpm -Uvh --nodeps system-config-samba-1..21-1.rpm
    설치된 주요 파일들
    /etc/logrotate.d/samba : 삼바로그를 관리하기 위한 삼바로그 로테이트 스크립트 파일
    /etc/init.d/smb : 삼바데몬(nmbd, smbd)을 실행(종료, 재시작)하기 위한 스크립트파일
    /etc/sysconfig/samba :삼바 제어판 설정파일
    /usr/bin/smbstatus : 삼바서버에 로그인한 정보를 확인하기 위한 유틸리티
    /usr/sbin/nmbd : 삼바 NetBIOS 데몬
    /usr/sbin/smbd : 윈도우서버와 파일 및 프린터공유를 위한 삼바 주데몬
    /usr/bin/smbclient : 삼바 클라이언트 유틸리티로서 삼바서버로 접속이 가능하도록 제공함.
    /usr/bin/smbmount : 삼바 원격마운트 유틸리티
    /usr/bin/smbumount : 삼바 원격마운트 해제 유틸리티
    /etc/samba : 삼바의 주된 디렉토리
    /etc/samba/lmhosts : 삼바서버 NetBIOS 호스트파일(삼바서버에서 사용하는 호스트정보파일)
    /etc/samba/smb.conf : 삼바서버의 주설정파일
    /usr/bin/smbpasswd : 삼바사용자 생성, 삭제 및 삼바사용자 패스워드 설정, 변경 유틸리티
    /usr/bin/testparm : 삼바서버 설정파일(smb.conf)점검 유틸리티
    /etc/xinetd.d/swat : 삼바서버의 웹관리를 위한 xinetd환경의 삼바설정파일
    /usr/sbin/swat : 삼바서버 웹관리툴
    /usr/bin/system-config-samba : X환경에서의 삼바설정 유틸리티
    /var/log/samba/ : 삼바로그 저장 디렉토리
    /etc/samba/smbusers : 리눅스ID와 삼바ID가 다를 경우에 이를 매칭하기 위한 매칭 테이블파일
    * 삼바서비스 데몬
    - 삼바데몬 시작
    # /etc/init.d/smb start
    # /usr/sbin/smbd -D
    # /usr/sbin/nmbd -D
    * 삼바 설정파일 smb.conf 다루기
    /etc/samba/smb.conf 파일의 설정에는 다음과 같이 기본적으로 세부분으로 나뉘어져 있습니다.
      1. 글로벌 설정: 이 설정은 삼바서버가 공유하는 자원들에 공통적으로 적용할 기본값을 설정하는 곳이다.
                      이 글로벌설정은 [global]이라는 선언으로 시작하는 부분이다.
      2. 자동홈디렉토리 : 리눅스 사용자들의 홈디렉토리를 로그인홈으로 사용하기 위한 설정으로서 [homes]로 시작하는 부분의 설정이다.
      3. 프린터설정 : 네트워크 공유프린트에 대한 설정부분으로서 [printers]로 시작하는 부분의 설정이다.
    - unix charset = cp949
      dos charset = cp949
      display charset = cp949
      리눅스(유닉스) 문자셋, 도스문자셋, 그리고 디스플레이 문자셋을 각각 설정한다.
    - workgroup = superuser
      workgroup옵션에는 NT도메인명 또는 워크그룹명을 지정하면 된다.
      작업그룹명이므로 윈도우에서 Workgroup으로 사용하는 이름을 입력한다.
    - server string = SUPERUSER File Server
      삼바서버의 이름쯤으오 생각하면 된다.
    - hosts allow = 192.168.1. 192.168.2. 127.
      이 옵션은 삼바서버의 보안을 위하여 매우 중요한 옵션이다.
      이 옵션은 삼바서버로의 접근을 허용하기 위한 설정이다.
    - load printers = yes
      자동프린트 목록을 사용하기 위한 값으로 yes를 주면 된다.
      네트워크 프린터를 삼바서버에서 관리하도록 하려면 반드시 yes로 설정한다.
    - printcap name = /etc/printcap
      printcap파일의 위치가 다른 곳에 있다면 그곳을 지정한다.
    - printing = bsd
      사용하는 프린터가 표준이 아니라면 주석처리를 하는 것이 좋다.
      현재 지원되는 프린터시스템의 종류로는 bsd, sysv, plp, lprng, aix, hpux, qnx 등이 있다.
    - guest account =pcguest
      삼바서버의 guest사용자를 허용하고자 할 때에는 이 주석을 제거한다.
      이 옵션은 삼바서버에 손님권한으로 접속할 때 어떤 권한을 부여할 것인가를 설정한다.
      가능한 시스템에 특별한 권한이 없는 nobody와 같은 권한으로 설정한다.
    - log file = /var/log/samba/log.%m
      이 설정은 삼바서버로 접속하는 개별 사용자들의 호스트정보를 %m 으로 받아서 개별 로그파일을 생성하도록 한다.
    - log file = /var/log/samba/smbd.log
      접속한 호스트별로 로그파일을 사용하지 않는다면 하나의 로그파일을 사용할 수도 있다.
    - max log size = 50
      로그파일의 용량크기를 KB단위로 제한하기 위한 옵션이다.
      제한하지 않으려면 0을 입력한다.
    - security = share
      보안모드를 설정하는 것으로서 대부분의 삼바접속자들에게는 user레벨이 가장 알맞다.
      user레벨을 설정하면 삼바서버에 접속하는 사용자는 반드시 윈도우에서 사용하는 로그인ID와 동일해야 한다.
      만약 위의 설정과 같이 share레벨은 공유디렉토리등에 설정하는 것으로서 ID와 패스워드의 인증엇이 접속하는 것을 허용하는 레벨이다.
      또한 server레벨은 별도의 인증서버에서 ID와 패스워드인증을 받도록하는 레벨이다.
      가능하면 삼바서버보안을 위하여 user레벨을 사용하는 것이 좋다.
    - password server = <NT-Server-Name>
      위의 security 옵션값이 server로 설정되었을 때에만 설정할 수 있는 옵션으로서 인증서버로 사용할 서버를 지정하는 옵션이다.
    - password level = 8
      패스워드 문자로 대소문자를 조합하여 사용할 문자의 개수를 지정한 옵션이다.
    - username level = 8
      삼바사용자명을 대소문자 조합하여 사용할 문자의 개수를 지정한 옵션이다.
    - encrypt passwords = yes
      패스워드를 암호화하여 사용하려면 "encrypt passwords" 옵션값을 yes로 설정한다.
    - smb passwd file = /etc/samba/smbpasswd
      이 옵션은 삼바사용자들의 암호파일의 위치를 지정한 것이다.
    - unix password sync = Yes
      passwd program = /usr/bin/passwd %u
      passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authenticateion*tokens*updated*successfully*
      삼바사용자가 원격지에서 삼바패스워드를 변경할 수 있도록 하기위한 설정이다.
      이 설정을 사용하여 원격에서 패스워드를 변경하도록 허용하려면 앞의 encrypt passwords옵션값에 yes라고 해야하고 smb passwd file옵션에 반드시 삼바사용자패스워드파일의 경로를 지정한다.
    - username map = /etc/samba/smbusers
      대부분 삼바에서 사용하는 ID와 리눅스계정ID는 동일하게 사용한다.
      만약 삼바사용자명과 리눅스 계정사용자명을 다르게 사용할 경우에 이를 매칭할 수 있도록 하기 위한 옵션이다.
      매칭테이블 파일을 /etc/samba/smbusers 파일로 사용하는 설정이다.
    - include = /etc/samba/smb.conf.%m
      이 옵션은 삼바접속자의 플랫폼에 따라서 각기 다른 설정파일을 적용할 수 있도록 지원하기 위해 사용하는 옵션이다.
      %m 은 접속자 시스템의 NetBIOS이름으로 대체되어 접속한 사용자의 플랫폼종류에 따라서 각기 다른 삼바설정파일을 적용할 수 있다.
    - socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
      삼바서비스 성능향상을 위한 옵션이다. speed.txt 파일을 참조하라.
    - interfaces = 192.168.12.2/24 192.168.13.2/24
      삼바서버에서 두개 이상의 네트워크 인터페이스(NIC)를 사용하도록 지원하기 위한 옵션이다.
    - remote browse sync = 192.168.3.25 92.168.5.255
      remote annouce = 192.168.1.255 192.168.2.44
      지역서브넷에서 삼바서버를 잘 인식하도록 하기 위하여 자기자신을 알리도록 한다.
    - local master = no
      이 옵션은 특정 서브네트워크내에서 삼바서버가 로컬마스트브라우즈가 되도록 하는 옵션이다.
    - os level = 33
      이 옵션은 마스터브라우즈 선거(master browser elections)에서 이 서버의 우선구너을 가질 수 있도록 허용한다.
    - domain master = yes
      삼바서버가 Domain Master Browser가 되도록 한다.
      삼바가 Domain Master Browser가 되면 서브네트워크들로부터 브라우즈 목록을 수집하는 역할을 한다.
    - domain logons = yes
      삼바서버를 윈도우95기반의 워크스테이션에 대한 도메인로그인서버 역할을 하도록 하려면 이 옵션을 사용하라.
    - logon script = %m.bat
      각 플랫폼별 또는 각 사용자별로 로그온스크립트(login script)를 구분하여 사용할 수 있도록 한다.
    - logon path = file://%25L/Profiles/%25U
      오직 윈도우95 또는 윈도우NT에서 로우빙프로파일(roving profile)을 어디에 저장해 둘것인가를 지정하는 설정이다.
    - wins support = yes
      윈도우 인터넷네임서비스인 WINS를 지우너하기 위한 섹션이다.
    - wins server = w.x.y.z
      WINS 서버를 지정한다.
    - wins proxy = yes
      WINS프락시 : WINS기능이 없는 클라이언트 대신 질의에 답하도록 하기위한 옵션이다.
    - dns proxy = no
      DNS의 nslookup을 사용하여 NetBIOS이름을 찾을 것인가 아닌가를 지정하는 옵션이다.
    - preserve case = no
      short preserve case = no
      대소문자를 유지보존할 것인가를 지정하는 옵션이다.
    - default case = lower
      DOS파일들의 기본 문자는 대문자로 인식한다.
      만약 lower로 설정하면 소문자로 인식한다.
    - case sensitive = no
      대소문자의 구분을 할것인가 말것인가를 지정하는 옵션이다.
    - [homes]
      comment = Home Directories
      browseable = no
      writable = yes
      사용자들의 홈디렉토리서버스에서 사용하는 기본적인 설정값이다.
    - [netlogon]
      comment = Network Logon Service
      path = /home/netlogon
      guest ok = yes
      writable = no
      share modes = no
      도메인로그온 기능을 사용하기 위한 netlogin을 위한 설정이다.
    - [Profiles]
      path = /home/profiles
      browseable = no
      guest ok = yes
      로우빙프로파일(roving profile)을 지정하려면 주석을 제거한다.
    - [printers]
      comment = All Printers
      path = /var/spool/samba
      browseable = no
      guest ok = no
      writable = no
      printable = yes
      BSD타이의 프린트시스템을 가지고 있다면 개별 설정없이 바로 사용할 수 있다.
    - [tmp]
      comment = Temporary file space
      path = /tmp
      read only = no
      public = yes
      삼바사용자들의 임시공유 디렉토리로 사용하기 위한 설정이다.
    - [public]
      comment = Public Stuff
      path = /home/samba/public
      public = yes
      read only = no
      write list = @staff
      삼바사용자라면 누구나 접근이 가능한 공유디렉토로서 staff그룹에 등록된 사용자들을 제외한 일반사용잗ㄹ은 읽기전용으로만 사용할 수 있다.
    * 삼바클라이언트 유틸리티 smbclient
    사용형식 : smbclient '\\서버\서비스' [-U 삼바사용자] [패스워드] [옵션]
    # smbclient -L localhost  -> 리눅스서버에 설치되어 있는 삼바서버의 접속 및 운용상태 확인
    # smbclient '\\files\papa' -U papa -> 원격지의 file이라는 로스트로 papa라는 계정을 이용하여 삼바서버로 접속
      서버명으로 file이라는 호스트명을 사용하려면 /etc/samba/lmhosts파일에 호스트정보가 등록되어 있어야 한다.
    # smbclient -L 192.168.0.100
    # smbclient -U papa -L 192.168.0.100
    * 삼바 원격마운트를 위한 smbmount와 smbumount
    사용형식 : smbmount //호스트명(또는 IP)/서비스 /마운트포인트
               smbumount /마운트포인트
    # smbmount //192.168.0.100 /tmp/share
    # smbumount /tmp/share
    * 삼바 사용자 관리
    - 새로운 삼바사용자 생성과 패스워드 설정하기
      삼바서버에서 사용자를 드록하기 위해서는 smbpasswd라는 명령어를 사용한다.
      삼바사용자의 삼바패스워드 또는 smbpasswd라는 명령어를 사용한다.
      삼바사용자를 새로 생성하기 전에 리눅스 계정생성을 먼저해야 한다.
    # useradd dhan
    # passwd dhan
    # smbpasswd -a dhan
    - 삼바사용자 패스워드 변경하기
      root 사용자일 경우 : smbpasswd [options] [username]
      root 사용자가 아닌 경우 : smbpasswd [options]
    - 삼바사용자 사용하지 못하도록 사용중지 설정하기
    # smbpasswd -d dhan -> 사용 중지
    # smbpasswd -e dhan -> 사용 재개
    - 삼바사용자 삭제하기
    # smbpasswd -x dhan
    * 삼바서버의 로그인정보 확인을 위한 smbstatus
    사용형식 : smbstatus [-P] [-b] [-d] [-L] [-p] [-S] [-s <설정파일>] [-u 삼바계정]
    # smbstatus  -> 현재 삼바서버로 로그인되어 있는 사용자들을 확인
    # smbstatus -b  -> 삼바서버로 로그인한 삼바사용자염을 간단하게 확인
    # smbstatus -u papa -> 특정 계정의 삼바사용자의 로그인 정보만을 확인
    * 삼바서버의 NetBIOS 호스트 파일 lmhosts
    이 파일의 주된 목적은 삼바에서 사용할 호스트명정보(주로 IP주소)를 쉽게 찾을 수 있돍 하기위한 것이다.
    이 파일에 등록된 호스트정보를 이용하여 smbclient와 같은 삼바유틸리티에서 등록된 호스트의 삼바서버로 접속할 때에 호스트명만으로 사용할 수 있다.
    * 삼바설정파일 점검하기 위한 testparm
    사용형식 : testparm [-s] [-h] [-x] [-L <서버명>] 설정파일명 [호스트 IP]
    # testparm
    # testparm -l 192.168.0.100
    * 삼바서버를 이용한 웹폴더 구축
    - 웹폴더 사용을 위한 삼바서버 설정
    # useradd dhan
    # passwd dhan
    Changing password for user dhan.
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    # smbpasswd -a dhan
    New SMB password:
    Retype new password:
    Added user dhan.
    # vi /etc/samba/smb.conf
    [dhan]
    comment dhan web folder
    path = /home/dhan
    valid users = dhan
    read only = no
    writable = yes
    public = no
    browseable = yes
    printable = no
    crate mask = 0750
    # /etc/init.d/smb restart
    - 개인 PC의 탐색기에서 운격삼바디스크 사용하기
    - 웹브라우즈에서 웹폴더 형식으로 사용하기
    ***********************************************************
    * DHCP 서버
    ***********************************************************
    * 설치
    - dhcp서버 rpm으로 설치 및 dhcp서비스 파일들
    # wget http://ftp.superuser.co.kr/pub/redhat/9/RPMS/dhcp-3.0pl1-23.i386.rpm  DHCP서버와 중계 에이전트
    # wget http://ftp.superuser.co.kr/pub/redhat/9/RPMS/dhcp-devel-3.0pl1-23.i386.rpm DHCP서버와 접속시키기 위한 개발용 헤더 파일들과 라이브러리들
    # wget http://ftp.superuser.co.kr/pub/redhat/9/RPMS/dhclient-3.0pl1-23.i386.rpm  DHCP서버와 접속시키기 위한 클라이언트
    # rpm -Uvh dhcp-3.0pl1-23.i386.rpm
    # rpm -Uvh dhcp-devel-3.0pl1-23.i386.rpm
    # rpm -Uvh dhclient-3.0pl1-23.i386.rpm
    - dhcp 서버 소스로 컴파일하여 설치하기
    1. dhcp 소스가져오기
    # wget ftp://ftp.isc.org/isc/dcp/dhcp-3.0.1.tar.gz
    2. dhcp 소스 압축풀기
    # tar xvfz dhcp-3.0.1.tar.gz
    3. configure하기
    # ./configure
    4. 컴파일하기(make)
    # make
    5. 컴파일된 파일 설치하기
    # make install
    * 환경파일들
    - DHCP 데몬파일
      dhcp 서버데몬 : /usr/sbin/dhcpd
      dhcp 릴레이에이전트 데몬 : /usr/sbin/dhcrelay
    - DHCP 메인설정파일
      dhcp서버의 설정파일 : /etc/dhcpd.conf
    - DHCP IP할당로그파일
      dhcp IP할당ㄹ그파일 : /var/lib/dhcp/dhcpd.leases
    - DHCP서버 실행과 종료 및 재시작
    # /etc/init.d/dhcpd start
    # /etc/init.d/dhcpd restart
    # /etc/init.d/dhcpd stop
    * DHCP 서버 설정파일 dhcpd.conf
    이 파일은 /usr/share/doc/dhcp-3.0pl1/ 디렉토리에 존재하는 dhcpd.conf.sample 파일을
    /etc/dhcpd.conf 파일로 복사하여 편집한다.
    subnet 192.168.0.0 netmask 255.255.255.0 {
      -> 192.168.0.0/255.255.255.0 네트워크의 범위에 해당하는 IP주소 가운데 아래 reage항목에 나오는 바와 같이 192.168.0.128부터 192.168.0.255까지의 IP주소를 DHCP클라이언트 컴퓨터에 유동사설IP주소를 할당하기 위한 설정이다.
    # -- default gateway
      option routers 192.168.0.1;
      -> DHCP클라이언트들이 사용할 기본게이트웨이이다.
      options subnet-mask 255.255.255.0;
      -> IP주소를 할당받은 DHCP클라이언트가 사용할 Subnet Mask를 의미한다.
      option nis-domain "domain.org";
      option domain-name "domain.org";
      -> DHCP 서버의 자체 도메인이름을 의미한다.
      option domain-name-servers 192.168.1.1;
      -> IP주소를 할당받은 DHCP클라이언트가 사용할 DNS서버를 설정한다.
      option time-offset -18000;
    # option ntp-servers 19.168.1.1;
    # option netbios-name-servers 192.168.1.1;
    # - Select point-to-point node(default is hybrid). Don't change this unless you understand NetBIOS very well
    # option netios-node-type 2;
      range dynamic-bootp 192.168.0.128 192.168.0.254;
      -> DHCP클라이언트에게 할당할 수 있는 IP주소의 범위이다.
      default-lease-time 21600;
      -> 할당시간이 설정되어 있지 않은 DHCP클라이언트가 할당받은 IP주소를 가지고 있을 수 있는 시간을 의미한다.
      max-lease-time 43200;
      -> 할당된 IP주소를 DHCP클라이언트가 임대할 수 있는 최대 시간을 의미한다.
      # We want the nameserver to apperar at a fixed address
      host ns {
        -> DHCP서버를 이용하여 통신을 하는 많은 DHCP클라이언트들 가운데 특정 호스트에게만 항상 고정IP를 사용할 수 있도록 하기 위한 설정이다.
        next-server marvin.redhat.com;
        hardware ethernet 12:34:56:78:AB:CD;
        -> 고정IP주소를 할당할 DHCP클라이언트의 MAC주소를 설정한다.
        fixed-address 207.176.4.254;
        -> 위의 MAC주소를 가진 DHCP클라이언트에게 할당할 고정 IP주소
      }
    }
    * DHCP서버의 네트워크 설정
    DHCP서버로 사용되기 위해서는 DHCP서버의 ethernet에 멀티캐스트가 가능하도록 설정되어 있어야 한다.
    * DHCP서버를 사용하는 DHCP클라이언트 설정
    - 리눅스에서 자동 IP할당 받기 위한 DHCP 클라이언트 설정
    # cat /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    omBOOT=yes
    BOOTPROTO=dhcp
    # /etc/init.d/network restart
    - 윈도우에서 자동 IP할당받기 위한 DHCP클라이언트 설정
    ***********************************************************
    * PROXY 서버
    ***********************************************************
     
    ***********************************************************
    * MRTG 트랙픽서버
    ***********************************************************
    * SNMP
    # wget http://ftp.superuser.co.kr/pub/redhat/9/RPMS/net-snmp-5.0.6-17.i386.rpm
    # rpm -Uvh net-snmp-5.0.6-17.i386.rpm
    # /etc/init.d/snmpd start
    SNMP패키지를 설치하면 /etc/snmp/snmpd.conf 라는 SNMP설정파일이 있다.
    이 설정파일에서 SNMP커뮤니티네임(community name)과 시큐리티네임(security name)을 각각 설정한다.
    com2sec notConfigUser default bible
    group notConfigGroup v1 bible
    group notConfigGroup vc bible
    * MRTG 트랙픽서버 구축
    - 필요한 프로그램들 설치하기
      perl
      zlib
      libpng
      freetype
      jpeg
      gd
      apache
    - MRTG 설치
    # wget ftp://ftp.ntua.gr/pub/net/monitoring/mrtg/mrtg-2.11.1.tar.gz
    # tar xvf mrtg-2.11.1.tar.gz
    # cd mrtg-2.11.1
    # ./configure --with-gd=/usr/local/gd --wit-z=/usr/local/zlib --wit-png=/usr/local/libpng
    # make
    # make install
    # cd /usr/local/mrtg
    # mkdir conf
    - MRTG설정파일 생성하기
    # CFGMAKE --GLOBAL 'WorkDir: /home/mrtg/www/kebia_1' --global 'Options[_]: bits,growright' --output /home/mrtg/conf/bible.cfgbible@192.168.0.5
      WorkDir: 옵션은 MRTG의 실행결과 파일들을 저장할 위치를 지정
      Options에 설정한 부분은 그래프의 단위와 어느쪽으로 그릴 것인가를 지정
      /home/mrtg/conf/bible.cfg는 생성될 결과파일을 지정
      bible@192.168.0.5에서 192.168.0.5는 MRTG의 분석대상이며 bible은 대상서버에 설치된 snmp의 커뮤니티네임(community name)이다.
    - cfg파일 분석
    - MRTG 실행
    # /usr/local/mrtg/bin/mrtg /home/mrtg/conf/kebia_1.cfg
    336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

    << OS별로 사용하고 있는 CPU, Physical Memory, Kernel bits를 알 수 있는 방법 >>

    1.CPU
      Solaris   > psrinfo -v
      HP-UX     > ioscan -fnC processorClass
      AIX       > lsdev -Cc processor
      Tru64Unix > psrinfo -v

    2.Physical Memory
      Solaris   > prtconf -v
      HP-UX     > grep -i Physical /var/adm/syslog/syslog.log
      AIX       > bootinfo -r
      Tru64Unix > uerf | grep memory
      Linux     > free

    3.Kernel Bits
      Solaris   > isainfo -kv
      HP-UX     > getconf KERNEL_BITS
      AIX       > getconf WORD_BIT
                > ls -al unix ==> unix -> /usr/lib/boot/unix_mp : 32bit(root dir에서)
                                  unix -> /usr/lib/boot/unix_64 : 64bit(root dir에서)
      Linux     > getconf WORD_BIT


    > chown -R tuxedo:dba tuxedo
    > sqlplus "/ as sysdba "
    SQLDBA> grant all on v$xatrans$ to medinfo;
    SQLDBA> grant all on v$pending_xatrans$ to medinfo;
    SQLDBA> grant select on dba_pending_transactions to medinfo;

    > Tuxedo 8.1 Install시 필요한 Disk space 및 /temp
      Sun Solaris   : 296/94(MB)
      HP            : 338/38(MB)
      AIX           : 273/109(MB)
      Compaq Tru64  : 376/135(MB)
      Red Hat Linux : 243/14(MB)

    -----
         TIPS : 서비스에서 자산이 속한 SVRID를 알수 있는 방법
                tpsvrinit 함수에서 getopt함수를 이용하여 "i"의 option값을 알아 낸 뒤 전역변수에 보관하여 사용하는 방법
    -----
         TIPS : Workstation Handler level에서 거래로그를 남기는 방법
                tmtypesw.c에 거래로그를 남길 수 있도록 Custermize한 다음 buildwsh로 User WSH를 생성하여 사용하면 됨.
    -----
         TIPS : Tuxedo 8.0 이상 Version 설치시 /tmp 및 설치 디렉토리에 대한 Disk space 확인 요망
                취소 400MB이상 요구(반드시 확인)
    -----
         현상 : 160156.gold!atismj.25881: gtrid x0 x320ad964 x67: LIBTUX_CAT:488: ERROR: Invalid data pointer given to tpreturn()
         원인 : 1.Host Variable를 Local Variable로 선언하여 사용한 경우
                2.FML Buffer에 Data를 집어 넣을 때 Data가 깨짐.
         조치 : 1.Local Variable로 선언된 것을 Host Variable로 선언한다.
                2.DB Column Length와 Host Variable의 Length를 확인.
                  문자형인 경우 Column Length + 1 인지 확인.
    -----
         현상 : 155108.gold!atictj.27658: LIBTUX_CAT:223: WARN: Duplicate server
                155108.gold!atictj.27658: LIBTUX_CAT:248: ERROR: System init function failed, Uunixerr =
         원인 : 이미 기동되어 있는 Server를 재기동한 경우에 발생.
         조치 : 기동되어 있는 Server를 죽이고 다시 처리한다.
    -----
         현상 : 103200.gold!stmyyh1.20241: LIBTUX_CAT:328:ERROR: No space in Bulletin Board for Service Table
         원인 : UBB의 MAXACCESSERS, MAXSERVER, MAXSERVICE 등의 갯수가 적게 설정되어서 발생
         조치 : UBB의 MAXACCESSERS, MAXSERVER, MAXSERVICE의 갯수를 확인하여 적게 설정되어 있는 값을 늘려준다.
    -----
         현상 : tmshutdown: internal error: CMDTUX_CAT:764: can't attach to BBL
         원인 : Tuxedo기 기동되어 있지 않은 상태에서 tmshutdown을 할 경우에 발생.
         조치 : TP/M Admin 요청
    -----
         현상 : CMDTUX_CAT:816: cannot exec, exectable file not found.
         원인 : Server에 Server실행 file이 없어서 발생하는 error
         조치 : buildServer를 실행시켜 실행 file를 만들어 준다.
    -----
         현상 : CMDTUX_CAT:868: tmloadcf cannot run on a non-master node
         원인 : 1.기존의 tuxconfig file이 있거나
                2.uname -n에서 나타나는 system name이 다른 경우.(대.소문자 구분)
         조치 : 1.기존의 tuxconfig file를 지운다.
                2.uname -n에서 나타나는 이름을 MACHINES SECTION에 부여한다.
                  *MACHINES
                  ELS
    -----
         현상 : [ELS]/aros2/users/uatijik/aros > ud -t 10 < data
                CMDTUX_CAT:988: ud: SYNTAX ERROR in FBFR #1
                LIBFML_CAT:10: ERROR: Bad syntax in boolean expression
         원인 : ud format에 대한 문제
    -----
         현상 : CMDTUX_CAT:993: RTN packet time out.
                103020.ELS!BBL.29050: LIBTUX_CAT:262: std main starting
                103027.ELS!TMS_ORACLE7.29051: LIBTUX_CAT:262: std main starting
                103031.ELS!TMS_ORACLE7.29053: LIBTUX_CAT:262: std main starting
                103033.ELS!clstserv.29055: LIBTUX_CAT:262: std main starting
                103036.ELS!clstserv.29050: LIBTUX_CAT:525: Default tpsvrinit() function used.
                103036.ELS!WSL.29057: LIBTUX_CAT:262: std main starting
                103038.ELS!WSH.29058: WSNAT_CAT:1030: Work Station Handler joining application.
         원인 : ud명령에서 트랜잭션 처리시간이 너무 작거나 혹은 ud에서 트랜잭션 처리시간을 명시하지
                않아서( ud < data01 ) 발생한다.
         조치 : ubb file에서 트랜잭션 처리시간을 늘려주거나 혹은 ud명령에서 트랜잭션 처리시간을 명시
                하여 준다.(ud -t 60 < data01)
    -----
         현상 : CMDTUX_CAT:994: reply failure: TPESVCERR - Server error while handling request.
         원인 : 1.FML Buffer size가 적어서 문제가 발생한다.
                2.printf에서 varchar type의 data 출력시에 .arr를 붙이지 않았을 경우.
         조치 : 1.FML Buffer size를 realloc 시켜준다.
                  FBFR *transf = (FBFR *)rqst->data;를 아래와 같이 바꾸어 준다.
                  size단위는 4K단위가 좋다.(Page단위)
                  rqst->data = tprealloc(rqst->data, 10*1024);
                  transf = (FBFR *)rqst->data;
    -----
         현상 : CMDTUX_CAT:991: ERROR: Can't send buffer TPETRAN - error starting transaction.
         원인 : ud Testing시 XA-mode인 경우 -t Option을 사용하지 않아 발생.
         조치 : ud Testing시 XA-mode인 경우 -t Option을 사용할 것(ud -t 30 < data).
    -----
         현상 : CMDTUX_CAT:991: can't send buffer: TPENOENT - no entry found.
         원인 : Server가 활성화 되지 않은 경우.
         조치 : Server를 활성화 시킴.
    -----
         현상 : CMDTUX_CAT:998: ud:SYNTAX ERROR in FBFR #1
                LIBFML_CAT:8: ERROR: Unknown field name
                SRVCNM        ra2ssv002
                CMDTUX_CAT:991: can't send buffer: TPENOENT - no entry found.
         원인 : ud file의 정의(format)가 잘못된 것이다.
                fml buffer변수와 값사이에 TAB으로 분리가 않됨.
                서비스명 다음에 Return 값이 아니고 공백이 따라 온 경우.
                변수와 값 사이에는 TAB이 존재하고, 문자의 마지막에는 공백이 없어야 한다.
                makefile에 서비스명이 등록되지 않고 컴파일 될 때도 발생된다.
    -----
         현상 : CMDTUX_CAT:1459:ERROR: can't commit transaction - tpcommit() failed - TPESYSTEM - internal system error.
         조치 : TP/M Admin 요청
    -----
         현상 : 095249.ELS!ra2s0310.29350: LIBTUX_CAT:262: INFO: Standard main starting
                095249.ELS!ra2s0310.29350: LIBTUX_CAT:334: ERROR: No BBL
                095249.ELS!ra2s0310.29350: LIBTUX_CAT:248: ERROR: System init function failed. Unixerr =
                095249.ELS!tmboot.29349: WARNING: No BBL available on site SITE1.
                       Will not attempt to boot Server processes on that site.

                exec ra2s0320 -A -r -e ra2s0320.err -o ra2s0320.out :
                CMDTUX_CAT:822: No BBL available, cannot boot
                tmboot: WARNING: No BBL available on site SITE1.
                Will not attempt to boot Server processes on that site.
                0 processes started.
         원인 : BBL, TMD_ORACLE7, WSL, WSH이 Memory에 올라 오지 않아서 문제가 발생됨.
         조치 : tpadmin이 BBL, TMS_ORACLE7, WSL, WSH를 먼저 올려 주어야 한다.
    -----
         현상 : 191949.ELS!ra2s0310.19845: gtrid x10001 x30b4307f xb: LIBTUX_CAT:1401: WARN: tpforward tpacall failure TPENOENT - no entry found.
         원인 : tpforward( ra2ssv001, (char *)transf, 0, 0 ); 에서 서비스를 String으로 처리하지
                않으므로 발생.
         조치 : tpforward( "ra2ssv001", (char *)transf, 0, 0 ); 으로 수정.
    -----
         현상 : 152039.SQNT1!WSH.26463: WSNAT_CAT:1185: INFO: Userid: [PENTA], Clientid: [TUXEDO] timed out due to inactivity.
                152108.SQNT1!WSH.21108: gtrid x0 x30b4305a x15: WSNAT_CAT:1042: ERROR: tpcall() call failed, tperrno = 6
         원인 : Client, Server의 서비스명이 틀리거나 BBL에 존재하지 않은 경우에 발생
         조치 : Client, Server의 서비스명 확인, Service가 존재하는 Server를 기동시킨다.
    -----
         현상 : TP Booting시 SITE1에는 TP BOOT 되었는데 SITE2에는 TP가 BOOT된 상태가 아닌 상태에서
                ud 명령어로 Data를 Select함.
                CMDTUX_CAT:1459: ERROR: can't commit transaction - tpcommit() failed - TPESYSTEM - internal system error.
         원인 : ORACLE TMS_ORACLE7가 올라오지 않아서 발생한 문제임.
         조치 : TP/M Admin에게 TMS_ORACLE7를 올려줄 것을 요청.
    -----
         현상 : exec WSL -A -- -d /dev/tcp -n 0x0002ababa5f3070a -w WSH -m 1 -M 2 -x 2 -t 1 : Failed.
         원인 : SYSTEM에 IP ADDRESS가 잘못된 경우임.
         조치 : SYSTEM에 IP ADDRESS를 확인.
                /ETC/HOSTS라는 File에 가보면 확인 할수 있다.
    -----
         현상 : ELS에서 tpstart를 시킴.
                192642.ELS!tmboot.19904: FATAL: internal error: CMDTUX_CAT:767: must run on master node
         원인 : UBB file에 설정되어 있는 Master node가 아닌 node에서 Tuxedo를 booting한 경우에 발생.
         조치 : UBB file에서 Master node를 확인하고 Master Tuxedo를 booting시킴.
    -----
         현상 : [SQNT1]/aros2/tuxedo/env3> tmboot -y
                Booting all admin and Server processes in /aros2/tuxedo/env3/tuxconfig

                Booting admin processes .....
                exec BBL -A: on SITE1 -> Failed.
                tmboot: WARNING: No BBL available on site SITE1.
                        Will not attempt to boot Server processes on that site.
                tmboot: WARNING: internal error: CMDTUX_CAT:798: Cannot boot remote BBL(SITE2),
                        not BRIDGE available on DBBLs node(SITE1).
                Booting Server processes ...
                tmboot: WARNING: No BBL available on site SITE2.
                        Will not attempt to boot Server processes on that site.
                0 processes started.
         원인 : DBBL가 존재하는 Master node인 SITE1에서 SITE2의 BRIDGE를 허용할 수 없는 경우에 발생
         조치 : 현재 SITE2에 떠 있는 tlistener가 있으면 재기동한다.
    -----
         현상 : client(end user pc)에서 응용 프로그램을 start시켰을때 client ulog file에 저장된 내용
                110932.PC!?proc.6367: LIBWSC_C:1055: ERROR: Unable to establish WSL connection
                110932.PC!?proc.6367: LIBWSC_C:1027: ERROR: Unable to connect to WSH
                110932.PC!?proc.6367: LIBWSC_C:1020: ERROR: Unable to obtain authentication level
                110932.PC!?proc.6367: tpinit failed, ERROR: TPESYSTEM - internal system error
         원인 : 1.Server Computer(TP Admin)에서 WSL(Workstation linstener)를 오려주지 않아서 발생.
                2.buildclient로 native client를 생성하지 않은 경우에 발생
         조치 : 1.TP Admin의 권한을 가지 사람이 WSL을 올려주면 된다.
    -----
         현상 : Syntax error at line 1, column 17, file /aros2/tuxedo/include/tb_ra115.h:
                VARCHAR      a115_regt_ver[3];
                .............1
                (1) PCC-s-0221, Encountered the symbol "a115_regt_ver" when expecting one of the
                    following:
                    ; , = : ( [ * ? | & < > + - / % . ^ *= /= %= += -= <<= >>= &&= ||= ^= | & ==
                    != <= >= << >> ++ etc.
                The symbol ";" was substituted for "a115_regt_ver" to continue.

                printf( " 5555555555555 \n" );
                FMLLOOK( " 내용설명:신청사건의 entity가 있으면 그 데이타를 ", a115_regt_no.arr );
                EXEC SQL INCLUDE tb_ra115.h;
                int  i = 0                                  /* FOR LOOP COUNT */
                    ,hiTcnt = 0;                            /* 신청사건 COUNT */
         조치 : EXEC SQL INCLUDE tb_ra115.h;
                int  i = 0                                  /* FOR LOOP COUNT */
                    ,hiTcnt = 0;                            /* 신청사건 COUNT */
                printf( " 5555555555555 \n" );
                FMLLOOK( " 내용설명:신청사건의 entity가 있으면 그 데이타를 ", a115_regt_no.arr );
                에서
                EXEC SQL INCLUDE tb_ra115.h;
                int  i = 0                                  /* FOR LOOP COUNT */
                    ,hiTcnt = 0;                            /* 신청사건 COUNT */
                와 같은 것이
                printf( " 5555555555555 \n" );
                FMLLOOK( " 내용설명:신청사건의 entity가 있으면 그 데이타를 ", a115_regt_no.arr );
                와 같은 것보다 앞서와야 한다.
    -----
         현상 : "readkapttmprgs.c", line 433: undefined symbol: KAP
                "readkapttmprgs.c", line 433: warning: left operand of "." must be struct/union object
                "readkapttmprgs.c", line 433: non-unique member requires struct/union object: len
         원인 : PUTVAR 분분에서 문제가 발생함. Char type를 PUTVAR로 보냈기 때문이다.
         조치 : Char type으로 전송을 하고 Host변수도 앞에 "&"를 붙여준다.
    -----
         현상 : "readkaptmprgs.c", line 454: syntax error before or at: a315_pin
         원인 : LINELOOK or FMLLOOK 같은 Debug 함수의 사용순서가 잘못 되었을 때 발생한다.
         조치 : LINELOOK or FMLLOOK 같은 Debug 함수를 삭제하든가, 쓸 위치를 바꾼다.
    -----
         현상 : Test에서 Client에서 발생한 문제임.
                ErrMsg: tpcall failed, ERROR: TPESVCERR - Server error while handling request
                그러나, Server에서 ud는 FML buffer의 내용은 정상으로 화면에 보여진다.
         원인 : Variable에 대응되는 Variable type이 서로 맞지않는 경우에 발생한다.
         조치 : 대응되는 변수의 갯수와 Variable type를 확인하고 서로 같게 한다.
    -----
         현상 : System default option values taken from: /aros1/oracle/proc/pmscfg.h
                sh: 25156 기억영역 장애 - core가 생겼음
                *** Error code 139
                Make: . Stop.
         원인 : VARCHAR bfr_table_no[];
                VARCHAR bfr_table_pk[];
                에 array의 길이를 정해주지 않았을 때 발생한다.
         조치 : VARCHAR bfr_table_no[5];
                VARCHAR bfr_table_pk[41];
    -----
         현상 : 172910.ATIA!?proc.-80091: SRVCNM is BADFIELD
                172910.ATIA!?proc.-80091: Invalid data format, LIBFML_C:8: ERROR: Unknown field name
         원인 : 1.FML Buffer의 Field name과 맞지 않거나 미등록된 경우에 발생
                2.TUXEDO Version Up으로 인하여 이전 Version에 있는 TUXEDO Function을 사용한 경우에 발생
         조치 : 1.FML Buffer 확인 및 등록
                2.TUXEDO Function 확인
    -----
         현상 : TPCALL Field Error: TPENOENT - no entry found.
         원인 : Server가 기동되지 않은 상태에서 Service를 TPCALL할 경우에 발생한다.
         조치 : Server 기동여부 및 Service가 맞는지 확인.
    -----
         현상 : 101922.ATIA!?proc.-152805: tpcall failed, TPENOENT - no entry found
         원인 : 1.TP_CALL()함수에서 호출하는 서비스가 없다.
                2.Server Process기동시 구성파일(UBB)에서 최대값이 부족한 경우
         조치 : 1.Server Process, Service를 확인
                2.UBB File에서 MAXACCESSERS, MAXSERVERS, MAXSERVICE 값을 확인한다.
    -----
         현상 : Service를 호출하여 DataWindow에 어떤 Data를 Display하지 못함.(Data는 정상적으로 가져옴)
         원인 : DataWindow에 Import String하기 전에 DataWindow를 Reset를 수행하지 않을 경우에 발생함.
         조치 : DataWindow.Reset한 후에 ImportString를 함.
    -----
         현상 : tpinit Error
         원인 : 1.접속할 Server process의 Address가 없다.
                2.Server Process쪽에 WSL이 떠 있지 않다.
                3.접속 권한이 없다.(암호검사를 하는 경우)
                4.최대 사용자 수를 넘었다.
                5.여러 개의 DLL이 존재한다.(특히 ulog file이 생성되지 않는 경우)
                6.4GL쪽에 정의한 DLL의 경로가 틀리거나 정확하게 인식하지 못한다.
         조치 : 1.PC에서 해당 Machine으로 Ping이나 Telnet이 잘되는지 확인한다.
                2.DOS의 환경변수 WSNADDR 설정을 확인한다.
                3.Server에 WSL을 확인한다.
                4.MAXWSCLIENTS와 WSL에서 WSH의 Max값을 확인한다.
                5.DOS의 Root Directory에서 'DIR' 명령의 '/s' Option으로 DLL을 검색한다.
                6.4GL에서 DLL 정의부분을 확인한다.
                7.4GL Compile을 새로한다.
    -----
         현상 : Server가 죽는다.
         원인 : 1.Pointer 사용이 잘못됨
                2.준비된 Buffer Size가 부족한다.
         조치 : 1.Complie시 Warning이 있는 위치를 확인한다.
                2.Memory 혹은 strcpy()함수 사용시 각 Memory의 크기를 확인한다.
                3.Program의 Debug 문장을 넣어서 죽은 위치를 확인하여 검사한다.
    -----
         현상 : FML Buffer에 Data를 복사하지 못한다.
         원인 : 1.할당된 Memory가 작다.
                2.Server에서 다른 Server로 호출하여 할당된 Memory 크기가 변했다.
         조치 : 1.tprealloc()함수를 사용하여 Memory를 크게 잡는다.
                2.호출에서 반환된 Memory를 다시 tprealloc()한다.
    -----
         현상 : FML Field를 못 찾는다.
         원인 : 1.환경변수 FLDTBLDIR, FIELDTBLS가 설정되어 있지 않다.
                2.ENVFILE안에서 환경변수가 잘못 설정되어 있다.
                3.Field table에 해당 Field가 없거나 잘못 정의되어 있다.
         조치 : 1.set 명령의 출력 및 ENVFILE을 확인한다.
                  -$ set > kkk 수행 후 kkk file내의 환경변수 확인
                  -$ vi ENVFILE 수행에서 "set list"하여 White characters를 확인
                2.Field table을 확인한다. (field-name은 대소문자를 구분한다.)
                3.PC Client쪽의 Field table은 반드시 소문자로 작성한다.
    -----
         현상 : 분기(Routing) Error
         원인 : 1.Buffer안에 Routing을 위한 값이 없다.
                2.Routing 값으로 갈 수 있는 곳이 지정되어 있지 않다.
         조치 : 1.Buffer에 Routing 값을 넣는다.
                2.Routing을 재설정하거나, 입력된 Routing 값을 바꾼다.
    -----
         현상 : Server process가 종료되지 않는다.
         원인 : 1.Server process가 무한 Loop를 돈다.
                2.BB(게시판)가 Locking 상태에 있다.
         조치 : 1.Server process를 kill 명령으로 죽이고 tmshutdown 명령을 한번 수행시켜준다.
                2.TUXEDO의 tmadmin, tmboot, tmshutdown 명령이 수행중인지 확인하고 존재하는 명령이 없도록한다.
                  -"ps -ef | grep tm"명령으로 수행되는 TUXEDO 명령을 확인한다.
                  그후 tmadmin으로 들어가서 "bbc(BBL Clean) 명령을 수행한다.
                  -"bbc" 명령은 지정된 Machine 내에 있는 Dead Server Process와 연관된 IPC 자원을 Clear 시킴.
    -----
         현상 : Server Buffer에 이상한 값이 저장
         원인 : 1.변수의 유형정의가 일치되지 않는다.
                2.Memory 복사시 잘못된 곳으로 복사를 한다.
                3.변수의 크기가 작다.
         조치 : 1.변수유형을 맞춰준다.
                2.Debug Code로 내용이 변화되는 부분을 찾아 해결한다.
                3.변수의 크기를 맞춰준다.(DB table의 Colimn Size가 n이면 program내에서 선언하는 Host Variable의
                  Size는 반드시(n+1)로 선언한다.)
    -----
         현상 : Server Program에서 직전에 발생한 Error가 이후에 계속 발생함(개발시)
         원인 : Oracle의 경우 sqlcode가 재설정되지 않는 문장에서 Error Check를 함.
         조치 : 해당 문장에서 Check logic을 빼거나 sqlcode를 사용하기전에 초기화 한다.
    -----
         현상 : MP mode에서 "can't propagate TUXCONFIG file"라는 Error 발생
         원인 : 1.Listener Process가 기동되어 있지 않음
                2.Temporary Directory인 /tmp 혹은 /use/tmp가 Full 되어 있음
                3.TUXCONFIG에 대한 환경변수 설정이 잘못되어 있다.
                4.Transaction 처리를 위한 TLOG 혹은 TUXEDO/Q 사용을 위한 QUE 등의 Device가 생성되어 있지 않음.
         조치 : 1.Master 및 Back-up Machine에서 Listener Process를 기동시킨다.
                  -$tlisten [-d/dev/tcp] -l NLSADDR(NLSADDR은 UBBCONFIG에 정의된 내용)
                2./tmp 혹은 /usr/tmp Directory는 TUXCONFIG File을 생성하기 위한 Temporary Directory로,
                  Full 상태로 존재하여서는 않됨.
                3.환경변수 화일 및 ENVFILE에서 TUXCONFIG의 설정값을 확인한다.
                4.환경변수 화일 및 ENVFILE에서 TLOGDEVICE의 설정값을 확인한다.
                  TLOG/QUE등을 생성하기 위한 Shell Script(crtlog, crque 등)를 수행하였는지 확인
    -----
         현상 : DOMAIN에서 해당 DOMAIN 구분자를 얻어내지 못함
         원인 : 1.DOMAIN 구성파일(domconfig)에서 해당 DOMAIN 구분자가 잘못되어 있다.
                2.DOMAIN의 Port Number 혹은 IP Address가 다른 DOMAIN을 가르킨다.
         조치 : 1.DOMAIN 구성파일에서 LOCAL 혹은 Remote DOMAIN 구분자를 확인한다.
                2.DOMAIN의 주소와 포트를 확인한다.
    -----
         현상 : BB에 PE 항목을 등록하지 못함.
         원인 : 해당 Server의 'uname -n'의 반환값과 구성파일의 Machine 이름이 다름
         조치 : 두가지 이름을 동일하게 맞춤( 'hostname'도 동일하게 맞춤 )
    -----
         현상 : 112557.ATIA!?proc.-32617: end of file before end of packet indicates syntax error
                112557.ATIA!?proc.-32617: write to outdata failed, LIBFML_C:10: ERROR: Bad syntax in boolean expression
         원인 : 1.Outdata form에서 설정한 것과 다르게 Outdata를 ImportString한 경우에 발생
                2.Service는 정상적으로 처리하는데 TP_CALL의 Return Value이 -1로 Return됨
         조치 : 1.Outdata form에서 설정한 것에 Outdata를 ImportString하기 바람
                2.Client의 Form구성 중 마지막에 "~n"를 삽입하면 된다.
    -----
         현상 : Fget() Error : Ferror = 3 ( FNOSPACE )
         원인 : Fget()의 마지막 매개변수인 long값(Length)의 Pointer가 가르키는 위치에 FML Buffer안의 내용보다
                크기가 작게 설정되어 있다.
         조치 : Length을 0으로 설정한다.(단, 이 경우 Buffer의 크기가 충분해야한다.)
    -----
         현상 : Fget() error -> Lib FML-CAT4: ERROR Field not present !
         원인 : 1.FML Buffer에 미등록된 Data field를 사용할 때 발생된 error임.
         조치 : FML Buffer 등록시 값이 등록되어 있지 않거나, Service에서 GETVAR하기전에 Finit()을 시켜줌
    -----
         현상 : Fget( (FBFR *)transf, A315PIN, 0, a315pin, 0 );
                "clstserv.c", line 433: argument is incompatible with prototype: arg #4
         원인 : macro를 사용할 경우는 host변수에 .arr를 붙여주지 않은 경우에 발생
         조치 : Fget( (FRFB *)transf, A315PIN, 0, a315pin.arr, 0 );
                a315pin.len = strlen( a315pin.arr );
    -----
         현상 : Fchg() error -> LIBFML_CAT:3: ERROR: No space in fielded buffer !
         원인 : 서버의 memory 부족으로 발생한다.
         조치 : rqst->data = tprealloc( rqst->data, 40*1024 );
                transf = ( FBFR * )rqst->data;
    -----
         현상 : tpcommit() Error
         원인 : 1.tpbegin()이 되어있지 않음
                2.Time-out 발생
                3.Server에서 TPFAIL로 Return
                4.TMS 초기화 혹은 동작 이상
                5.Oracle 22번 error(ORA-22:"Invalid session id; access denied")
         조치 : 1.tpbegin()을 넣어줌
                2.tpbegin()시 시간을 길게 주거나 Service 시간을 줄이도록 튜닝함.
                3.Server의 Tansaction은 ABORTONLY로 표시됨
                  (따라서, Commit을 하고자 하는 경우에는 TPSUCCESS로 Return해야 함)
                4.TMS를 Kill시키고 tmadmin상에서 bbc명령을 수행한다.
                5.TM이 Open하고 있는 정보와 Application이 Open하는 정보가 다르다.
                  '@Server-name'과 같은 식으로 사용하여 TM이 접근할 수 없는 Session이 이루어 지고 있음.
    -----
         현상 : TPMINVAL(tperrno=0-Minimum Error Message)
         원인 : Minimum Error Message
    -----
         현상 : TPEABORT(tperrno=1-ATMI Error Message)
         원인 : Transaction이 Abort된 경우 발생
    -----
         현상 : TPEBADDESC(tperrno=2-ATMI Error Message)
         원인 : tpgetrply()에 잘못된 디스크립터
                Cd가 올바른 Reply Descriptor를 갖지 못한 경우
    -----
         현상 : TPEBLOCK(tperrno=3-ATMI Error Message)
         원인 : blocking condition이 발견됨
                TPNOBLOCK Flag가 Setting되어 있는데 Blocking이 될 때 발생
    -----
         현상 : TPEINVAL(tperrno=4-ATMI Error Message)
         원인 : 잘못된 인수
                함수의 Parameter가 올바르게 Setting되지 않았거나, Flag에 비정상 값이 있을 때 발생
    -----
         현상 : TPELIMIT(tperrno=5-ATMI Error Message)
         원인 : 너무많은 Handle
                호출한 Async Call의 개수가 Maximum값에 도달했을 때 발생
    -----
         현상 : TPENOENT(tperrno=6-ATMI Error Message)
         원인 : Bulletin Board에 여유가 없거나 항목이 발견되지 않음.
                호출한 Service가 System에 없을 경우
                Conversational로 지정한 Server의 Service를 tpcall로 호출한 경우
    -----
         현상 : TPEOS(tperrno=7-ATMI Error Message)
         원인 : 운영체제 오류
                Operating System Error의 발생을 의미.
                다른 노드의 메시지 큐가 full인 경우와 같을  발생
    -----
         현상 : TPEPERM(tperrno=8-ATMI Error Message)
         원인 : 허가되어 있지 않거나 권한이 없음(System/T 관리자가 아닌 Login에서 사용한 경우)
                Security 규약을 어겼을 경우 발생
    -----
         현상 : TPEPROTO(tperrno=9-ATMI Error Message)
         원인 : 프로토콜 오류
                Transaction을 Abort할 수 없는 경우에 tpabort를 호출한 경우
                보통 Transaction Initiator가 아닌 Service에서 tpabort를 호출한 경우와 Non-Transaction Mode에서 tpabort를 호출한 경우 발생
                tpacall
    -----
         현상 : TPESVCERR(tperrno=10-ATMI Error Message)
         원인 : 요구처리시 서버 오류
                Service Program에서 tpreturn이나 tpforword를 잘못 사용하였을 경우 발생
                보통 Invalid Flag Setting과 같은 경우 발생
                Tuxedo는 tpcommit이 호출되더라도 Transaction을 Abort한다
    -----
         현상 : TPESVCFAIL(tperrno=11-ATMI Error Message)
         원인 : 응용프로그램 레벨 서비스 오류
                tpreturn에서 TPFAIL Flag를 Setting했을때 발생
                Tuxedo는 tpcommit이 호출되더라도 Transaction을 Abort한다
    -----
         현상 : TPESYSTEM(tperrno=12-ATMI Error Message)
         원인 : System/T 내부오류(로그에 메세지 쓰임)
                Tuxedo 내부적 문제의 발생을 의미, 상세 메시지는 로그파일에 기록
    -----
         현상 : TPETIME(tperrno=13-ATMI Error Message)
         원인 : TPNOBLOCK이 지정되지 않았고, 서비스 수행시간을 초과한 경우에 발생.
                Timeout이 발생한 경우(Transaction Mode일 경우는 Transaction Timeout이고 Non-Transaction Mode일 경우 TPNOBLOCKING Flag가 Setting되어 있지 않으면 Blocking timeout을 의미)
    -----
         현상 : TPETRAN(tperrno=14-ATMI Error Message)
         원인 : 트랜잭션 모드에서 트랜잭션이 취소됨
                Invoker가 Transaction Mode이고 호출된 Service가 Transaction Mode를 수행할 수 없을 때
                그리고 TPNOTRAN으로 Flag가 Setting되어 있지 않을 때 발생
    -----
         현상 : TPGOTSIG(tperrno=15-ATMI Error Message)
         원인 : TPSIGRSTRT가 지정되지 않았고, Signal을 받음.
                TPSIGRSTRT Flag가 Setting되지 않았는데 Function수행중 Signal이 발생할 경우
    -----
         현상 : TPERMERR(tperrno=16-ATMI Error Message)
         원인 : Resource Manager 오류
    -----
         현상 : TPEITYPE(tperrno=17-ATMI Error Message)
         원인 : 서비스의 유형이나 하위유형과 일치하지 않음.
                Input buffer로 Allocate한 Buffer의 Type을 Tuxedo가 인식하지 못할 때
                보통 Pointer가 깨지거나 tpalloc에 의해 Space를 Allocate하지 못했을 경우 발생
    -----
         현상 : TPEOTYPE(tperrno=18-ATMI Error Message)
         원인 : 버퍼 혹은 무언가의 유형 혹은 하위 유형과 일치하지 않음.
                Output buffer로 allocate한 buffer의 type을 Tuxedo가 인식하지 못할 때
                보통 Pointer가 깨지거나 tpalloc에 의해 Space를 Allocate하지 못했을 경우 발생
                또는 TPNOCHANGE로 Flag가 Setting되지 않았는데, Return된 Buffer Type이 Allocate한 Buffer Type과 다를경우 발생
    -----
         현상 : TPERELEASE(tperrno=19-ATMI Error Message)
         원인 : 3.0버젼의 라이브러리 호출이 발생
    -----
         현상 : TPEHAZARD(tperrno=20-ATMI Error Message)
         원인 : 트랜잭션이 자발적으로 끝날 위험이 있음
                Application Level에서 Transaction을 결정할 수 없어 자발적으로 끝날 가능성이 있는 경우
    -----
         현상 : TPEHEURISTIC(tperrno=21-)
         원인 : Application Level에서 Transaction을 결정할 수 없어 자발적으로 끝났을 경우
    -----
         현상 : TPEEVENT(tperrno=22-ATMI Error Message)
         원인 : 이벤트발생
                Event가 발생하였을 경우, Event Type이 Revent로 Setting되어 있어야 한다
    -----
         현상 : TPEMATCH(tperrno=23-ATMI Error Message)
         원인 : 일치하지 않아서 서비스 이름을 알릴 수 없음
                이미 발생한 Event로 중복되어 Service 이름을 알릴 수 없을 경우
    -----
         현상 : TPEDIAGNOSTIC(tperrno=24-)
         원인 : 특정한 tperrno를 셋팅하여 체크 할 수 있는 경우
    -----
         현상 : TPEMIB(tperrno=25-)
         원인 :
    -----
         현상 : TPMAXVAL(tperrno=26-Maximum Error Message)
         원인 : Maximum Error Message
    -----
         현상 : tmshutdown: internal error: CMDTUX_CAT:766: must run on master node
         원인 : BBL이 죽음
         조치 : TP/M Admin 요청
    -----
         현상 : Indata 구성이 제대로 되었는데 TP_CALL한 뒤에 Server쪽에서 FMLLOOK를
                이용하여 FML Buffer에 전달된 Data를 출력한 결과 Data의 일부가 소실됨.
         원인 : GET, GETVAR를 PUT, PUTVAR로 잘못 사용한 경우에 발생
         조치 : GET, GETVAR를 PUT, PUTVAR로 수정
    -----
         현상 : Server를 죽였는데도 계속 되살아남.
         원인 : UBB File의 "RESTART=Y"로 설정된 경우에 발생
         조치 : UBB File의 "RESTART=N"로 설정
    -----
         현상 : makefile에서 error
                [SQNT1]/aros2/users/uatijik/aros/svc > make
                buildServer -o ra1s0160 -f ra1ssv1281.o                     \
                                        -f ra1ssv1303.o                     \
                                        -f /aros2/tuxedo/lib/macro.o        \
                                        -f /aros2/tuxedo/lib/librecv.a      \
                                        -f /aros2/tuxedo/lib/libreal.a      \
                                        -f /aros2/tuxedo/lib/libFA101Read.a \
                CMDTUX_CAT:520: unused arguments passed to buildServer
                *** Error code 1
                make: . Stop.
         원인 : -f /aros2/tuxedo/lib/libFA101Read.a \의 끝부분에 공백이 있어서 발생된 것임.
         조치 : 공백 삭제후 다시 컴파일함.
    -----
         현상 : makefile에서 error
                System default option values takem from: /aros1/oracle/proc/pmscfg.h
                Preprocessor error at line 235, column 1, file fa113read.pc:
                1
                (1) PCC-S-02018, found end-of -file while scanning comment
                (1) PCC-F-02102, Fatal error while doing C preprocessing
                *** Error code 1
                Make: . Stop.
         원인 : 주석 처리된 부분에서 "{"가 포함되어 발생된 error임.
         조치 : 주석 처리된 부분을 모두 지움.
    -----
         현상 : makefile에서 error
                buildserver -o atilji        \
                  -f common.o                \
                  -f f_c_errmsg.o            \
                  -f sid_dome_head.o         \
                  -f sid_report_sel.o        \
                  -r Oracle_XA               \
                  -s SID_DOME_HEAD           \
                  -s SID_REPORT_SEL          \
                  -v
                cc  -I$TUXDIR/include -o atilji BS-68b7.c  -L${TUXDIR}/lib common.o f_c_errmsg.l
                Undefined                       first referenced
                symbol                          in file
                ABS                             sid_dome_head.o
                ld: fatal: Symbol referencing errors. No output written to atilji
                NLS:4: Cannot open message catalog CMDTUX_CAT, set 1, num 524; check TUXDIR=/hok
         원인 : 각 문장에서 문법적인 문제는 없다. 각 부분에서 함수선언 및 기타 등등 ...
         조치 : 1.함수 "ABS"(절대값)를 대문자가 아닌 소문자로 바꾼다.
                2.makefile에서 lib link 순서를 바꾸어 본다.
                3.모든 *.o, *.c file을 지우고 새로 컴파일한다.
                4.그래도 안되면 해당 프로그램을 새로 작성한다.
                  (Vi Editor가 아닌 곳에서 작성된 Source는 프로그램내에 특수문자가 존재 가능)
    -----
         현상 : makefile에서 error
                /home/lgeds/ati/lji/source>make
                /rdb1/lgiora/bin/proc ireclen=132 oreclen=132 include=/home/tuxedo/include sqlcp
                Pro*C/C++: Release 2.1.3.0.0 - Production on Thu Aug 22 11:50:01 1996
                Copyright (c) Oracle Corporation 1979, 1994.  All rights reserved.
                System default option values taken from: /rdb1/lgiora/proc/pmscfg.h
                gcc  -D DEBUG -I/home/tuxedo/include -I/sqllib/public  -c sid_dome_item.c
                sid_dome_item.c:137: /home/lgeds/source/test/bin/lgi_2005.h: No such file or diy
                *** 오류 코드 1
                make: 치명적인 오류: 타겟 `sid_dome_item.o'를 위한 명령어가 실패
         원인 : Unix Server DiskSpace Full
         조치 : Unix Server DiskSpace 조정
    -----
         현상 : makefile에서 error
                /home/lgeds/ati/lji/source>make
                TUXDIR=/home/tuxedo \
                /rdb1/lgiora/bin/proc ireclen=132 oreclen=132 include=/home/lgeds/source/test/ip
                Pro*C/C++: Release 2.1.3.0.0 - Production on Wed Aug 28 10:30:02 1996
                Copyright (c) Oracle Corporation 1979, 1994.  All rights reserved.
                System default option values taken from: /rdb1/lgiora/proc/pmscfg.h
                Syntax error at line 0, column 0, file sid_delete.pc:
                (1) PCC-S-02201, Encountered the symbol "<eof>" when expecting one of the follo:
                    ; { } ( * & + - ~ ! ^ ++ -- ... break, case, continue,
                    default, do, for, goto, if, return, sizeof, switch, etc.
                The symbol "}" was substituted for "<eof>" to continue.
                (1) PCC-F-02102, Fatal error while doing C preprocessing
                *** 오류 코드 1
                make: 치명적인 오류: 타겟 `sid_delete.c'를 위한 명령어가 실패
         원인 : 프로그램 내의 "<eof>"가 잘못됨
    -----
         현상 : /home/lgeds/ati/lji/source>make
                TUXDIR=/home/tux61 \
                /rdb1/lgiora/bin/proc ireclen=132 oreclen=132 include=/home/lgeds/source/test/ip

                Pro*C/C++: Release 2.1.3.0.0 - Production on Mon Dec  2 15:37:44 1996

                Copyright (c) Oracle Corporation 1979, 1994.  All rights reserved.

                System default option values taken from: /rdb1/lgiora/proc/pmscfg.h


                Previous errors prevent continued compilation.
                Please correct reported errors and then recompile. (Code = 40701)

                *** 오류 코드 1
                make: 치명적인 오류: 타겟 `sid_credit_anal.c'를 위한 명령어가 실패
         원인 : 변수의 Pointer를 인수로 사용한 경우
         조치 : 변수명칭 앞에 "&"를 제거한다.
    -----
         현상 : 103827.kmic!ud.6225: 070798: TUXEDO Version 6.3 SunOS  5.5.1 Generic sun4u sparcSUNW,Ultra-1.
                103827.kmic!ud.6225: LIBTUX_CAT:271: ERROR: System lock semop failure, key = 311587 (errno = 28)
         원인 : Makefile에서 DB에 접근권한이 없거나 User ID/PASSWD을 주지 않은 경우
         조치 : DB에 접근할 수 있는 권한 또는 User ID/PASSWD을 준다.
    -----
         현상 : /usr/kmic_tux/kmicco/src/lji/back] make
                /usr/ssw/app/oracle/product/7.3.4/bin/proc ireclen=1024 oreclen=1024 select_errc

                Pro*C/C++: Release 2.2.4.0.0 - Production on Sat Jul 18 09:42:39 1998

                Copyright (c) Oracle Corporation 1979, 1996.  All rights reserved.

                System default option values taken from: /usr/ssw/app/oracle/product/7.3.4/prech

                Semantic error at line 76, column 14, file s_bdb050_u1.pc:
                   EXEC SQL EXECUTE
                .............1
                (1) PCC-S-02345, SQLCHECK=SEMANTICS must be given when embedded PL/SQL blocks ad

                *** 오류 코드 1
                make: 치명적인 오류: 타겟 `s_bdb050_u1.o'를 위한 명령어가 실패
         원인 :
    -----
         현상 : 150357.kmic!ud.7130: gtrid x0 x35b55049 x26: GP_CAT:1027: ERROR: Routing field for 's_bbs110_r1' null
                150357.kmic!ud.7130: gtrid x0 x35b55049 x26: LIBTUX_CAT:741: ERROR: Routing function failed
         원인 : Rounting field에 Null 값 존재
         조치 : Rounting field에 Null이 존재하지 않도록.
    -----
         현상 : /usr/kmic_tux/kmicco/src/srcco] make -f jcosrv07.mk
                TUXDIR=/usr/ssw/app/tuxedo \
                CFLAGS="-D DEBUG -I/usr/ssw/app/tuxedo/include -I/usr/kmic_tux/kmicd/include -I\
                /usr/ssw/app/tuxedo/bin/buildserver -r Oracle_XA \
                                     -s s_bdb040_t1,s_bdb040_u1,s_bdb060_t1,s_bdb061\
                                     -o JCOSRV07 \
                                     -f /usr/kmic_tux/kmicd/lib/common.o \
                                     -f /usr/kmic_tux/kmicco/lib/common_co.o \
                                     -f "s_bdb040_t1.o s_bdb040_u1.o s_bdb060_t1.o s"
                ld: warning: symbol `bdb01' has differing sizes:
                                 (file s_bdb040_t1.o value=0x120; file s_bdc010_u2.o value=0x11c);
                                   s_bdb040_t1.o definition taken
                cp JCOSRV07  /usr/kmic_tux/kmicco/src/apps/run/.
                \rm JCOSRV07
         원인 : Disk full.
         조치 : 불필요한 자료를 정리하고 Disk Space를 확보.
    -----
         현상 : LIBTUX_CAT:1528:Error:Invalid buffer passed to tpfree error = BEMAGIC - magic number invalid.
                ORA-28 : your session has been killed.와 함께 발생.
                Fchg() error -> LIBFML_CAT:3: ERROR: No space in fielded buffer !
         원인 : FML Buffer Size를 초과(64K이상)한 자료를 FML Buffer로 보냄.
         조치 : FML Buffer로 보낼자료가 64K가 되지 않도록.
    -----
         현상 : 172442.홍길동!?proc.-4038313: NLS:4: Cannot open message catalog GP_CAT,
                                                     set 1, num 1079; check TUXDIR=NULL, LANG=C
                172442.홍길동!?proc.-4038313: NLS:4: Cannot open message catalog LIBWSC_CAT,
                                                     set 1, num 1062; check TUXDIR=NULL, LANG=C
                172442.홍길동!?proc.-4038313: NLS:4: Cannot open message catalog LIBWSC_CAT,
                                                     set 1, num 1027; check TUXDIR=NULL, LANG=C
                172442.홍길동!?proc.-4038313: NLS:4: Cannot open message catalog LIBWSC_CAT,
                                                     set 1, num 1020; check TUXDIR=NULL, LANG=C
                172442.홍길동!?proc.-4038313: tpinit failed, NLS:4: : catalog LIBWSC_CAT,
                                                     set 1, num 1139; check TUXDIR=NULL, LANG=C
         원인 : Tuxedo directory가 설정되어 있지 않음.
         조치 : 환경 파일에 Tuxedo directory(TUXDIR)를 설정한다.
    -----
         현상 : kumca3:tuxadm /tuxedo/sdk/udataobj> buildtms -r Oracle_XA -o TMS_ORACLE3
                CMDTUX_CAT:522: ERROR: buildserver cannot open the temporary output file, BS-948 e.c.
                CMDTUX_CAT:530: ERROR: Cannot execute $TUXDIR/bin/buildserver -r Oracle_XA -o TMS_ORACLE3 -s TMS -f $TUXDIR/lib/TMS.o
         원인 : tuxedo/tuxedo 계정이 아닌 것을 사용하여기 때문.
         조치 : tuxedo/tuxedo 계정을 사용.
    -----
         현상 : kumca3:/tuxedo/sdk/udataobj] buildtms -r Oracle_XA -o TMS_ORACLE8
                ld: 0706-005 Cannot find or open file: /lib/crt0.o
                             ld:open(): A file or directory in the path name does not exist.
                 CMDTUX_CAT:1832: ERROR: can't execute cc  -I$TUXDIR/include -o TMS_ORACLE8 BS-9ae2.c  -L${TUXDIR}/lib /tuxedo/sdk/lib/TMS.o  -ltux -lbuft -ltux2  -L/oracle/lib/ -lclntsh -lfml -lfml32 -lgp
                 CMDTUX_CAT:530: ERROR: Cannot execute $TUXDIR/bin/buildserver -r Oracle_XA -o TMS_ORACLE8 -s TMS -f $TUXDIR/lib/TMS.o
         원인 : /lib directory가 존재하지 않음.
         조치 : /lib directory를 생성하고 모듈을 복사함.
    -----
         현상 : CMDTUX_CAT:1685: ERROR: Application initialization failure
         원인 : tmboot할 때 TMS에 오류가 발생한 경우.
                OPENINFO의 DB에 접속하는 계정이 존재하지 않은 경우.
         조치 : TMS를 확인하고 재생성해야 됨.
                DB에 접속하는 계정을 확인하여 OPENINFO의 DB 접속계정을 재설정 해야됨.
    -----
         현상 : 113119.kumca1!WSL.99410: WSNAT_CAT:1175: WARN: Disconnecting listener connection to workstation, request timed out
         원인 : Service를 호출한 뒤 Client를 강제적으로 종료시켜 발생.
         조치 :
    -----
         현상 : 164804.sfc!JSL.11082.1.0: 11-14-2001: Tuxedo Version 7.1
                164804.sfc!JSL.11082.1.0: LIBTUX_CAT:262: INFO: Standard main starting
                164804.sfc!JSL.11082.1.0: INFO: JOLT Listener version-BEA Jolt 1.2.1 [03/31/2000]
                164804.sfc!JSL.11082.1.0: JOLT_CAT:1542: "ERROR: Unlicensed Jolt server"
                164804.sfc!JSL.11082.1.0: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
         원인 : Jolt liensence가 Tuxedo Version 7.1에 맞지 않은 낮은 버젼임.
         조치 : 상위 Jolt liensence로 대치.
    -----
         현상 : 220558.SMP001-5!BBL.9436: LIBTUX_CAT:220: WARN: BB lock appears stuck: held by pid=9464
                220607.SMP001-5!BRIDGE.9457: LIBTUX_CAT:746: ERROR: Cannot lock Bulletin Board
                152520.SMP001-5!BRIDGE.13140: WARN: Could not lock USEM
                152520.SMP001-5!BRIDGE.13140: LIBTUX_CAT:746: ERROR: Cannot lock Bulletin Board
                152520.SMP001-5!BRIDGE.13140: CMDTUX_CAT:1418: ERROR: Cannot retrieve BBL server table entries
         원인 : 서비스절에 timeout을 설정한 경우, CPU가 과도하게 일을 할 때 발생
         조치 : UBB file의 SPINCOUNT를 "CPU 갯수 * 50"로 조정.
    -----
         현상 : 212958.SMP001-5!SVAJ07.9737: gtrid x10001 x3bde0f88 x17bc4f: LIBTUX_CAT:481: ERROR: Service xa_start returned XAER_RMERR
         원인 : 트렌젝션 테이블의 엔트리 용량이 넘첫을 경우 발생.
         조치 : Oracle의 환경설정파일(init.ora)에서 트렌젝션 테이블의 엔트리 용량을 확인하고 설정값을 조정한다.
    -----
         현상 :         Server Id = 0 Group Id = HUB1 Machine = HUB1:
                CMDTUX_CAT:1668: WARN: Cannot shutdown BBL on HUB1. Clients and/or servers may be running
                CMDTUX_CAT:949: WARN: Shutdown failed

                235754.sfc!BBL.9636.1.0: LIBTUX_CAT:1233: ERROR: Unable to shutdown, clients/servers still attached
         원인 : tmadmin으로 들어가 있을 때 "tmshutdown -y"를 한 경우 발생.
         조치 : tmadmin을 빠져 나온 뒤 "tmshutdown -y"를 실행한다.
    -----
         현상 : 115923.jnuhp!BBL.6352.1.0: 11-23-2001: Tuxedo Version 7.1
                115923.jnuhp!BBL.6352.1.0: LIBTUX_CAT:356: ERROR: Reached UNIX limit on semaphore ids
                115923.jnuhp!BBL.6352.1.0: LIBTUX_CAT:248: ERROR: System init function failed, Uunixerr = : shmdt: Invalid argument
                115923.jnuhp!tmboot.6351.1.-2: 11-23-2001: Tuxedo Version 7.1
                115923.jnuhp!tmboot.6351.1.-2: CMDTUX_CAT:825: ERROR: Process BBL at HP1 failed with /T tperrno (TPEOS - operating system error)
                115923.jnuhp!tmboot.6351.1.-2: WARN: No BBL available on site HP1. Will not attempt to boot server processes on that site.
         원인 : 시스템 커널 파라미터 중 Semaphore에 할당된 값이 적은 경우에 발생.
         조치 : tmboot -cy를 이용하여 현재 Tuxedo 에서 필요한 자원을 확인하고 커널 파라미터를 다시 설정한다.
    -----
         현상 : INFO: BEA Engine, Version 7.1
                INFO: Serial #: 650522264137-579166945932, Expiration 2001-12-31, Maxusers 100
                INFO: Licensed to: ATSOFT

                Booting server processes ...

                exec pij01sv -A -p 1,30:2,10 -o /SRC/HIMED/testmed/OUT/pij01.out -e /SRC/HIMED
                     /testmed/ERR/pij01.err -- -X  :
                CMDTUX_CAT:819: INFO: Process id=1461 Assume started (pipe).
                1 process started.
         원인 : LD_LIBRARY_PATH가 잘못 설정됨.
         조치 : LD_LIBRARY_PATH를 확인하고 다시 설정한다.
    -----
         현상 : [ccbs1:/users/vadmin/oss/rating/src/jhlee] tm3
                tmshutdown: CMDTUX_CAT:1113: ERROR: Must be the administrator to execute this command
                GP_CAT:208: ERROR: /home/tuxedo/env/log/ULOG.112701 file open error
         원인 : Tuxedo admin 계정이 아닌 계정으로 Server를 내리거나 올릴 경우에 발생
         조치 : Unix admin에게 사용자 User-ID의 Group을 Tuxedo admin 계정으로 설정하도록 요청한다.
    -----
         현상 : 144122.uclick!WSH.29412.1.0: WSNAT_CAT:1366: ERROR: Pre 7.1 client not allowed. Use -t option on WSL
         원인 : Workstation address와 port(WSNADDR)가 잘못 지정된 경우 발생.
         조치 : UBB config 파일의 Workstation address와 port를 Client 환경화일(tux.env)의 WSNADDR을 확인하여 동일하게 기술한다.
    -----
         현상 : 서비스 정상종료(TPRETURN( "Insert Success!", 0);) 후에 DB에 commit 안됨.
                참고) 서버 재기동시(tmboot -s OS0011) DB에 commit 됨.
         원인 : ud testing시 XA-mode인 경우 -t option이 설정되어 있지 않아 발생.
         조치 : ud testing시 XA-mode인 경우 -t option를 설정한다.(ud -t 30 < data01)
    -----
         현상 : exec WSL -A -- -n file://150.2.23.218:5660 -w WSH -m 20 -M 30 -x 5  : CMDTUX_CAT:1685: ERROR: Application initialization failure

                110904.ccbs1!WSH.18489: LIBTUX_CAT:1122: ERROR: No space in Bulletin Board
                110904.ccbs1!WSH.18489: LIBTUX_CAT:582: ERROR: Unable to register, registry table full
                110904.ccbs1!WSH.18489: WSNAT_CAT:1088: ERROR: tpinit() failed, tperrno = 6
                110904.ccbs1!WSL.18469: WSNAT_CAT:1079: ERROR: Error starting minimum number of handlers
                110904.ccbs1!WSL.18469: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
         원인 : UBB file의 MAXACCESSERS의 지정값을 초과할 경우 발생.
         조치 : MAXACCESSERS()의 값을 재조정(실제값보다 5~10% 여분을 설정하기 바람).
                MAXACCESSERS = Machine당 AP Server수 + Machine당 TMS수 + Machine당 WSL수 + Machine당 WSH수
                             + Machine당 MAXCLIENTS수+ Native Client수 + (Machine당 tmadmin Process개수-1)
    -----
         현상 : ULOG에 있는 TRACE가 걸려 있는 경우
         조치 : client의 env file에서 TRACE=on을 제거한 다음 tmadmin에서 chtr -m machine off를 실행한다.
    -----
         현상 : 143613.MIS001-00!aeaa04.13586: LIBTUX_CAT:1285: WARN: tpreturn message send blocked, will try file transfer
         원인 : Kernel parameters 중 message queue size가 적어서 발생.
         조치 : Kernel parameters 중 message queue size를 더 큰 값으로 조정.
    -----
         현상 : 150017.magpie2!SER1CC002.21443: gtrid x70007 x3ba11e1d x9b8f: LIBTUX_CAT:489: ERROR: Performed tpreturn() with outstanding replies
         원인 : 1.호출된 서비스에서 메시지를 리턴 했으나 호출한 서비스가 종료(비정상적인 종료) 됐을 경우 발생
         조치 : 1.Service code를 확인.
                2.호출하는 서비스에서 tpreturn전에 호출한 서비스에 대해서 모두 tpgetrply를 했는지 확인
                3.같은 ipckey를 가지는 어플리케이션이 있는지 확인
    -----
         현상 : 150016.magpie2!WSH.22721: WSNAT_CAT:1287: WARN: Forced shutdown of client; user name ''; client name ''; workstation address '//10.11.118.102:2395'
         원인 : 1.WSH의 Session 설정 시간을 초과한 경우에 발생.
                2.WSL과 Session을 맺을때 User-ID, Password가 다른 경우에 발생
         조치 : 1.WSH의 Session 설정 시간을 늘이든지, UBB file의 WSL에 정의된 T option을 없앤다.
                2.TPINIT 하는 부분의 User-ID, Password를 확인하여 설정한다.
    -----
         현상 : 150909.magpie2!BRIDGE.20266: CMDTUX_CAT:4488: INFO: Connecting to crane1 at //crane1:1111
                150909.magpie2!BRIDGE.20266: CMDTUX_CAT:1373: ERROR: Abnormal disconnect from crane1
         원인 : Tuxedo master와 crane1이 Networking 문제로 비정상적으로 끊어짐.
         조치 : Network를 점검 해야한다(자동으로 Tuxedo가 재시동 및 재접속을 시도한다).
    -----
         현상 : 115549.MIS001-00!tmboot.24329: 12122001: TUXEDO Version 6.4   4.0 3.0 3435 i486(TM)-MCA .
                115549.MIS001-00!tmboot.24329: CMDTUX_CAT:4291: ERROR: SECURITY VIOLATION ! Remote site may be compromised.
                115554.MIS001-00!tmboot.24329: CMDTUX_CAT:826: ERROR: Process sale/srd101 at mis2 failed with code -9
         원인 : tlisten password를 변경한 경우에 발생
         조치 : tlisten password를 확인하여 원상태로 되돌린다.
    -----
         현상 : 150400.MIS001-00!hbatch.14618: INFO: BATCH Server's tpsvrdone() function succeeded !
                NSCOIN101.24556: ERROR: msgrcv err(LIBTUX_CAT:666: ERROR: Message operation failed because the queue was removed): errno=36,qid=6176,buf=134732224,bytes=1380,type=0,flag=0
                NSCOIN101.24556: ERROR: msgrcv err(LIBTUX_CAT:669: ERROR: Message operation failed because of the invalid message queue identifier): errno=22,qid=6176,buf=134732224, bytes=4452,type=-1073741824,flag=0
         원인 : 서비스 호출 후 프로그램을 강제적으로 종료한 경우 메세지 큐에 존재하는 메세지 처리를 할 수 없을 때 발생.
                이것은 IPC 식별자, 예를 들면, 공유 메모리 식별자가 ipcrm 명령에 의해 제거되었음을 의미한다.
         조치 : 메세지 큐를 확인한다.
    -----
         현상 : 124710.MIS002-10!BBL.21722: 12142001: TUXEDO Version 6.4   4.0 3.0 3435 i486(TM)-MCA .
                124710.MIS002-10!BBL.21722: gtrid x0 x3bebfec3 x503ec: LIBTUX_CAT:328: ERROR: No space in Bulletin Board for Transaction Table
                124710.MIS002-10!BBL.21722: gtrid x0 x3bebfec3 x503ec: LIBTUX_CAT:397: ERROR: Cannot allocate entry on GTT
                124710.MIS002-10!BBL.21722: LIBTUX_CAT:248: ERROR: System init function failed, Uunixerr =
                124710.MIS002-10!BBL.21722: CMDTUX_CAT:26: INFO: The BBL is exiting system
         원인 : 1.MAXGTT 값이 TLOGSIZE 보다 작아서 발생
                2.TLOGSIZE가 작아서 발생
         조치 : 1.MAXGTT과 TLOGSIZE을 동일한 값으로 설정
                2.TLOGSIZE를 더 크게 설정.
    -----
         현상 : 102702.uclick!GWTDOMAIN.1373.1.0: LIBGWT_CAT:1303: ERROR: Network error occurred during connection establishment
                102702.uclick!GWTDOMAIN.1373.1.0: LIBGWT_CAT:1512: ERROR: Unable to connect to remote domain WLSDOM
                102702.uclick!GWTDOMAIN.1373.1.0: LIBGWT_CAT:1037: ERROR: Unrecoverable error occurred on send of data - sending failure reply locally
         원인 : (Tuxedo, Jolt) 라이센스 사용기간을 초과함.
         조치 : (Tuxedo, Jolt) 라이센스 확인
    -----
         현상 : 133636.JILEE!?proc.380: LIBWSC_CAT:1064: ERROR: Unable to establish WSH connection //211.193.197.22:65433
                133636.JILEE!?proc.380: LIBWSC_CAT:1055: ERROR: Unable to establish WSL connection
                133636.JILEE!?proc.380: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH
                133636.JILEE!?proc.380: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level
         원인 : WSH에 대한 Port가 Open되어 있지 않음.
         조치 : Network admin에게 해당 port를 open를 요청.
    -----
         현상 : 102439.COMMONSERVER!?proc.3176: 122101: TUXEDO Version 6.4 32-bit Windows.
                102439.COMMONSERVER!?proc.3176: GP_CAT:1077: ERROR: Unable to open environment file c:\Program Files\bea\tux64\env\tux.env for reading
         원인 : 해당 Directory에 environment file이 존재하지 않아 발생.
         조치 : Environment file이 존재하는 Directory를 확인 해당 Directory를 재설정한다.
    -----
         현상 : Booting server processes ...

                exec JSL -A -- -n //150.2.49.106:5660 -T 300 -d /dev/tcp -m 1 -M 2 -x 5  :
                        NFS server (pid475@/net) not responding still trying
         원인 : NFS Server에 문제가 발생함.
         조치 : System Admin에게 NFS Server에 대한 설정 확인을 요청.
    -----
         현상 : uclick:/tuxedo/tux71/udataobj]buildtms -v -r Oracle_XA -o TMS_ORA817
                $TUXDIR/bin/buildserver -r Oracle_XA -o TMS_ORA817 -S -s TMS -s..TMS:TMS -f $TUXDIR/lib/TMS.o -v
                CMDTUX_CAT:4560: ERROR: Unable to determine license levelCMDTUX_CAT:530: ERROR:
                Cannot execute $TUXDIR/bin/buildserver -r Oracle_XA -o TMS_ORA817 -S -s TMS -s..
                TMS:TMS -f $TUXDIR/lib/TMS.o -v
         원인 : Tuxedo license 유효기간이 지남.
         조치 :  ~/udataobj/lic.txt file를 확인.
    -----
         현상 : Fget() error -> LIBFML_CAT:1: ERROR: Fielded buffer not aligned !
         원인 : Dynamic SQL문의 문장이 메모리 설정 사이즈보다 길어서 다른 메모리를 침범하여 발생
         조치 : Dynamic SQL문의 문장이 메모리 설정 사이즈를 맞게 조정한다.
    -----
         현상 : 142326.ccbs1!TMS_ORACLE.19474: 010302: TUXEDO Version 6.5-(64-bit)
                142326.ccbs1!TMS_ORACLE.19474: LIBTUX_CAT:262: INFO: Standard main starting
                142327.ccbs1!TMS_ORACLE.19474: CMDTUX_CAT:409: ERROR: xa_recover() returned -3 for group GRP_SK01
                142327.ccbs1!TMS_ORACLE.19474: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
         원인 : UBB file에서 GRP_SK01의 CLOPT에서 설정한 DB 접근 계정이 잘못됨(존재하지 않거나 권한이 없음).
         조치 : CLOPT에서 설정한 DB 접근 계정을 설정하고 권한을 DBA에게 요청.
    -----
         현상 : [tuxedo@ccbs1:/home/tuxedo/bin] buildtms -v -r Oracle_XA -o TMS_ORACLE
                $TUXDIR/bin/buildserver -r Oracle_XA -o TMS_ORACLE -s TMS -f $TUXDIR/lib/TMS.o -v
                 /usr/bin/cc  -I$TUXDIR/include -o TMS_ORACLE BS-6dca.c  -L${TUXDIR}/lib
                 /home/tuxedo/lib/TMS.o  -ltux -lbuft -ltux2 -L/oracle/lib64/ -lclntsh
                  `cat /oracle/lib64/sysliblist` -lm -lpthread -lpthread -lfml -lfml32 -lgp -lnsl
                 /usr/ccs/bin/ld: (Warning) At least one PA 2.0 object file (BS-6dca.o) was detected.
                                            The linked output may not run on a PA 1.x system.
                 /usr/ccs/bin/ld: /home/tuxedo/lib/TMS.o: Mismatched ABI. 64-bit PA object file
                                                          found in 32-bit link.
                 CMDTUX_CAT:1832: ERROR: can't execute /usr/bin/cc  -I$TUXDIR/include -o TMS_ORACLE
                            BS-6dca.c  -L${TUXDIR}/lib /home/tuxedo/lib/TMS.o  -ltux -lbuft -ltux2
                            -L/oracle/lib64/ -lclntsh   `cat /oracle/lib64/sysliblist`
                            -lm -lpthread -lpthread -lfml -lfml32 -lgp -lnsl
                 CMDTUX_CAT:530: ERROR: Cannot execute $TUXDIR/bin/buildserver -r Oracle_XA -o
                            TMS_ORACLE -s TMS -f $TUXDIR/lib/TMS.o -v
         원인 : 64 Bit에서 TMS 생성시 CFLAG를 64Bit로 설정하지 않음.
         조치 : CFLAGS="+DA2.0W +DS2.0" buildtms -v -r Oracle_XA -o TMS_ORACLE
    -----
         현상 : 103846.magpie2!BRIDGE.26222: CMDTUX_CAT:1380: ERROR: Message queue blocking prevented delivery, Qaddr = 2243
         원인 : BRIDGE process가 Network을 통해서 UNIX Message queue block의 값을 가져오지 못할 경우 발생
         조치 : Machine의 Message queue 관련 Parameter를 확인하여 더 크게 조정(MSGMNB, MSGSEG, MSGSSZ, MSGMAX).
    -----
         현상 : WSH.3131: GP_CAT:1067: ERROR: Routing field value for 'IDD10388S' not valid
                WSH.3131: LIBTUX_CAT:741: ERROR: Routing function failed
                WSH.3131: WSNAT_CAT:1042: ERROR: tpcall() call failed, tperrno = 12
         원인 : 1.Routing field 값이 존재하지 않은 경우에 발생
                2.Routing field 값이 잘못 지정된 경우에 발생
         조치 : 1.Routing field 값이 존재하는지 출력하여 확인한다.
                2.Routing field 값을 출력하여 확인한다.
    -----
         현상 : 070300.SKEBS!TMS_ORACLE8.256700: gtrid x0 x3c3b00c2 x110a8a: CMDTUX_CAT:443: ERROR: tms_timeout group TCMSGRP1 xa_abort returned XAER_RMERR
         원인 : TMS에서 설정한 Database의 Session time을 초과하여 발생
         조치 : Session time 늘려 주던지 아니면 해당 서비스를 Tunning을 해야 함.
    -----
         현상 : 172903.SKEBS!si_sr03.259998: gtrid x0 x3c3b00c2 x1b58a9: LIBTUX_CAT:481:ERROR: Service xa_start returned -9
                061741.firesv2!tf_avl_nx3.24795: gtrid x0 x3c8653da x847: LIBTUX_CAT:1384: ERROR: xa_start flags 0 returned -9
         원인 : 1.tpcommit or tpabort를 하지 않고 다시 tpbegin을 했을 경우
                2.DB User 변경 후 xaview.sql를 실행하지 않았을 경우
                3.Grant를 주지 않았을 경우
                4.Oracle 8.x 부터 XA Connection 내에서 Local transaction이 가능하도록 허용하면서 나타나는 현상
                  Timeout과 같은 상황에 의해 XA Session이 종료될 수 있다. 이때에 예외처리를 정상적으로 하지 않은 상태에서
                  SQL을 사용하면, 이미 XA Session이 종료된 상태에서 xa_start()를 호출하지 않고 DB를 사용하려고 한 상태이기
                  때문에 이 Transaction은 Local transaction으로 간주하게 된다.
                  이 Local transaction은 반드시 EXEC SQL COMMIT/ROLLBACK을 호출하여 종료하여야 하지만, XA 프로그램
                  에서는 이러한 것을 사용하지 않기 때문에 이 Local transaction은 종료되지 않고 남아 있게 된다. 이러한 상태에서
                  Transactional service 호출에 의해 xa_start()가 호출되면 XAER_OUTSIDE 에러를 만나게 되는 것이다.
                  이러한 에러가 발생하면 이 Local transaction을 종료하지 않는 이상 계속해서 동일한 에러를 만나게 된다. 서버
                  프로세스를 종료하고 다시 부팅해야만 한다.
         조치 : 1.서비스 호출 뒤 정상적으로 처리된 경우 tpcommit, 비정상적으로 처리된 경우는 tpabort를 추가한다.
                2.변경된 DB User에 대한 xaview.sql를 실행하여 XA View table를 생성한다.
                3.tuxedo admin user에 대한 권한을 설정한다.
                4.이 문제는 Oracle 7.x에서는 발생하지 않던 문제이다. Oracle 8.x 부터 Global Tx와 Local Tx가 한 프로세스에서
                  가능하게 하면서 발생하는 문제이다.
                  이 문제를 해결하려면 모든 SQL에서 에러 상태를 정확하게 점검하여 적절한 처리를 하여야 한다. OPENINFO에서
                  NoLocal=true를 설정하는 것도 일부 도움이 된다.
    -----
         현상 : 172903.SKEBS!si_sr03.259998: gtrid x0 x3c3b00c2 x1b58a9: LIBTUX_CAT:481:ERROR: Service xa_start returned -6
         원인 :
         조치 : 해당 서버를 재 부팅한다.
    -----
         현상 : 182101.SKEBS!si_sr03.338734: LIBTUX_CAT:271: ERROR: System lock semop failure, key = 74400 (errno = 22)
         원인 : IPC 자원을 사용하고 있는데 강제적으로 BBL의 해제를 시도하다가 IPC 자원 중 semop가 lock 걸림
         조치 : ipcrm으로 Tuxedo와 관련된 IPC 자원을 Clear 시킴.
    -----
         현상 : 160341.jnuhp3!TMS_ORA734.19922: gtrid x0 x3c47c666 x28: CMDTUX_CAT:423: WARN: One-phase commit - xa_commit returned XAER_NOTA
         원인 : XA library를 사용하는데 Oracle이 dedicator server로 설치된 경우 발생
         조치 : XA library를 사용할려면 Oracle을 MTS mode로 설치되어야 한다.
    -----
         현상 : 181238.MIS001-00!DBBL.1019: CMDTUX_CAT:1392: ERROR: BBL broadcast reply timeout, machine= mis1 opcode= 0xc000003
                181238.MIS001-00!DBBL.1019: CMDTUX_CAT:1394: ERROR: BBL partitioned, machine= mis1
         원인 : Network문제 또는 Network이 혼잡하거나 CPU의 과부하인 경우 발생(SAN 환경인지 확인)
                Oracle dispatcher가 비정상적으로 Shutdown 된 경우에 발생(이미 부여된 Oracle의 Session-ID를 사용할 수 없음)
         조치 : 1.DBBLWAIT parameter를 좀 더 크게 잡아준다.
                2.마스터(Master) 노드 장애 시
                  - 마스터(Master) 머신의 기능을 백업(BackUp) 머신으로 이전.
                  - 복구 순서
                    ① 백업(BackUp) 머신을 Acting 마스터로 전환한다.
                       ('tmadmin'의 'master' 명령어 사용)
                    ② 장애가 난 마스터에 Tuxedo 관련 프로세스가 남아 있으면 메모리에서 다운 로드한다
                    ③ 장애가 복구된 후 마스터에 Tuxedo 관련 프로세스들을 띄운다.
                       (Acting 마스터에서 'tmboot' 명령의 -B와 -L 옵션을 이용한다.)
                    ④ 원래의 마스터 머신으로 마스터를 전환한다.
                       (원래의 마스터(Master) 머신에서 'tmadmin'의 'master' 명령어를 사용한다.)
                3.TMS group를 재기동하여 Oracle의 Session-ID를 신규로 설정한다.
                  Oracle dispatcher에 대한 Patch 적용(Oracle vender에서)
    -----
         현상 : 111939.MIS001-00!DBBL.1565: CMDTUX_CAT:1395: WARN: Slow BBL response, machine= mis3
                111949.MIS001-00!DBBL.1565: CMDTUX_CAT:1394: ERROR: BBL partitioned, machine= mis3
         원인 : Network문제 또는 Network이 혼잡하거나 CPU의 과부하인 경우 발생(SAN 환경인지 확인)
                (RESOURCES section에 지정된 (SANITYCAN * SCANUNIT)초 동안에 BBL은 반복적으로 Machine의 온전성을 Check하여 DBBL에게 OK Message를 보낸다.
                만약, Message가 (BBLQUERY * SCANUNIT)초 이전에 Machine으로부터 Message가 도착하지 않으면 DBBL은 경고 OK Message를 서버의 동작상태를 ULOG에 출력한다.
                그리고 나서, Network를 재확인 한다. 그래도 실패하면 DBBL은 Machine를 Partition할 것을 고려한다.)
         조치 : 이 메시지는 Network가 혼잡하거나 Machine의 과부하 된 것을 가르키며, Machine이 Partition될어질 위험이 있으며 다음과 같은 사항을 점검해야 한다.
                  - Network이 정상적으로 운영되는 Network의 상태를 Check해야 한다.
                  - Client와 Tuxedo 시스템간 Network의 과부하를 Check해야 한다.
                  - 두 Machine 사이의 Networking 문제 및 Network 응답이 느리게된 원인을 Check해야 한다.
                  - 작동 중 BBL의 수행을 방해하는 Machine의 CPU 과부하를 Check해야 한다.
                  - DBBL의 Message queue 수행을 방해하는 Master machine의 CPU 과부하를 Check해야 한다.
                  - 만약, BBLQUERY parameter가 SANITYCAN parameter 보다 크다면 BBLQUERY parameter 값을 조정해야 한다.(10여 초 이상의 차이는 대부분의 환경 하에서 유사한 경고를 예방할 수 있다.)

                1.마스터(Master) 노드 장애 시
                  - 마스터(Master) 머신의 기능을 백업(BackUp) 머신으로 이전.
                  - 복구 순서
                    ① 백업(BackUp) 머신을 Acting 마스터로 전환한다.
                       ('tmadmin'의 'master' 명령어 사용)
                    ② 장애가 난 마스터에 Tuxedo 관련 프로세스가 남아 있으면 메모리에서 다운 로드한다
                    ③ 장애가 복구된 후 마스터에 Tuxedo 관련 프로세스들을 띄운다.
                       (Acting 마스터에서 'tmboot' 명령의 -B와 -L 옵션을 이용한다.)
                    ④ 원래의 마스터 머신으로 마스터를 전환한다.
                       (원래의 마스터(Master) 머신에서 'tmadmin'의 'master' 명령어를 사용한다.)
                2.Slave Node 장애시
                  - 복구 순서
                    ① 장애가 발생한 Slave 머신에 Tuxedo 프로세스가 남아 있으면 메모리에서 다운 로드한다
                    ② 장애가 발생한 Slave 머신의 정보를 지운다.
                       (마스터 머신에서 'tmadmin'의 'pclean' 명령어 사용)
                    ③ 장애가 복구된 후 해당 머신의 Tuxedo 프로세스를 띄운다.
                       (-마스터 머신에서 'tmboot' 명령의 -B와 -L 옵션을 이용한다.)
    -----
         현상 : 112019.hp1!?proc.29139.2.0: 01-25-2002: Tuxedo Version 7.1
                112019.hp1!?proc.29139.2.0: GP_CAT:1356: ERROR: pifreg: can not open registry database
                112019.hp1!?proc.29139.2.0: GP_CAT:1356: ERROR: pifreg: can not open registry database
                112019.hp1!?proc.29139.2.0: LIBWSC_CAT:2011: WARN: Unable to invoke audit postop on security failure
         원인 : Tuxedo System/T는 6.5, Workstation은 7.1를 사용한 경우에 발생
         조치 : Workstation 7.1만 Install하지 말고, Tuxedo System/T도 7.1을 같이 설치할 것.
    -----
         현상 : 033108.SMP001-4!SVPCS1.27925: LIBTUX_CAT:466: ERROR: tpopen TPERMERR xa_open returned XAER_RMERR
                033108.SMP001-4!SVPCS1.27925: LIBTUX_CAT:1353: ERROR: tpopen failed - TPERMERR - resource manager error
         원인 : 1.RM(Resource manager)의 option이 잘못 설정되어 TMS가 잘못 생성된 경우에 발생.
                2.OPS 환경에서 MST가 아닌 dedicator server로 구성된 것에 2PC를 할 경우에 발생.
                3.DB의 XA-library에 문제가 있을 경우에 발생
         조치 : 1.RM(Resource manager)의 option을 확인한 다음 다시 설정하고 TMS를 재생성
                2.OPS 환경에서 MST로 init.ora 화일을 변경.
                3.DB Vender에 기술지원 요청.
    -----
         현상 : 180541.jnuhp3!WSH.1816: gtrid x10001 x3c52eeca x1debe4: WSNAT_CAT:1042: ERROR: tpcall() call failed, tperrno = 6
         원인 : 1.Service가 존재하는 Server가 내려간 경우.
                2.Service가 존재하지 않은 경우.
         조치 : 1.내려간 Server를 tmboot 명령으로 Server를 기동시킨다.
                2.Service명이 정확한가 다시 확인한다.
    -----
         현상 : 180538.jnuhp3!WSH.1816: gtrid x10001 x3c52eeca x1debe3: LIBTUX_CAT:743: ERROR: No service 'TMS' in group 'MIS3GRP'
                180538.jnuhp3!WSH.1816: gtrid x10001 x3c52eeca x1debe3: LIBTUX_CAT:1309: ERROR:tpcommit failed to send message to TMS server1
         원인 : MIS3GRP이 Non-XA mode Group인데 tpcommit()을 할 경우에 발생.
         조치 : 1.Tuxedo ubbconfig file의 MIS3GRP을 XA-mode로 지정한다.
                2.Non-XA mode로 처리할 경우 tpcommit() 함수를 사용하지 않고, SQL 문장으로 해결한다.
    -----
         현상 : BBL.14131: NLS:4: Cannot open message catalog LIBTUX_CAT, set 1, num 296; check TUXDIR=/tuxedo65, LANG=ko
                093510.hub2!tmadmin.28992: NLS:4: Cannot open message catalog LIBTUX_CAT, set 1, num 334; check TUXDIR=/EAI/bea/wle, LANG=ko_KR.IBM-eucKR
         원인 : LANG가 잘못 설정되어 있음.
         조치 : 1.환경 파일에 LANG를 C로 설정(export LANG=C)한다.
                2.환경 파일에 LANG를 ko_KR로 설정(export LANG=ko_KR)한다.IBM AIX
    -----
         현상 : BBL.14131: NLS:4: Cannot open message catalog LIBTUX_CAT, set 1, num 296; check TUXDIR=/tuxedo65, LANG=C
         원인 : Buffer를 할당 받은 후 tpreturn하기 전에 할당 받은 Buffer를 해제하지 않아서 발생.
         조치 : tpreturn하기 전에 할당 받은 Buffer는 받드시 해제한다.
    -----
         현상 : WSL.14254: LIBTUX_CAT:262: INFO: Standard main starting
                WSL.14254: WSNAT_CAT:1008: ERROR: Could not establish listening address on network //211.236.162.220:3550
                WSL.14254: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
         원인 : 1.WSL 떠 있지 않은 경우.
                2.IP address가 잘못 지정 되어 있던지, 아니면 port가 방화벽에 열려 있지 않는 port일 경우에 발생.
                3.Remote domain에서 //211.236.162.220:3550 를 잡고 있는 경우에 발생
         조치 : 1.Tuxedo ubbconfig file의 WSL에 지정된 IP address과 port가 Client tuxedo env file의 WSNADDR에 설정된
                  IP address과 port가 동일하지 확인한다.
                2.IP address를 확인 및 port를 방화벽에서 열어 준다.
                3.현재 네트워크 상태를 확인하고(netstat | grep 3550), 상태가 "LISTEN"인 경우 Remote domain(예를들면, WebLogic)를 Restarting한다.
    -----
         현상 : 092250.pigeon2!JSH.20924: LIBTUX_CAT:582: ERROR: Unable to register, registry table full
         원인 : BBL의 registry table full.(MAXACCESSERS의 parameter 값을 초과하는 경우가 발생)
         조치 : MAXACCESSERS parameter를 5~10% 증가시킴.
    -----
         현상 : WSL.26782: WSNAT_CAT:1174: WARN: Disconnecting listener connection to workstation, connection timed out
                WSH.26786: WSNAT_CAT:1055: ERROR: Connection to unassigned WSH rejected
         원인 : Tuxedo  ubbconfig file에서 Machines section에 정의되어 있는 WSL의 CLOPT에 정의되어 있는 -T Option 값에 의해 Client가 Tuxedo System/T와 접속한 후 지정된 시간(단위:분) 동안 사용하지 않으면 강제적으로 System/T가 연결을 끊어버린 경우에 발생.
         조치 : Tuxedo  ubbconfig file에서 -T Option 값을 더 크게 주던지 아니면 -T Option을 제거한다.
    -----
         현상 : WSL.26782: GP_CAT:1210: ERROR: Memory allocation error: BEREALLOC - realloc failed
         원인 : Memory 부족으로 인하여 메모리할당을 받지 못함.
         조치 : Physical memory를 증설.
    -----
         현상 : restartsrv.10144: server gs1_cont/18051: CMDTUX_CAT:579: ERROR: Cannot restart a server - unknown process creation error: -9
                restartsrv.10144: server gs1_cont/18051: CMDTUX_CAT:587: INFO: Cannot restart server, scheduling for cleanup
         원인 : 시스템 오류이다.
         조치 : Unix error를 참조하여 적절한 처리를 취한다.
    -----
         현상 : JSH.29044: LIBTUX_CAT:1577: ERROR: Service IAD60400S not available in group gm1_cont
                JSH.29044: JOLT_CAT:1043: ERROR: tpacall() call failed, tperrno = 6
         원인 : 라우팅 되어 찾아간 그룹에 서비스가 존재하지 않을 경우에 발생
         조치 : 라우팅 값과 그룹을 확인하여 환경파일을 수정하거나 서비스 호출시의 라우팅 관련 값을 수정한다.
    -----
         현상 : TMS_INFX.2191: ERROR: msgsnd err:(LIBTUX_CAT:667: ERROR: Message operation failed because of the bad message type) errno=22,qid=7,buf=134741704,bytes=360,flag=0
         원인 : 보내는 메세지가 깨지는 경우에 발생한다.
         조치 : 메세지 큐를 확인한다.
    -----
         현상 : cleanupsrv.9665: LIBTUX_CAT:577: ERROR: Unable to register because the slot is already owned by another process
         원인 : 서버를 등록하려고 하는데 이미 등록하려는 slot에 자신이나 다른 프로세스가 이미 사용하고 있을 경우 발생한다.
         조치 :
    -----
         현상 : tmadmin.11550: LIBTUX_CAT:236: ERROR: Remote tmnwkill timed out 10 secs
         원인 : Bridge를 통해서 서비스를 호출하였으나 응답이 없을 경우에 발생.
                (Network이 너무 바빠서 일어날 수도 있고, timeout이 너무 짧아서 발생)
         조치 : 1.Network의 상태를 확인하여 과부하 발생원인을 제거한다.
                2.Service 수행시간을 확인하여 늦어지는 원인를 제거한다(Service 튜닝).
    -----
         현상 : BRIDGE.25030: CMDTUX_CAT:499: ERROR: Shutting down bridge, serious message receive error
         원인 : BRIDGE 를 shutdown하는 도중에 오류가 발생한 경우이다.
         조치 : 잠시후 다시 시도한다.
    -----
         현상 : BBL.25015: CMDTUX_CAT:1597: ERROR: Unable to unregister - remote procedure call failure - can't send request - TPEOS - operating system error
         원인 : DBBL에서 서버 등록을 해제하려고 하는데 다른 머신에서 등록해제를 할 수 없는 경우 발생한다.
         조치
    -----
         현상 : NSACDN101.11825: LIBTUX_CAT:268: ERROR: Failed to stop serving
         원인 : 서버를 shutdown할 수 없을 경우이다.
         조치 : bbl을 clean한 다음에 다시 시도한다.
    -----
         현상 : BBL.25015: CMDTUX_CAT:25: ERROR: The BBL could not bring down a paired bridge
         원인 : BBL shutdown시에 paired bridge에 shutdown 메시지를 보낼 수 없을 경우에 발생한다.
         조치 :
    -----
         현상 : SRVVCD01.82918.1.0: LIBTUX_CAT:2020: ERROR: Memory allocation failure.
         원인 : FML Buffer의 memory 할당 중 physical memory나 swap space가 적어서 발생.
         조치 : 1.해당 서비스 프로그램을 확인하여 FML Buffer의 memory 할당을 조정한다.
                2.physical memory나 swap space를 더 크게 증설한다.
    -----
         현상 : 103017.kolon1!SRVHL016.81456.1.0: 03-12-2002: Tuxedo Version 7.1
                103017.kolon1!SRVHL016.81456.1.0: LIBTUX_CAT:262: INFO: Standard main starting
                103017.kolon1!SRVHL016.81456.1.0: LIBTUX_CAT:476: WARN: Server 100/2262: client process 89356: lost message
                103017.kolon1!SRVHL016.81456.1.0: LIBTUX_CAT:477: WARN: SERVICE=hzp09001    MSG_ID=0    REASON=server died
         원인 : - core file이 발생하지 않은 경우
                  서비스 프로그램의 SQL 문장을 DBMS에서 SQL 문장을 처리하는데 지정된 시간을 초과(Full scan)하는 경우에 발생(TPETIMEOUT).
                - core file이 발생한 경우
                  1.함수를 잘못 사용하는 경우, 예를 들면 숫자 변수에 문자값을 setting 등
                  2.선언된 변수의 크기보다 더 큰 값이 들어오는 경우.
                  3.Server program에 출력문에서 varchar로 선언된 것이 출력할 때 .arr이 없이 출력한 경우.
         조치 : - core file이 발생하지 않은 경우
                  서비스 프로그램의 SQL 문장을 튜닝해야 한다.
                - core file이 발생한 경우
                  1.함수를 잘못 사용한 부분을 확인하여 수정한다.
                  2.변수값의 크기를 확인하여 적게 선언 되어 있는 경우 더 크게 잡아준다.
                    (strcpy, strcat 등을 사용하는 경우 해당 변수에 들어오는 값을 확인하여 변수 크기를 조정한다.)
                  3.printf문에서 varchar에 해당되는 것을 수정(x ==> x.arr)
    -----
         현상 : 051525.crane1!NSZPAN901.20474: LIBTUX_CAT:467: ERROR: tpclose TPERMERR xa_close returned XAER_RMERR
         원인 : 1.RM(Resource manager)의 option이 잘못 설정되어 TMS가 잘못 생성된 경우에 발생.
                2.OPS 환경에서 MTS가 아닌 dedicator server로 구성된 것에 2PC를 할 경우에 발생.
                3.DB의 XA-library에 문제가 있을 경우에 발생
         조치 : 1.RM(Resource manager)의 option이 확인한 다음 다시 설정하고 TMS를 재생성
                2.OPS 환경에서 MTS로 init.ora 화일을 변경.
                3.DB Vender에 기술지원 요청.
    -----
         현상 : 101054.firesv2!tf_avl_nx1.4270: gtrid x0 x3c868ee7 x55dba: GP_CAT:1062: ERROR: Cannot reallocate FML buffer to smaller than its unindexed size
                101054.firesv2!tf_avl_nx1.4270: gtrid x0 x3c868ee7 x55dba: LIBTUX_CAT:228: ERROR: Type switch buffer reinitialization routine _tmreinitbuf failure
                101054.firesv2!tf_avl_nx1.4270: gtrid x0 x3c868ee7 x55dba: TFT1026XNS91 :[20020314-101054 ](WARNING)can't tprealloc, retry tpalloc
         원인 : FML Buffer를 재할당(realloc)한 Buffer size보다 더 많은 Data가 FML Buffer에 집어 넣을 경우에 발생.
         조치 : Data size를 확인하고 FML Buffer를 충분히 재할당(realloc) 한다.
    -----
         현상 : 195307.firesv2!tmshutdown.29476: 031402: TUXEDO Version 6.5 SunOS 5.5.1 Generic sun4u sparc SUNW,Ultra-1.
                195307.firesv2!tmshutdown.29476: CMDTUX_CAT:4477: INFO: SRVID=1509 SRVGRP=NXAGRP2 SIGTERM send failed (tperrno=7)
                195307.firesv2!tmshutdown.29476: CMDTUX_CAT:4478: INFO: SRVID=1509 SRVGRP=NXAGRP2 SIGKILL send failed (tperrno=7)
                195307.firesv2!tmshutdown.29476: WARN: internal error: CMDTUX_CAT:947: WARN: Can't shutdown server (NXAGRP2/1509)
         원인 : tmshutdown 사용시 -w option 사용할 때 운영체제에서 해당 서버에 Signal를 보내지 못할 경우에 발생.
         조치 : 1.운영체제에서 발생한 오류 임으로 System Admin에게 문의.
                2.ipcrm으로 해당 서버가 사용하고 있는 IPC 자원을 제거한다
    -----
         현상 : 203519.firesv2!WSL.4163: LIBTUX_CAT:703: ERROR: Cannot get statistics on message queue 10242
         원인 : 메세지 큐의 상태를 알 수 없을 경우 발생.
         조치 : Kernel parameter 중 Message queue의 상태를 점검(System admin에게 요청).
    -----
         현상 : 160006.firesv2!tf_stat_nx3.4396: gtrid x0 x3c868ee7 x317fc: LIBTUX_CAT:1537: ERROR: tpclose called with ongoing transaction
                160006.firesv2!tf_stat_nx3.4396: gtrid x0 x3c868ee7 x317fc: LIBTUX_CAT:523: ERROR: tpclose failed
         원인 : Global transaction 처리시 tpclose()하기 전에 tpcommit(), tpabort()를 하지 않은 경우 발생.
         조치 : Global transaction 처리시 tpclose()하기 전에 서비스 호출 결과에 따라 tpcommit(), tpabort()를 하기 바람.
    -----
         현상 : 161341.ccbs1!tmboot.4287.1.-2: CMDTUX_CAT:1578: ERROR: Could not contact NLS on SKT1
                161341.ccbs1!tmboot.4287.1.-2: CMDTUX_CAT:1576: ERROR: No NLS available for remote machine SKT1
         원인 : tlisten가 떠 있지 않은 경우 발생(강제적으로 tlisten process를 죽임)
         조치 : Tuxedo /T를 shutdown한 후 tlisten를 기동시킨 다음 Tuxedo /T를 Starting 시킴.
    -----
         현상 : 데이타베이스에 연결하지 못함.
         원인 : 이것은 해당 데이터베이스에 대하여 필요한 환경 설정이 잘못되어 있거나, 권한이 없는 경우, 그리고 DB가 active되어 있지 않은 경우 발생합니다.
         조치 : 1.해당 데이타베이스에 필요한 환경 설정이 잘못되어 있다.(ORACLE : ORACLE_HOME, ORACLE_SID, ORA_NLS,INFORMIX : INFORMIXDIR, INFORMIXSERVER) 필요한 환경을 확인하고 데이터베이스에 대한 환경설정을 정확하게 수정한다.
                2.데이타베이스에 권한이 없다.
                  해당 사용자에 데이타베이스 권한을 부여한다.(ORACLE : v$xatrans$에 권한을 준다.INFORMIX : 해당 DB를 사용할 수 있는 권한을 사용자에게 부여한다)
                3.DB가 online 되어 있지 않다.
                  DB를 기동하고 서버를 새로 띄운다.
    -----
         현상 : tpcommit 오류가 발생.
         조치 : 1.tpbegin() 이 되어 있지 않다. tpbegin()을 넣어 주어야 한다.
                2.tpbegin 시에 주는 timeout 값이 너무 적거나, 실제 서비스 시간이 오래 걸리는 경우 발생 tpbegin() 시에 시간을 길게 주거나, 서비스 시간을 줄이도록 튜닝한다.
                3.이 서비스에서 호출한 서비스에서 TPFAIL로 반환한다.
                  이 경우 서버의 트랜잭션은 ABORTONLY로 처리되므로 commit을 원하는 경우는 TPSUCCESS 로 반환하도록 한다.
                4.TMS 의 초기화 이상 또는 동작 이상이 발생한다. TMS를 kill 시키고 tmadmin 상에서 bbc 명령을 수행한다.
                5.Oracle 22번 에러(Invalid session id; access denied) 발생한다.
                  TM이 open 하고 있는 정보와 AP가 open 하는 정보가 다르다. 이를 확인하여 일치시켜 준다. 혹은 “@서버”와 같은 식으로 사용하여 TM이 접근할 수 없는 세션이 이루어지고 있다. 이를 수정하여 제거한다.
    -----
         현상 : 서버가 종료되지 않음.
         원인 : 서버가 무한 루프를 도는 경우 발생할 수 있다.
         조치 : tmadmin -r 명령상에서 psr 명령으로 해당 서버가 루핑을 도는지 확인하고, 해당 서버 프로세스를 kill 명령으로 죽이고 tmshutdown 명령을 한번 수행합니다. ps ?ef | grep tm 명령으로 수행중인 Tuxedo 명령을 확인한 후에 BB(Bulletin Board)가 locking 상태에 있는지 확인한 후에 해당 Tuxedo 명령을 종료하도록 하고 tmadmin으로 들어가서 bbc 명령을 수행한다.
    -----
         현상 : TPENOENT 라는 에러가 발생.
         원인 : 이것은 해당 서버나 서비스가 없거나, MAXWSCLIENTS값이 부족한 경우 발생할 수 있다. 해당항목이 없을 때 발생하는 에러 임.
         조치 : 1.tmadmin -r 명령상에서 서버, 서비스를 확인한다. 호출하는 서비스(tpcall() 함수에서)가 없다면 해당 서비스가 있는 서버 프로세스를 기동하고, 역시 문제라면 해당 서버 컴파일시에 서비스가 -s 옵션으로 제대로 들어갔는지 확인한다.
                2.Tuxedo 구성파일의 MAXWSCLIENTS를 확인하고 부족하다면 증가시킨다.
    -----
         현상 : Routing 에러가 발생.
         원인 : 이것은 버퍼안에 라우팅을 위한 값이 없거나 라우팅의 위치가 지정되어 있지 않은 경우에 발생할 수 있다.
         조치 : 1.버퍼안의 내용을 Fprint() 함수를 이용하여 확인하여 라우팅을 위한 값이 있는지 확인한다.
                2.구성 파일의 분기 항목을 확인하여 해당 라우팅 값으로 갈 수 있는 곳이 지정되어 있는지 확인후 분기를 재설정하거나 입력된 분기값을 수정한다.
    -----
         현상 : FML 필드를 못 찾는다.
         원인 : 이것은 FML에서 사용하는 필드가 정의되어 있지 않거나, 정의된 이름과 다른 필드명을 사용하는 경우 발생할 수 있다.
         조치 : 1.set 명령의 출력및 ENVFILE을 확인한다. FLDTBLDIR, FIELDTBLS 환경변수가 설정되어 있지 않다면 정확히 설정한다.
                2.필드 테이블을 확인한다.(필드명은 대소문자를 구분한다.) 필드 테이블에 해당 필드가 없거나 잘못 정의되어 있다면, 수정한다.
    -----
         현상 : FML 버퍼에 데이타를 복사하지 못한다.
         원인 : 이것은 메모리 할당이 작거나 또 한번의 호출을 통해서 메모리 크기가 변한 경우에 발생.
         조치 : 우선은 set 명령의 출력및 ENVFILE을 확인하여 FML 버퍼에서 사용하는 필드 테이블 파일을 위치를 확인한 후 다음으로 할당된 메모리의 크기를 확인하여 tprealloc 함수를 사용하여 메모리를 크게 잡습니다. 서버에서 다를 서버로 호출을 하여 할당된 메모리 크기가 변한 경우에는 호출에서 반환된 메모리를 다시 realloc한다.
    -----
         현상 : Tuxedo 서버 프로세스가 비정상 종료.
         원인 : 거의 대부분이 프로그램 내의 포인터 사용 잘못이나, 할당된 버퍼 크기의 부족으로 인해서 발생한다.
         조치 : 1.포인터를 사용한 복사 등에서 잘못된 포인터를 확인한다.
                2.메모리 혹은 스트링 복사시 각 메모리의 크기를 확인한다.
                3.할당된 버퍼 크기보다 더 많은 데이터를 복사하고 있는지 확인한다. 특히, strcpy() 같은 함수를 사용할 경우 소스 데이터에 NULL 값이 있는지 확인한다.
                4.컴파일 시에 WARNING이 있는 위치를 확인한다.
                5.프로그램에 디버그를 할 수 있는 “printf”나 “userlog” 를 사용하여 죽는 위치를 확인하여 수정한다.
    -----
         현상 : Client 어플리케이션에서 tpinit 에러가 발생.
         원인 : Client에서 접속할 서버 address가 client에 지정되어 있지 않거나, 잘못 지정되어 있는 경우 또는 서버쪽에 해당 address를 갖는 서버 프로세스(WSL)이 없거나 접속초과가 된 경우.
         조치 : 1.client PC에서 해당 machine으로 PING 이나 TELNET이 잘 되는지 확인한다.
                2.client 도스의 환경변수 WSNADDR 설정값과 서버 machine의 WSL의 CLOPT 지정값을 비교한다.
                3.서버 구성파일 환경의 MAXWSCLIENTS와 WSL의 CLOPT에 지정된 WSH의 MAX 값을 확인한다.
                4.client DOS의 루트 디렉토리에서 dir /s 으로 DLL을 검색한다.
                5.4GL에서 DLL 정의 부분을 확인합니다.
                6.4GL 컴파일을 새로하여 다시 접속합니다.

                원인 및 조치

                1.접속할 서버 address가 없다.
                  Client의 환경변수 WSNADDR를 서버쪽의 접속 address로 정확히 설정한다. (unix client의 경우는 WSDEVICE도 확인한다. Unix client의 경우 해당 환경 변수가 export 되어 있는지 확인)
                2.서버쪽에 WSL이 부팅되어 있지 않다.
                  관리자에게 WSL을 띄워 주도록 요청한다.
                3.접속 권한이 없다.
                  정확한 암호를 사용한다.
                4.최대 사용자 수를 넘었다.
                  Tuxedo 구성 파일(unix)의 MACHINES 섹션의 MAXWSCLIENTS의 수와 SERVERS 섹션의 WSL 의 option 중에서 -M, -x option들의 수를 정확히 설정합니다. 즉 -M 4, -x 10 인 경우는 최대 40 pc client를을 지원하며, MACHINES 섹션에는 MAXWSCLIENTS=40 으로 설정해야 한다.
                5.여러 개의 DLL이 존재한다. (PC)- 특히 ulog 파일이 생성되지 않는 경우
                  잘못 사용되고 있는 DLL을 지우거나 이름을 변경한다.
                6.4GL쪽에 정의한 DLL의 경로가 틀리거나 정확하게 인식하지 못한다.
                  정확한 경로를 정의하고, 혹은 4GL에서 새로 compile되도록 조치한다.
    -----
         현상 : GP_CAT:209: ERROR: Write error 5, file /pool1/tuxedo2/ULOG.070401
                GP_CAT:208: NLS:6: Message not found, catalog GP_CAT, set 1, num 208
                GP_CAT:209: NLS:6: Message not found, catalog GP_CAT, set 1, num 209
                Fri May 31 06:59:50 2002 system error detected: file painfu.c line 4938 rc = 0 from wngtprsr - No such file or directory
                Fri May 31 06:59:50 2002 internal error detected: file painfu.c line 5706 rc = 0 from padfsc
         원인 : /pool1/tuxedo2에 할당 받은 file system의 disk space가 full 참.
         조치 : df -k로 /pool1/tuxedo2에 할당 받은 file system을 확인하고 file 정리 및 disk space를 더 할당한다.
    -----
         현상 : LIBTUX_CAT:1542  ERROR: The -p option is valid only for SHM mode with load balancing
         원인 : SHM mode에 load balancing(LDBAL)이 on(Y)으로 설정되어 있지 않은 경우 발생
         조치 : SHM mode에 load balancing(LDBAL)이 on(Y)으로 설정한다.
    -----
         현상 : 210616.신혜원!?proc.1652: LIBWSC_CAT:1037: ERROR: Network message receive failure
                210616.신혜원!?proc.1652: LIBWSC_CAT:1059: ERROR: WSL returns error on connection request
                210616.신혜원!?proc.1652: LIBWSC_CAT:1055: ERROR: Unable to establish WSL connection
                210616.신혜원!?proc.1652: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH
                210616.신혜원!?proc.1652: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level
         원인 : Network이 Down된 경우에 발생.
         조치 : Network admin에게 Monitoring 요청.
    -----
         현상 : 090627.MIS001-00!tmadmin.18251: TMADMIN_CAT:1330: INFO: Command: bbc
                090627.MIS001-00!DBBL.11035: CMDTUX_CAT:1429: INFO: Forcing check of all BBLs
                090637.MIS001-00!BBL.11036: LIBTUX_CAT:216: WARN: Process 11835 died; removing from BB
                090637.MIS001-00!BBL.11036: LIBTUX_CAT:216: WARN: Process 11836 died; removing from BB
                090637.MIS001-00!DBBL.11035: CMDTUX_CAT:1394: ERROR: BBL partitioned, machine= mis1
                090637.MIS001-00!DBBL.11035: CMDTUX_CAT:1385: INFO: BBL now unpartitioned, machine= mis1
                090637.MIS001-00!DBBL.11035: CMDTUX_CAT:1762: INFO: Sending new TUXCONFIG file to machine mis1
                090637.MIS001-00!DBBL.11035: CMDTUX_CAT:672: INFO: Sending BBL on machine mis1 new version of bulletin board
                090647.MIS001-00!BBL.11036: LIBTUX_CAT:576: ERROR: Unable to remove queue for process 18251
                090647.MIS001-00!BBL.11036: LIBTUX_CAT:216: WARN: Process 18251 died; removing from BB
                090655.MIS001-00!WSH.18788: LIBTUX_CAT:329: ERROR: Tried to free non-alloced tmrte
         원인 : 위의 ULOG를 보시면 bbc 명령을 치셔서 모든 BBL을 체크했습니다. ( 9:06:27 )
                BBL중 mis1이 응답을 하지 못하여 Partition이 났습니다. ( 9:06:37 )
                바로 아래 응답이 와서 Unpartition이 되어서 TUXCONFIG 파일이 mis1 에 다시 보냈습니다.
                그리고 나서 새로운 BB ( bulletin board )를 보냈습니다.
                새로운 BB를 받는 도중에 tmshudown 명령을 입력하시어 서로 충돌이 발생하여 BB가 깨져서 발생한 에러입니다.
         조치 :
    -----
         현상 : 100136.crane2!NSCADN503.23593: LIBTUX_CAT:533: ERROR: Cannot execute service, address not known
                100136.crane2!NSCADN503.23593: LIBTUX_CAT:516: ERROR: Unknown service request IAD71000S
         원인 : Tuxedo parition으로 인하여 해당 서비스를 실행하지 못하는 경우에 발생.
         조치 : Tuxedo addmin에게 요청.
    -----
         현상 : 162919.kahp1521!JSL.8295: LIBTUX_CAT:262: INFO: Standard main starting
                162919.kahp1521!JSL.8295: INFO: JOLT Listener version-Jolt 1.2 [08/31/1999-40]
                162919.kahp1521!JSL.8295: JOLT_CAT:1542: ERROR: Unlicensed Jolt server
                162919.kahp1521!JSL.8295: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
         원인 : Jolt license가 말료된 경우에 발생.
         조치 : Jolt license($TUXDIR/udataobj/lic.txt)를 확인.
    -----
         현상 : cp: cannot create /users/dev/tux/bin/./CC0011: Text file busy
         원인 : Server process(CC0011)가 이미 기동된 상태에서 컴파일 하고, 생성된 서버 프로세스를 복사한 경우에 발생.
         조치 : 이미 기동된 서버 프로세스를 tmshutdown하고 복사한다.
    -----
         현상 : 121748.kolon1!SRVHL037.38722.1.0: LIBTUX_CAT:717: ERROR: Cannot attach to or create shared memory
         원인 :
         조치 :
    -----
         현상 : 150108.ccbs1!DBBL.20241.1.0: CMDTUX_CAT:4729: WARN: Reached 100% of TUXEDO System Binary Licensed User Count (6/3)
         원인 : Tuxedo SDK licese가 부족할 경우에 발생.
         조치 : Tuxedo SDK licese를 확인하고 licese를 추가 구입한다.
    -----
         현상 : 095105.MIS001-00!tmadmin.26094: LIBTUX_CAT:1370: WARN: Reached 100% of TUXEDO System Binary Licensed User Count (1/0)
                095105.MIS001-00!tmadmin.26094: LIBTUX_CAT:1367: ERROR: Expired TUXEDO System Binary License
         원인 : Tuxedo 메시지 오류임.(Tuxedo 7.1 이하에서 발생)
         조치 :
    -----
         현상 : 113210.MIS001-00!aejz01.27692: LIBTUX_CAT:1397: WARN: tpreturn transaction processing failure
         원인 : 1.Transaction timed out을 초과하여 서비스 처리시간이 긴 서비스인 경우 발생(ORA-22와 같이 발생).
                2.Transaction 내에서 tpcall() 실패 후 TPSUCCESS로 tpreturn하는 경우 발생
         조치 : 1.Transaction 처리 시간을 더 늘려 주던지, 아니면 서비스 프로그램을 튜닝해야 한다.
                2.이것은 프로그램에 따라 무조건 TPSUCCESS로 tpreturn 후 프로그램에서 종합적으로 판단하여 처리하는 경우도 있으므로 메시지 자체에는 큰 의미가 없고 이후 에러 처리만 제대로 하면 된다.
    -----
         현상 : 112627.ccbs1!tmboot.16392.1.-2: FATAL: internal error: CMDTUX_CAT:1610: ERROR: Expired TUXEDO System Binary
         원인 : Tuxedo license가 만료 됨.
         조치 :
    -----
         현상 : CMDTUX_CAT:994: ERROR: Reply failure - TPESVCFAIL - application level service failure
         원인 : 다른 서버에 동일한 서비스가 존재할 경우에 발생.
         조치 : TMADMIN에서 "psc -s 서비스명"으로 동일한 서비스가 존재하는지 확인한 다음 동일한 서비스를 제거한다.
    -----
         현상 : CMDTUX_CAT:988: ERROR: ud detected syntax error in fielded buffer #1
                LIBFML_CAT:8: ERROR: Unknown field name

                CMDTUX_CAT:989: ERROR: No service in FBFR
         원인 : Tuxedo 관련 환경설정이 잘못 설정된 경우에 발생.
         조치 : Tuxedo 관련 환경설정 파일(tux.env)을 확인.
    -----
         현상 : 073722.nateifs1!GWTDOMAIN.20584: LIBGWT_CAT:1249: WARN: Connect to IF3DOM address 2F-2F-31-35-30-2E-32-30-34-2E-31-31-2E-32-35-3A-33-35-30-30-30 failed, Network error(0x0)
                073722.nateifs1!GWTDOMAIN.20584: LIBGWT_CAT:1304: WARN: No more remote domain address for remote domain IF3DOM
                073722.nateifs1!GWTDOMAIN.20584: LIBGWT_CAT:1008: ERROR: Unable to connect to remote domain IF3DOM; network error code 0x1faa
         원인 :
         조치 :
    -----
         현상 : LIBTMIB_CAT:100:ERROR: Class class is not writable by this user
         원인 : 클래스를 위해 SET 요구는 클래스가 부른 사용자를 위해 쓸 수 있는 제품 속성을 포함하지 않기 때문에 응해질 수 없었습니다.
         조치 :
    -----
         현상 : 163354.ccbs1!CC0015.13789.3.2: gtrid x0 x3d570378 x6d4: LIBTUX_CAT:1380: ERROR:Still in transaction
         원인 : 서비스 프로그램에서 tpbegin을 한 후 tpreturn 하기 전에 transaction을 tpcommit 또는 tpabort를 하지 않은 경우에 발생.
         조치 : tpreturn을 호출하기 전에 transaction을 tpcommit 또는 tpabort를 사용하여 종료 하도록 서비스 루틴을 변경한다.
    -----
         현상 : LIBFML_CAT:4: ERROR: Field not present !
         원인 : FML Buffer Field 값이 존재하지 않은 Field에서 데이터를 가져올 경우에 발생
         조치 :
    -----
         현상 : 090423.ccbs2!tlisten.18781.1.-2: CMDTUX_CAT:1283: ERROR: Could not create directory for security key database
         원인 : APPDIR parameter에 정의된 Directory가 존재하지 않은 경우에 발생.
         조치 : APPDIR parameter에 정의된 Directory의 유효성을 확인한다.
    -----
         현상 : 163214.wamc_e2!BBL.151476: CMDTUX_CAT:33: ERROR: BBL bbclean cannot open Bulletin Board image, /oracle/app/oracle/tmp/DBBL.33335 while restarting the DBBL
         원인 : 1./oracle/app/oracle/tmp Directory에 대한 Space가 없는 경우에 발생
                2./oracle/app/oracle/tmp Directory에 Write 권한이 없는 경우에 발생
                3./oracle/app/oracle/tmp Directory가 존재하지 않는 경우에 발생
         조치 : 1./oracle/app/oracle/tmp Directory에 대한 Space의 유효성을 확인한다.
                2./oracle/app/oracle/tmp Directory에 Write 권한을 준다.
                3./oracle/app/oracle/tmp Directory를 생성한다.
    -----
         현상 : 172554.SMP001-4!BBL.6552: LIBTUX_CAT:320: ERROR: BB TLOGSIZE differs from number of pages in TLOG file
                172554.SMP001-4!BBL.6552: LIBTUX_CAT:319: ERROR: Log start cannot open tlog
                172554.SMP001-4!BBL.6552: LIBTUX_CAT:248: ERROR: System init function failed, Uunixerr =
         원인 : TLOG의 실제 크기가 BBL에 의해 유지된 크기와 다르기 때문에 TLOG 로그를 Open하면서 오류발생.
         조치 : TLOG를 삭제하고 재생성한다.
    -----
         현상 : 152207.SMP001-5!restartsrv.1320: 08312002: TUXEDO Version 6.4   4.0 3.0 3435 i486(TM)-MCA .
                152207.SMP001-5!restartsrv.1320: LIBTUX_CAT:270: ERROR: Restart sync error 3
         원인 : 존재하지 않는 프로세스가 지정되었음(kill에 의해 발생).
         조치 :
    -----
         현상 : 153106.임상병리39!?proc.-431247: LIBWSC_CAT:1055: ERROR: Unable to establish WSL connection
                153106.임상병리39!?proc.-431247: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH
                153106.임상병리39!?proc.-431247: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level
         원인 : Client에서 WSL(Workstation Listener)을 연결하는 과정에서 발생한 오류
                1.WSADDR(Workstation address)이 부정확한 경우
                2.WSL(Workstation Listener)이 기동되어 있지 않은 경우
                3.Network이 down된 경우
                4.Host machine이 down된 경우
         조치 : 1.WSADDR(Workstation address) 설정값의 유효성을 확인하여 재설정한다.
                2.WSL(Workstation Listener)의 상태를 확인하고 기동한다.
                3.Network의 상태를 확인하고 기동한다.
                4.Host machine의 상태를 확인하고 기동한다.
    -----
         현상 : LIBFML_CAT:2: ERROR: Buffer not fielded !
         원인 : FML Table에 field가 존재하지 않을 경우에 발생.
         조치 : FML Table에 field가 존재여부를 확인한다.
    -----
         현상 : 152508.SMP001-5!cleanupsrv.1371: 08312002: TUXEDO Version 6.4   4.0 3.0 3435 i486(TM)-MCA .
                152508.SMP001-5!cleanupsrv.1371: server SMP5_GP4/11803: CMDTUX_CAT:537: ERROR: Failed to update server
                While cleaning up information about a dead server , the BEA TUXEDO system was unable to update the server table entry for that server .
                152508.SMP001-5!cleanupsrv.1371: CMDTUX_CAT:557: ERROR: Automatic Server Recovery failure; Server processes require manual intervention.
         원인 : 데드 서버에 대하여 정보를 Clean up 하는 동안 BEA TUXEDO System/T가 데드 서버에 서버 테이블 엔트리를 Update할 수 없는 경우에 발생.
         조치 : userlog에 남긴 메시지를 확인하고, 충분한 정보가 제공된다면 단순히 다시 해당 서버를 기동시기면 된다.
                메시지가 그렇지 않다면 할당된 IPC 자원을 깨끗이 정리하고, Tuxedo를 재기동해야 한다.
    -----
         현상 : 152520.SMP001-5!BRIDGE.13140: WARN: Could not lock USEM
                152520.SMP001-5!BRIDGE.13140: LIBTUX_CAT:746: ERROR: Cannot lock Bulletin Board
                       A process was unable to lock the TUXEDO System/T shared memory data structures .
                152520.SMP001-5!BRIDGE.13140: CMDTUX_CAT:1418: ERROR: Cannot retrieve BBL server table entries
                       While attempting to check the local BBL 's sanity , the BRIDGE could not find a server table entry for it .
                       The BRIDGE will continue running , but the BBL will not be restarted if it dies .
         원인 : Local BBL의 동작 상태를 점검하는 동안에 BRIDGE은 그것을 위해 서버 테이블 엔트리를 발견할 수 없는 경우에 발생.
         조치 : IPC 자원을 깨끗이 정리하고, Tuxedo를 재기동해야 한다.
    -----
         현상 : 210008.hp1511!WSL.3125: 09062002: TUXEDO Version 6.5 HP-UX B.11.00 U 9000/898 1623623321 unlimited-user license.
                210008.hp1511!WSL.3125: LIBTUX_CAT:1297: INFO: Boot process migrating location of group WSGRP1 to machine SITE1
                210008.hp1511!WSL.3125: LIBTUX_CAT:262: INFO: Standard main starting
                210009.hp1511!WSL.3125: WSNAT_CAT:1079: ERROR: Error starting minimum number of handlers
                210009.hp1511!WSL.3125: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
         원인 :
         조치 :
    -----
         현상 : wamc_b1:/wamc> tuxwsvr -d /dev/xti/tcp -l //128.17.1.11:8888 -i /tuxedo/udataobj/tuxwsvr.ini
                wamc_b1:/wamc> wlisten -i /tuxedo/udataobj/webgui/webgui.ini
                WEBGUI_CAT:3109: ERROR: Could not establish listening endpoint
                wamc_b1:/wamc>
         원인 : 설정된 NADDR의 Port를 이미 다른 프로세스에서 사용하고 있는 경우에 발생.
         조치 : 설정된 NADDR의 Port를 확인 하고 유효한 Port를 재설정한다.
    -----
         현상 : "svcmkfml.c", line 1306: undefined struct/union member: sqlerrm
                "svcmkfml.c", line 1306: undefined struct/union member: sqlerrmc
                "svcmkfml.c", line 1306: warning: left operand of "." must be struct/union object
         원인 : $TUXDIR/include의 directory 내에 존재하는 파일 중 sqlca.h을 컴파일할 때 참조할 경우 발생.
         조치 : $TUXDIR/include의 directory 내에 존재하는 파일 중 sqlca.h을 컴파일할 때 참조하지 못하도록 다른 이름으로 변경(sqlca.h)한다.
    -----
         현상 : CMDTUX_CAT:4382: ERROR: You do not have a valid TUXEDO SDK license
         원인 : TUXEDO SDK license가 유효하지 않은 경우에 발생
         조치 : $TUXDIR/udataobj/lic.txt를 확인.
    -----
         현상 : /usr/ccs/bin/ld: Unsatisfied symbols: SQLCA(data)
         원인 : $TUXDIR/include Directory 내에 존재하는 파일 중 sqlca.h가 존재하여 발생(Database의 include Directory 내에 존재하는 사용해야 함).
         조치 : $TUXDIR/include Directory 내에 존재하는 파일 중 sqlca.h --> sqlca.h.org, sqlcode.h --> sqlcode.h.org, sqlda.h --> sqlda.h.org로 변경.
    -----
         현상 : LIBTUX_CAT:518: ERROR: Service 'hfw09101' failed to call tpreturn or tpforward
         원인 : 클라이언트에서 서비스 호출 후 서비스가 실행되고 있는 도중에 먼저 클라이언트가 종료되어 서비스 수행 결과를 되돌려 줄 클라이언트가 없는 경우에 발생.
         조치 :
    -----
         현상 : 233944.NT280!?proc.3096.3084.0: LIBWSC_CAT:1458: ERROR: Invalid installation - can't find c:\tuxedo \locale
         원인 : Tuxedo client 모듈이 잘못 설치된 경우에 발생.
         조치 : Tuxedo client 모듈 재설치.
    -----
         현상 : 215008.kaiser0!BBL.25945: LIBTUX_CAT:297: ERROR: _tlog_open: _gp_crtbl: no space can be allocated for disk table or for VTOC/UDL
                215008.kaiser0!BBL.25945: LIBTUX_CAT:319: ERROR: Log start cannot open tlog
                090957.hubsr13!BBL.34772: LIBTUX_CAT:300: ERROR: _tlog_open: _gp_tblopen: UNIX sys call error - 2
                090957.hubsr13!BBL.34772: LIBTUX_CAT:319: ERROR: Log start cannot open tlog
         원인 : H/W의 Disk space 부족으로 인하여 tlog를 open할 수 없는 경우에 발생.
         조치 : H/W의 Disk space를 확인(df -k)하여 H/W의 Disk space를 조정한다.
    -----
         현상 : 125104.kumca1!BBL.30472: LIBTUX_CAT:541: WARN: Server MNXAGRP/2190 terminated
                125104.kumca1!BBL.30472: LIBTUX_CAT:557: INFO: Server MNXAGRP/2190 being restarted
                125105.kumca1!BBL.30472: LIBTUX_CAT:541: WARN: Server MNXAGRP/2191 terminated
                125105.kumca1!BBL.30472: LIBTUX_CAT:557: INFO: Server MNXAGRP/2191 being restarted
                125105.kumca1!restartsrv.147532: 01182003: TUXEDO Version 6.5 AIX  2 4 007025954C00.
                125105.kumca1!restartsrv.147532: LIBTUX_CAT:577: ERROR: Unable to register because the slot is already owned by another process
         원인 : 서비스가 비종료 되면서 BBL 쪽에서 cleanup이 되지 않고 남아 있는 경우에 발생.
         조치 :
    -----
         현상 : 152739.skcms_app!JSL.175008: JOLT_CAT:1521: ERROR: Unrecognized message  magic  218759949
                153617.skcms_app!JSL.175008: JOLT_CAT:1175: WARN: Disconnecting listener connection to Jolt client, request timed out
         원인 : 방화벽에서 JSL 및 JSH가 사용할 Port를 열지 않은 경우에 발생.
         조치 : 방화벽 담당자에게 JSL 및 JSH가 사용할 Port 구간을 열어 줄 것을 요청.
    -----
         현상 : ulog.110202:113755.jnuhp2!tmshutdown.701: LIBTUX_CAT:1566: ERROR: Unable to set type switch index
         원인 :
         조치 :
    -----
         현상 : 170650.hub2!simpsvr.24144: ERROR: msgsnd err:(LIBTUX_CAT:669: ERROR: Message operation failed because of the invalid message queue identifier) errno=22,qid=832176246,buf=539099304,bytes=50,flag=2048
                170650.hub2!simpsvr.24144: LIBTUX_CAT:1286: ERROR: tpreturn could not send reply TPEOS - operating system error
         원인 : 1.서비스가 지정된 시간 안에 종료 되지 않은 경우에 발생.
                2.Message queue size가 적은 경우에 발생(Message size가 큰 경우).
         조치 : 1.서비스를 튜닝하던지 아니면 서비스 수행시간을 조정한다.
                2.Message queue size를 조정한다.
    -----
         이슈 : XA 서비스를 non-XA 모드로 호출할 때, etc.
                1.XA 서비스를 non-XA 모드로 호출할 때
                  1) OPENINFO에 NoLocal=true가 설정되어 있을 때
                     - 일단 tpbegin()을 호출하지 않았기 때문에 Transaction Context가 아니라서 xa_start()는 호출되지 않는다.
                     - 그런데, NoLocal=true가 설정되어 있으면 SQL 수행시 ORA-00155: cannot perform work outside of global transaction이 발생한다.
                     - 따라서 SQL error만 제대로 체크하는 루틴이 있으면 문제없다.
                  2) OPENINFO에 NoLocal=true가 설정되어 있지 않을 때
                     - 위와 마찬가지로 xa_start()는 호출되지 않는다.
                     - SQL은 Local transaction으로 수행된다.
                     - 위에서의 Local transaction에 대해서 COMMIT/ROLLBACK 명령이 없으므로
                     - 이 상태에서 XA 모드로 서비스를 호출하게 되면 LIBTUX_CAT:481: ERROR: Service xa_start returned -9 발생
                     - 이 경우에는 서버를 Rebooting하여야 한다.
                2.non-XA 서비스를 XA 모드로 호출할 때
                  1) tpcall() 시에 에러가 발생하며, tperrno=14(TPETRAN)이다.
                  2) 이 경우에는 tpcall()의 flag에 TPNOTRAN을 설정하거나 tpbegin()을 호출하지 않은 상태에서 tpcall()을 수행하여야 한다.
                3.xa_start() returned -9
                  1) 위의 경우에서도 보인 바와 같이 Transaction이 Local transaction으로 진입한 이후에
                  2) 정상적인 COMMIT/ROLLBACK 명령을 수행하지 않고
                  3) XA 모드로 다시 서비스를 호출하면 발생한다.
                  4) 서버를 Rebooting하여야 한다.
                  5) 위의 경우처럼 XA 서비스를 non-XA 모드로 호출하였다가 XA 모드로 호출하는 경우라든가
                  6) Timeout 등에 의해 xa Session이 끊어진 이후에 에러 처리를 제대로 하지 않아서
                  7) Local Transaction으로 진입한 경우가 있다.
    -----
         이슈 : Caching된 Field table의 Reload 방법
                FML 함수에서 사용되는 Field table은 보다 빠른 접근을 위해서 메모리 상에 Caching이 되게 된다. 따라서, AP가 떠 있는
                상태에서 해당 파일의 내용을 변경 하더라도 바로 반영이 되지 않는다.
                일반적으로 Field table은 거의 변경하지 않기 때문에 큰 문제가 되지는 않지만, 만일 한 Process 내에서 2개의 서로 다른
                Tuxedo System으로 접속을 하고, 그 두 시스템에서 사용하는 Field table에 충돌이 있는 경우에는 이를 해결할 방법이 없다.
         조치 : Tuxedo에서는 Field table을 위한 Cache를 Unload하기 위한 함수를 제공한다. FML을 위한 Cache는 ID를 Name으로 맵핑하기
                위한 테이블이 존재한다.
                먼저, ID를 Name으로 맵핑하는 테이블을 Unload하기 위한 함수는
                (void)Fidnm_unload(void)
                (void)Fidnm_unload32(void)
                그리고, Name을 ID로 맵핑하는 테이블을 Unload하기 위해서는
                (void)Fnmid_unload(void)
                (void)Fnmid_unload32(void)
    -----
         이슈 : FML32 사용상의 주의점
                1.보다 많은 Field number를 사용할 수 있고( < 33554431)
                2.버퍼 크기의 제한을 덜 받는다.(최대 2GB)
         조치 : FML32를 사용할 경우에 사용할 수 있는 Field number는 증가하지만, Data Dependent Routing을 위해
                사용되는 필드의 Number는 반드시 8191 이하이어야 한다. 따라서, 만일 특정 필드가 Data Dependent
                Routing을 위해서 사용될 것이라면 이의 필드 Number는 8191 이하로 설정해야 한다.
                FML32를 사용하더라도 Windows 3.1에서는 64KB로 버퍼의 크기가 제한된다. 따라서, 혹시라도 Windows 3.1을
                같이 사용하고 있는 환경에서는 이 제한을 받게 된다.
                많은 필드를 한 버퍼에 넣을 경우에 속도 문제를 고려한다면 Fchg32() 보다는 Fappend32()를 사용하는 것이 바람직하다.
    -----
         이슈 : 특정 서버가 비정상 종료된 상태에서 "tmadmin" 상의 "psr"에 의한 서버의 상태가 계속적으로 Cleaning 혹은 Restarting 상태로 남아 있음.
         조치 : BB의 Cleaning/Restarting 상태는 BBL이 해당 서버의 비정상 종료를 감지하고, cleanupsrv/restartsrv를 수행하고 있는 상태를 의미한다.
                이 작업은 일반적으로 몇 초 내에 종결되는 작업이다. 이 상태가 오래도록 지속되는 경우 다음 2가지로 나누어 볼 수 있다.
                1.cleaning/restarting 작업에 지연요소 발생
                  서버 restarting의 경우에 DB 접속과 같은 작업이 이루어진다. 그런데 DB 접속이 지연되는 경우에는 cleanupsrv/restartsrv가 해당
                  작업을 종료할 수 없다. 따라서, 그 상태가 오래도록 지속되게 된다. 이 경우 해당 지연 요소를 먼저 제거해 주어야 한다.
                2.PID 재사용에 의한 문제
                  특히, AIX와 같이 PID 재사용이 많은 경우에 발생하는 문제로 BBL이 비정상 종료된 프로세스를 정리하기 전에 해당 PID를 다른 프로세스가
                  차지하게 되는 경우를 말한다. 이 경우 cleanupsrv/restartsrv는 마치 해당 프로그램이 동작 중인 것으로 판단하여 해당 상태에 대한 update를 하지 않게 된다.
                  이 때에는 "tmadmin"의 "psr" 명령을 verbose 모드로 수행하여 그 PID를 확인하고 종료시킨 후에 cleanupsrv/restartsrv를 수행시켜주면 된다.
                  위 PID 재사용에 의한 문제는 서버 뿐만 아니라, "tmshutdown"과 같은 Native client의 경우에는 발생할 수 있으면, 이경우에는 "pclt" 명령에서 PID를 확인할 수 있다.
    -----
         이슈 : TIME_WAIT 상태시간 줄이기
                TIME_WAIT 상태는 정상적인 종료 과정에서 거치게 되는 과정으로 마지막 ACK 신호를 잃어 버린 경우에 재 전송하기 위한 상태이다.
                Client/Server 환경에서는 주로 Connection-Oriented 형식으로 사용하기 때문에 이 상태에 머무르는 소켓의 개수가 많지 않지만, Connectionless 형식을 사용하는
                HTTP 환경에서는 부하에 비례하여 생기게 된다. 따라서, 부하가 많은 경우에는 이 상태에 잔류하는 소켓이 많아지게 되어 File Descriptor 개수 제한에 걸리게 된다.
         조치 : 위와 같이 TIME_WAIT에 잔류하는 소켓의 개수를 줄이기 위해서는 그 잔류시간을 줄여주는 것이 바람직하다.
                일반적으로 Unix 메신에서는 "root" 권한을 가진 사용자가 다음과 같이 "ndd" 명령을 사용하여 조회/변경이 가능하다.
                  조회시 : ndd       /dec/tcp tcp_time_wait_interval
                  변경시 : ndd-set   /dec/tcp tcp_time_wait_interval <value>
                여기서 <value>에 해당하는 값은 milli-second 단위이다.
                그리고, Windows 환경에서는 아래의 "TcpTimedWaitDelay" 값을 Registry에서 설정하면 된다.
                --------------------------------------------------------------------------------------
                  TcpTimedWaitDelay (new in Windows NT version 3.51 SP5 and later)
                          Key:Tcpip\Parameters
                          Value Type: REG_DWORD - Time in seconds
                          Valid Range: 30-300 (decimal)
                          Default: 0xF0 (240 decimal)
                --------------------------------------------------------------------------------------
                Windows 환경에서 자세한 적용 절차는 다음 URL을 참조(http://support.microsoft.com/support/kb/articles/Q120/6/42.asp)
    -----
         이슈 : FireWall을 위한 Tuxedo 구성
                FireWall은 네트워크 상에서 패킷의 전송을 제한함으로써 허가되지 않은 사용자의 접근을 방지하는 일을 한다.
                FireWall은 크게 지정된 포트를 통한 데이터 전송 만을 걸러주는 패킷 필터링(Packet Filtering) 방식과 외부에서 들어오는 패킷을 검사하여 허가된 패킷을 마치 자신이 보내는 것과 같이
                재 전송하는 프록시 방식(Proxy)으로 나뉘어 진다.(프록시 방식은 NAT-Network Address Translation-방식이라고도 부른다.)
                이런 FireWall이 클라이언트와 서버 사이에 존재할 경우에는 Tuxedo용 패킷이 FireWall을 통과할 수 있도록 하기 위한 설정이 필요하다.
         조치 : 클라이언트와의 접속을 관리하는 프로세스인 WSL에는 FireWall을 위한 두 가지 옵션이 존재한다.
                먼저, 지정된 포트만을 사용해야 하는 패킷 필터링 방식을 지원하기 위해서는 WSH가 사용하는 포트를 제한하는
                -p(min. Port), -P(max. Port) 옵션을 사용하면 된다.
                예를 들어, FireWall에서 허용된 서버의 Port가 20000부터 20050번 까지라면 WSL을 다음과 같이 정의할 수 있다.
                  예) CLOPT="-A -- -n //server:20000 -p 20001 -P 20050"
                그리고, 프록시 방식의 FireWall의 경우는 클라이언트로 보내지는 접속할 WSH의 IP Address를 지정하는 -H 옵션을 추가하여야 한다.
                예를 들어, FireWall의 외부 IP가 ppp.xxx.yyy.zzz이고, 허용된 포트가 20000에서 20050이라면 다음과 같이 설정할 수 있다.
                  예) CLOPT="-A -- -n //server:20000 -p 20001 -P 20050 -H //ppp.xxx.yyy.zzz:20000"
    -----
         이슈 : Tuxedo 6.x와 7.x의 연동성
                Tuxedo 7.x 버젼부터는 Thread 기능 지원 등을 포함하여 많은 부분이 변경되었다.
                따라서, 이번 버젼(6.x 이하)과 상호 연동을 하기 위해서는 몇 가지 작업이 필요하다.
         조치 : 상호 연동성 문제는 다음의 2가지 경우로 나눌 수가 있다.
                1) 6.x 클라이언트가 7.x 서버로 접속할 경우
                   관련 서버의 CLOPT에 "t" option이 필요(주의: -- 앞쪽에 설정 요)
                2) 7.x 클라이언트가 6.x 서버로 접속할 경우
                   환경변수 WSALLOWERE71=Y가 필요
    -----
         이슈 : Domain config의 BLOCKTIME과 Transaction timeout의 관계
                Domain간의 Transaction 처리 시에 설정된 Transaction timeout보다 먼저 TPETIME 에러가 발생하는 경우가 있다.
                그 원인은 보통 Domain config 상에 설정된 BLOCKTIME이 먼저 적용되었기 때문이다.
                Ubbconfig 상에 설정된 BLOCKTIME은 Transaction timeout이 설정되어 있으면 무시되므로 Domain config의 경우도
                그런 것으로 짐작하는 경우가 많다(실제 Tuxedo manual 상에도 그렇게 기술되어 있으며 현재 수정되어야 할 사항임).
                그러나, 실상은 이 두가지(Transaction Timeout, BLOCKTIME in Domain config) 중에 짧은 것이 먼저 영향을 준다.
         조치 : Transaction과 관련된 Domain config 설정 시 BLOCKTIME을 해당 Gateway를 통해 발생될 Transaction 중 최대로 오래
                걸리는 것을 고려하여 그 보다 크게 설정하여야 할 것으로 보임.
    -----
         이슈 : GTT full과 MAXTRANTIME
                Tuxedo MP, Domain model 사용 시 Aborted된 Transaction이 GTT(Global Transaction Table)에서 Clear 되는데 경우에 따라 Transaction timeout까지 소요될 수가 있다.
                따라서, Timeout을 불필요하게 크게 설정(예를 들어, Batch 작업관련 Service 요청 시 tpbegin에서 Transaction timeout을 0으로 설정(System의 unsigned long의
                최대값으로 약 20억초)하는 경우가 간혹 있슴)하면 위와 같이 Aborted된 Transaction들이 누적되어 ubbconfig에서 설정한 MAXGTT값을 초과, GTT full을 유발할 수 있다.
                이를 방지하기 위해서는 Application에서 tpbegin시 설정한 Transaction timeout을 적절히 작은 값으로 변경하면 되나 code 수정에 상당히 많은 시간이 소요될 수
                있으므로 빠른 조치를 위해 MAXTRANTIME이라는 Parameter를 사용하여 일괄적으로 제어할 수가 있다.
         조치 : MAXTRANTIME은 Tuxedo 8.1에서 새롭게 추가된 Parameter이며 Tuxedo 6.5의 경우에는 patch(377.CR091218 MAXTRANTIME backport)를 적용하면 사용이 가능하다.
    -----
         현상 : 164527.chaeju!GWTDOMAIN.3253: gtrid x0 x39d05191 x16d: LIBGW_CAT:1029: ERROR: Service request not forwarded to remote site:"TPESVCERR - server error while handling request" gwerrno(402019)
                Tuxedo 6.4 295+, Tuxedo 6.5 226+가 적용되었음에도 "maximum action table size reach" 에러 이후 remote domain으로 call이 되지 않는다.
         원인 : pt 정보가 계속 남아있고 GWTDOMAIN에 Message queue가 Clear되지 않고 Remote domain으로 call이 되지 않는다.
         조치 : DMTLOGSIZE가 충분치 않은 경우 발생하므로 크기를 늘려주면 해결된다.
                Action table size는 내부적으로 10000으로 되어 있는데 Tuxedo 7.1+ 부터는 환경변수 TUX_GW_ACTMAX를 통하여 설정.
    -----
         현상 : 211448.chaeju!WSH.23453.1.0: LIBTUX_CAT:6031: ERROR: Unable to pre-process buffer before tranmission. Error code(12/3951)
                211448.chaeju!WSH.23453.1.0: WSNAT_CAT:1148: ERROR: Processing of message to be sent to client failed.
                211448.chaeju!WSH.23453.1.0: WSNAT_CAT:1029: ERROR: Sending of reply message to client failed.
         원인 : 64-bit Tuxedo 8.0에서 서비스 요청 시 Client가 Hang이 걸리는 경우 Data type이 맞지 않아 발생
         조치 : 1.32-bit Tuxedo 8.0으로 바꿔서 테스트 시 정상
                2.FML의 Field type은 long으로 Fchg()시 넣어주는 변수는 int로 사용한 경우 발생 프로그램 에러로 Data type를 맞춰주면 된다.
                  *-----------------------------*
                  |          Data type          |
                  |-----------------------------|
                  |    유형   | 32-bit | 64-bit |
                  |-----------+--------+--------|
                  | Char      |    8   |    8   |
                  | short     |   16   |   16   |
                  | int       |   32   |   32   |
                  | long      |   32   |   64   |
                  | long long |   64   |   64   |
                  | pointer   |   32   |   64   |
                  *-----------------------------*
    -----
         현상 : 194052.chaeju!JSH.21995: gtrid x0 x3a8107dd x13: JOLT_CAT:1043: ERROR:tpacall() call failed, tperrno = 13
                Transaction 업무인 경우는 Session 상태를 계속 유지해야 하므로 해당 Transaction이 끝나기 전까지 다른 Transaction이
                같은 Session을 사용할 수 없다. 하지만 Transaction이 아닌 경우는 같은 Jolt session을 사용할 수 있다.
                그리고, Jolt connection pool은 요청이 들어왔을때 해당 Session이 Idle하지 않은 경우에 다음 Session으로 요청을 넘긴다.
         원인 : 프로그램(Servlet/EJB)에서 Transaction을 시작한 후 Rollback 또는 Commit을 하지 않은 상태로 끝난 후 Transaction mode가 아닌 요청이 들어온 경우 발생한다.
                또한 위의 경우 에러가 바로 발생하므로 Transaction 상태에 있지만 해당 Session은 Idle하므로 계속적으로 Request를 처리하고 에러를 발생시킨다.
                결과적으로 많은 요청이 계속적으로 안되는 것으로 보인다.
         조치 : 1.해당 JSH를 Kill 시키면 정상적으로 수행됨.
                2.프로그램에서 시작한 Transaction에 대한 Commit/Rollback이 빠져 발생하는 것이므로 관련 프로그램에서 이를 반영하면 된다.
    -----
         이슈 : long과 char에 대한 대응 Jolt data type 정의 시
                Jolt와 Tuxedo에서 지원하는 Data type을 보면 Jolt에 long data type이 없고, 또한 32-bit와 64-bit의 경우 long의 크기가 다르다. 그리고 C/C++에서의 char data type은 1 byte이나 Java에서 char data type은 2 byte이다.
                *-------------------*   *----------------------------*
                |       Jolt        |   |           Tuxedo           |
                |-------------------|   |----------------------------|
                | 데이터형 |  크기  |   | 데이터형 | 32-bit | 64-bit |
                |----------+--------|   |----------+--------+--------|
                | byte     | 1 byte |   | char     | 1 byte | 1      |
                | string   |        |   | string   |        |        |
                | short    | 2 byte |   | short    | 2      | 2      |
                | integer  | 4 byte |   | int      | 4      | 4      |
                | float    | 4 byte |   | long     | 4      | 8      |
                | double   | 8 byte |   | float    | 4      | 4      |
                | carray   |        |   | double   | 8      | 8      |
                *-------------------*   *----------------------------*
         조치 : 1.Long data type
                  Tuxedo가 32-bit인 경우는 Jolt의 Integer data type을 사용
                  Tuxedo가 64-bit인 경우는 Jolt의 Double data type을 사용
                2.Char data type 처리
                  Java "char" primitive type은 16-bit Unicode 값이나 C/C++는 8-bit ASCII 기반의 값이다.
                  이러한 차이 때문에 Java에서 "char"가 아닌 "byte"를 사용해야 한다. "char"를 위해서는 다음 Method를 addByte, setByte, setByteItem, getByteDef, getByteItemDef
    -----
         이슈 : Oracle7과 Oracle8의 XA 구현 비교
                *----------------------------------------------------------------------------------------------------*
                |              내용              |     Oracle 7.x    |          Oracle 8.x          |      비고      |
                |--------------------------------+-------------------+------------------------------+----------------|
                | XA를 통한 사용자에게 꼭 권한을 | sys.v$xatrans$    | sys.v$xatrans$               |                |
                | 부여해야 되는 XA 관련 View     |                   | sys.dba_pending_transactions |                |
                |--------------------------------+-------------------+------------------------------+----------------|
                | tpopen() 시에 Session 수       | 2 개              | 1 개                         | 7.x에서는 처음 |
                |                                |                   |                              | SQL을 처리시에 |
                |                                |                   |                              | 세션이 추가 됨 |
                |--------------------------------+-------------------+------------------------------+----------------|
                | Oracle Parameter               |                   |                              |                |
                | - Process 수                   | (XA+NXA)서버수*1  | (XA+NXA)서버수*1             |                |
                | - Session 수                   | XA서버수*3+a      | XA서버수*1                   |                |
                |                                | NXA서버수*1       | NXA서버수*1                  |                |
                |--------------------------------+-------------------+------------------------------+----------------|
                | OPENINFO에서 SesCashSZ 값      | Default = 20      | 필요없음                     |                |
                |                                | Resource가 부족할 | 이유) Session이 1개로 관리됨 |                |
                |                                | 경우 Oracle에서   |                              |                |
                |                                | 0으로 설정할 것을 |                              |                |
                |                                | 권장하지만 속도   |                              |                |
                |                                | 저하 유발할 수도  |                              |                |
                |                                | 있다고 함.        |                              |                |
                *----------------------------------------------------------------------------------------------------*
         조치 : DBMS가 Oracle 8.x인 경우 참조/주의해야 할 사항
                1.DB Link를 사용하는 Logic을 XA Interface를 통해서 트랜잭션 제어를 받아야 하는 경우에는 관련된 Oracle
                  Instance의 환경을 MTS 방식으로 설정이 되어 있어야 함(Oracle 7.x도 동일함).
                2.Oracle 8.0.4에서는 Oracle child process 메모리 증가, Cursor를 통한 Fetch 중에 다른 서비스를 호출하는 경우
                  오류 등 검증 안된 문제점이 있는 것으로 보이므로 고객에 Oracle 8.0.5로 Upgrade할 것을 요청할 것
                3.Oracle 8.x에서는 EXEC SQL... 문을 수행한 후 결과가 실패(sqlca.sqlcode < 0)인 경우 Signal을 발생시키므로
                  SQL문 다음에 서비스를 호출하는 경우 플래그에 "TPSIGRSTRT"를 설정한 후 서비스 호출을 하여야 함.
                  그렇지 않은 경우 서비스 호출 시에 "TPGOTSIG" 오류가 발생함.
                4.Oracle 8.x에서는 Oracle 7.x보다 XA 관련 View(v$xatrans$, dba_pending_transactions)에 대해서 Lock이 자주 발생하기 때문에 TMS server booting 시에 오랜 시간이 걸려도 start 되지 않는 경우에
                  view에 Select query를 보내어서 결과를 Check할 것.
                  운영중에 Tuxedo admin이 Kill signal 또는 IPC를 통해 XA 관련 Server process를 비정상적으로 Shutdown 했을 때 두 View에 Lock 발생빈도가 높은 것으로 보임.
    -----
         현상 : 130544.hub2!IISERVER.32508: iiserver.cpp: Error connecting to DBMS Location(HUB) UserId(iio) Psw(**secret**) Instance() Type(9)
                130544.hub2!IISERVER.32508: iiserver.cpp: DBMS error 539480360 [ORA-12541: TNS:no listener]
         원인 : Oracle listener가 기동되어 있지 않은 경우에 발생
         조치 : DBA에게 Oracle listener를 기동시켜 달라고 요청
    -----
         현상 : 154551.telesky1!SVC.983: 04062001: TUXEDO Version 6.5 HP-UX  B.11.00 U 9000/898 1623623321 unlimited-user license.
                154551.telesky1!SVC.983: LIBTUX_CAT:262: INFO: Standard main starting
                154551.telesky1!SVC.983: GP_CAT:214: ERROR: Null version of xa_open() found non-null info string
                154551.telesky1!SVC.983: LIBTUX_CAT:466: ERROR: tpopen TPERMERR xa_open returned XAER_INVAL
                154551.telesky1!SVC.983: LIBTUX_CAT:1353: ERROR: tpopen failed - TPERMERR - resource manager error
                154551.telesky1!SVC.983: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
         원인 : 서버 컴파일시 -r Oracle_XA옵션 생략했을 경우을 발생(서버가 부팅이 않됨)
         조치 : make file의 buildserver 부분에서 다음에 -r Oracle_XA 옵션을 추가한다.
    -----
         현상 : TMADMIN_CAT:188: ERROR: Error while obtaining the Bulletin Board parameters
                083920.hubsr13!tmadmin.41650: LIBTUX_CAT:603: ERROR: TUXCONFIG file /eai/dev/wle/env/tuxconfig does not exist
                083920.hubsr13!tmadmin.41650: LIBTUX_CAT:588: ERROR: Unable to open TUXCONFIG file
         원인 : TUXCONFIG 파일이 디렉토리(/eai/dev/wle/env/tuxconfig)에 존재하지 않을 경우에 발생
         조치 :
    -----
         현상 : 103226.sgim32!tmboot.6693106.1.-2: WARN: internal error: CMDTUX_CAT:1267: ERROR: Cannot start/stop servers, Memory allocation failure
                103226.sgim32!tmboot.6693106.1.-2: WARN: internal error: CMDTUX_CAT:804: ERROR: Cannot start TMS servers, error reading *GROUP section
         원인 : tmboot시 Resource가 부족하여 메모리 할당을 받지 못한 경우에 발생
         조치 : System resource를 확인하여 메모리를 재할당한다.
    -----
         현상 : 035915.sgim32!tmboot.835746.1.-2: LIBTUX_CAT:1376: WARN: APPDIR value "/u3201/develp/oltp/BIN" in environment does not match configuration "/u3201/develp/oltp/TESTBIN"
         원인 : Tuxedo 환경변수 중 APPDIR의 설정값과 Tuxedo 구성파일에서 설정한 값이 다른 경우에 발생.
         조치 : Tuxedo 환경변수 중 APPDIR의 설정값과 Tuxedo 구성파일에서 설정한 값을 확인한 후 올바른 APPDIR의 설정값을 지정한다.
    -----
         현상 : 035917.sgim32!tmboot.835746.1.-2: CMDTUX_CAT:1578: ERROR: Could not contact NLS on SGIM32
                035917.sgim32!tmboot.835746.1.-2: CMDTUX_CAT:1576: ERROR: No NLS available for remote machine SGIM32
         원인 : SHM 모드인데, MP로 지정한 경우에 발생.
         조치 : Tuxedo 구성파일의 RESOURCES 절의 파라미터 중 MODEL의 설정값을 SHM으로 한다.
    -----
         현상 : 103916.sgim32!TMS_ORACLE9.4661364.1.0: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
                103916.sgim32!TMS_ORACLE9.4661364.1.0: LIBTUX_CAT:300: ERROR: _tlog_open: _gp_tblopen: UNIX sys call error - 2
         원인 : 1.Database 계정(User-ID/Password)이 다른 경우
                2.TMS_ORACLE9가 TUXDIR/bin에 존재하지 않는 경우에 발생.
         조치 : 1.Database 계정(User-ID/Password)을 확인한 후 올바른 계정을 설정한다.
                2.buildtms를 이용하여 TMS_ORACLE9를 생성한 뒤 TUXDIR/bin에 복사한다.
    -----
         현상 : 101930.id!hccrpi002.5890: LIBTUX_CAT:323: ERROR: Invalid data length of 0, data not self describing
                101930.id!hccrpi002.5890: LIBTUX_CAT:1286: ERROR: tpreturn could not send reply TPEINVAL - invalid arguments given
         원인 :
         조치 :
    -----
         현상 : 121452.kahp2511!BBL.641: LIBTUX_CAT:563: ERROR: Unable to exec /tuxedo/bin/restartsrv -g4 -i9602  - errno=12
                121452.kahp2511!BBL.641: LIBTUX_CAT:550: WARN: Cleaning up restartable server GRP2B/9602
                121452.kahp2511!BBL.641: LIBTUX_CAT:555: ERROR: Unable to exec /tuxedo/bin/cleanupsrv -g4 -i9602 - errno=12
                121452.kahp2511!BBL.641: BULLETIN BOARD entry for server removed  GRP=GRP2B    ID=9602    GEN=1    AOUT=/hcp/bin/hcaepw001  PID=22605
         원인 : 이용할 메모리가 없음. 메모리 용량을 다 썼으므로 시스템이 더이상 메모리를 할당할 수 없다.
                서비스 프로그램에서 tpalloc() 함수를 사용하고 tpfree()함수를 사용하여 할당 받은 메모리를 해제하지 않은 경우 발생.
         조치 : 서비스 프로그램을 수정(tpalloc() 함수를 사용하고 tpfree()함수를 사용하여 할당 받은 메모리를 해제하도록)한다.
    -----
         현상 :     exec s_a2e003 -A -r -p 1,3:3,10 -o /eai/dev/wle/log/s_a2e003.out :
                on HUB2 -> CMDTUX_CAT:816: ERROR: Cannot exec, executable file not found
                on HUB1 -> CMDTUX_CAT:819: INFO: Process id=34556 Assume started (pipe).

                154613.hubsr13!s_a2e003.37890: 06122003: TUXEDO Version 6.5 AIX  2 4 007025954C00.
                154613.hubsr13!s_a2e003.37890: LIBTUX_CAT:1416: ERROR: Server group active on primary location
                154613.hubsr13!s_a2e003.37890: LIBTUX_CAT:248: ERROR: System init function failed, Uunixerr = : msgctl: Error 0
                154613.hubsr13!s_a2e003.37890: LIBTUX_CAT:745: ERROR: Process not attached to a Bulletin Board
                154613.hubsr13!DBBL.26682: ERROR: msgsnd err:(LIBTUX_CAT:669: ERROR: Message operation failed because of the invalid message queue identifier) errno=22,qid=1310763,buf=538523864,bytes=50,flag=2048
                154613.hubsr13!DBBL.26682: CMDTUX_CAT:401: ERROR: service request ..MASTERBB handled by DBBL failed, : msgsnd: Invalid argument
         원인 : s_a2e003 실행파일의 실행권한이 없는 경우에 발생.
         조치 : s_a2e003 실행파일에 실행권한을 부여한다.(chmod 777 s_a2e003)
    -----
         현상 : 195331.AP1!TMS_OR9_OVER.15563.1.0: 07-09-2003: Tuxedo Version 8.0
                195331.AP1!TMS_OR9_OVER.15563.1.0: LIBTUX_CAT:262: INFO: Standard main starting
                195331.AP1!TMS_OR9_OVER.15563.1.0: LIBTUX_CAT:466: ERROR: tpopen TPERMERR xa_open returned XAER_RMERR
                195331.AP1!TMS_OR9_OVER.15563.1.0: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
                195331.AP1!TMS_OR9_OVER.15563.1.0: LIBTUX_CAT:300: ERROR: _tlog_open: _gp_tblopen: UNIX sys call error - 2
         원인 : Oracle의 listener가 떠 있지 않은 경우에 발생.
         조치 : Oracle Admin에거 Oracle의 listener 기동 요청.
    -----
         현상 : 143152.AP1!TMS_OR9_AUTH.2150.1.0: LIBTUX_CAT:467: ERROR: tpclose TPERMERR xa_close returned -7
                143152.AP1!TMS_OR9_AUTH.2150.1.0: CMDTUX_CAT:457: INFO: TMS tpsvrdone complete
         현상 : ORA-03113: end-of-file on communication channel
         원인 : 1.Database의 Instance가 Shutdown 된 경우에 발생.
                2.이전에 작동했던 해당 instance의 shared memory segment들이 아직 system에 남아있어서 발생.
         조치 : 1.DBA에게 Database의 상태를 확인하고, Instance가 Shutdown된 경우 해당 Instance를 재기동하고, Tuxedo의 해당 서버를 재기동한다.
                2.shared memory를 check하여 oracle이 소유하고 있는 shared memory segment를 삭제하여 문제를 해결.
    -----
         현상 : 153129.hubsr13!tlisten.29692: CMDTUX_CAT:4209: INFO: Accepted request from //10.55.2.121:47541, seq # 102
                153132.hubsr13!BBL.95310: CMDTUX_CAT:1384: WARN: O_IMOK message could not be sent to DBBL, tperrno= 12
                153135.hubsr13!DBBL.113154: CMDTUX_CAT:655: INFO: Exiting system for migration from hubsr13 to hubsr14
                153139.hubsr13!tlisten.29692: CMDTUX_CAT:4209: INFO: Accepted request from //10.55.2.121:47542, seq # 103
         원인 : Migration하기 위해 Master를 변경하기 위해 "-m yes"할 때 발생(Tuxedo 6.5)
         조치 :
    -----
         현상 : BOSDB [ta@BEST_BOS:/BEST/env] $ cat tlisten.sh
                tlisten -l //21.98.245.22:7002
                BOSDB [ta@BEST_BOS:/BEST/env] $ tlisten.sh
                exec(): 0509-036 Cannot load program tlisten because of the following errors:
                        0509-150   Dependent module /tuxedo/bea/tuxedo8.0/lib/libgpnet.so could not be loaded.
                        0509-103   The module has an invalid magic number.
         원인 : tlisten을 기동시킬 때 발생(Tuxedo 32Bit를 설치한 후 64Bit로 올린 후 발생)
         조치 : Tuxedo 32Bit 잔재가 남아서 발생하므로, Tuxedo가 설치된 Directory를 삭제후 재설치하면 된다.
    -----
         현상 : 175733.hubsr13!tlisten.39824: 07222003: TUXEDO Version 6.5 AIX  2 4 007025954C00.
                175733.hubsr13!tlisten.39824: CMDTUX_CAT:4281: ERROR: Cannot read password file "/eai/wle/udataobj/tlisten.pw" (errno=13)
         원인 : tlisten.pw의 파일 퍼미션이 없기 때문에 발생.
         조치 : chmod 명령어를 사용하여 tlisten.pw의 파일 퍼미션을 조정한다.
    -----
         현상 : 205335.hubsr14!BSBRIDGE.21488: 07222003: TUXEDO Version 6.5 AIX  2 4 007025954C00.
                205335.hubsr14!BSBRIDGE.21488: LIBTUX_CAT:680: ERROR: Effective UID or GID does not match bulletin board
                205337.hubsr14!BSBRIDGE.21488: LIBTUX_CAT:262: INFO: Standard main starting
                205337.hubsr14!BSBRIDGE.21488: CMDTUX_CAT:1178: ERROR: Mismatch on uid/gid from connecting bridge
                205337.hubsr14!BSBRIDGE.21488: CMDTUX_CAT:1373: ERROR: Abnormal disconnect from hubsr13
                205337.hubsr14!BSBRIDGE.21488: CMDTUX_CAT:473: ERROR: Could not find DBBL
                205337.hubsr14!BSBRIDGE.21488: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
                205339.hubsr14!BBL.26368: 07222003: TUXEDO Version 6.5 AIX  2 4 007025954C00.
                205339.hubsr14!BBL.26368: LIBTUX_CAT:583: ERROR: Not a privileged user, incorrect permissions
         원인 : ubbconfig에 설정된 UID, GID가 다른 경우에 발생.
         조치 : "hubsr14" 머신에서 "id" 명령어를 사용하여 UID, GID를 확인한 후 ubbconfig에서 "hubsr14" 머신의 UID, GID를 조정한다.
    -----
         현상 : 212637.hubsr13!IISERVER.21372: Advertising service S_A2A005 [S_A2A005,FF_A2A05_I01,,,]
                212637.hubsr13!IISERV핬R.21372: Attempting to connect to DB Loc(HUB) User(hubiio) Psw(hubiio) Inst() Type(9)
                212637.hubsr13!IISERVER.21372: Done connecting session object=2023afd8
                212637.hubsr13!IISERVER.21372: iiserver.cpp: Error connecting to DBMS Location(HUB) UserId(hubiio) Psw(**secret**) Instance() Type(9)
                212637.hubsr13!IISERVER.21372: iiserver.cpp: DBMS error 539780408 [ORA-12154: TNS:could not resolve service name]
                212637.hubsr13!IISERVER.21372: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
         원인 : IIO에서 사용하는 DB listener가 기동되어 있지 않은 경우에 발생.
         조치 : DB Admin에게 IIO에서 사용하는 DB listener가 기동을 요청.
    -----
         현상 : WSNAT_CAT:1052: ERROR: Failed to process network event
         원인 : Tuxedo library 오류(반복적으로 계속해서 오류가 발생한 경우는 Patch level를 확인).
         조치 : 최신의 Jolt patch를 해야 한다.
    -----
         현상 : TMADMIN_CAT:188: ERROR: Error while obtaining the Bulletin Board parameters
                180504.hubsr13_svc!tmboot.35962: 07232003: TUXEDO Version 6.5 AIX  2 4 007025954C00.
                180504.hubsr13_svc!tmboot.35962: LIBTUX_CAT:594: ERROR: Unable to locate PE entry in the Bulletin Board
                180504.hubsr13_svc!tmboot.35962: FATAL: internal error: CMDTUX_CAT:754: ERROR: error processing configuration file
                180504.hubsr13_svc!tmboot.35962: FATAL: internal error: CMDTUX_CAT:1360: ERROR:configuration file not found
         원인 : ubbconfig에 설정한 물리적 머신명과 서버의 이름("uname -n")이 다른 경우에 발생.
         조치 : 서버의 이름을 "uname -n" 명령어를 사용하여 확인한 후 ubbconfig에 설명한 물리적 머신명을 조정한다.
    -----
         현상 : 171703.hubsr13_svc!IISERVER.93998: Service S_A2E001 failed
                171703.hubsr13_svc!IISERVER.93998: Actions.cpp[130]: ELINK_EAPP_API(1056): Mandatory input field 'STR005' not found
         원인 : Data Formatting이 잘못 정의된 경우에 발생
         조치 : 전문메시지의 Layout과 Data Format에 정의된 내용을 비교하여 처리.
    -----
         현상 : 172531.hubsr14_svc!IISERVER.70936: Service S_A2E001 failed
                172531.hubsr14_svc!IISERVER.70936: Actions.cpp[538]: ELINK_EAPP_API(1078): Sub-control Error: 'No input data, and no data producing behavior specified.Input Field: STR006, Output Field: STR006'
         원인 : STR006의 Control이 등록되어 있지 않은 경우에 발생
         조치 : STR006의 Control를 확인한 후 등록.
    -----
         현상 : 091631.hubsr13_svc!IISERVER.123760:     [  40 ] Field='STR041', Data_Type=Ascii_String, Data='', Data_Length=0', Byte Offset=100
                091631.hubsr13_svc!IISERVER.123760: Service S_A2A003 failed
                091631.hubsr13_svc!IISERVER.123760: Actions.cpp[538]: ELINK_EAPP_API(1003): 592 trailing characters
         원인 : 입력 전문메시지가 Data Format에 정의된 전문메시지보다 적은 메시지가 들어오는 경우에 발생.
         조치 : 입력 전문메시지를 확인
    -----
         현상 : 090725.hubsr13_svc!GWTDOMAIN.98610: LIBGWT_CAT:1303: ERROR: Network error occurred during connection establishment
         원인 :
         조치 :
    -----
         현상 : 200906.hubsr14_svc!tmadmin.58942: TMADMIN_CAT:1330: INFO: Command: pcl HUB13
                200906.hubsr14_svc!DBBL.118708: CMDTUX_CAT:1429: INFO: Forcing check of all BBLs
                200916.hubsr14_svc!DBBL.118708: CMDTUX_CAT:692: ERROR: Cannot retrieve BBL entry for pclean operation
         원인 : HUB13의 장애로 인하여 HUB14로 그룹 마이그레이션을 수행하여 HUB13에 대한 pclean을 수행한 경우 발생
         조치 : 오류가 아님. 왜냐하면 HUB13의 Resource가 HUB14로 되었기 때문.
    -----
         현상 : 103628.hubsr14_svc!BBL.27990: CMDTUX_CAT:42: WARN:BBL failed to wake up the blocking process - 28190
         원인 : timeout 발생 시점 경에 BBL의 timeout 처리와 application server의 service 수행 종료간의 race condition에 의해 발생
                1.Transaction timeout 발생
                2.BBL이 해당 상황을 감지(timeout에 해당되는 message을 발견)하고 timeout 처리할 것으로 판단
                3.동시에 서비스는 Client에게 tpreturn
                4.Client는 tpreturn을 먼저 접수하고 2번의 해당 Message를 서비스 처리된 성격의 메시지로 설정 변경
                5.BBL은 2번의 결정에 따라 blocking 되어 있을 것이라 생각되는 client로 wake up 시도(timeout된 해당 message를 client로 전달).
                  이 때는 message 정보가 4번에 의해 바뀌었으므로 bad message type 에러를 발생 시킴.
         조치 : 에러는 발생하였지만 운영 상에 문제는 없는 것으로 추후 Patch될 예정
    -----
         현상 : 190332.hubsr13_svc!AUTHSVR.99692: CMDTUX_CAT:4130: INFO: Authentication failed for user tuxedo/joltadmin
         원인 : Jolt Repository Edit에서 Security 사용시 User-ID가 잘못 지정된 경우 발생
         조치 :
    -----
         현상 : ld: Unsatisfied symbol "fe_get_sex" in file /SRC/HIMED/object/acr02sv.a[acr4130q.o]
                ld: Unsatisfied symbol "fe_get_yymmdd_interval" in file /SRC/HIMED/lib/lib_e.a[clinic.o]
         원인 : Compile시 라이브러리 링크 순서가 잘못 지정된 경우 발생
         조치 : Compile시 라이브러리 링크 순서를 변경하여 Compile한다.
    -----
         현상 : 121725.JILEE!?proc.3156: NLS:4: Cannot open message catalog LIBWSC_CAT, set 1, num 1055; check TUXDIR=C:\bea\tuxedo6.2, LANG=Korean_Korea.949
                121725.JILEE!?proc.3156: NLS:4: Cannot open message catalog LIBWSC_CAT, set 1, num 1027; check TUXDIR=C:\bea\tuxedo6.2, LANG=C
                121725.JILEE!?proc.3156: NLS:4: Cannot open message catalog LIBWSC_CAT, set 1, num 1020; check TUXDIR=C:\bea\tuxedo6.2, LANG=C
         원인 : Tuxedo version 차이에 의해서 발생.
         조치 : 클라이언트 환경변수(tux.env)에 "WSINTOPPRE71=yes"을 설정하고, Tuxedo 구성 파일(ubbconfig)에서 WSL의 CLOPT에 "-t" Option을 추가한다.

    출처 : Tong - addition님의 기본통

    336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
    Nikon D80, 62mm, 1/80s, f5.3, ISO100, Auto WB
    쓸쓸하다 gallar(Y)/기타 2009. 7. 2. 15:57
    336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
    Nikon D300, 28mm, 1/100s, f16, ISO400, Auto WB
    336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

    Nikon D300, 28mm, 1/50s, f16, ISO400, Manual WB
    . gallar(Y)/하트 ^^ 2009. 7. 2. 15:50
    336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

    Nikon D80, 35mm, 1/200s, f5.6, ISO100, Manual WB