문제 상황
특정 테이블 컬럼 사이즈 변경 시 A 테이블의 A IDX가 Function-Based 인덱스의 경우 문제가 발생할 수 있음
해결방법
( ⁜ 단 운영 테이블의 경우 영향도 파악이 우선시 되어야함 필자의 경우 이관 프로젝트 중 신규 서버로 재생성 테스트가 가능함)
1) Drop Index 제거
drop index TEST.TEST_COND01_NEW;
drop index TEST.TEST_COND02_NEW;
drop index TEST.TEST_COND04_NEW;
2) Column Modify
ALTER TABLE TEST.TEST_COND_TABLE MODIFY (BUILDING_NUMBER_1 VARCHAR2(10));
ALTER TABLE TEST.TEST_COND_TABLE MODIFY (BUILDING_NUMBER_2 VARCHAR2(10));
ALTER TABLE TEST.TEST_COND_TABLE MODIFY (ADDR_1 VARCHAR2(40));
ALTER TABLE TEST.TEST_COND_TABLE MODIFY (ADDR_2 VARCHAR2(40));
ALTER TABLE TEST.TEST_COND_TABLE MODIFY (ADDR_3 VARCHAR2(40));
ALTER TABLE TEST.TEST_COND_TABLE MODIFY (ADDR_4 VARCHAR2(40));
ALTER TABLE TEST.TEST_COND_TABLE MODIFY (PARCEL_NUMBER_1 VARCHAR2(8));
ALTER TABLE TEST.TEST_COND_TABLE MODIFY (PARCEL_NUMBER_2 VARCHAR2(8));
3) Index 재생성
--TEST_COND01_NEW index 생성 구문
CREATE INDEX TEST.TEST_COND01_NEW
ON TEST.TEST_COND_TABLE ("ROAD_NAME"||"BUILDING_NUMBER_1"||DECODE("BUILDING_NUMBER_2",'','','0','','-'||"BUILDING_NUMBER_2"))
TABLESPACE TS_SPCCALL_IDX
STORAGE
(
INITIAL 152M
NEXT 1M
);
--TEST_COND02_NEW index 생성 구문
CREATE INDEX TEST.TEST_COND02_NEW
ON TEST.TEST_COND_TABLE ("ADDR_3"||"ADDR_4"||"PARCEL_NUMBER_1"||DECODE("PARCEL_NUMBER_2",'','','0','','-'||"PARCEL_NUMBER_2"))
TABLESPACE TS_SPCCALL_IDX
STORAGE
(
INITIAL 152M
NEXT 1M
);
--TEST_COND04_NEW index 생성 구문
CREATE INDEX TEST.TEST_COND04_NEW
ON TEST.TEST_COND_TABLE ("ADDR_3"||"BUILDING_NAME_2")
TABLESPACE TS_SPCCALL_IDX
STORAGE
(
INITIAL 152M
NEXT 1M
);
'DB > Oracle' 카테고리의 다른 글
[Tuning] Index Invisible (0) | 2024.09.20 |
---|---|
[ADMIN] Oracle CTF VS TAF (0) | 2024.09.20 |
[Admin] Oracle ASM (0) | 2024.08.26 |
Oracle 저장구조 정리(블럭, PCTFREE, PCTUSED) (0) | 2024.05.08 |
[TUNING] Automatic Optimizer Statistics (0) | 2024.03.25 |