[문제점]
웹애플리케이션 소스중 특정 패키지의 소스를 보안상 이유(또는 다른 이유)로 jar로 배포해야할 경우 Component-Scan의 base-package에 해당되는데도 bean생성을 못하는 경우가 있다.

[해결방안]
이클립스의 export기능으로 만들었다면 Add directory entries 옵션을 선택하고 jar를 만들면 된다.

[원인]
default로 이클립스는 jar를 만들때 클래스만 패키징하고 디렉토리는 집어넣지 않아서 컴포넌트 스캔 시 문제가 발생하는 것이다.

'IT > FrameWork' 카테고리의 다른 글

[eGovFrame] 쿠키 사용 제한  (0) 2012.07.13
[eGovFrame]세션 종료시점 이벤트 핸들링  (0) 2012.07.13
 

[Altibase] TableSpace 관리

IT/DB | 2012. 9. 6. 11:51
Posted by 까군

sys계정이거나 동일한 권한이 부여된 계정으로 실행해야함.

테이블스페이스 생성

테이블스페이스의 생성 및 공간관리 방법에 대하여 설명합니다.

테이블스페이스 생성 구문
CREATE TABLESPACE [①테이블스페이스명]
DATAFILE [②데이타 파일절
AUTOEXTEND [③자동확장절
MAXSIZE [④최대크기절] ] ]
EXTENTSIZE [⑤익스텐트사이즈절]
[⑥ONLINE|OFFLINE]

① 테이블스페이스명
테이블스페이스명을 지정합니다.

② 데이타 파일절

DATAFILE 데이타 파일명 SIZE integer [K|M|G] [REUSE]
[자동확장절]

데이타 파일명은 절대경로를 지정해야 합니다. 위의 구문에서 SIZE 절 이하의 구문은 생략이 가능합니다. 절대경로를 지정하지 않고 파일명만 기술할 경우 알티베이스 프로퍼티(Property)에 정의된 Default 값(‘$ALTIBASE_ HOME/dbs/’)에 데이타 파일이 생성됩니다.

[REUSE] 가 정의되었을 경우에는 기존에 존재하는 데이타 파일을 사용하며 데이타 파일명의 지정된 경로에 파일이 존재해야 합니다.

③ 자동확장절

AUTOEXTEND [ON NEXT integer [K|M|G] [최대크기절]
|OFF]
AUTOEXTEND ON 일 경우

데이타 파일은 구문을 통해서 지정되거나 디폴트 크기의 NEXT 만큼 자동 확장되며 [최대크기절] 을 통해 지정된 크기까지 확장됩니다.

AUTOEXTEND OFF 일 경우

데이타 파일은 최초 생성된 사이즈에서 확장되지 않으며 저장영역이 부족할 경우 다음 데이타 파일로 전환되거나 사용 가능한 데이타 파일이 없는 경우에는 트랜잭션이 취소 됩니다.

④ 최대 크기절: 자동확장절의 부속절

MAXSIZE {integer [K|M|G] | UNLIMITED }

자동확장 속성이 지정된 테이터파일이 확장될 수 있는 최대크기를 지정합니다. UNLIMITED 로 지정된 경우에는 데이타 파일이 지정된 저장장치가 가득찰 때까지 사이즈가 늘어나게 됩니다.

⑤ 익스텐트 사이즈절

EXTENTSIZE integer [K|M|G]

테이블스페이스에 저장되는 세그먼트(테이블 또는 인덱스)가 할당받는 페이지의 단? 사이즈를 지정하지 않을 경우 디폴트 값은 256K(8pages)이 됩니다.

⑥ ONLINE/OFFLINE 절

ONLINE으로 지정할 경우에 테이블스페이스는 사용가능하며, OFFLINE일 경우에는 ALTER TABLESPACE 를 통해 ONLINE으로 변경한 후에 사용할 수 있습니다.

테이블스페이스 생성 예제

- 디폴트 속성을 가진 데이타 파일 1개를 가진 테이블스페이스 생성

iSQL> CREATE TABLESPACE user_data01
DATAFILE ‘/user1/dbs/user01.dbf SIZE’ 10M;
Create success.

user_data01 테이블스페이스는 10M의 /data01/dbs/user01.dbf 데이타 파일 한 개를 가지며 데이타 파일은 자동 확장되지 않습니다.

- 자동확장 속성을 가진 데이타 파일을 가지며 익스텐트 사이즈가 재 정의된 테이블스페이스 생성

iSQL> CREATE TABLESPACE user_data02
DATAFILE ‘/user1/dbs/user01.dbf’ SIZE 100M,
‘/user1/dbs/user02.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 1M MAXSIZE 1G
EXTENTSIZE 512K;
Create success.

user_data02 테이블스페이스는 2개의 데이타 파일을 가지며?을 가지며 확장시에 1M byte 단위로 늘어나고 최대 1G byte까지 확장됩니다. 따라서 user_data02 테이블스페이스는 두 개의 데이타 파일을 포함하여 전체 1.1G까지 데이타를 저장할 수 있게 됩니다.

또한 EXTENT의 사이즈는 512K로 정의되어 세그먼트에 Page가 할당될 때 512K(16Pages)씩 할당됩니다.

테이블스페이스 공간 관리
디스크 테이블의 사이즈 계산

- record의 경우

[ 32(header) + (column의 길이의 합) ] * record count

칼럼길이가 고정(Fixed)인 경우의 크기이며 가변(Variable)칼럼에 대하여는 가변칼럼의 헤더와 실제데이타의 크기를 계산해야 하므로 약간의 증감이 발생할 수 있습니다.

- index의 경우

[ 16(header) + (key column 길이의 합) ] * record count

위의 계산 공식은 leaf node (B*Tree에서 최하위의 노드)의 대략적인 크기이고, 이 외에 internal node (leaf node를 제외한 상위노드)의 사이즈는 key칼럼의 사이즈가 작을 경우에는 무시할 정도로 사이즈가 작지만 key칼럼 사이즈가 10K이상으로 클 경우에는 B*Tree의 Depth가 깊어지면서 전체 leaf Node 사이즈의 50%정도가 될 수도 있으므로 해당되는 경우에는 사이즈 계산에 포함해야 합니다.

- 테이블 사이즈 계산 예

테이블 스키마가 다음과 같고 레코드의 개수가 100만 건일 경우에 레코드의 크기와 인덱스의 크기를 포함한 테이블의 사이즈는 다음과 같이 계산됩니다.

CREATE TABLE TEST001 (
C1 char(8) primary key,
N1 double unique,
C2 char(128),
N2 integer,
IN_DATE date) tablespace user_data02;

1. 레코드사이즈
10(C1:헤더2byte포함)+ 130(C2:헤더2byte포함) + 8(N1) +
4(N2) + 8(IN_DATE) = 160 Bytes
[ 32(헤더) + 160(칼럼길이의 합) ] * 100만건 = 183.11M

2. 인덱스사이즈
[ 16(헤더) + 18(key칼럼길이의 합) ] * 100만건 = 32.42M

3. TEST001 테이블 전체 사이즈
183.11(레코드사이즈) + 30.52(인덱스사이즈) = 215.53M
임시(Temporary) 테이블스페이스

임시 테이블스페이스는 질의 처리 과정 중에 각종 연산을 통해 발생하는 중간 결과를 저장하기 위한 테이블스페이스이며 데이터베이스 생성 시에 만들어지고 1개만 존재하는 SYSTEM TEMPORARY TABLESPACE(SYS_TBS_TEMP) 와 사용자별로 1개씩 할당 받을 수 있는 USER TEMPORARY TABLESPACE 2가지가 있습니다.

“임시 테이블스페이스는 백업이나 복구의 대상이 아니고 단지 연산을 위한 임시적 저장공간이다.”

따라서 ONLINE/OFFLINE 구문이 없으며 굵은 글자체로 표시된 부분을 제외하고는 User Data 테이블스페이스 생성 구문과 동일합니다.

CREATE TEMPORARY TABLESPACE [①테이블스페이스명]
TEMPFILE [②데이타 파일절
AUTOEXTEND [③자동확장절
MAXSIZE [최대크기절] ] ]
EXTENTSIZE [④익스텐트사이즈절]

① 테이블스페이스명
테이블스페이스명을 지정합니다.

② 데이타 파일절

DATAFILE ‘데이타 파일명’ SIZE integer [K|M|G] [REUSE] [자동확장절]

③ 자동확장절: 테이터파일절의 부속절

AUTOEXTEND
[ON NEXT integer [K|M|G] MAXSIZE [최대크기절]
|OFF ]

④ 익스텐트사이즈절: 익스텐트 할당 단위를 정의

EXTENTSIZE integer [K|M|G]

- 임시 테이블스페이스 생성 예

:iSQL> CREATE TEMPORARY TABLESPACE user_temp01
TEMPFILE ‘/user1/dbs/usrtmp01.dbf’ SIZE 10M;
Create success.
언두(Undo) 테이블스페이스

언두 테이블스페이스는 데이터베이스 생성 시에 만들어지는 SYSTEM UNDO TABLESPACE(SYS_TBS_UNDO) 1개만 존재하며 사용자가 추가로 생성하거나 삭제할 수 없습니다.

언두 테이블스페이스의 확장

업무 시스템에서 변경 트랜잭션(특히, Long-Term 트랜잭션: 트랜잭션의 Commit 주기가 긴 경우)이 많이 발생하는 경우에 언두 테이블스페이스의 부족이 발생할 수 있으며 이러한 경우에 언두 테이블스페이스의 ALTER TABLESPACE 구문을 이용하여 적정한 사이즈로 데이타 파일을 추가하거나 파일사이즈를 늘려주면 됩니다.

디스크 GC(Garbage Collector) 쓰레드(Thread) 관련 프로퍼티(Property) 변경

Commit이 완료된 언두 공간을 free space로 전환하는 작업을 Garbage Collecting이라고 합니다.

트랜잭션이 단시간에 많이 발생할 경우에 디스크 GC 쓰레드(Thread)에 의한 테이블스페이스의 free space 확보가 늦어짐으로 인해서 테이블스페이스 부족현상이 발생할 수 있으며 이러한 경우에 알티베이스 디스크GC 쓰레드(Thread)의 실행주기와 실행 시에 처리하는 페이지의 개수 등에 관한 프로퍼티(Property)를 수정함으로써 디스크 GC의 성능을 높일 수 있습니다.

-----------------------------------------------------------------------------

테이블스페이스의 크기 변경

테이블스페이스의 크기를 변경하는 방법에는 다음의 4가지가 있습니다.

1. ALTER TABLESPACE ADD [ DATAFILE|TEMPFILE ] 구문으로 데이타파일을 추가합니다.

구문 설명

ALTER TABLESPACE [테이블스페이스명]
ADD DATAFILE|TEMPFILE [데이타 파일절
AUTOEXTEND [자동확장절
MAXSIZE [최대크기절] ] ]

테이블스페이스의 ON/OFFLINE에 관계없이 가능합니다.

user_data02 테이블스페이스에 초기사이??을 추가합니다.

iSQL> ALTER TABLESPACE user_data02
ADD DATAFILE /user1/dbs/user03.dbf SIZE 100M
AUTOEXTEND ON NEXT 1M MAXSIZE 500M;
Alter success.

2. ALTER TABLESPACE DROP [ DATAFILE|TEMPFILE ] 구문으로 특정 데이타파일을 제거합니다.

구문 설명

ALTER TABLESPACE [테이블스페이스명]
DROP DATAFILE|TEMPFILE 데이타 파일명

테이블스페이스의 ON/OFFLINE에 관계없이 가능하지만 현재 사용중인(초기화되어 할당되어진) 데이타파일 이후의 사용 중이 아닌 데이타파일에 대해서만 가능합니다.

user_data02 테이블스페이스에서 /user1/dbs/user03.dbf 데이타파일을 삭제합니다.

iSQL> ALTER TABLESPACE user_data02
DROP DATAFILE /user1/dbs/user03.dbf;
Alter success.

3. ALTER TABLESPACE ALTER [ DATAFILE|TEMPFILE ] AUTOEXTEND 구문으로 데이타파일의 자동확장모드를 ON/OFF 할 수 있습니다.

구문 설명

ALTER TABLESPACE [테이블스페이스명]
ALTER DATAFILE|TEMPFILE 데이타 파일명
AUTOEXTEND [ON [자동확장절] | OFF]

테이블스페이스의 ON/OFFLINE에 관계없이 가능합니다.

user_data02 테이블스페이스에서 /user1/dbs/user01.dbf 데이타파일의 자동확장 모드를 ON시키고 최대 1GB까지 확장 예 :

iSQL> ALTER TABLESPACE user_data02
ALTER DATAFILE /user1/dbs/user01.dbf
AUTOEXTEND ON MAXSIZE 1G;
Alter success.

user_data02 테이블스페이스에서 /user1/dbs/user02.dbf 데이타파일의 자동확장 모드를 OFF시키는 예 :

iSQL> ALTER TABLESPACE user_data02
ALTER DATAFILE /user1/dbs/user02.dbf
AUTOEXTEND OFF;
Alter success.

4. ALTER TABLESPACE ALTER [ DATAFILE|TEMPFILE ] SIZE 구문으로 데이타파일의 사이즈를 조정할 수 있습니다.

구문 설명

ALTER TABLESPACE [테이블스페이스명]
ALTER DATAFILE|TEMPFILE 데이타 파일명
SIZE integer [K|M|G]

테이블스페이스의 ON/OFFLINE에 관계없이 가능하지만 현재 사용중인 데이타파일 또는 이후 데이타파일에 대해서만 가능하며, 사이즈를 늘리거나 줄일 수 있습니다.

user_data02 테이블스페이스에서 /user1/dbs/user01.dbf 데이타파일의 사이즈를 200MB로 늘리는 예 :

iSQL> ALTER TABLESPACE user_data02
ALTER DATAFILE /user1/dbs/user01.dbf
SIZE 200M;
Alter success.

iSQL> ALTER TABLESPACE TEST_TABLESPACE
ALTER DATAFILE| 'C:\Program Files (x86)\Altibase\Altibase5_Server\\altibase_home\dbs\tbs_nsdi_test.dbf'
SIZE 1G;

-->dbf파일명 확인은 User의 Default Tablespace확인 후 [TableSpace] 탭의 File Name란 확인하면 됨.

 

'IT > DB' 카테고리의 다른 글

인생에서 가장 큰 위험은?  (0) 2013.08.12
[Altibase] 오류 및 대처 모음  (0) 2012.10.11
 

AIX에서 논리적 볼륨 크기 확장

IT/AIX | 2012. 8. 31. 14:57
Posted by 까군

 

AIX에서 논리적 볼륨 크기 확장 방법

==================================== [ 사전지식 ] ===================================== 

* PV (Physical Volume) : 물리적인 볼륨, HDD로 PV가 2이면 물리적인 HDD 도 2개임

* PP (Physical Partition) : PV를 잘게 쪼개 놓은 최소의 물리적 단위

* LP (Logical Partition) : 데이터 저장을 위해 PP를 논리적으로 쪼개놓은 단위로 일반적으로 PP와  LP의 갯수가 같음.

* LV (Logical Volume) : 1개 또는 그 이상의 LP로 구성되며 동일 VG내에서의 LP로만 구성됨.

* VG (Volume Group) :  논리적 볼륨 그룹, 하나 이상의 PV가 있어야 함.
-------------------------------------------------------------------------------------

[명령어]
lspv : PV 목록 조회 , 디스크 갯수 조회, 볼륨그룹이 어떤 디스크로 구성되어있는 지 파악 가능
lspv [볼륨그룹]

1. lsvg 명령으로 변경할 볼륨의 상태를 확인한다.

# lsvg rootvg
VOLUME GROUP:       rootvg                   VG IDENTIFIER:  000a92ec0000d700000001390156983e
VG STATE:           active                   PP SIZE:        512 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      558 (285696 megabytes)
MAX LVs:            256                      FREE PPs:       439 (224768 megabytes)
LVs:                13                       USED PPs:       119 (60928 megabytes)
OPEN LVs:           12                       QUORUM:         2 (Enabled)
TOTAL PVs:          1                        VG DESCRIPTORS: 2
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         1                        AUTO ON:        yes
MAX PPs per VG:     32512                                    
MAX PPs per PV:     1016                     MAX PVs:        32
LTG size (Dynamic): 256 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable
PV RESTRICTION:     none      

위 내용에서 보면 디스크의 free 공간이 224768MB 남아있다

이 상태에서 특정 볼륨에 남아있는 공간을 추가로 할당하려면 다음과 같이 한다.

2. chfs 명령으로 파일시스템크기 변경

# chfs -a size=+10240000 /tmp
파일 시스템 크기가 13762560(으)로 변경되었습니다.

size는 KB 단위로 입력한다. 여기서는 10GB를 추가했다.

위와 같이 변경한 후 볼륨 정보를 확인해 보면 변경이 되어 있다.




# lsvg rootvg

또한, df -k 명령으로 /usr 디렉토리를 확인해 보면 다음과 같이 용량이 늘어나 있는 것을 확인할 수 있다.

# df -k

파일 시스템 1024 블록 사용가능 %사용 Iused %Iused 마운트 위치
Filesystem 1024-blocks Free %Used Iused %Iused Mounted on
/dev/hd4 1048576 176032 84% 10816 21% /
/dev/hd2 2621440 469940 83% 45176 30% /usr
/dev/hd9var 524288 188876 64% 8218 16% /var
/dev/hd3 10485760 9659472 8% 73 1% /tmp
/dev/fwdump 524288 523880 1% 4 1% /var/adm/ras/platform
/dev/hd1 41943040 41306452 2% 9811 1% /home
/dev/hd11admin 524288 523848 1% 5 1% /admin
/proc - - - - - /proc
/dev/hd10opt 524288 275964 48% 8748 13% /opt
/dev/livedump 524288 523880 1% 4 1% /var/adm/ras/livedump

 

* 만약 chfs 명령시 다음과 같은 에러가 발생하면 아래 링크와 같이 해결한다.

# chfs -a size=+10240000 /usr

0516-787 extendlv: Maximum alLocation for logical volume lv01
is 512.


또다른 방법 -------------------------------------------

#>smitty jfs2

1. [Change / Show Characteristics of an Enhanced Journaled File System] 선택 후 Enter
2. 변경하고자 하는 File System 선택 후 Enter
3. Unit Size로 커서 옮긴 후 "esc + 4" 실행
4. 하단에 Megabytes 나 Gigabytes 선택
5. Number of Units  에 원하는 값 입력 후 Enter!!! + F10

 

 

 

 

 

 

 

반드시 알아둘 AIX 명령

IT/AIX | 2012. 8. 16. 20:44
Posted by 까군

* AIX 버전확인 
# oslevel
# uname -a

* 시스템 전체 정보 한눈에 확인하기
# prtconf : 모델명,CPU, 메모리, 어댑터, 디스크, 네트워크까지의 하드웨어 환경을 한눈에 확인하기

* 시스템 디스크용량 확인 및 할당하기
# df -gt
그리고 늘리고 싶으신 파일시스템 확장 방법은

smitty jfs2 -> Change / Show Characteristics of an Enhanced Journaled File System -> 해당파일시스템선택 (/dev/fslv02) -> Unit size를 Megabytes로 선택 -> Number of units에서 확장하고싶은 용량 입력

엔터누르시면 자동으로 확장됩니다.

한가지 주의하실점은 용량 입력시 반드시 최종용량을 입력하셔야 합니다.

(예, 102400에서 204800으로 늘리고 싶으시면, Number of units에 204800으로 입멱하셔야 합니다)

* 시스템 기본 환경설정

/etc/environment 수정
ex> LANG=ko_KR.IBM-eucKR

------------------------------------------------------------------------------

<IBM홈페이지에서 펌>

시작하면서

알다시피, AIX®가 제공하는 명령은 다양한 작업을 수행하도록 그 수가 많다. 사용자는 수행하려는 작업에 따라 일부 명령 집합을 선택해 사용한다. 사용자가 선택하는 명령 집합은 사용자마다 그리고 작업마다 다르다. 하지만 대다수 사용자가 흔히 사용하는 핵심 명령 집합이 있다. AIX를 사용하다 의문이 생겨서 답을 구하든, 고객 지원팀이 요청하는 정보를 구하든, 어떤 상황이든 유용한 명령 집합이다.

이 기사에서는 몇 가지 핵심 명령을 소개한다. AIX® 사용자라면 반드시 알아둘 명령이다. 각 명령은 이론상 AIX 모든 버전에서 똑같이 동작하지만, AIX 5.3에서만 테스트를 수행했다.

참고:
다음 절에서 설명하는 bootinfo 명령은 사용자 권한으로 실행하지 못한다. 또한 AIX 4.2 이후 버전은 bootinfo 명령을 지원하지 않는다.


명령

커널

현재 실행 중인 커널이 32비트 커널인지 64비트 커널인지 확인하려면?

현재 커널이 32비트 커널인지 64비트 커널인지 확인하려면 다음 명령을 실행한다.

bootinfo -K

현재 실행 중인 커널이 단일 프로세서 커널인지 다중 프로세서 커널인지 확인하려면?

/unix는 부팅된 커널을 가리키는 심볼릭 링크다. 현재 실행 중인 커널 모드를 확인하려면 ls -l /unix 명령을 실행한 후 /unix가 연결된 파일을 확인한다. 다음은 ls -l /unix 명령이 출력하는 세 가지 가능성과 각각의 의미다.

/unix -> /usr/lib/boot/unix_up 		# 32비트 단일 프로세서 커널
/unix -> /usr/lib/boot/unix_mp 		# 32비트 다중 프로세서 커널
/unix -> /usr/lib/boot/unix_64 		# 64비트 다중 프로세서 커널

참고:
AIX 5L 버전 5.3은 단일 프로세서 커널을 지원하지 않는다.

한 커널 모드에서 다른 커널 모드로 전환하려면?

AIX를 설치하면 AIX 버전과 하드웨어에 적합한 커널 모드가 기본적으로 사용된다. 직전 질문에서 설명한 방법으로 현재 커널이 32비트 커널이라는 사실을 알아냈다고 가정하자. 그런데 64비트 커널 모드로 시스템을 부팅하고 싶다면? 다음 명령을 순서대로 실행하면 된다.

ln -sf /usr/lib/boot/unix_64    /unix
ln -sf /usr/lib/boot/unix_64    /usr/lib/boot/unix

bosboot -ad  /dev/hdiskxx
shutdown -r

/dev/hdiskxx 디렉터리는 부트 논리 볼륨 /dev/hd5가 위치한 디렉터리다. hdiskxx에 넣을 xx 값을 찾아내려면 다음 명령을 실행한다.

 lslv -m hd5
 

참고:
AIX 5.2는 32비트 커널을 기본 모드로 설치한다. AIX 5.3은 64비트 하드웨어에 64비트 커널을, 32비트 하드웨어에 32비트 커널을 기본 모드로 설치한다.

하드웨어

내 시스템에 AIX 5L 버전 5.3이 돌아갈까?

AIX 5L 버전 5.3은 현재 모든 CHRP(Common Hardware Reference Platform) 기반 POWER 하드웨어에서 돌아간다.

내 시스템은 CHRP 기반일까?

prtconf 명령을 실행한다. CHRP 기반이면 Model Architecture 행에 chrp라는 문자열이 출력된다.

내 System p 하드웨어가 32비트인지 64비트인지 확인하려면?

하드웨어가 32비트인지 64비트인지 확인하려면 다음 명령을 실행한다.

bootinfo -y

내 시스템에 설치된 실제 메모리는?

실제 메모리를 확인하려면 다음 명령 중 하나를 실행한다. 결과는 킬로바이트(KB) 단위다.

bootinfo -r    

lsattr -El sys0 -a realmem 

내 시스템에 64비트 커널이 돌아갈까?

64비트 커널을 돌리려면 64비트 하드웨어가 필요하다.

내 시스템에 설치된 디바이스의 속성 값을 알아내려면?

테이프 디바이스 rmt0의 현재 속성 값을 열거하려면 다음 명령을 실행한다.

lsattr -l rmt0 -E

테이프 디바이스 rmt0의 기본 속성 값을 열거하려면 다음 명령을 실행한다.

lsattr -l rmt0 -D

TTY 디바이스 tty0의 로그인 속성 값으로 가능한 값을 열거하려면 다음 명령을 실행한다.

lsattr -l tty0 -a login -R

시스템 속성을 열거하려면 다음 명령을 실행한다.

lsattr -E -l sys0

내 시스템에는 프로세서가 몇 개일까?

시스템에 있는 프로세서 개수를 표시하려면 다음 명령을 실행한다.

lscfg | grep proc

내 시스템에는 하드 디스크가 몇 개일까? 현재 사용 중인 디스크는 무엇일까?

시스템에 있는 하드웨어 디스크 수를 표시하려면 다음 명령을 실행한다.

lspv

특정한 물리적 볼륨에 대한 정보를 열거하려면?

예를 들어, hdisk1에 대한 정보를 표시하려면 다음 명령을 실행한다.

lspv hdisk1		
			

현재 시스템 구성을 상세히 파악하려면?

다음 명령을 실행한다.

lscfg

다음 옵션은 특정 정보를 제공한다.

-p 플랫폼 관련 디바이스 정보를 표시한다. 플래그는 AIX 4.2.1 이후 버전에서 유효하다.
-v 커스터마이징된 VPD(Virtual Product Database) 객체 클래스에서 발견된 VPD를 표시한다.

예를 들어, 테이프 드라이브 rmt0에 대한 정보를 표시하려면 다음 명령을 실행한다.

lscfg -vl rmt0

prtconf 명령을 실행해도 거의 비슷한 정보를 얻는다.

칩 유형, 시스템 이름, 노드 이름, 모델 번호 등을 찾으려면?

uname 명령은 시스템에 관하여 상세한 정보를 제공한다.

uname -p (PowerPC와 같은) 프로세서 유형을 표시한다.
uname -r 운영체제 버전 번호를 표시한다.
uname -s (AIX와 같은) 운영체제 이름을 표시한다.
uname -n 노드 이름을 표시한다.
uname -a 시스템 이름, 노드 이름, 버전, 하드웨어 ID 등 시스템 정보를 표시한다.
uname -M (IBM, 9114-275와 같은) 시스템 모델 이름을 표시한다.
uname -v 운영체제 버전을 표시한다.
uname -m 시스템을 운영하는 하드웨어 ID를 표시한다.
uname -u 시스템 ID를 표시한다.

AIX

현재 실행 중인 AIX의 버전, 릴리스 번호, 유지보수 단계 정보를 확인하려면?

다음 명령 중 하나를 실행한다.

oslevel -r

lslpp -h bos.rte

특정한 AIX 단계에서 누락된 파일세트 업데이트(fileset update)를 파악하려면?

예를 들어, 5300-04에서 누락된 파일세트 업데이트를 파악하려면 다음 명령을 실행한다.

oslevel -rl 5300-04

내 시스템에 설치된 SP(Service Pack)를 알아내려면?

현재 시스템에 설치된 SP를 알아내려면 oslevel -s 명령을 실행한다. SP2가 설치된 AIX 5L 버전 5.3 TV4에서 oslevel -s 명령을 실행하면 다음과 같은 결과를 얻는다.

oslevel -s
5300-04-02
			

내 시스템에 설치된 CSP(Concluding Service Pack)를 알아내려면?

현재 시스템에 설치된 CSP를 알아내려면 oslevel -s 명령을 실행한다. CSP가 설치된 AIX 5L 버전 5.3 TL3에서 oslevel -s 명령을 실행하면 다음과 같은 결과를 얻는다.

oslevel -s
5300-03-CSP
			

파일 시스템을 생성하려면?

다음 명령은 볼륨 그룹 testvg 내에 크기가 10MB이고 마운트 위치가 /fs1인 jfs 파일 시스템을 생성한다.

crfs -v jfs -g testvg -a size=10M -m /fs1 
			

다음 명령은 볼륨 그룹 testvg 내에 크기가 10MB이고 마운트 위치가 /fs2이고 읽기 전용인 jfs2 파일 시스템을 생성한다.

crfs -v jfs2 -g testvg -a size=10M -p ro -m /fs2	
			

파일 시스템 크기를 변경하려면?

/usr 파일 시스템에 512바이트 블록 100만 개를 추가하려면 다음 명령을 실행한다.

chfs -a size=+1000000 /usr

참고:
AIX 5.3에서 JFS2 파일 시스템은 크기를 줄일 수도 있다.

CD를 마운트하려면?

다음 명령을 실행한다.

mount -V cdrfs -o ro /dev/cd0  /cdrom

파일 시스템을 마운트하려면?

다음 명령은 파일 시스템 /dev/fslv02를 /test 디렉터리로 마운트한다.

mount /dev/fslv02 /test 

기본 파일 시스템 전부를 마운트하려면? 즉, /etc/filesystems 내 mount=true로 표시된 표준 파일 시스템을 모두 마운트하려면?

다음 명령을 실행한다.

mount {-a|all}

마운트된 파일 시스템을 해제하려면?

다음 명령은 마운트된 /test 파일 시스템을 해제한다.

umount /test

마운트된 파일 시스템을 확인하려면?

현재 마운트된 파일 시스템을 확인하려면 다음 명령을 실행한다.

mount

파일 시스템을 제거하려면?

다음 명령은 /test 파일 시스템을 제거한다.

rmfs /test

파일 시스템에서 흩어진 파일 조각을 모으려면? 즉, 조각 모음(defragmentation)을 수행하려면?

defragfs 명령은 파일 시스템에 조각 모음을 수행하여 연속적인 공간을 늘린 후 최종 상태를 보고한다. 예를 들어, 파일 시스템 /home에 조각 모음을 수행하려면 다음 명령을 실행한다.

defragfs /home

특정 이진 파일을 포함하는 파일세트를 찾으려면?

/usr/bin/vmstat를 포함하는 bos.acct를 찾으려면 다음 명령을 실행한다.

lslpp -w /usr/bin/vmstat

/usr/bin/svmon을 포함하는 bos.perf.tools를 찾으려면 다음 명령을 실행한다.

which_fileset svmon

내 시스템에 설치된 파일세트 정보를 찾으려면?

다음 명령을 실행한다.

lslpp -l 			
			

유지보수 단계에 맞는 파일세트가 모두 설치되었는지 확인하려면?

다음 명령을 실행한다.

instfix -i | grep ML

내 시스템에 수정사항(fix)이 설치되었는지 확인하려면?

시스템에 IY24043이 설치되었는지 확인하려면 다음 명령을 실행한다.

instfix -ik IY24043

APAR로 개별 수정사항(fix)을 설치하려면?

/dev/cd0에서 APAR IY73748을 설치하려면 다음 명령을 실행한다.

instfix -k IY73748 -d /dev/cd0			
			

파일세트에 사전 요건이 있는지 그리고 파일세트가 완전히 설치되었는지 확인하려면?

설치할 파일세트나 정정할 파일세트를 확인하려면 다음 명령을 실행한다.

lppchk -v

로더(loader) 섹션의 헤더와 심볼 항목을 심볼 표현으로 출력하려면?

다음 명령을 실행한다.

dump -Htv

현재 할당된 페이징 공간과 사용 중인 페이징 공간을 확인하려면?

다음 명령을 실행한다.

lsps -a

페이징 공간을 늘리려면?

페이징 공간을 동적으로 늘리려면 chps -s 명령을 실행한다. 예를 들어, hd6에 논리적 파티션 세 개를 추가하려면 다음 명령을 실행한다.

chps -s 3 hd6			
			

페이징 공간을 줄이려면?

페이징 공간을 동적으로 줄이려면 chps -d 명령을 실행한다. 예를 들어, hd6에서 논리적 파티션 네 개를 제거하려면 다음 명령을 실행한다.

chps -d 4 hd6			
			

내 시스템이 SMT(Simultaneous Multi-Threading)를 지원하는지 확인하려면?

POWER5 기반에 AIX 5L 버전 5.3을 실행하는 시스템은 SMT를 지원한다.

내 시스템에 SMT가 활성화되었는지 확인하려면?

옵션을 지정하지 않고 smtctl 명령을 실행한다.

32비트 커널도 SMT를 지원할까?

그렇다. 32비트 커널과 64비트 커널 모두 SMT를 지원한다.

SMT를 활성화하거나 비활성화하려면?

SMT를 활성화하거나 비활성화하려면 smtctl 명령을 실행한다. 사용법은 다음과 같다.

smtctl [ -m off | on [ -w boot | now]]

다음은 smtctl이 지원하는 옵션이다.

-m off SMT 모드를 비활성화한다.
-m on SMT 모드를 활성화한다.
-w boot 시스템을 재시작하기 전에 bosboot 명령을 실행하면 이후로 시스템을 재시작할 때마다 현재 SMT 모드가 적용된다.
-w now SMT 모드를 당장 변경하지만 시스템을 재시작하면 기본 설정으로 돌아간다.

-w boot-w now 옵션을 지정하지 않으면 모드는 즉석에서 변경된다. 시스템을 재시작하기 전에 bosboot 명령을 실행하면 이후로 시스템을 재시작할 때마다 현재 SMT 모드가 적용된다.

파티션 정보와 통계를 얻으려면?

lparstat 명령은 파티션 정보와 사용 통계를 제공한다. 또한 이 명령은 하이퍼바이저 정보도 제공한다.

볼륨 그룹과 논리 그룹

내 볼륨 그룹 유형(normal, big, scalable)을 알아보려면?

lsvg 볼륨 그룹에 lsvg 명령을 실행한 후 MAX PV 값을 확인한다. 값이 32면 정상(normal), 128이면 대형(big), 1024면 확장(scalable)이다.

볼륨 그룹을 생성하려면?

다음 명령을 실행한다. 여기서 s로 지정하는 partition_size는 물리적 파티션 크기로, 단위는 MB이며 1에서 1024 사이 값이다(AIX 5.3에서는 1에서 131072 사이 값이다). partition_size는 (1, 2, 4, 8 등) 2의 승수다. 정상(normal) 볼륨 그룹과 대형(big) 볼륨 그룹의 기본 값은 물리적 볼륨 당 물리적 파티션 수가 1016개를 넘지 않는 한도에서 최소 값이다. 확장(scalable) 볼륨 그룹의 기본 값은 물리적 볼륨 당 물리적 파티션 수 2040개를 넘지 않는 한도에서 최소 값이다.

mkvg -y name_of_volume_group -s partition_size list_of_hard_disks

mkvg -y datavg -f hdisk1


볼륨 그룹 특성을 변경하려면?

볼륨 그룹 특성을 변경하려면 다음 명령을 실행한다.

chvg

논리 볼륨을 생성하려면?

다음 명령을 실행한다.

mklv -y name_of_logical_volume name_of_volume_group number_of_partition
			

논리 볼륨 크기를 키우려면?

lv05로 표현되는 논리 볼륨에 논리 파티션 세 개를 추가하려면 다음 명령을 실행한다.

extendlv lv05 3
			

(rootvg와 같이) 볼륨 그룹에 속하는 논리 볼륨을 모두 표시하려면?

논리 볼륨 lv1에 대한 정보를 살펴보려면 다음 명령을 실행한다.

lsvg -l rootvg

논리 볼륨에 대한 정보를 살펴보려면?

논리 볼륨 lv1에 대한 정보를 살펴보려면 다음 명령을 실행한다.

lslv lv1

논리 볼륨을 제거하려면?

논리 볼륨 lv7을 제거하려면 다음 명령을 실행한다.

rmlv lv7

rmlv 명령은 논리 볼륨만 제거한다. 논리 볼륨을 사용하는 파일 시스템이나 페이징 공간 등은 제거하지 않는다.

논리 볼륨 사본을 생성하려면?

  1. mklvcopy LogicalVolumeName Numberofcopies
  2. syncvg VolumeGroupName

논리 볼륨 사본을 제거하려면?

논리 볼륨에서 논리 파티션 사본을 제거하려면 rmlvcopy 명령을 실행한다. 논리 볼륨 testlv에서 논리 파티션 사본 수를 줄이려면 다음 명령을 실행한다.

rmlvcopy testlv 2

위 명령을 실행하면 논리 볼륨 testlv 내 각 논리 파티션은 많아야 물리 파티션 두 개를 가진다.

볼륨 그룹 조회하기

시스템에 있는 볼륨 그룹을 보려면 다음 명령을 실행한다.

lsvg

rootvg 특성을 모두 표시하려면 다음 명령을 실행한다.

lsvg rootvg

rootvg가 사용하는 디스크를 확인하려면 다음 명령을 실행한다.

lsvg -p rootvg

볼륨 그룹에 디스크를 추가하려면?

다음 명령을 실행한다.

extendvg   VolumeGroupName   hdisk0 hdisk1 ... hdiskn 

내 하드 디스크에서 최대로 지원되는 LTG(Logical Track Group) 크기를 알아내려면?

lquerypv 명령에 -M 플래그를 지정하면 LTG 크기를 KB 단위로 출력한다. 예를 들어, hdisk0의 LTG 크기를 출력하려면 다음 명령을 실행한다. 결과는 256KB이다.

/usr/sbin/lquerypv -M hdisk0
256

또한 하드 디스크에 lspv 명령을 실행한 후 MAX REQUEST 값을 살펴본다.

syncvg 명령은 언제 사용하는가?

물리 파티션을 동기화하려면 syncvg 명령을 사용한다. 인수로 논리 볼륨, 물리 볼륨, 볼륨 그룹 이름을 지정한다.

예를 들어, 물리적 볼륨 hdisk6와 hdisk7에 있는 물리 파티션을 동기화하려면 다음 명령을 실행한다.

syncvg -p hdisk4 hdisk5			
			

볼륨 그룹 testvg에 있는 모든 물리 파티션을 동기화하려면 다음 명령을 실행한다.

syncvg -v testvg			
			

디스크를 교체하려면?

  1. extendvg VolumeGroupName hdisk_new
  2. migratepv hdisk_bad hdisk_new
  3. reducevg -d VolumeGroupName hdisk_bad

rootvt를 복제하려면? 즉, rootvg 사본을 생성하려면?

현재 rootvg를 다른 디스크로 복사하려면 alt_disk_copy 명령을 실행한다. 예를 들어, hdisk1에 rootvg 사본을 생성하려면 다음 명령을 실행한다.

alt_disk_copy -d  hdisk1

네트워크

네트워크 매개변수 값을 설정하거나 살펴보려면?

현재 설정된 값이나 다음 부팅에 적용될 값을 설정하거나 표시하는 명령은 없다.

내 시스템 IP 주소를 가져오려면?

다음 명령 중 하나를 실행한다.

ifconfig -a

host Fully_Qualified_Host_Name

예를 들어, host cyclop.austin.ibm.com을 실행한다.

내 서버 네트워크 인터페이스를 표시하려면?

다음 명령 중 하나를 실행한다.

lsdev -Cc if

ifconfig -a

특정 네트워크 인터페이스 tr0에 대한 정보를 얻으려면 다음 명령을 실행한다.

ifconfig tr0

네트워크 인터페이스를 활성화하려면?

네트워크 인터페이스 tr0를 활성화하려면 다음 명령을 실행한다.

ifconfig tr0 up

네트워크 인터페이스를 비활성화하려면?

네트워크 인터페이스 tr0를 비활성화하려면 다음 명령을 실행한다.

ifconfig tr0 down


 

 


 

[JEUS] Connection reset by peer 오류 해결

IT/WAS | 2012. 7. 16. 13:48
Posted by 까군

 

[현상]
* 속성조회 시 축척이 1000미만인 경우에는 문제 없었으나 2000부터는 아래와 같은 오류 발생.

ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error

[원인]
"ClientAbortException: java.net.SocketException"으로 구글링 결과 아래 내용 발견

Usually, this kind of behaviour occurs when one of the following happens
1.When user make a request, and suddenly browser get closed by user accidentally or due to browser crash
2.When user make a request, and browser closes the http connection automatically due to exceeded content length size
3.When user make a request, and presses the stop button

1.번은 아니라고 하니 2.번일 가능성이 큼.

[해결방안]
1. response.setHeader("Content-Lenght",2048);
2. 제우스 설정파일 수정
WEBMain.xml
<webtob-listener>
...
<output-buffer-size>2048</output-buffer-size>  //단위는 byte
...
</webtob-listener>
output-buffer-size 값 조정

* <output-buffer-size>는 클라이언트에게 데이터를 내보낼 때 여기에 설정한 사이즈만큼 쪼개서 보내는 역할을 하는 옵션으로 "0"으로 설정할 경우 대용량 파일 다운로드와 같은 경우 OutOfMemory발생의 위험이 있음.
("0"으로 설정하면 모든 데이터를 힙메모리에 저장해둔 다음 처리 한다고함)

 

[eGovFrame] 쿠키 사용 제한

IT/FrameWork | 2012. 7. 13. 11:58
Posted by 까군

수정중...


[현상]
컨트롤러단에서 쿠키에 값을 집어넣기 위해
response.addCookie(이름,값)해도 쿠키가 생성되지 않아 당황스러움..

[원인]
스프링에서는 컨트롤러에서 쿠키에 값 Set처리하는게 안된다고 함..
인터셉터나 Jsp에서 하는 건 가능하다고 하나..
전자정부표준v2.0에서 제공하는 jsp샘플을 통해 테스트해도 생성되지 않아 더 당황스러움..

[결론]
CookieGenerator 클래스이용..하거나 Service가 아닌 jsp에서 직접 쿠키 생성.

1. CookieGenerator 이용
CookieGenerator cg =
new CookieGenerator();

cg.setCookieName("쿠키이름");
cg.addCookie(response, 값);

참조URL : http://static.springsource.org/spring/docs/1.1.x/api/org/springframework/web/util/CookieGenerator.html 

2. jsp에서 직접 쿠키 이용

EgovCookieProcessCusotm.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8" session="false" %>
<%@ page import="egovframework.com.utl.cas.service.EgovSessionCookieUtil"  %>
<%@ page import="java.util.*"  %>
<%@ page import="java.net.*"  %>
<%!
    String safeGetParameter (HttpServletRequest request, String name){
        String value = request.getParameter(name);
        if (value == null) {
            value = "";
        }
        return value;
    }
%>
<%!
    void setCookie (HttpServletRequest request, HttpServletResponse response, String cookieNm, String cookieVal, int period){
   
        Cookie cookie = new Cookie(cookieNm, cookieVal);
        cookie.setMaxAge(60*period);
        cookie.setPath("/");
        response.addCookie(cookie);
    }


 
 String getCookie (HttpServletRequest request, String cookieNm ) {  
  Cookie[] cookies = request.getCookies();
  if(cookies == null){
   return "";
  }
  String cookieValue = null;
  
  for (int i=0; i < cookies.length; i++) {
   if(cookieNm.equals(cookies[i].getName())) {
    
    cookieValue = cookies[i].getValue();
   }
  }
  
  return cookieValue;
 }

 void delCookie (HttpServletResponse response, String cookieNm){
    Cookie cookie = new Cookie(cookieNm, "");
    cookie.setMaxAge(-1); // 0 : 쿠키 삭제 , -1 : 쿠키 파일 생성 안됨. 브라우저 닫힌 후 삭제(default)
    cookie.setPath("/");
    response.addCookie(cookie);
}

%>

 

 

Servlet API 2.4부터 지원하는 HttpSessionListener를 사용하시면..
세션이 없어지는 시점에 세션 정보를 확인하실 수 있을 것 같습니다.

간단한 사용 예는 다음과 같습니다.
(구체적인 사용 방법은 javax.servlet.http.HttpSessionEvent에 대한 javadoc 등을 참조하시면 될 것 같습니다.)

public class EgovHttpSessionListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent event){
// event.getSession() 참조
}
public void sessionDestroyed(HttpSessionEvent event){
// event.getSession() 참조
}
}

<web.xml>
<listeners>
<listener-class>egovframework.template.EgovHttpSessionListener</listener-class>
</listeners>

- 출처 전자정부표준시스템 Q&A -

 

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

[JEUS] 주요 오류의 원인 및 해결방법

IT/WAS | 2012. 6. 26. 11:51
Posted by 까군

.............수정중
* fail to reconnect 오류


[오류메시지]

[2012.06.15 00:00:00][1][b068] [container2-43] [WEB-3346] worker(webtob1-hth0(localhost:9900)-w024:null) : fail to reconnect
<<__Exception__>>
java.io.EOFException
 at java.io.DataInputStream.readFully(DataInputStream.java:180)
 at jeus.servlet.engine.WebtobThreadPoolManager.registerWebtob(WebtobThreadPoolManager.java:597)
 at jeus.servlet.engine.WebtobThreadPoolManager.registryConnection(WebtobThreadPoolManager.java:516)
 at jeus.servlet.engine.WebtobRequestProcessor.reconnect(WebtobRequestProcessor.java:348)
 at jeus.servlet.engine.WebtobRequestProcessor.reconnect(WebtobRequestProcessor.java:314)
 at jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:81)
<<__!Exception__>>
.
.

[원인]
WEBMain.xml의 <webtob-listener>- <thread-pool>의  min/max 값과 http.m의 *SERVER절의 MinProc/MaxProc값이 다를 때(http.m의 설정값이 더 크거나 같아야함)  발생함


 

블로그 이미지

까군

카테고리

분류 전체보기 (62)
IT (21)
생활 (0)
명언 (41)