728x90
반응형
Oracle 데이터베이스의 성능과 저장 공간 활용을 최적화하기 위해 LOB(Large Object) 컬럼과 관련 인덱스의 테이블스페이스 변경이 필요할 수 있다.
아래는 LOB 컬럼 및 인덱스 테이블스페이스 변경을 위한 단계별 가이드이다.
1. 현재 LOB 컬럼과 테이블 확인
dba_segments와 dba_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
반응형
'ORACLE > Admin' 카테고리의 다른 글
[Oracle] INTERSECT 명령어 (0) | 2024.04.25 |
---|---|
[ORACLE] 통계정보 수집과 백업 쿼리 (2) | 2024.01.23 |
[ORACLE] OR-expansion과 USE_CONCAT, NO_EXPAND 힌트 (0) | 2023.11.30 |
[ORALCE] 특정 사용자만 파라미터 적용하기(LOGON TRIGGER) (0) | 2023.11.20 |
[오라클] 스키마 전체 테이블에 대한 읽기 권한 부여 (0) | 2023.10.27 |