대용량 테이블이고 DML(INSERT, UPDATE, DELETE 등)가 계속 일어나는 테이블에 신규 인덱스 생성을 하려면
Lock이 걸려서 서비스가 원활하지 않을 수 있습니다.
그럴 경우에 아래와 같이 ONLINE, NOLOGGING 옵션을 사용하면 좋습니다.
ONLINE은 서비스 중에 Lock이 걸리지 않고 인덱스 생성하는 옵션입니다.
NOLOGGING은 UNDO, REDO를 최소하면서 인덱스 생성할 수 있게 도와주는 옵션입니다.
1. 테이블 EMPLOYEE 에 기 생성된 인덱스 확인
SELECT IDX.OWNER, IDX.INDEX_NAME, IDX.TABLE_OWNER,
IDX.TABLE_NAME, IDX.TABLESPACE_NAME, IDX_COL.COLUMN_NAME
FROM DBA_INDEXES IDX, DBA_IND_COLUMNS IDX_COL
WHRE IDX.TABLE_NAME = 'EMPLOYEE'
AND IDX.INDEX_NAME=IDX_COL.INDEX_NAME
ORDER BY INDEX_NAME;
2. 아래의 구문을 사용한 인덱스 생성
CREATE INDEX EMP.IX_EMPLOYEE01 ON EMP.IX_EMPLOYEE(IDX01, IDX02, IDX03, IDX04)
NOLOGGING TABLESPACE TS_IDX_EMP LOCAL ONLINE;
3. 생성된 인덱스 10% 샘플링 통계수집
BEGIN
SYS.DBMS_STATS.GATHER_INDEX_STATS (
OwnName => 'EMP'
,IndName => 'IX_EMPLOYEE01'
,Estimate_Percent => 10
,Degree => 4
,No_Invalidate => FALSE);
END;
/
감사합니다.
'개발 및 관리 > Oracle 9i, 10g, 11g, 12c, 19c' 카테고리의 다른 글
Oracle DB Alert log 확인 (0) | 2022.01.26 |
---|---|
Oracle RAC 환경에서 1개 서버 인스턴스가 Idle상태일때, ORA-39510 (0) | 2022.01.26 |
Single Oracle DB일 때 listener.ora 파일 설정, 리스너 설정 (0) | 2022.01.19 |
실행중인 SQL 지연시간 체크 및 세션 체크 (0) | 2022.01.19 |
weblogic timeout 설정 (0) | 2022.01.19 |