행위

"파티션 테이블 로컬인덱스 생성"의 두 판 사이의 차이

DB CAFE

(로컬 인덱스 생성)
(로컬 파티션 인덱스 초간단 생성 팁)
 
(같은 사용자의 중간 판 8개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
__TOC__
 
__TOC__
== 로컬 인덱스 생성 ==
+
== 로컬 파티션 인덱스 생성 ==
 
{{틀:타이틀 투명
 
{{틀:타이틀 투명
|보더색=#202020
 
|배경색=#202020
 
|폰트색=#fffafa
 
 
|제목=1.INDEX 생성(UNUSABLE 옵션 적용)
 
|제목=1.INDEX 생성(UNUSABLE 옵션 적용)
 
|아이콘=arrow_downward
 
|아이콘=arrow_downward
|아이콘색색=#ffa500
 
 
}}
 
}}
 
<source lang=sql>CREATE INDEX IX_TBABC10_L1 ON TBABC10(YM, PROC_CD, PROC_STAT)  
 
<source lang=sql>CREATE INDEX IX_TBABC10_L1 ON TBABC10(YM, PROC_CD, PROC_STAT)  
25번째 줄: 21번째 줄:
  
 
{{틀:타이틀 투명
 
{{틀:타이틀 투명
|보더색=#202020
 
|배경색=#202020
 
|폰트색=#fffafa
 
 
|제목=2.각 파티션별로 REBUILD + NOLOGGING 모드  
 
|제목=2.각 파티션별로 REBUILD + NOLOGGING 모드  
* 가장 많이 ACCESS(최근 사용)되는 파티션부터 생성
+
- 가장 많이 ACCESS(최근 사용)되는 파티션부터 생성
 
|아이콘=arrow_downward
 
|아이콘=arrow_downward
|아이콘색색=#ffa500
 
 
}}
 
}}
 
<source lang=sql>
 
<source lang=sql>
45번째 줄: 37번째 줄:
  
 
{{틀:타이틀 투명
 
{{틀:타이틀 투명
|보더색=#202020
 
|배경색=#202020
 
|폰트색=#fffafa
 
 
|제목=3.LOGGING 모드로 변경  
 
|제목=3.LOGGING 모드로 변경  
 
|아이콘=arrow_downward
 
|아이콘=arrow_downward
|아이콘색색=#ffa500
 
 
}}
 
}}
 
<source lang=sql>
 
<source lang=sql>
56번째 줄: 44번째 줄:
 
</source>
 
</source>
  
== 로컬 인덱스 빠르게 생성하는 팁 ==
+
----
 +
== 로컬 파티션 인덱스 초간단 생성 팁 ==
  
 
{{틀:타이틀 투명
 
{{틀:타이틀 투명
65번째 줄: 54번째 줄:
 
create index ix_sales_01
 
create index ix_sales_01
 
     on sales(col1,col2,....)
 
     on sales(col1,col2,....)
  local unusable
+
  local unusable  
 +
online
 
tablespace ts_idx_01;
 
tablespace ts_idx_01;
 
</source>
 
</source>
  
 
{{틀:타이틀 투명
 
{{틀:타이틀 투명
|제목=2.로컬 인덱스들을 REBUILD
+
|제목=2.로컬 인덱스 REBUILD 용 SQL생성 후 실행
 
|아이콘=arrow_downward
 
|아이콘=arrow_downward
 
}}
 
}}
 
<source lang=sql>
 
<source lang=sql>
select 'alter index emp.'|| index_name ||' rebuild partition ' || partition_name || ' parallel 16;'
+
select 'alter index emp.'|| index_name ||' rebuild partition ' || partition_name || ' parallel 32;'
 
   from dba_ind_partitions
 
   from dba_ind_partitions
 
  where index_name = 'ix_sales_01';
 
  where index_name = 'ix_sales_01';
 
</source>
 
</source>
 
----
 
----
 
 
'''특히, PK(PRIMARY KEY)를 생성하는 경우 ALTER TABLE ... ADD CONSTRAINTS ... 명령을
 
 
이용하면 위와같이 작업할 수 없다.
 
 
다음과 같은 순서로 작업하면 된다.'''
 
 
<source lang=sql>
 
1) CREATE UNIQUE INDEX <PK_INDEX명> ON <TABLE명> (..컬럼..)
 
      TABLESPACE <테이블스페이스명> LOCAL ( PARTITION <파티션명> TABLESPACE <테이블스페이스명> ,
 
                                            PARTITION <파티션명> TABLESPACE <테이블스페이스명> ,
 
                                            ....................
 
                                          )
 
      UNUSABLE; -- INDEX 미사용으로 생성해야 속도 빠름
 
2) ALTER INDEX <PK_INDEX명> REBUILD PARTITION <PARTITION명> [ TABLESPACE <테이블스페이스명> ] ;  -- 인덱스 REBUILD
 
3) ALTER INDEX <PK_INDEX명> NOPARALLEL LOGGING;  -- 인덱스 NOPARALLEL LOGGING 모드로 변경
 
4) ALTER TABLE <TABLE명> ADD CONSTRAINTS <PK_INDEX명> PRIMARY KEY (...PK컬럼..) ; --
 
</source>
 
 
* 예시)
 
<source lang=sql>
 
-- UNIQUE INDEX 생성 
 
CREATE UNIQUE INDEX MIG_ADM.PK_MA_XXXX_CLASS ON MIG_ADM.TB_MA_XXXX_CLASS
 
(CLSS_CD)
 
NOLOGGING
 
TABLESPACE TS_MIG
 
PARALLEL 8
 
UNUSABLE
 
;
 
--
 
ALTER INDEX MIG_ADM.PK_MA_XXXX_CLASS REBUILD ....;
 
-- PK 생성
 
 
ALTER TABLE MIG_ADM.TB_MA_XXXX_CLASS ADD (
 
  CONSTRAINT PK_MA_XXXX_CLASS
 
  PRIMARY KEY
 
  (CLASS_CD)
 
  USING INDEX MIG_ADM.PK_MA_XXXX_CLASS
 
  ENABLE VALIDATE)
 
 
</source>
 
 
 
 
[[Category:oracle]]
 
[[Category:oracle]]

2023년 6월 21일 (수) 00:06 기준 최신판

thumb_up 추천메뉴 바로가기


1 로컬 파티션 인덱스 생성[편집]

 arrow_downward 1.INDEX 생성(UNUSABLE 옵션 적용)

CREATE INDEX IX_TBABC10_L1 ON TBABC10(YM, PROC_CD, PROC_STAT) 
       LOCAL (
                      PARTITION PT_TBABC10_200711 ... ,
                      PARTITION PT_TBABC10_200712 ... ,
                      PARTITION PT_TBABC10_200801 ... ,
                      PARTITION PT_TBABC10_200802 ... ,
                      PARTITION PT_TBABC10_200803 ... ,
                      PARTITION PT_TBABC10_999999 ...  
                    )
     UNUSABLE 
     ONLINE       -- DML 영향도 없도록      
;


 arrow_downward 2.각 파티션별로 REBUILD + NOLOGGING 모드 - 가장 많이 ACCESS(최근 사용)되는 파티션부터 생성

ALTER INDEX IX_TBABC10_L1 REBUILD PARTITION PT_TBABC10_999999
 TABLESPACE TS_TBABC10_999999 PARALLEL(DEGREE 8) NOLOGGING;

ALTER INDEX IX_TBABC10_L1 REBUILD PARTITION PT_TBABC10_200803 
 TABLESPACE TS_TBABC10_200803 PARALLEL(DEGREE 8) NOLOGGING;
.... 
....


 arrow_downward 3.LOGGING 모드로 변경

ALTER INDEX IX_TBABC10_L1 NOPARALLEL LOGGING;

2 로컬 파티션 인덱스 초간단 생성 팁[편집]

 arrow_downward 1.파티션된 로컬 인덱스를 UNUSABLE 옵션으로 생성

create index ix_sales_01
    on sales(col1,col2,....)
 local unusable 
online
tablespace ts_idx_01;

 arrow_downward 2.로컬 인덱스 REBUILD 용 SQL생성 후 실행

select 'alter index emp.'|| index_name ||' rebuild partition ' || partition_name || ' parallel 32;'
  from dba_ind_partitions
 where index_name = 'ix_sales_01';