블로그 이미지
redkite

카테고리

분류 전체보기 (291)
00.SI프로젝트 산출물 (0)
00.센터 운영 문서 (0)
01.DBMS ============.. (0)
01.오라클 (117)
01.MS-SQL (15)
01.MySQL (30)
01.PostgreSql (0)
01.DB튜닝 (28)
====================.. (0)
02.SERVER ==========.. (0)
02.서버-공통 (11)
02.서버-Linux (58)
02.서버-Unix (12)
02.서버-Windows (2)
====================.. (0)
03.APPLICATION =====.. (11)
====================.. (0)
04.ETC =============.. (0)
04.보안 (5)
====================.. (0)
05.개인자료 (1)
06.캠핑관련 (0)
07.OA관련 (1)
Total
Today
Yesterday

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

공지사항

최근에 올라온 글

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;으로 삭제 후 생성.

 

Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함