반응형
DB를 운영하다보면 LOB 세그먼트 사이즈가 이상하게 큰 경우가 있습니다.
일반 데이터와 동일하게 LOB도 block 재사용을 한다고 하는데 작동하는 조건이 뭔가 다른가봅니다.
LOB 세그먼트가 너무 커졌을경우 사이즈를 줄이는 방법 정리 했습니다
작업 전 LOB 사이즈 확인
-- LOB 세그먼트가 40G 이상 사용 중
SQL> select * from (
select * from dba_segments
where tablespace_name = 'PS_DAT'
order by bytes desc
)
where rownum <= 3;
OWNER SEGMENT_NAME SEGMENT_TYPE SEGMENT_SUBTYPE TABLESPACE_NAME BYTES
------------------------------------- ------------------------------------------- ------------------------ ------------------------------ ------------------------------ ----------
PS SYS_LOB0000229384C00007$$ LOBSEGMENT SECUREFILE PS_DAT 44078137344
-- 데이터 사이즈 확인 시 크지 않고, 데이터 건수도 적음
SQL> select
dbms_lob.getlength(REQ_DATA) length -- clob은 문자 수, blob은 byte 반환
, lengthb(dbms_lob.substr(REQ_DATA,dbms_lob.getlength(REQ_DATA),1)) lengthb -- bytes
from PS.IF_LOG
where 1=1;
LENGTH LENGTHB
------------ --------------
883 883
571 571
571 571
947 947
507 507
572 572
563 563
574 574
509 509
move를 통한 lob 세그먼트 재구성
lob move 명령어로 동일 테이블스페이스로 이동
인덱스 unusable 발생 주의
12c 이후 online 옵션도 가능하지만 사용하지 않는 시간에 작업하는 것 권장
ALTER TABLE PS.IF_LOG MOVE LOB(REQ_DATA) STORE AS (TABLESPACE PS_DAT) ;
작업 후 LOB 사이즈 확인
44G -> 131K로 줄어들었음
-- lob 사이즈 줄어듬
SQL> select * from (
select * from dba_segments
where tablespace_name = 'PS_DAT'
and segment_name = 'SYS_LOB0000229384C00007$$'
order by bytes desc
)
where rownum <= 3;
OWNER SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE SEGMENT_SUBTYPE TABLESPACE_NAME BYTES
--------------------------------------- --------------------------------- -------------------- ------------------------ ------------------------------ ------------------------------ ----------
PS SYS_LOB0000229384C00007$$ LOBSEGMENT SECUREFILE PS_DAT 131072
1 rows selected.
table move online 시 작동 방식
시나리오- tab1 테이블 ts01 -> ts02로 move online- move 작업 중 다른세션에서 1초마다 10건씩 insert 테스트TEMPORARY 타입 테이블은 기존(tab1) 테이블이 이동하는 세그먼트SYS_RMTAB$$ 테이블은 move 되는동안 변
pskbigstar.tistory.com

반응형
'DBMS' 카테고리의 다른 글
[oracle] MVIEW 소스 테이블 DML 발생 시 NEEDS_COMPILE(invalid) 상태 변경 (3) | 2025.07.08 |
---|---|
[oracle] 스케줄러 job_creator, owner 차이 테스트 (4) | 2025.07.06 |
[oracle] LOB(clob, blob) 컬럼 사이즈(bytes) 확인 (0) | 2025.05.23 |
[oracle] SE(standard edition)의 AWR - STATSPACK 구성 (0) | 2025.04.11 |
[oracle] 인덱스 생성 시 TEMP 사용량 테스트 (0) | 2025.04.03 |