2010. 9. 8. 18:48
LOB 컬럼을 포함한 테이블 생성

 

  1. 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인덱스테이블스페이스명))
    ;

 

LOB 컬럼 추가

 

  1. ALTER TABLE 테이블명  ADD (컬럼명 BLOB)
        LOB(컬럼명) STORE AS LD_테이블명_BLOB (TABLESPACE 데이터LOB테이블스페이스명
            INDEX LI_테이블명_BLOB (TABLESPACE 인덱스LOB테이블스페이스명))

 

LOB MOVE

 

- 인덱스 REBUILD 필요

  1. ALTER TABLE 테이블명 MOVE LOB(컬럼명) STORE AS (TABLESPACE 테이블스페이스명);
    ALTER TABLE 테이블명 MOVE LOB(컬럼명) STORE AS LD_테이블명_BLOB
      (TABLESPACE 데이터LOB테이블스페이스명
       INDEX LI_테이블명_BLOB (TABLESPACE 인덱스LOB테이블스페이스명));
    ALTER INDEX 인덱스명 REBUILD TABLESPACE 테이블스페이스명
      NOLOGGING PARALLEL(DEGREE 8);
    ALTER INDEX 인덱스명 LOGGING NOPARALLEL;

 

LOB Rename

 

- LOB DATA는  Rename됨
- LOB INDEX는 Rename되지 않음
- 인덱스 rebuild 필요

 

  1. ALTER TABLE 테이블명 MOVE LOB(컬럼명) STORE AS (TABLESPACE 테이블스페이스명);
    ALTER TABLE 테이블명 MOVE LOB(컬럼명) STORE AS LD_테이블명_BLOB
  2.     (TABLESPACE 데이터LOB테이블스페이스명
         INDEX LI_테이블명_BLOB (TABLESPACE 인덱스LOB테이블스페이스명));
    ALTER INDEX 인덱스명 REBUILD TABLESPACE 테이블스페이스명
  3.     NOLOGGING PARALLEL(DEGREE 8);
    ALTER INDEX 인덱스명 LOGGING NOPARALLEL;

 

LOB 을 포함한 파티션 테이블 생성

 
- LOB컬럼을 파티션키로 사용할 수 없다.

 

  1. 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
  2.              (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
  3.              (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
  4.              (TABLESPACE LOB인덱스테이블스페이스명))
    );

 

LOB 을 포함한 파티션 테이블 SPLIT 

- 인덱스 rebuild 필요

 

  1. 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
  2.                    (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
  3.                    (TABLESPACE 인덱스LOB테이블스페이스명))
             );

 

LOB SEGMENT 조회

  

  1. SELECT * FROM DBA_LOBS;
    SELECT * FROM DBA_SEGMENTS;

 

 

 

 

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.