DB 디스크 공간 관리
Tibero 데이터베이스 디스크 공간 관리에 대해 설명합니다.
빈번한 Extents 발생
데이터베이스 내에 Extent가 많이 발생한 오브젝트를 확인합니다.
다음은 DB 수행 쿼리 작성 예입니다.
SELECT owner,
segment_name,
segment_type,
tablespace_name,
count(*) numext,
round(sum(bytes)/1024/1024, 1) MB
FROM dba_extents
WHERE owner not in ('SYS','SYSCAT')
GROUP BY segment_name,
segment_type ,
owner,
tablespace_name
HAVING COUNT(extent_id) > 40
ORDER BY segment_type,
round(sum(bytes)/1024/1024, 1) desc,
segment_name;결과는 아래와 같습니다.
각 항목에 대한 설명은 다음과 같습니다.
항목
설명
OWNER
소유자 정보
SEGMENT_NAME
세그먼트 정보
SEGMENT_TYPE
세그먼트 타입
TABLESPACE_NAME
세그먼트가 사용하는 Tablespace의 이름
NUMEXT
사용하고 있는 Extent의 수
MB
현재 사용 중인 세그먼트의 사용량
Extent가 40개 이상 발생한 오브젝트를 보여줍니다.
Extent 수가 많은 것이 반드시 심각한 성능 저하로 연결되지 않지만 Extent의 잦은 실시간 할당 때문에 성능상 좋지 못합니다.
Extent가 지나치게 많이 발생한 오브젝트에 대해서는 Next Extents의 크기를 데이터 증가 수준에 맞게 조정하여 Extent가 자주 발생하지 않도록 합니다. 또한 데이터의 양이 많지 않은데 Extent의 크기만 클 경우 Reorg 등의 조치가 필요한지 검토해 봅니다.
Tablespace 사용량
Tablespace의 사용 현황과 Fragmentation 을 점검합니다.
다음은 DB 수행 쿼리 작성 예입니다.
결과는 아래와 같습니다.
각 항목에 대한 설명은 다음과 같습니다.
항목
설명
TABLESPACE_NAME
Tablespace의 이름
BYTES(MB)
할당된 사이즈
FREE(MB)
사용할 수 있는 사이즈
USED(MB)
사용 중인 사이즈
TOTAL BLK
할당된 Block의 수
FREE BLK
사용할 수 있는 Block의 수
USED BLK
사용 중인 Block의 수
Free Space 공간을 확인하고 공간이 부족하다면 Tablespace의 공간을 재정의합니다.
다음은 Tablespace의 재정의 방법입니다.
Tablespace 생성
하나의 Tablespace에 여러 개의 데이터 파일 생성
Tablespace 삭제 Tablespace는 사라지지만 구성 데이터 파일은 삭제되지 않고 남아있습니다.
Tablespace 안의 모든 데이터 삭제
Tablespace에 데이터 파일 추가
데이터 파일의 크기 변경
Undo 세그먼트 사용률
Undo Tablespace(Rollback 세그먼트)의 사용률을 확인합니다.
Undo 세그먼트 조회
Single DB
다음은 Single DB 쿼리 작성 예입니다.
결과는 아래와 같습니다.
TAC DB
다음은 TAC DB 쿼리 작성 예입니다.
결과는 아래와 같습니다.
각 항목에 대한 설명은 다음과 같습니다.
항목
설명
INST_ID
Tibero 인스턴스 정보 (TAC DB 질의 쿼리)
SEGMENT_ID
세그먼트 ID
TABLESPACE_NAME
Rollback(Undo) Tablespace의 이름
STATUS
세그먼트 상태 (ONLINE, OFFLINE, UNDEFINED)
EXTENTS
할당된 Extent의 수
RSSIZE(K)
세그먼트 사용량
CUREXT
현재 사용 중인 Extent
CURSIZE
현재 사용 중인 Extent의 크기
XACTS
해당 Undo 세그먼트를 배정받아서 수행 중인 트랜잭션의 수
현재 사용 중인 Undo 확인
Single DB
다음은 Single DB 쿼리 작성 예입니다.
결과값은 아래와 같습니다.
TAC DB
다음은 TAC DB 쿼리 작성 예이다.
결과값은 아래와 같습니다.
각 항목에 대한 설명은 다음과 같습니다.
항목
설명
INST_ID
Tibero 인스턴스 정보 (TAC DB 질의 쿼리)
SID
세션 ID
SERIAL#
세션 일련번호
SEGMENT_ID
세그먼트 ID
SQL Type
사용한 SQL 타입 (SELECT, INSERT, UPDATE, DELETE, CALL)
TABLESPACE_NAME
Rollback(Undo) Tablespace 이름
USED_BLK
사용 중인 Block의 개수
CUREXT
현재 사용 중인 Extent
CURSIZE
현재 사용 중인 Extent의 크기
XACTS
해당 Undo 세그먼트를 배정받아서 수행 중인 트랜잭션의 수
Undo Tablespace가 가득 찬 경우 재사용 가능한 Extent가 있다면 재사용(steal)합니다.
Extent를 확장할 경우 확장전 재사용 할 세그먼트가 있는지 확인하고 해당하는 경우가 없다면 확장을 합니다.
Undo 세그먼트의 재사용 가능 시점은 세션에서 사용하는 TX가 Commit되면 가능하고 Commit된 정보에 대해서 Undo 이미지를 유지하기 위한 시간 설정값으로 undo_retention이 있습니다. 최대한 Undo를 보장해서 좀 더 Snapshot too old가 나지 않는 선에서 undo_retention 설정 값을 변경합니다.
Undo 세그먼트의 수동 감소
아래와 같이 USN NUMBER를 획득하여 Shrink 명령을 통해 Undo 세그먼트 감소가 가능합니다.
간단히 아래의 SQL문을 이용해 수행 결과를 그대로 실행해도 결과는 같습니다.
Last updated

