SW/Database / / 2025. 2. 11. 17:34

ORA-02429: Cannot Drop Index Used for Enforcement of Unique/Primary Key / 원인과 해결 방법

반응형

ORA-02429: Cannot Drop Index Used for Enforcement of Unique/Primary Key

ORA-02429 오류는 고유(UNIQUE) 또는 기본(PRIMARY) 키 제약 조건을 유지하는 데 사용되는 인덱스를 삭제하려고 할 때 발생합니다.

 

 

ORA-02429: Cannot Drop Index Used for Enforcement of Unique/Primary Key / 원인과 해결 방법

 

 

오류 원인

ORA-02429 오류는 다음과 같은 경우에 발생할 수 있습니다:

  1. 삭제하려는 인덱스가 UNIQUE 또는 PRIMARY KEY 제약 조건에 의해 사용됨: - Oracle 데이터베이스에서는 UNIQUE 또는 PRIMARY KEY 제약 조건이 설정된 경우, 해당 컬럼에 자동으로 인덱스를 생성합니다.
  2. 제약 조건이 존재하는 상태에서 직접 인덱스를 삭제하려고 시도함: - PRIMARY KEY 또는 UNIQUE 제약 조건이 활성 상태라면 해당 인덱스를 삭제할 수 없습니다.

해결 방법

이 오류를 해결하려면 다음 방법 중 하나를 사용합니다:

  1. 해당 인덱스를 사용하는 제약 조건 찾기: 먼저, 특정 인덱스가 어느 제약 조건에 사용되고 있는지 확인합니다.
    SELECT index_name, table_name, constraint_name, constraint_type
    FROM user_constraints
    WHERE index_name = 'IDX_EXAMPLE';
  2. 제약 조건을 먼저 삭제한 후 인덱스 삭제: UNIQUE 또는 PRIMARY KEY 제약 조건을 삭제한 후, 인덱스를 제거할 수 있습니다.
    ALTER TABLE example_table DROP CONSTRAINT example_pk;
    DROP INDEX IDX_EXAMPLE;
  3. 제약 조건을 삭제하지 않고 인덱스를 유지한 채 새 인덱스를 생성: 기존 인덱스를 유지한 채 새로운 인덱스를 생성하려면 다음을 수행합니다.
    ALTER TABLE example_table DROP PRIMARY KEY KEEP INDEX;
  4. 새로운 인덱스를 사용하도록 제약 조건 변경: 새로운 인덱스를 생성한 후, 기존 제약 조건을 대체할 수 있습니다.
    CREATE UNIQUE INDEX new_idx_example ON example_table(column_name);
    ALTER TABLE example_table ADD CONSTRAINT example_pk PRIMARY KEY USING INDEX new_idx_example;

간단 요약

  • ORA-02429 오류는 PRIMARY KEY 또는 UNIQUE 제약 조건이 사용 중인 인덱스를 삭제하려 할 때 발생합니다.
  • 해결 방법: - 제약 조건이 사용 중인 인덱스 확인 (`user_constraints` 조회) - 제약 조건을 삭제한 후 인덱스 제거 (`DROP CONSTRAINT` → `DROP INDEX`) - 제약 조건 삭제 없이 인덱스 유지 (`DROP PRIMARY KEY KEEP INDEX`) - 새로운 인덱스를 만든 후 제약 조건 재설정 (`CREATE INDEX` → `ADD CONSTRAINT`)
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유