ORA-01434: private synonym to be dropped does not exist 오류가 발생하였나요? 해결방법에 대해 알아보도록 합시다.
먼저, CREATE PUBLIC SYNONYM 문을 사용하여 공개 동의어를 생성하는 예제 코드입니다.
CREATE PUBLIC SYNONYM TABLE_NAME FOR USER_NAME.TABLE_NAME;
Synonym created.
위의 코드는 USER_NAME 스키마의 TABLE_NAME 테이블에 대한 공개 동의어인 TABLE_NAME을 생성합니다.
이때 다음과 같이 동의어 삭제를 시도하면 어떻게 될까요? ORA-01434: 삭제할 비공개 동의어가 존재하지 않습니다 오류가 발생하게 된답니다.
DROP SYNONYM TABLE_NAME;
ERROR at line 1:
ORA-01434: private synonym to be dropped does not exist
이유는 오류의 설명과 같이 삭제를 시도하려는 비공개 동의어가 없기 때문입니다. 공개 동의어, 비공개 동의어의 차이가 있기 때문인데, 각각 동의어를 public synonym, (private) synonym 이라 할 수 있습니다. 실제 해당 오류에 대한 해결은 공개 동의어를 삭제하여 해결할 수 있습니다.
DROP PUBLIC SYNONYM TABLE_NAME;
Synonym dropped.
이외에 확인해 볼만한 내용은 다음과 같습니다. 차근차근 단계를 따라가다보면 오타, 또는 스키마와 같은 단순한 문제일 가능성도 있고, 의외의 다른 부분에서 막힐 수도 있을 것입니다. 다만, 문제가 발생하였으니 어딘가에 해결의 실마리는 있으니 천천히 해보세요~
- 동의어 존재 여부 확인 => SELECT * FROM ALL_SYNONYMS WHERE SYNONYM_NAME = 'TABLE_NAME';
- 스키마 확인 => CREATE PUBLIC SYNONYM 문에서 USER_NAME.TABLE_NAME을 정확하게 사용했는지 확인하십시오. 아니면 삭제를 시도하려는 스키마와 객체를 다시 확인합니다.
- DROP 문 확인 => DROP SYNONYM 문에서 동의어 이름이 정확하게 맞는지 점검해 봅니다.