database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 1584 게시물 읽기
No. 1584
DB2 사용페이지수에 따른 사용률 구하는법좀 가르처 주세요.
작성자
김형후(heat6)
작성일
2008-04-10 09:46ⓒ
2008-04-10 09:54ⓜ
조회수
12,020

DB2를 처음 접하는 초보자입니다.

제가 알고 있는건 각 테이블 스페이스별 사용페이지수,빈페이지수,테이블 스페이스 안에속해있는 테이블 데이터수 입니다.

sql은 사용할수가 없구요. 이런 자료만 참조해서.

각 테이블별로 사용률이 80%(테이블스페이스사용률)가 되는 시점의 날짜를 고객에게 알려줘야 하는데..

어떤식으로 구해야 할지 모르겠습니다.

                  사용페이지수

---------------------------------   * 100 = 사용률

총 페이지수(사용페이지수+빈페이지수)

 

문제는 각 테이블 별 데이터 수는 뽑을수 있는데...

각 테이블 별 할당된 페이지수를 정확히 모르니까... 논리 삭제된 페이지도 있을수 있고...

그렇다 보니 증가률을 곱해도 정확한 예상 사용률을 구하지 못하겠네요.

이럴땐 어떻게 구하는게 좋을까요..

 

하나의 테이블 스페이스에 하나의 테이블만 존재 한다면...그래도  맞출수 있겠는데..

하나의 테이블 스페이스에 복수의 테이블(8개,6개,4개)개 존재 하니까...

테이블 스페이스의 데이터 총합계랑 각 테이블 단위의 테이터를 전부 더해보았지만. 맞지 않아서..

또 인덱스 테이블은 어떻게 되는건지...

모르는게 너무 많아서... 어지럽네요.

제 짧은 생각으로는 각 테이블별 몇개의 페이지를 사용 하고 있는지 구하는게 좋을것 같은데.그래서

            각  테이블 테이터 건수

---------------------------------  = 데이터 건수에 따른 사용 하고 있는 페이지수

각 테이블 페이지당 할당된 테이터 수(정해져있음)

 

이렇게 구해서 사용률이랑 비교해 봤는데... 결과 값이 차이가 나서...

맞는것 같긴 한데... 판단을 못하겠어요.

DBA도 없고...

일단을 해야 하는데...

잛은 내용이라도 좋으니...

아시는 분들은 도와주세요..

부탁드립니다.

이 글에 대한 댓글이 총 6건 있습니다.

reorgchk 를 사용해보세요. 이 명령를 사용하시면 테이블과 인덱스정보를 알 수 있습니다.

1. 테이블 통계 갱신 
    : reorgchk는 통계정보를 읽어 보여주므로 반드시 선행되어야 합니다. 

   1.1 모든 테이블 runstats 스크립트 
    : 아래의 내용을 파일로 저장하여 실행하시면 사용중인 모든 테이블들의 통계정보가 갱신됩니다. 
      테이블이 크다면 실행시간을 고려하셔야 합니다.

DB=SAMPLE     

db2 connect to $DB > /dev/null

db2 -x "select rtrim(tabschema)||'.'||tabname from syscat.tables where type = 'T'" > tab.lst

for i in `cat tab.lst`
do
  db2 "runstats on table $i with distribution and indexes all"
done


2. reorgchk 명령 실행 
    : db2 reorgchk current statistics on table user 

이 명령을 사용하시면 아래 정보에 해당하는 테이블에 대해 REORG 항목에 * 로 표시를 해줍니다. 
이런 테이블들은 reorg 작업을 해주시면 됩니다.

F1: 100 * OVERFLOW / CARD < 5
F2: 100 * (데이터 페이지의 실제 스페이스 사용) > 70
F3: 100 * (필수 페이지 수 / 총 페이지 수) > 80

조는 냥이님이 2008-04-10 10:08에 작성한 댓글입니다. Edit

조는 냥이님 답변 감사합니다.

지금현재 db2의 접속을 불가기때문에....여러가지 신청서를 낸 다음 실행할수 있습니다.
은행 정보라서 허가가 떨어질지 안떨어질지 모르는 상황입니다.
필요한 정보가 있을 요구하라는 식이죠.

그래서 현재 가지고 있는 정보(취득한 데이터)
*각 테이블 스페이스 별 사용페이지수,빈페이지수
*각 테이블 스페이스에 속한 테이블의 테이터수
*각 테이블의 길이

머 이런정보만 가지고 예상 증가률을 곱해서 각 테이블,각 테이블스페이스가 사용률 80%를 넘는
시점을 가르처 달라고 하는데...

전 자바 프로그래머라서....db2는 잘 모르겠습니다.

테이블 스페이스의 사용량은 아는데...그속에 포함된 테이블별 사용량을 못구해서요.
데이터 수 만가지고는 각 테이블사용량을 짐직해서 전부 테이블의 사용량을 더해 봤는데
테이블 스페이스 사용량 보다 부족하네요. 논리 삭제된 페이지가 있을수도 있고,
아직 개념 자체가 안 잡혀서 그런지...

죄송하지만 한가지만 더 여쭤 봐도 될까요
테이블 스페이스 계산식이 이렇게 되어있다면....각 테이블의 계산을 어떻게 해야 효율적인가요
각 테이블별 사이즈와 테이터 수는 알고 있지만....잘 안되네요...ㅜ.ㅜ
                  사용페이지수
---------------------------------   * 100 = 사용률

총 페이지수(사용페이지수+빈페이지수)


김형후(heat6)님이 2008-04-10 10:41에 작성한 댓글입니다.
이 댓글은 2008-04-10 10:46에 마지막으로 수정되었습니다.

syscat.tables 테이블을 조회해보세요 
- sycat 스키마의 view는 select 권한이 public이므로 그냥 조회하시면 됩니다. 

FPAGES : 사용중인 전체 Page 
NPAGES : 데이터가 포함된 Page 

빈페이지 ->  FPAGES - NPAGES 

< 이작업도 runstats 작업이 선행되어야 합니다. >

--; 테이블사용량인줄 알았습니다. 제가 좀 정신이 없네여 .. 지성 

http://www.ibmdb2.net/board/board.php?bnum=3&num=2642&act=read&cate=&page=1&search=&s_word=

위에 답변이 있습니다. 


조는 냥이님이 2008-04-10 11:02에 작성한 댓글입니다.
이 댓글은 2008-04-10 16:46에 마지막으로 수정되었습니다. Edit

조는 냥이님 답변 감사합니다.

제가 구하는게... 테이블 스페이스의 사용률이량 용량,그 테이블 스페이스에 포함된 테이블의 사용량이량 용량...을 구하고 있습니다.


정확한 답변이 된것 같네요.먼저 감사의 말씀을 드리고 싶습니다.


syscat.tables 테이블을 조회해서

FPAGES : 사용중인 전체 Page 

NPAGES : 데이터가 포함된 Page 

를 구했습니다.이결과를 가지고

                  사용페이지수

---------------------------------   * 100 = 사용률

총 페이지수(사용페이지수+빈페이지수)

각 테이블의 사용률을 구한다면 맞는 건가요.경험이 없어서 ... 자신이 없어서요.


갱신이지만...runstats 작업을 하게 되면... 혹시 다른 문제는 없을까요..

제가 높은 직위도 아니고.. 누가 맘대로 갱신했어... 혹시나..이런말이 나올까봐요.


테이블 스페이스에 3개의 테이블이 존재 한다면...

각 테이블에서 구한 3테이블의사용률이랑 테이블 스페이스의 사용량은 수치로써

일치 해야 하는 건가요.. 다른요인이 있어서 일치 하지 않을수도 있나요..

db2 list tablespaces show detail   을 실행한 결과.

테이블 스페이스에 대한 전체 페이지 수가 나와 있어서, 그에 속한 테이블의 페이지수와

일치 여부를 알고 싶습니다. 꼭 맞아야 하는건지..*개인적으로 딱맞았으면 좋겠네요. 

테이블에 따라서 사용량을 기준치보다 넘는 게 존재하기 때문에 보고서 쓰기가...힘드네요.


염치 없지만.. 또 이렇게 질문을 하게 됩니다.

부탁드립니다.

 

김형후(heat6)님이 2008-04-11 10:31에 작성한 댓글입니다.
이 댓글은 2008-04-11 10:43에 마지막으로 수정되었습니다.

SELECT distinct substr(rtrim(tabschema)||'.'||tabname,1,40) TABNAME,
       card count,int(dec(fpages)*pagesize/1024/1024) TOT_M, int(dec(npages)*pagesize/1024/1024) USE_M
  from syscat.tables t1,syscat.tablespaces t2
 where t1.TBSPACEID=t1.TBSPACEID
   and tabschema not like 'SYS%'
   and type='T'
order by 3 desc;

위 sql 로 테스트를 해봤습니다. 

1. runstats작업을 해주지 않은 경우 틀린 값이 나옵니다. runstats는 운영하시는 분이 상황을 봐서 결정을 하시겠지만 auto 설정이 되어 있을수도 있습니다. V8에서는 옵션이 있어 변경을 해주시면 되고 V9에서는 default가 auto 입니다. 이 설정이 안되어 있는경우 대부분 dba가 주기적으로 작업을 하게 됩니다. 설정이 안되어 있다면 주말에 한번씩 실행하도록 말씀을 해주세요.(데이터 변경이 없는 테이블은 하지 않아도 됩니다) 

2. 특정 테이블 스페이스를 지정해서 테이블의  사용량(USE_M)의 합을 비교해 보았는데 거의 일치합니다.
조는 냥이님이 2008-04-11 11:25에 작성한 댓글입니다.
이 댓글은 2008-04-11 11:33에 마지막으로 수정되었습니다. Edit

조는 냥이님 정말 좋은 답변 정말 감사드립니다.

김형후(heat6)님이 2008-04-11 11:34에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
1590프로시저 안에서 에러처리 다시 질문드립니다. [1]
이도희
2008-04-17
10694
1586이거 왜이럴까요?? [2]
김희섭
2008-04-16
10028
1585프로시저 안에서 exception 처리 [1]
이도희
2008-04-14
15249
1584DB2 사용페이지수에 따른 사용률 구하는법좀 가르처 주세요. [6]
김형후
2008-04-10
12020
1583좀 도와줍쇼~~~^^ connection 권한설정하는것 궁금합니다... [1]
김성태
2008-04-09
10113
1582[DB2] 42501 에러 메시지 관련 질의 사항입니다. [1]
잠자리
2008-04-08
15892
1581부디...어린양을 양도해주세요~~원격 connect 문제입니다..아오..ㅋ^^ [4]
김성태
2008-04-04
12361
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2022 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다