테이블을 조회하려니 'ORA-01775: looping chain of synonyms.' 오류가 발생하는군요! 😭 ORA-01775 오류는 다음과 같은 표현으로 발생해요.
ORA-01775: 동의어가 순환 고리 유형으로 정의되어 있습니다.
ORA-01775: 동의어가 순환 고리 유형으로 정의되어 있습니다. 원인
조회를 하다가 ORA-01775 오류가 발생한다면, 동의어(시노님)를 삭제하거나 테이블/뷰를 복구하면 됩니다. 실제 테이블은 없는데 해당하는 동의어만 남아있는 경우에 발생하는 오류이기 때문이에요.
보통 흔히 발생하는 사유는 첫 번째로 동의어는 남아있는데 테이블만 드랍 되었을 가능성이 있고, 두 번째 다른 이유는 최초 테이블 생성 단계에서 스크립트 문제 등으로 인해 테이블이 생성이 안 되고 동의어만 생성되어 남아있었던 가능성이 있어요.
즉, ORA-01775 오류의 발생 원인은 다음과 같이 요약할 수 있습니다.
- 동의어만 남겨두고 테이블/뷰를 삭제한 경우
- 테이블/뷰 생성 스크립트에서 테이블이 정상적으로 만들어지지 않고 시노님만 생성이 된 경우
'DBA_OBJECTS'를 조회했더니 SYNONYM 객체만 조회되는 것을 확인할 수 있습니다. 테이블은 없는데 동의어만 남아있을 가능성이 있어서, 'DBA_OBJECTS' 테이블을 조회해 보았더니 예상대로 SYNONYM 만 남아있습니다.
보통 테이블을 만들고 동의어를 설정한다면 위의 같이 'TABLE'과 'SYNONYM'이 쌍을 이루고 있을 것입니다.
ORA-01775: looping chain of synonyms 해결하기
말씀드린 것처럼, 조회를 하다가 해당과 같은 예외가 발생한다면, 동의어를 삭제하거나 테이블/뷰를 복구해 주십시오.
DROP SYNONYM
Drop Synonym 명령을 통해 동의어를 정리하여 상기의 오류를 해결할 수 있습니다.
DROP PUBLIC SYNONYM synonym_Name;
DROP SYNONYM synonym_Name;
CREATE TABLE statement
다른 해결방법으로는 테이블/뷰를 생성(복구)하는 방법이 있습니다. 해당 동의어가 지칭하는 테이블 복구하는 명령은 CREATE TABLE statements를 이용하시면 됩니다.
CREATE TABLE create_table_statement