프로시저를 통해 CTAS 로 테이블 복사 후 index 및 constraint 를 추가하는 작업을 진행하던 중 index owner가 잘못 설정되어 drop 후 다시 생성해야 하는 문제가 발생. 보통 pk를 추가해줄때 unique 인덱스를 사용하는데 pk 먼저 떨궈야 index 도 떨굴수 있다.
1. drop PK
ALTER TABLE [TABLE_OWNER].[TABLE_NAME] DROP PRIMARY KEY CASCADE;
2. drop Index
DROP INDEX [INDEX_OWNER].[INDEX_NAME];
3. Create Index
CREATE UNIQUE INDEX [INDEX_OWNER].[INDEX_NAME] ON [TABLE_OWNER].[TABLE_NAME](COL1,COL2);
-- COL1, COL2 는 INDEX 를 구성할 컬럼을 나열한 것.
4. Add Constraint
ALTER TABLE [TABLE_OWNER].[TABLE_NAME]
ADD CONSTRAINT [PK_NAME] PRIMARY KEY(COL1,COL2)
USING INDEX [INDEX_OWNER].[INDEX_NAME];
-- 보통 PK_NAME 은 PK_INDEX와 이름이 같다.
5. 생성된 Index 잘 타는지 조회 (힌트 사용)
SELECT /*+ INDEX([TABLE_NAME] [INDEX_NAME] */ *
FROM [TABLE_OWNER].[TABLE_NAME];
'새싹 DBA > Scripts' 카테고리의 다른 글
[오라클] 파티션 테이블 테이블스페이스 변경, 인덱스 리빌드 (0) | 2024.10.11 |
---|---|
[오라클] undo tablespace 관리 (0) | 2024.10.07 |
다른 db object 비교 (0) | 2024.08.23 |
[오라클] 휴지통 비우기 (0) | 2024.08.19 |
[오라클] DBMS_DATAPUMP.GET_STATUS (0) | 2024.08.16 |