Tôi nghĩ Justin đang đi đúng hướng. Điều tôi nghĩ nó thực sự có nghĩa là mydbowner.mytable không tồn tại.
Đây là một ví dụ:
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
Tôi nghĩ những gì đang xảy ra là Oracle cố gắng giải quyết bảng của tôi, không có bảng của tôi trong lược đồ mbobak, vì vậy nó tìm kiếm nó trong PUBLIC, nó tìm thấy nó và thấy rằng nó trỏ đến mbobak.mytable. Tuy nhiên, mbobak.mytable không tồn tại, vì vậy, nó tìm kiếm mytable trong PUBLIC và có vòng lặp.
Và trên thực tế, nếu bạn tạo mytable, lỗi sẽ biến mất:
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
Có, tôi nhận ra rằng điều đó không thực sự hoàn toàn có ý nghĩa, vì khi từ đồng nghĩa công khai được giải quyết thành mbobak.mytable, và điều đó không được tìm thấy, có vẻ như đối với tôi, nó sẽ trả về lỗi ORA-942 "bảng hoặc chế độ xem không tồn tại ", điều này có ý nghĩa hơn đối với tôi.
Nhưng, đây dường như là cách nó hoạt động.
QED
Hy vọng điều đó sẽ hữu ích.