[기타] 디비튜닝에 대한 질문과답변내용...
2010.05.12 08:26
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
오라클 DB를 점검한결과, 아래부분의 점검이 필요하다고 나왔습니다.
오라클업체에 연락을 하시어 아래부분을 점검 받으시기 바랍니다.
그리고, DB Tunning 및 analyze(최적화) 를 요청하시어 DB운영이 최적상태로 운영될수
있도록 지원요청하시면 되겠습니다.
[Segments with > 100 extents]
===========================================================================================================
== SEGMENT_TYPE OWNER SEGMENT_NAME EXTENTS PARTITION NAME ==
===========================================================================================================
!TABLE test test1 163
!TABLE test test2 150
감사합니다.
답변내용]
해당 segment(테이블명과 동일합니다)의 extents수를 dba_extents 뷰와
test1 및 조회한 결과 test2 테이블이
130만건 이상이 넘어가는 데이터들을 갖고 있으므로 문의사항과 같은
extents 수는 정상임.
만일 데이터가 많지 않은 상태에서 segment의 extents가 비정상적으로 많다면
해당 테이블을 rebuild 시켜야하나 조회결과 튜닝대상이 아님으로 판단.
조회결과.
1 select segment_name, bytes from dba_extents
2* where segment_name='test1'
SQL> conn intraware/intraware
Connected.
SQL> select count(*) from test1;
COUNT(*)
----------
1365055
[기타 사항]
SQL> desc test1;
Name Null? Type
----------------------------------------- -------- ----------------------------
HSSAVEDEPTID NOT NULL VARCHAR2(20)
UWBOXTYPE NOT NULL NUMBER(5)
HSMSGID NOT NULL VARCHAR2(20)
HSORGID VARCHAR2(20)
HSDRAFTERID VARCHAR2(20)
SZDRAFTERNAME VARCHAR2(32)
HSDRAFTDEPTID VARCHAR2(20)
SZDRAFTDEPTNAME VARCHAR2(64)
HSRECEIPTERID VARCHAR2(20)
SZRECEIPTERNAME VARCHAR2(32)
HSRECEIPTDEPTID VARCHAR2(20)
SZRECEIPTDEPTNAME VARCHAR2(64)
HSSENDID VARCHAR2(20)
SZSENDNAME VARCHAR2(32)
HSSENDDEPTID VARCHAR2(20)
SZSENDDEPTNAME VARCHAR2(64)
HSBROADERID VARCHAR2(20)
SZBROADERNAME VARCHAR2(32)
HSBROADDEPTID VARCHAR2(20)
SZBROADDEPTNAME VARCHAR2(64)
HSDAMDANGID VARCHAR2(20)
SZDAMDANGNAME VARCHAR2(32)
HSASSID VARCHAR2(20)
SZASSNAME VARCHAR2(32)
HSPARENTDEPTID VARCHAR2(20)
SZPARENTDEPTNAME VARCHAR2(64)
HSCONTROLLERID VARCHAR2(20)
SZCONTROLLERNAME VARCHAR2(32)
HSLASTSIGNERID VARCHAR2(20)
SZLASTSIGNERNAME VARCHAR2(32)
SZFORMNAME VARCHAR2(100)
HSPASSDEPTID VARCHAR2(20)
등....
데이터타입에 BLOB이나 CLOB (대용량 파일을 지원하는 데이터타입) 이 없으므로
추후 리빌드가 필요할 때에 작업하는데에도 문제가 없는것으로 진단.
[TIP] 테이블 리빌드 하는 방법
해당 유저에서
alter table 테이블명 move tablespace 해당테이블스페이스이름;
--> 테이블을 다시 같은 위치로 옮기라는 뜻이며 이 과정을 거침으로써
쓸데없이 늘어난 extents 등을 재조정할 수 있음.
단, 테이블의 데이터타입에 BLOB 이나 CLOB 과 같이 대용량데이터를 지원하는
타입이 선언된 경우라면 리빌드 불가.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
오라클 DB를 점검한결과, 아래부분의 점검이 필요하다고 나왔습니다.
오라클업체에 연락을 하시어 아래부분을 점검 받으시기 바랍니다.
그리고, DB Tunning 및 analyze(최적화) 를 요청하시어 DB운영이 최적상태로 운영될수
있도록 지원요청하시면 되겠습니다.
[Segments with > 100 extents]
===========================================================================================================
== SEGMENT_TYPE OWNER SEGMENT_NAME EXTENTS PARTITION NAME ==
===========================================================================================================
!TABLE test test1 163
!TABLE test test2 150
감사합니다.
답변내용]
해당 segment(테이블명과 동일합니다)의 extents수를 dba_extents 뷰와
test1 및 조회한 결과 test2 테이블이
130만건 이상이 넘어가는 데이터들을 갖고 있으므로 문의사항과 같은
extents 수는 정상임.
만일 데이터가 많지 않은 상태에서 segment의 extents가 비정상적으로 많다면
해당 테이블을 rebuild 시켜야하나 조회결과 튜닝대상이 아님으로 판단.
조회결과.
1 select segment_name, bytes from dba_extents
2* where segment_name='test1'
SQL> conn intraware/intraware
Connected.
SQL> select count(*) from test1;
COUNT(*)
----------
1365055
[기타 사항]
SQL> desc test1;
Name Null? Type
----------------------------------------- -------- ----------------------------
HSSAVEDEPTID NOT NULL VARCHAR2(20)
UWBOXTYPE NOT NULL NUMBER(5)
HSMSGID NOT NULL VARCHAR2(20)
HSORGID VARCHAR2(20)
HSDRAFTERID VARCHAR2(20)
SZDRAFTERNAME VARCHAR2(32)
HSDRAFTDEPTID VARCHAR2(20)
SZDRAFTDEPTNAME VARCHAR2(64)
HSRECEIPTERID VARCHAR2(20)
SZRECEIPTERNAME VARCHAR2(32)
HSRECEIPTDEPTID VARCHAR2(20)
SZRECEIPTDEPTNAME VARCHAR2(64)
HSSENDID VARCHAR2(20)
SZSENDNAME VARCHAR2(32)
HSSENDDEPTID VARCHAR2(20)
SZSENDDEPTNAME VARCHAR2(64)
HSBROADERID VARCHAR2(20)
SZBROADERNAME VARCHAR2(32)
HSBROADDEPTID VARCHAR2(20)
SZBROADDEPTNAME VARCHAR2(64)
HSDAMDANGID VARCHAR2(20)
SZDAMDANGNAME VARCHAR2(32)
HSASSID VARCHAR2(20)
SZASSNAME VARCHAR2(32)
HSPARENTDEPTID VARCHAR2(20)
SZPARENTDEPTNAME VARCHAR2(64)
HSCONTROLLERID VARCHAR2(20)
SZCONTROLLERNAME VARCHAR2(32)
HSLASTSIGNERID VARCHAR2(20)
SZLASTSIGNERNAME VARCHAR2(32)
SZFORMNAME VARCHAR2(100)
HSPASSDEPTID VARCHAR2(20)
등....
데이터타입에 BLOB이나 CLOB (대용량 파일을 지원하는 데이터타입) 이 없으므로
추후 리빌드가 필요할 때에 작업하는데에도 문제가 없는것으로 진단.
[TIP] 테이블 리빌드 하는 방법
해당 유저에서
alter table 테이블명 move tablespace 해당테이블스페이스이름;
--> 테이블을 다시 같은 위치로 옮기라는 뜻이며 이 과정을 거침으로써
쓸데없이 늘어난 extents 등을 재조정할 수 있음.
단, 테이블의 데이터타입에 BLOB 이나 CLOB 과 같이 대용량데이터를 지원하는
타입이 선언된 경우라면 리빌드 불가.