2012-01-24 7 views
8

これはかなりばかげたものですが、私は助けが必要です。正しくパブリックシノニムを作る方法

私はmydbownerが所有するテーブルを持っています。これはmydbowner.mytableという名前です。

パブリックシノニムを作成しようとしました。パブリックシノニムを作成または置換します。mytable FOR mydbowner.mytable;

私はこれを行う、と私はテーブルを照会するとき私が手:

ORA-01775:同義語私は問題がなく、このシノニムを作るにはどうすればよい

のチェーンをループ。

+0

2つの回答が正しいです。私は何らかのタイプミスを犯しました。同義語は何も言及していませんでした。 – Joe

答えて

12

私はジャスティンが正しい道にあると思う。私が実際に意味することは、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 

私はそれが公共の場でそれを探しますので、それはそれを見つけ、ことを認識し、mbobakスキーマにはmytableははありません、何が起こっていることは、Oracleがmytableは解決しようとしていることだと思いますmbobak.mytableを指しています。しかし、mbobak.mytableは存在しないので、PUBLICでmytableを探します。ループがあります。

そして、あなたが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

希望します。

6

このエラーは、実際にはmydbowner.mytableではないことを意味しています。何ですか

SELECT object_type 
    FROM all_objects 
WHERE owner = 'MYDBOWNER' 
    AND object_name = 'MYTABLE' 

リターン?

関連する問題