ORA-01452: 중복 키가 있습니다. 유일한 인덱스를 작성할 수 없습니다. 오류는 오라클 데이터베이스에서 대상 컬럼 조합에 유니크 인덱스를 생성하려고 할 때에 발생합니다. 이 오류에서 말하는 중복 키는 키의 대상이 되는 컬럼 목록입니다.
ORA-01452: 중복 키가 있습니다. 유일한 인덱스를 작성할 수 없습니다. 원인
ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found 오류가 발생하는 예제 자료를 하나 소개해 드리겠습니다.
SELECT * FROM TABLE_NAME;
COLUMN_NAME COLUMN_NAME_2 COLUMN_NAME_3
-------------------- -------------------- --------------------
1 1 2
1 1 9
1 2 3
해당 테이블은 상기와 같이 데이터가 있으며, 주목할 부분은 컬럼1과 컬럼2에 (1, 1) 데이터가 중복되어 있다는 것입니다.
ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found 해결하기
이때, 해당 테이블의 (COLUMN_NAME, COLUMN_NAME_2) 컬럼에 유니크 인덱스를 생성하면 어떻게 될까요?
CREATE UNIQUE INDEX PK
ON TABLE_NAME (COLUMN_NAME, COLUMN_NAME_2);
ERROR at line 2:
ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found
중복키가 있기에 ORA-01452 예외가 발생하게 됩니다. 해당 오류를 수정하려면 중복키를 우선 정리하여야 합니다. 중복키를 조회하는 기본적인 방법은 해당 컬럼 조합 그룹에서 카운트가 1개를 초과하는 데이터를 조회해 보는 것입니다.
SELECT COLUMN_NAME, COLUMN_NAME_2, COUNT (*)
FROM TABLE_NAME
GROUP BY COLUMN_NAME, COLUMN_NAME_2
HAVING COUNT (*) > 1;
COLUMN_NAME COLUMN_NAME_2 COUNT(*)
-------------------- -------------------- ----------
1 1 2
해당 조건을 기초로 하여, 로우아이디라든지, 생성시간을 고려해본다든지 추가 조건으로 데이터를 정리해 주세요.
무결성 데이터 정리하기 관련 팁은 블로그 검색을 활용해 주세요!