ORA-01471: cannot create a synonym with same name as object 오류는 시노님, 즉 동의어를 생성할 때에 발생하는 오류입니다. 주요하게 발생하는 원인은 오브젝트와 동일한 이름의 프라이빗 시노님을 생성하려고 시도하였기 때문입니다.
ORA-01471: cannot create a synonym with same name as object 원인
왜냐하면, 프라이빗 시노님을 같은 이름으로 생성하는 것은 무의미한 것이기 때문입니다.
CREATE SYNONYM TABLE_NAME FOR USER_NAME.TABLE_NAME;
ERROR at line 1:
ORA-01471: cannot create a synonym with same name as object
상기의 명령어와 같이 오류가 발생하는 원인은 'USER_NAME.TABLE_NAME' 객체를 'USER_NAME.TABLE_NAME'으로 프라이빗 시노님을 설정하겠다는 뜻이니 필요가 없는 것이지요. CREATE SYNONYM 이후 USER_NAME이 생략된 표현입니다.
ORA-01471: cannot create a synonym with same name as object 해결하기
ORA-01471 오류가 발생하는 가장 큰 원인은 2가지입니다. 하나는 퍼블릭 시노님으로 생성을 시도하려다가 실수로 PUBLIC 문을 누락하는 경우입니다. 다른 하나는 다른 스키마에 설정하려던 프라이빗 시노님에 대해 스키마를 누락한 실수입니다. 보통 이 2가지 경우가 대부분일 것입니다.
PUBLIC
다음과 같이 퍼블릭 시노님을 생성하는 문장으로 수정하여 해결합니다.
CREATE PUBLIC SYNONYM TABLE_NAME FOR USER_NAME.TABLE_NAME;
Synonym created.
SCHEMA_NAME
다음과 같이, 스키마 이름을 명시하여 프라이빗 시노님을 생성하여, 해결하는 방법입니다. 그런데, 이런 경우는 거의 없어 보입니다. 더구나 이 2가지 이외의 다른 경우는 웬만하면 발생 안 할 것입니다.
CREATE SYNONYM SCHEMA_NAME.TABLE_NAME FOR USER_NAME.TABLE_NAME;
Synonym created.