본문 바로가기
[DATABASE] ORACLE/Objects (Table, Index, Etc..)

[Index] 인덱스 컬럼 변경(추가,변경)

by 기미차니 2021. 12. 15.
반응형

1. 기존 인덱스에 컬럼 추가 방법

인덱스 삭제후 재생성 하는 방법이 있으나 24*365 시스템에서 대용량 테이블일 경우 인덱스 부재로 인해 작업완료시 까지 성능 저하가 발생된다. 대용량 테이블에서 인덱스 컬럼 추가,변경 등의 작업 수행시 아래와 같이 RENAME 방법을 적용하여 작업 한다.

 

The method to add columns to existing indexes is to delete and recreate the index, but in a 24*365 system, when dealing with a large table, performance degradation can occur due to the absence of an index until the job is completed. When performing operations such as adding or modifying columns in an index on a large table, the RENAME method is applied to the task.

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
-- 인덱스 현황
SELECT B.OWNER
     , A.INDEX_NAME
     , A.TABLE_NAME
     , B.UNIQUENESS
     , MAX(B.DISTINCT_KEYS) DTC
     , MAX(B.NUM_ROWS) NUMROW
     , LISTAGG(COLUMN_NAME,'+'WITHIN GROUP(ORDER BY COLUMN_POSITION) COL
FROM DBA_IND_COLUMNS A, DBA_INDEXES B
WHERE    A.INDEX_NAME=B.INDEX_NAME
AND      A.TABLE_NAME=B.TABLE_NAME
AND      A.TABLE_NAME IN ('EMP')
GROUP BY A.INDEX_NAME,A.TABLE_NAME,B.UNIQUENESS,B.OWNER
ORDER BY A.TABLE_NAME,A.INDEX_NAME
;
 
-- 기존 인덱스에 SAL 컬럼 추가
-- ORAKIM.EMP_X01 -> DEPTNO+JOB -> SAL 컬럼 추가
 
 
-- (1) CREATE INDEX ( TO-BE )
CREATE INDEX ORAKIM.EMP_X01_TMP
ON ORAKIM.EMP 
(
    DEPTNO,
    JOB,
    SAL
TABLESPACE USERS 
NOLOGGING
NOCOMPRESS
PARALLEL 4
ONLINE
;
 
ALTER INDEX ORAKIM.EMP_X01_TMP NOPARALLEL;
 
 
-- (2) RENAME INDEX
ALTER INDEX ORAKIM.EMP_X01      RENAME TO EMP_X01_OLD;      -- (AS-IS) INDEX RENAME
ALTER INDEX ORAKIM.EMP_X01_TMP  RENAME TO EMP_X01;          -- (TO-BE) INDEX RENAME
 
 
-- (3) 확인 및 점검
 
 
-- (4) DROP INDEX ( AS-IS )
DROP INDEX ORAKIM.EMP_X01_OLD;
 
 
cs
반응형

댓글