Я думаю, что Джастин на правильном пути. Я думаю, что на самом деле это означает, что mydbowner.mytable не существует.
Вот пример:
SQL> conn mbobak
Enter password:
Connected.
SQL> drop table mytable;
drop table mytable
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> create public synonym mytable for mbobak.mytable;
Synonym created.
SQL> select * from mytable;
select * from mytable
*
ERROR at line 1:
ORA-01775: looping chain of synonyms
Я думаю, что происходит то, что Oracle пытается разрешить mytable, в схеме mbobak mytable отсутствует, поэтому он ищет ее в PUBLIC, находит и видит, что указывает на mbobak.mytable. Но mbobak.mytable не существует, поэтому он ищет mytable в PUBLIC, и есть цикл.
А на самом деле, если вы создаете mytable, ошибка исчезает:
SQL> create table mytable as select * from dual;
Table created.
SQL> select * from mytable;
D
-
X
1 row selected.
SQL> drop table mytable;
Table dropped.
SQL> select * from mytable;
select * from mytable
*
ERROR at line 1:
ORA-01775: looping chain of synonyms
Да, я понимаю, что это на самом деле не совсем имеет смысла, так как, как только общедоступный синоним разрешается в mbobak.mytable, и он не найден, как мне кажется, он должен возвращать таблицу или представление ошибки ORA-942 " не существует ", что имеет для меня гораздо больше смысла.
Но, похоже, так оно и есть.
QED
Надеюсь, это поможет.