336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

시골청년 이 작성.

원문 : http://xinet.kr/tc/132



현재 거의 모든 서버들은 랜카드가 1G를 지원한다

하지만 백업서버나 대역폭을 요구하는 서버의 경우 1G 이상이 필요한데

그렇다고 10G 랜카드를 살수 없는것이고. 이럴때 사용하는 기능이 bonding  기술이다

리눅스에서 간단하게 구성할수 있다

환경 : CENTOS 


1. bond1 인터페이스 추가

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0  

DEVICE=bond0
IPADDR=10.10.10.66
NETMASK=255.255.255.0
BROADCAST=10.10.10.255
GATEWAY=10.10.10.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=4 miimon=100"


저장

위에 옵션에서 mode 부분은 bond의 모드 부분이다

    [Bonding 모드 종류]

     0 : balance-round robine ( 2개의 NIC 통한 분배 +  Fault Tolerance )

        1 : active-standby ( Active상태의 NIC에 문제 발생시 Fault Tolerance )

     2 : balance-xor ( 0 비슷하지만 xor연산을 이용한 목적지 Mac 근원지 Mac 이용한

                 분배 +    Fault tolerance)

    3 : broadcast ( 2개의 NIC 어떤 규칙 없이 데이터 통신 +  Fault Tolerace)

       4 : 802.3ad (link aggregation) – switch  aggregation 그룹생성이 필요




2. 실제 인터페이스 랜카드 eth0 / eth1 내용 수정

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes


[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes


네트워크 환경 설정 파일 내용 추가

[root@localhost ~]# vi /etc/sysconfig/network
추가
GATEDEV=bond0


3. 모듈 구성 

[root@localhost ~]# vi /etc/modprobe.conf 

추가
alias bond0 bonding
options bond0 miimon=100

[root@localhost ~]# modprobe bonding

[root@localhost ~]# lsmod | grep bonding
bonding               126649  0 
ipv6                  432161  26 bonding,ip6t_REJECT


4. 네트워크 재시작 ( 여기서 네트워크를 재시작시 네트워크가 끊기는 현상이  있으니 로컬에서 작업하는것을 추천)

[root@localhost ~]# service network restart

5. 인터페이스 확인

bond0     Link encap:Ethernet  HWaddr 00:16:17:A2:F8:EB  
          inet addr:10.10.10.1  Bcast:10.10.10.255  Mask:255.255.255.0
          inet6 addr: fe80::216:17ff:fea2:f8eb/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:172575 errors:0 dropped:0 overruns:0 frame:0
          TX packets:239301 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:16180948 (15.4 MiB)  TX bytes:28025443 (26.7 MiB)

eth0      Link encap:Ethernet  HWaddr 00:16:17:A2:F8:EB  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:164853 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57261 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15280216 (14.5 MiB)  TX bytes:7327202 (6.9 MiB)
          Interrupt:169 Memory:dd100000-dd110000

eth1      Link encap:Ethernet  HWaddr 00:16:17:A2:F8:EB  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:7722 errors:0 dropped:0 overruns:0 frame:0
          TX packets:182040 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:900732 (879.6 KiB)  TX bytes:20698241 (19.7 MiB)
          Interrupt:193 Memory:dd310000-dd320000

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:223 errors:0 dropped:0 overruns:0 frame:0
          TX packets:223 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:55612 (54.3 KiB)  TX bytes:55612 (54.3 KiB)


실제 인터페이스는 2개이며 가상의 bond0 이라는 인터페이스 생성되었다
bond0의 인터페이스는 master이며 실제 물리적 인터페이스는  slave로 표시가 된다

그러면 이제 bonding 이 잘되었는지 확인해 본다



[root@localhost ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Active Aggregator Info:
        Aggregator ID: 3
        Number of ports: 2
        Actor Key: 17
        Partner Key: 1
        Partner Mac Address: 28:c0:da:37:69:00

Slave Interface: eth0
MII Status: up
Link Failure Count: 3
Permanent HW addr: 00:16:17:a2:f8:eb
Aggregator ID: 3

Slave Interface: eth1
MII Status: up
Link Failure Count: 4
Permanent HW addr: 00:16:17:a2:f8:ea
Aggregator ID: 3



위에서 bond모드를 4로 지정을 해서 802.3ad가 나온다 ( 상단에서 LACP기능을 구현)
만약 모드를  1로 지정할 경우 Round robin으로 나올것이다


리눅스 자체 서버에서  2G로 통신이 되는지는 확인할수 가 없어 상단 LACP를 구현한 
SW에서 확인

root# run show interfaces ae0         
Physical interface: ae0, Enabled, Physical link is Up
  Interface index: 154, SNMP ifIndex: 162
  Link-level type: Ethernet, MTU: 1514, Speed: 2000mbps, BPDU Error: None, MAC-REWRITE Error: None, Loopback: Disabled,

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



cd etc/rc.d/init.d

chkconfig --level=2345 iptables off

- rc2.d, rc3.d, rc4.d, rc5.d에 iptables관련 스크립트가 K로 시작하게 변경됨

runlevel 2,3,4,5에서 iptables가 구동 되지 않는다.


chkconfig --level=2345 iptables on

- rc2.d, rc3.d, rc4.d, rc5.d에 iptables관련 스크립트가 S로 시작하게 변경됨

runlevel 2,3,4,5에서 iptables가 구동된다.


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

- 모듈 컴파일을 위한 kernel source 가져오기

1. root 계정에서 yum으로 kernel-devel을 설치 하면 됨

yum install kernel-devel 

2. 끝. ( 더이상 바라지 마세요. /usr/src/kernel/{커널버전} 에 설치 된겁니다. ) 

- 어떠한 이유가 되었든 (공부를 위해서...) 전체 kernel source가 필요할때,

1. root 계정에서 아래 명령들 yum으로 설치
 
yum install rpm-build redhat-rpm-config unifdef 

2. 일반 계정에서 아래 명령어 실행 (root만 아니면 됩니다)

[user@host]$ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} [user@host]$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

[user@host]$ rpm -i http://vault.centos.org/6.2/updates/Source/SPackages/kernel-2.6.32-220.4.1.el6.src.rpm 2>&1 | grep -v mockb
-- 위에 kernel-2.6.32-220.4.1.el6.src.rpm 부분은 설치할 kernel 버전에 맞춤

[user@host]$ cd ~/rpmbuild/SPECS [user@host SPECS]$ rpmbuild -bp --target=`uname -m` kernel-2.6.spec 2> prep-err.log | tee prep-out.log

3. 명령 실행 후 별 Action이 없으면 실패이다. prep-err.log를 확인하기 바란다. 나 같은 경우는 디펜던시가 걸려 추가로 필요한 패키지를 더 설치 하였다. 그리고 다시 2번 마지막 명령을 재실행 하여 끝냈다. 만약 정상 설치가 되었다면 4번으로...

[user@host] $ cat prep-err.log 
error: Failed build dependencies:
asciidoc is needed by kernel-2.6.32-220.4.2.el6.x86_64
newt-devel is needed by kernel-2.6.32-220.4.2.el6.x86_64

3. 정상적으로 위 명령이 실행 되고 나면 ~/rpmbuild/BUILD/ 디렉토리에 보면 원하던 소스가 있을 것이다.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

원문  : http://kr.blog.yahoo.com/polinlove/178 
제목 : 
운전자.. 이것 모르면 반드시 후회한다.

매년 새해가 되면 달라지는 제도나 법규가 신문이나 방송뉴스를 통해 알려지고 있지만 정작 운전자들은 흘려 듣는 경우가 많다. 

 그것은 현재 운전을 하고 있지만 단속에 적발되지 않아서 더욱 그럴법도 한 대 정작 적발이 되고 나면 언제 법이 바꿨나요 항의하는 경우가 대부분이다.
운전자라면 누구나 관심을 가져야 하는 것이 달라지는 관련 법규정이다. 
 올해는 자칫 소홀히 지나치고 가다간 큰 낭패를 볼 만한 굵직한 관련법이 변경되어 운전자라면 관심을 가져야 후회하는 일이 없을 것이다. 


◈ 2011년 1월 1일부터 시행되고 있는 교통법규
?
    
오전 8시부터 오후 8시까지 학교 주변 어린이 보호구역 내 도로에서 통행금지· 제한위반, 주·정차 위반, 속도위반, 신호·지시위반, 보행자보호의무 불이행 등의 위반시 교통범칙금이 배로 강화된 것이다.


▶ 통행금지?제한 위반의 경우 

승합자동차 등은 일반도로에서 5만원이지만 보호구역내에서는 9만원이며, 승용자동차 등은 일반도로에서 4만원인 반면 보호구역에서는 8만원이며, 이륜자동차 등은 일반도로에서 3만원인 반면 보호구역에서는 6만원의 범칙금을 물게 된다.

▶주?정차위반의 경우 

승합자동차등은 일반도로에서 5만원, 보호구역에서는 9만원이 적용되고, 승용자동차등은 일반도로에서는 4만원, 보호구역에서는 8만원이 적용된다. 이륜차자동차등은 일반도로에서 3만원, 보호구역에서는 6만원이 적용된다.(구체적인 내용은 아래표 참조)

《 범칙금 》(시행령 별표 7)

위 반 행 위

승합자동차등

승용자동차등

이륜자동차등

자전거등

일반
도로

보호구역

일반
도로

보호구역

일반
도로

보호구역

일반
도로

보호구역

통행금지?제한 위반

5만원

9만원

4만원

8만

3만

6만

2만

4만

주?정차 위반

5만원

9만원

4만원

8만

3만

6만

2만

4만

속도위반

40km/h 초과

10만원

13만원

9만원

12만원

6만

8만원

-

-

20~40km/h

7만원

10만원

6만원

9만원

4만

6만원

-

-

20km/h 이하

3만원

6만

3만원

6만

2만

4만

-

-

신호?지시위반

7만원

13만원

6만원

12만

4만

8만

3만

6만

보행자보호의무

불이행

횡단보도

7만원

13만원

6만원

12만

4만

8만

3만

6만

일반도로

5만원

9만원

4만원

8만

3만

6만

2만

4만


《 운전면허 벌점 》(시행규칙 별표 28)

위반행위

일반도로

어린이보호구역

속도 위반

40km/h 초과

30점

60점

20~40km/h

15점

30점

20km/h 이하

없음

15점

신호?지시위반

15점

30점

보행자보호의무 불이행

횡단보도

10점

20점

일반도로



▶ 벌점도 함께 부과

또한 단지 범칙금만 배로 증가되는 것이 아니다. 속도위반의 경우 40km/h초과시 일반도로는 30점이지만 어린이보호구역에서는 60점20∼40km/h인경우 일반도로는 15점이지만, 보호구역에서는 30점을 받게되며, 일반도로의 경우 20km/h이하인 경우는 벌점이 없지만 보호구역에는 15점을 받게되어 자칫 벌점초과로 면허가 정지되는 불상사를 당할 수 있다.

◈ 2011년 1월 24일부터 시행되는 교통법규

▶ 도로 외의 곳에서의 음주 · 약물운전 및 뺑소니 처벌

그동안 도로가 아닌 주자장이나 학교 경내 등에서의 음주운전이나 뺑소니를 한 경우에 형사처벌을 하지 못했으나, 오는 1월 24일부터는 처벌이 가능해져 일반도로와 마찬가지로 음주운전으로 사고를 낼 경우 징역 3년 이하의 형사처벌이 가능해졌습니다.

▶ 폭주족 처벌 강화 및 운전면허 행정처분 등 

운전자에게 불안감을 조성하고 교통질서를 문란시키는 폭주족에 대한 처벌이 강화되었으며, 공동위험행위로 형사입건된 경우 운전면허에 벌점 40점을 부과하며, 구속된 경우에는 해당 운전면허를 취소하게 된다.

▶ 교통단속 회피장치 장착 차량 운전 등 처벌 강화

교통단속을 회피할 목적으로 교통단속용 장비의 기능을 방해하는 장치를 장착한 차량을 운전한 사람에 대한 처벌이 대폭 강화되어 20만원 벌금(범칙금 2만원)에서 6월이하 징역, 200만원이하의 벌금에 처해진다. 또한 이러한 장치를 제작?수입?판매한 사람도 함께 처벌된다.

◈ 2011년 3월 31일부터 시행


▶ 자동차전용차로에서의 모든 차량 全 좌석 안전띠 착용 

현재 자동차전용도로는 운행속도나 사고 위험성 등이 고속도로와 비슷함에도"모든 차량"에 대해 全 좌석 안전띠 착용이 의무화 되어 있는 고속도로와 달리, 全  좌석에서 안전띠를 착용해야 하는 차량이 "고속시외버스"로 한정되어 있었으나, 오는 3월 31일부터는 자동차전용도로에서의 교통사고 피해 감소를 위해 고속도로와 같이 전 좌석 안전띠 착용 대상을 "모든 차량"으로 확대하였다.

변경된 교통법규의 시행으로 일부 운전자의 경우 벌써 범칙금을 배로 받거나 벌점을 배로 받았을 것이다. 운전자라면 몰랐다고 항변하기보다는 변경된 법규에 관심을 가지고 이를 위반하지 않도록 노력해야 할 것이다. 

광주지방경찰청 홍보담당관실 전승일

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
원문 : http://9k.co.kr/home3/bbs/board.php?bo_table=l3&wr_id=313

◆ 자동차 보험의 보험료 ◆
자동차 보험료가 어떻게 해서 결정되는지 아십니까?
자동차 보험료가 어떻게 결정되는지 알아야 보험료를 절약할 수 있습니다.
그러면, 자동차보험료 결정 방법은 왜 알아야 할까요?
보험료가 비싸다고 자동차보험에 가입하지 않은 상태로 운전하는 것은 한 순간의 실수로 패가 망신할 수도 있으므로 남은 방법은 최대한 보험료를 절약할 수 있는 방법입니다.
보험료가 어떻게 결정되는지 알면 보험료절약방법을 찾을 수 있을 것이고,사고가 났을 때 보험 처리해야 할 지 
아니면 스스로 처리하는 것이 유리한지 결정하기가 쉬워집니다.
우리나라의 자동차 보험의 상품은 자동차의 용도 및 소유형태에 따라 개인용, 업무용, 영업용 자동차보험으로 구분되며, 이들 상품은 다시 대인배상Ⅰ, 대인배상Ⅱ, 대물배상, 자기신체사고(자동차상해), 무보험차상해, 자기차량손해 등의 담보종목으로 구분됩니다.
자동차 보험료는 각 담보종목별로 별도의 기본보험료가 책정되는데, 여기에 특약요율, 가입자특성요율, 할인할증률 등이 감안되어 적용보험료가 산출되게 됩니다.
2001년 8월이후 자동차보험료는 자율화되어 각 보험회사별로 요율을 다르게 운영하고 있지만 대략적으로 아래의 내용과 같이 운영되고 있습니다.
■자동차보험료계산식
적용보험료 = 기본보험료 × 특약요율 × 가입자특성요율 × 특별요율 ×(우량할인·불량할증요율 + 특별할증율)
▶기본보험료
보험계약 체결시 적용보험료 산정의 기본이 되는 보험료로 차량종류, 배기량, 용도, 성별, 연령, 보험가입금액 등에 따라 정해집니다.  보험사별 보험료 차이가 나는 이유도 기본 보험금의 차이 때문 입니다.
차종은 승용차, 승합차, 화물차로 구분되며, 용도별로는 출퇴근 및 가정용과 개인사업용 및 기타용도로 구분됩니다.
배기량별로는 승용차인경우 소형A(1,000cc이하), 소형B(1,000cc초과 1,500cc이하), 중형(1,500cc초과 2,000cc이하), 대형(2000cc초과)등으로 구분됩니다.
담보별 기본보험료는 대인배상과 대물배상의 경우는 용도별, 배기량별, 보험가입금액별로 책정됨에 반하여 
자기신체사고는 용도별, 보험가입금액별로 책정합니다. 자기차량손해의 경우에는 신차요율인 때는 용도별, 자기부담금별 보험가입금액에 대한 요율을 책정하며, 중고차요율인 때는 연식에 따라 신차요율에 일정률을 추가로 책정합니다. 자기차량손해를 일부보험으로 가입하는 경우의 요율은 신차요율 또는 중고차요율에 (1+보험가액/보험가입금액)의 50%를 곱한 것으로 합니다. 단, 이때 일부보험의 보험가입금액은 보험가액의 60%이상으로 해야만 합니다.
무보험차 상해담보의 경우 일정금액으로 정해져 있습니다.
▶특약요율
특약요율은 특별약관을 첨부하여 체결되는 계약에 적용하는 요율로서 특별약관의 종류에 따라 보험료가 달라집니다.
●운전자의 범위에 따라
- 가족 및 형제 운전 특약시 임의 보험금 약 10%
- 가족 한정 특약시 임의 보험료의 약 15%
- 부부한전 특약시 임의 보험료의 약 20%
- 1인 한정 특약시 임의 보험료의 약 25% 정도가 저렴합니다.
●운전자의 연령에 따라
- 만 30세 이상 운전시 임의보험료의 약 65%
- 만 26세 이상만 운전하면 임의보혐료의 약50%
- 만 24세 이상만 운전하면 임의보험료의 약40%
- 만 21세 이상만 운전하면 임의보험료의 약30%정도가 저렴합니다.
- 이외에 보험사별 세분화된 연령특약도 있습니다. (22세이상, 23세 이상, 35세 이상, 43세, 48세 이상) 
▶가입자 특성요율
가입자특성요율은 보험가입경력요율에 교통법규 위반경력요율을 가감하여 산출하는데 , 보험가입경력요율은 피보험자의 보험가입경과기간에 따라 적용하는데 이를 구분하면 아래 표와 같습니다.
가입경력구분 개인소유 승용차 개인소유승용차 이외
1년 미만 140% 110%
2년 미만 115% 100%
3년 미만 105% 100%
3년 이상 100% 100%
교통법규 위반경력요율은 교통법규 위반실적이 있는 경우 적용되는 요율입니다.
●운전자의 연령에 따라
- 교통법규위반 경력에 따라 -0.7 % ~ +10 % 내외에서 보험회사 자율 적용
- 2006. 09. 01 계약부터는 -0.7 % ~ +30 % 내외에서 보험회사 자율 적용
▶할인·할증요율
할인·할증요율이란 과거 사고경력에 따라 할인 또는 할증하는 요율입니다.
할인할증의 기준의 담보종목별 구분없이 과거 3년간의 사고유무와 사고점수에 따라서 평가하되, 사고점수가 0.5점인경우 할증은 발생하지 않으나 향후 3년간 할인혜택을 받지 못합니다. 평가대상기간은 직전 계약의 보험기간이 만료되기 3개월까지의 기간으로 합니다.
 - 사고가 없을 시는 최초 100%에서 매년 5~10%씩 (100% ~ 40%) 할인되어 최고 60%까지 할인됩니다. 
 - 사고가 있을 경우 사고내용과 사고원인에 따라 할증됩니다.
평가대상 사고중 자기과실이 없는 사고(무과실사고)는 사고내용별 점수산정에서 제외하며 자기과실이 없는 사고란 다음과 같은 사고를 말합니다.
 - 구상권행사에 의해 지급된 보험금을 전액 환입할 수 있는 사고
 - 주차가 허용된 장소에 주차 중 발생한 관리상 과실이 없는 자기차량손해사고
 - 화재, 폭발 및 낙뢰에 의한 자기차량손해사고
 - 무보험 자동차에 의한 상해담보사고
 - 기타 보험회사가 자기과실이 없다고 판단하는 사고
▶특별할증요율
특별할증 요율은 과거의 자동차사고 경험으로 보아 사고발생 위험도가 일반계약자에 비하여 월등히 높다고 판단되는 경우에 보험회사가 별도로  할인·할증율 이외에 임의보험료에 적용되는 요율로 사고내용, 보험회사에 따라 0% ~ 50% 할증됩니다. 이 때 대인배상Ⅰ에 대해서는 특별할증이 부과되지 않습니다.
▶특별요율
특별요율이란 자동차의 구조나 운행형태가 동종차종과 상이한 자동차에 대하여 그 차량의 특별위험에 상응하여 적용하는 요율입니다. 예를들면, 에어백 장착요율이 있습니다. 이 요율은 자기신체사고 담보에만 적용하는 항목으로 자동차 출고시 에어백이 장착되어 있는지 여부에 따라 운전석 및 조수석에 에어백이 장착되어 있을 때에는 80%, 운전석에만 에어백이 장착되어 있는 경우엔 90%를 적용하고 있습니다.
출처 : [직접 서술] 직접 서술
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 크기의 광고 코드만 넣을 수 있습니다.
-atime : 파일을 열어본 시간 또는 디렉토리에 cd명령으로 접근한 시간
-mtime :파일의 내용이 변경된 시간 ls -l 에서 나오는 시간
-ctime :파일의 정보가 변경된 시간 chmod, chown과 연관성이 있죠.
Mathematics : C (R)eference 2008. 11. 6. 14:29
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Mathematics: <math.h>

Mathematics is relatively straightforward library to use again. You must #include <math.h> and must remember to link in the math library at compilation:

   cc mathprog.c -o mathprog -lm

A common source of error is in forgetting to include the <math.h> file (and yes experienced programmers make this error also). Unfortunately the C compiler does not help much. Consider:

double x;
x = sqrt(63.9);

Having not seen the prototype for sqrt the compiler (by default) assumes that the function returns an int and converts the value to a double with meaningless results.

Math Functions

Below we list some common math functions. Apart from the note above they should be easy to use and we have already used some in previous examples. We give no further examples here:

double acos(double x) -- Compute arc cosine of x. 
double asin(double x) -- Compute arc sine of x. 
double atan(double x) -- Compute arc tangent of x. 
double atan2(double y, double x) -- Compute arc tangent of y/x, using the signs of both arguments to determine the quadrant of the return value. 
double ceil(double x) -- Get smallest integral value that exceeds x. 
double cos(double x) -- Compute cosine of angle in radians. 
double cosh(double x) -- Compute the hyperbolic cosine of x. 
div_t div(int number, int denom) -- Divide one integer by another. 
double exp(double x -- Compute exponential of x 
double fabs (double x ) -- Compute absolute value of x. 
double floor(double x) -- Get largest integral value less than x. 
double fmod(double x, double y) -- Divide x by y with integral quotient and return remainder. 
double frexp(double x, int *expptr) -- Breaks down x into mantissa and exponent of no. 
labs(long n) -- Find absolute value of long integer n. 
double ldexp(double x, int exp) -- Reconstructs x out of mantissa and exponent of two. 
ldiv_t ldiv(long number, long denom) -- Divide one long integer by another. 
double log(double x) -- Compute log(x). 
double log10 (double x ) -- Compute log to the base 10 of x. 
double modf(double x, double *intptr) -- Breaks x into fractional and integer parts. 
double pow (double x, double y) -- Compute x raised to the power y. 
double sin(double x) -- Compute sine of angle in radians. 
double sinh(double x) - Compute the hyperbolic sine of x. 
double sqrt(double x) -- Compute the square root of x. 
void srand(unsigned seed) -- Set a new seed for the random number generator (rand). 
double tan(double x) -- Compute tangent of angle in radians. 
double tanh(double x) -- Compute the hyperbolic tangent of x.

Math Constants

The math.h library defines many (often neglected) constants. It is always advisable to use these definitions:

HUGE -- The maximum value of a single-precision floating-point number.
M_E -- The base of natural logarithms (e).

M_LOG2E -- The base-2 logarithm of e.

M_LOG10E - The base-10 logarithm of e.

M_LN2 -- The natural logarithm of 2.

M_LN10 -- The natural logarithm of 10.

M_PI -- $\pi$.

M_PI_2 -- $\pi$/2.

M_PI_4 -- $\pi$/4.
M_1_PI -- 1/$\pi$.

M_2_PI -- 2/$\pi$.

M_2_SQRTPI -- 2/$\sqrt{\pi}$.

M_SQRT2 -- The positive square root of 2.

M_SQRT1_2 -- The positive square root of 1/2.

MAXFLOAT -- The maximum value of a non-infinite single- precision floating point number.

HUGE_VAL -- positive infinity.

There are also a number a machine dependent values defined in #include <value.h> -- see man value or list value.h for further details.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지