본문 바로가기

Development/Database

Oracle 테이블 Index 삭제후 새로 생성하기.

오라클에서 작업하다보면 테이블 index 가 깨져서 데이터 추가/삭제가 안되는 경우가 가끔 발생한다.

주로 대용량 데이터를 입력하는 과정에서 그런 경우가 많았다.

 

그럴때는 index rebuild 가 안되서 일반적으로 테이블을 삭제했다가 새로 생성하고 데이터를 밀어넣는 불편한 방법을 사용하곤 했는데 sql developer 를 이용해서 깨진 index 를 삭제하고 새로 생성하는데 성공했다.

(toad 로는 안되고 sql developer 로만 성공했다. 혹시 다른 툴로도 가능한지는 모르겠다.)

 

 

1. sql developer 를 실행한다.

2. 좌측의 database 목록에서 원하는 항목을 선택한다.

3. 테이블을 선택한다.

4. 가운데 테이블 정보화면이 출력된다.

5. 테이블 정보의 '인덱스' 탭을 선택한다.

6. 삭제하려는 인텍스를 선택한다.

7. 인덱스 위의 '작업' 항목을 선택하면 출력되는 dropdownlist 항목에서 '인덱스>삭제' 를 선택한다.

8. 삭제 alert 창이 출력되면 인덱스 삭제를 클릭해서 'XPK_테이블명' 을 선택한뒤 '적용' 버튼을 클릭한다.

9. 인덱스가 삭제되었다.

10. '작업' 항목을 선택하면 출력되는 dropdownlist 항목에서 '인덱스>인덱스생성' 를 선택한다.

11. 인덱스 생성 alert 창이 출력되면 이름을 'XPK_테이블명' 로 입력하고 표현식에 PK 로 설정할 컬럼들을 추가한다.

12. '확인' 버튼을 클릭한다.

13. 인덱스가 새로 생성된다.

 

 

만약 인덱스 삭제가 안되는 경우, 

alter table 테이블명 drop primary key drop index;

명령어를 실행한 뒤 다시 시도한다.