시간 산정 하는 것과 작업 방법을 간소화 하기 위해 CTAS 를 이용해 테스트 테이블을 만듭니다.
Create table 아무이름 tablespace '기존 테이블과다른테이블스페이스명 ' nologging
As select * from '원본테이블이름' ;
이후에 인덱스를 개발/운영팀에서 요청한 인덱스로 생성 . (걸린 시간 확인 가능,ORACLE 9i 이상)
이후 온라인 에서 인덱스 변경 생성 작업을 하는 방법을 말씀 드리면
-
기존 인덱스는 그대로 둠 ( 절대 삭제하면 안됨 )
-
새로운 인덱스는 그냥 생성 인덱스명은 임시명 부여
-
기존 인덱스명 변경
-
새로운 인덱스를 기존 인덱스명으로 변경
3.4번은 빠르게 진행 해야 하므로 되도록 구문을 미리 만드시고 빠르게 copy and paste 하시면 됩니다.
Syntex 예1) ALTER INDEX idx_empno RENAME TO idx_emp_01;
: 인덱스 idx_empno의 이름을 idx_emp_01로 변경한다.
TIP1 큰 인덱스 생성 작업 도중 아카이브 로그가 발생 합니다.
추신 : 저정도 인덱스 크기면 수분 안에 끝날 겁니다.
절대 기존 인덱스는 삭제 하지 마세요. SQL 플랜이 악성으로 변경 될 수 있습니다. 삭제는 나중에 트래픽 없을 때 하시는 것을 권장합니다.
예제)
1. 기존 인덱스는 그대로 둠 ( 절대 삭제하면 안됨 )
è 기존 인덱스 : scott.emp_indx , job 컬럼 인덱스 선언
2. 새로운 인덱스는 그냥 생성 인덱스명은 임시명 부여
è 임시 인덱스 생성: create index scott.emp_indx_sal on emp(sal) nologging;
alter index scott.emp_indx_sal logging;
3. 기존 인덱스명 변경
è alter index scott.emp_indx rename to emp_index_old_20141008;
4. 새로운 인덱스를 기존 인덱스명으로 변경
è alter index scott.emp_indx_sal rename to emp_indx;
# 인덱스 변경 확인
SQL> select index_name, table_name from user_indexes;
INDEX_NAME TABLE_NAME
------------------------------ ------------------------------
PK_DEPT DEPT
PK_EMP EMP
EMP_INDX EMP
EMP_INDEX_OLD_20141008 EMP
업무시간(Online)에 변경 가능하지만 최대한 트래픽이 적은 시간대에 하시는 것을 권장 드립니다.
'DB - ORACLE > Oracle Command' 카테고리의 다른 글
INBOUND_CONNECT_TIMEOUT 대한 정보 (0) | 2015.01.19 |
---|---|
RAC 스토리지 이관 (ASM) (0) | 2015.01.19 |
TEMP 테이블스페이스의 Really Status 쿼리 (0) | 2015.01.19 |
RAC Relocate (0) | 2015.01.19 |
시간대별 리두 로그 발생 확인 쿼리 (0) | 2015.01.19 |