Мисля, че Джъстин е на прав път. Това, което мисля, че всъщност означава, че 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, няма mytable в схемата на mbobak, така че го търси в 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
Надявам се, че това помага.