본문 바로가기

ORACLE/Admin

[ORACLE] LOB 컬럼 테이블스페이스 변경

728x90
반응형

Oracle 데이터베이스의 성능과 저장 공간 활용을 최적화하기 위해 LOB(Large Object) 컬럼과 관련 인덱스의 테이블스페이스 변경이 필요할 수 있다.

아래는 LOB 컬럼 및 인덱스 테이블스페이스 변경을 위한 단계별 가이드이다.

 


1. 현재 LOB 컬럼과 테이블 확인

dba_segmentsdba_lobs 뷰를 조인하여 LOB(Large Object) 세그먼트에 대한 정보를 검색

select s.OWNER , TABLE_NAME , COLUMN_NAME
 from dba_segments s, dba_lobs l
 where
 s.SEGMENT_NAME = l.SEGMENT_NAME
 and s.OWNER = l.OWNER
 and SEGMENT_TYPE = 'LOBSEGMENT';

결과 예시

  • OWNER: LOB 세그먼트를 소유하고 있는 데이터베이스 사용자(스키마)의 이름
  • TABLE_NAME: LOB 데이터가 포함된 테이블의 이름
  • COLUMN_NAME: 해당 LOB 데이터를 포함하는 컬럼의 이름



2. LOB 컬럼 테이블스페이스 변경

ALTER TABLE 명령어를 사용하여 LOB 컬럼을 새로운 테이블스페이스로 이동합니다.

 

LOB 컬럼 테이블스페이스 변경 쿼리

ALTER TABLE 테이블명 
MOVE LOB(컬럼명) STORE AS (
    TABLESPACE 변경테이블스페이스명
);

 


LOB 컬럼  테이블스페이스 변경 쿼리 생성

 select 'alter table ' || s.OWNER || '.' || TABLE_NAME || ' move lob('|| COLUMN_NAME ||') store as (tablespace EC_SD_DAT);'
 from dba_segments s, dba_lobs l
 where
 s.SEGMENT_NAME = l.SEGMENT_NAME
 and s.TABLESPACE_NAME = '테이블스페이스명' -- 여기에 원하는 테이블스페이스명 입력
 and s.OWNER = '스키마명' -- 여기에 스키마명 입력
 and s.SEGMENT_TYPE = 'LOBSEGMENT'
 --and s.SEGMENT_NAME = 'LOB세그먼트명';

결과 예시

...



 
 3. 인덱스 테이블스페이스 변경

인덱스를 새로운 테이블스페이스로 Rebuild 한다.

인덱스 Rebuild 쿼리

 alter index 스키마명.인덱스명 rebuild tablespace 테이블스페이스명;


 
인덱스 Rebuild 쿼리 생성

select 'alter index ' || OWNER || '.' || INDEX_NAME || ' rebuild tablespace 새테이블스페이스명;'
from dba_indexes
 where TABLESPACE_NAME = '기존테이블스페이스명'
 and OWNER = '스키마명'
 and TABLE_TYPE = 'TABLE';

결과 예시

...

 

 

 

LOB 컬럼 테이블스페이스 변경 시 주의사항

  • 작업 수행 전 데이터 이동 과정에서 문제가 발생할 경우를 대비하여 데이터베이스 백업 수행을 권고한다.
  • 대상 테이블스페이스에 충분한 공간이 있는지 확인이 필요하다.
  • 해당 테이블에 대한 적절한 권한이 있는지 확인이 필요하다.
  • LOB 데이터 이동은 시간이 소요될 수 있으므로 비즈니스 시간 외에 작업을 수행하는 것을 권고한다.
728x90
반응형