Myślę, że Justin jest na dobrej drodze. Myślę, że tak naprawdę oznacza to, że mydbowner.mytable nie istnieje.
Oto przykład:
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
Myślę, że to, co się dzieje, polega na tym, że Oracle próbuje rozwiązać mytable, nie ma mytable w schemacie bobak, więc szuka go w PUBLIC, znajduje go i widzi, że wskazuje na bobak.mytable. Ale bobak.mytable nie istnieje, więc szuka mytable w PUBLIC i jest tam pętla.
I faktycznie, jeśli utworzysz mytable, błąd zniknie:
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
Tak, zdaję sobie sprawę, że tak naprawdę nie ma to do końca sensu, ponieważ po ustaleniu publicznego synonimu na bobak.mytable, a nie znaleziono, wydaje mi się, że powinien zwrócić błąd ORA-942 „tabela lub widok nie istnieje ”, co jest dla mnie o wiele bardziej sensowne.
Ale wydaje się, że tak to działa.
QED
Mam nadzieję, że to pomoże.