ORA-01775: 동의어가 순환 고리 유형으로 정의되어 있습니다. (ORA-01775: looping chain of synonyms)

ORA-01775: 동의어가 순환 고리 유형으로 정의되어 있습니다. 원인

ORA-01775: 동의어가 순환 고리 유형으로 정의되어 있습니다. ORA-01775: looping chain of synonyms

{TableName} 테이블을 조회하려니 상기와 같은 오류가 납니다. ORA-01775 오류는 다음과 같은 표현으로 발생합니다. ORA-01775: 동의어가 순환 고리 유형으로 정의되어 있습니다. ORA-01775: looping chain of synonyms.

조회를 하시다가 ORA-01775 오류가 발생한다면, 동의어(시노님)를 삭제하시거나 테이블/뷰를 복구하시면 됩니다. 실제 테이블은 없는데 해당하는 동의어만 남아있는 경우에 발생하는 오류이기 때문입니다.

보통 흔히 발생하는 사유는 첫 번째로 동의어는 남아있는데 테이블만 드랍 되었을 가능성이 있고, 두 번째 다른 이유는 최초 테이블 생성 단계에서 스크립트 문제 등으로 인해 테이블이 생성이 안 되고 동의어만 생성되어 남아있었던 가능성이 있습니다.

즉, ORA-01775 오류의 발생 원인은 다음과 같이 요약할 수 있습니다.

  • 동의어만 남겨두고 테이블/뷰를 삭제한 경우
  • 테이블/뷰 생성 스크립트에서 테이블이 정상적으로 만들어지지 않고 시노님만 생성이 된 경우

ORA-01775 관련 사항을 조회하기 위해 데이터 딕셔너리 뷰를 조회해 보았습니다.

DBA_OBJECTS 를 조회했더니 SYNONYM 객체만 조회되는 것을 확인할 수 있습니다. 테이블은 없는데 동의어만 남아있을 가능성이 있어서, {DBA_OBJECTS} 테이블을 조회해 보았더니 예상대로 SYNONYM 만 남아있습니다.

TABLE 과 SYNONYM 2개의 행을 조회 가능한 테스트 테이블

보통 테이블을 만들고 동의어를 설정한다면 위의 같이 TABLE 과 SYNONYM 이 쌍을 이루고 있을 것입니다.

ORA-01775: looping chain of synonyms 해결하기

말씀드린 것처럼, 조회를 하다가 해당과 같은 예외가 발생한다면, 동의어를 삭제하거나 테이블/뷰를 복구해 주십시오.

DROP PUBLIC SYNONYM TableName;

Drop Synonym 명령을 통해 동의어를 정리하여 상기의 오류를 해결할 수 있습니다.

DROP PUBLIC SYNONYM synonymName;

DROP SYNONYM synonymName;

CREATE TABLE statement

다른 해결방법으로는 테이블/뷰를 생성(복구)하는 방법이 있습니다. 해당 동의어가 지칭하는 테이블 복구하는 명령은 CREATE TABLE statements를 이용하시면 됩니다.

CREATE TABLE create-table-statement

댓글