[오라클]LOB를 가진 테이블의 관리
LOB 컬럼을 가진 테이블에 대한 명령어를 정리해 보았다.
1. LOB 컬럼을 포함한 테이블 생성
-----------------------------
SQL> CREATE TABLE 테이블명 (
일반컬럼명 VARCHAR2(255) NOT NULL,
LOB컬럼명 CLOB NULL,
CONSTRAINT PK인덱스명 PRIMARY KEY (일반컬럼명)
USING INDEX TABLESPACE 인덱스테이블스페이스명
)
TABLESPACE 데이터테이블스페이스명
LOB(LOB컬럼명) STORE AS LD_테이블명_CLOB
(TABLESPACE LOB데이터테이블스페이스명 DISABLE STORAGE IN ROW
INDEX LI_테이블명_CLOB (TABLESPACE LOB인덱스테이블스페이스명))
;
2. LOB 컬럼 추가
-------------
SQL> alter table 테이블명 add (컬럼명 BLOB)
lob(컬럼명) STORE AS LD_테이블명_BLOB (TABLESPACE 데이터LOB테이블스페이스명
INDEX LI_테이블명_BLOB (TABLESPACE 인덱스LOB테이블스페이스명));
3. LOB MOVE
-----------
- 인덱스 REBUILD 필요
SQL> alter table 테이블명 move lob(컬럼명) store as (tablespace 테이블스페이스명);
SQL> alter table 테이블명 move lob(컬럼명) STORE AS LD_테이블명_BLOB
(TABLESPACE 데이터LOB테이블스페이스명
INDEX LI_테이블명_BLOB (TABLESPACE 인덱스LOB테이블스페이스명));
SQL> alter index 인덱스명 rebuild tablespace 테이블스페이스명
nologging parallel(degree 8);
SQL> alter index 인덱스명 logging noparallel;
4. LOB RENAME
----------
- LOB DATA는 Rename됨
- LOB INDEX는 Rename되지 않음
- 인덱스 rebuild 필요
SQL> alter table 테이블명 move lob(컬럼명) store as (tablespace 테이블스페이스명);
SQL> alter table 테이블명 move lob(컬럼명) STORE AS LD_테이블명_BLOB
(TABLESPACE 데이터LOB테이블스페이스명
INDEX LI_테이블명_BLOB (TABLESPACE 인덱스LOB테이블스페이스명));
SQL> alter index 인덱스명 rebuild tablespace 테이블스페이스명
nologging parallel(degree 8);
SQL> alter index 인덱스명 logging noparallel;
5. LOB 을 포함한 파티션 테이블 생성
--------------------------------
- LOB컬럼을 파티션키로 사용할 수 없다.
SQL> CREATE TABLE 테이블명
(
일반컬럼명 VARCHAR2(8) NOT NULL,
LOB컬럼명 BLOB NULL,
)
PARTITION BY RANGE(일반컬럼명)
(
PARTITION PT_테이블명_200803 VALUES LESS THAN ('20080399')
TABLESPACE 데이터테이블스페이스명
LOB(LOB컬럼명) STORE AS LD_PT_테이블명_200803_BLOB
(TABLESPACE LOB데이터테이블스페이스명 DISABLE STORAGE IN ROW
INDEX LI_PT_테이블명_200803_BLOB
(TABLESPACE LOB인덱스테이블스페이스명)),
PARTITION PT_테이블명_200804 VALUES LESS THAN ('20080499')
TABLESPACE 데이터테이블스페이스명
LOB(LOB컬럼명) STORE AS LD_PT_테이블명_200804_BLOB
(TABLESPACE LOB데이터테이블스페이스명 DISABLE STORAGE IN ROW
INDEX LI_PT_테이블명_200804_BLOB
(TABLESPACE LOB인덱스테이블스페이스명)),
PARTITION PT_테이블명_999999 VALUES LESS THAN ('99999999')
TABLESPACE 데이터테이블스페이스명
LOB(LOB컬럼명) STORE AS LD_PT_테이블명_999999_BLOB
(TABLESPACE LOB데이터테이블스페이스명 DISABLE STORAGE IN ROW
INDEX LI_PT_테이블명_999999_BLOB
(TABLESPACE LOB인덱스테이블스페이스명))
);
6. LOB 을 포함한 파티션 테이블 SPLIT
---------------------------------
- 인덱스 rebuild 필요
SQL> ALTER TABLE 테이블명 SPLIT PARTITION PT_테이블명_999999 AT ('20080599')
INTO (PARTITION PT_테이블명_200805 TABLESPACE TS_GPDRM06
LOB(LOB컬럼명) STORE AS LD_PT_테이블명_200806_BLOB
(TABLESPACE 데이터LOB테이블스페이스명 DISABLE STORAGE IN ROW
INDEX LI_PT_테이블명_200806_BLOB
(TABLESPACE 인덱스LOB테이블스페이스명)),
PARTITION PT_테이블명_999999 TABLESPACE 데이터테이블스페이스명
LOB(LOB컬럼명) STORE AS LD_PT_테이블명_999999_BLOB
(TABLESPACE 데이터LOB테이블스페이스명 DISABLE STORAGE IN ROW
INDEX LI_PT_테이블명_999999_BLOB
(TABLESPACE 인덱스LOB테이블스페이스명))
);
7. LOB SEGMENT 조회
SQL> select * from dba_lobs;
SQL> select * from dba_segments;
참고) 오라클10g의 경우 테이블 purge옵션을 주지 않고 drop했을 경우
LOB세그먼트가 남아 있어 같은 LOB세그먼트로 생성시 동일 객체
이름이 존재한다는 에러 발생.
drop table 테이블명 purge; 또는 purge recyclebin;으로 삭제 후 생성.
'01.오라클 > 001.DB 관리' 카테고리의 다른 글
[오라클]Alter Table 컬럼 변경 관리 (0) | 2012.12.19 |
---|---|
[오라클]사용자별 오브젝트 갯수 조회 (0) | 2012.12.19 |
[오라클]DDL-시퀀스의 LAST값 변경 (0) | 2012.12.19 |
[오라클]RAC 리스너 / TNS / JDBC(OCI, THIN) 설정 (0) | 2012.12.19 |
[오라클]Redo Log Resize 방법 (0) | 2012.12.19 |