54

ORA-01775: シノニムのループ チェーンの背後にある問題についてはよく知っていますが、それをデバッグするためのトリックはありますか、それとも「作成または置換」するだけで解決できますか?

パブリック シノニムの現在の定義が何であるかを調べるために、スキーマなどを照会する方法はありますか?

さらに素晴らしいのはグラフィカル ツールですが、この時点では何でも役に立ちます。

4

18 に答える 18

79

結局のところ、問題は実際にはシノニムのループ チェーンではなく、シノニムが存在しないビューを指していたという事実でした。

この状態では、Oracle は明らかにループ チェーンとしてエラーになります。

于 2008-10-29T17:09:35.410 に答える
23

データ ディクショナリ テーブルDBA_SYNONYMSには、データベース内のすべてのシノニムに関する情報が含まれています。したがって、クエリを実行できます

SELECT table_owner, table_name, db_link
  FROM dba_synonyms 
 WHERE owner        = 'PUBLIC'
   AND synonym_name = <<synonym name>>

パブリック シノニムが現在何を指しているかを確認します。

于 2008-10-29T15:11:30.670 に答える
6

この選択を試して、問題のあるシノニムを見つけてください。存在しないオブジェクト (テーブル、ビュー、シーケンス、パッケージ、プロシージャ、関数) を指しているすべてのシノニムが一覧表示されます。

SELECT *
FROM dba_synonyms
WHERE table_owner = 'USER'
    AND (
        NOT EXISTS (
            SELECT *
            FROM dba_tables
            WHERE dba_synonyms.table_name = dba_tables.TABLE_NAME
            )
        AND NOT EXISTS (
            SELECT *
            FROM dba_views
            WHERE dba_synonyms.table_name = dba_views.VIEW_NAME
            )
        AND NOT EXISTS (
            SELECT *
            FROM dba_sequences
            WHERE dba_synonyms.table_name = dba_sequences.sequence_NAME
            )
        AND NOT EXISTS (
            SELECT *
            FROM dba_dependencies
            WHERE type IN (
                    'PACKAGE'
                    ,'PROCEDURE'
                    ,'FUNCTION'
                    )
                AND dba_synonyms.table_name = dba_dependencies.NAME
            )
        )
于 2014-10-09T11:07:24.147 に答える
3

今日、このエラーが発生しました。デバッグ後、シノニムを使用して参照していた実際のテーブルが欠落していることがわかりました。だから私は提案します-最初にテーブルが存在するかどうかを確認してください!! :-))

于 2010-02-18T07:11:42.920 に答える
2

ステップ 1) 次の名前のオブジェクトが存在することを確認します。

select * from all_objects where object_name = upper('&object_name');

シノニムは存在するが、テーブルがない可能性がありますか?


ステップ 2) 問題がない場合は、シノニムを調べます。

select * from all_synonyms where synonym_name = upper('&synonym_name');

そのシノニムの基になるテーブルまたはビューが欠落している可能性がありますか?

于 2014-08-07T16:20:01.557 に答える
1

同様の問題がありましたが、これは、テーブルとスキーマ名から二重引用符が欠落していることが原因であることが判明しました。

于 2010-02-16T16:20:42.350 に答える
1

同じ ORA-01775 エラーが発生しましたが、私たちの場合、スキーマ ユーザーはいくつかのパブリック シノニムで「許可選択」を欠いていました。

于 2013-03-13T18:48:26.703 に答える
0

ORA-01775: シノニムのループ・チェーン シノニムが作成されたオブジェクトを使用するパッケージをコンパイルしようとしたときに、上記のエラーが発生しましたが、基礎となるオブジェクトは使用できませんでした。

于 2011-07-21T12:27:40.837 に答える
0

次の sql を使用して、object_name (user_objects 内) に対応するオブジェクトがない all_synonyms 内のエントリを検索しています。

 select * 
   from all_synonyms 
   where table_owner = 'SCOTT' 
     and synonym_name not like '%/%'
     and table_name not in (
       select object_name from user_objects
         where object_type in (
           'TABLE', 'VIEW', 'PACKAGE', 'SEQUENCE',
           'PROCEDURE', 'FUNCTION', 'TYPE'
         )
    );
于 2016-04-21T13:05:13.743 に答える
-1

PROCEDURE をコンパイルしている場合、同じ PROCEDURE 内に作成されているため、存在しないテーブルまたはビューを参照している可能性があります。この場合の解決策は、たとえば String として宣言されたクエリを作成し、v_query: = 'insert into table select * from table2すぐに実行することv_queryです。

これは、コンパイラがまだオブジェクトを認識していないため、参照が見つからないためです。ご挨拶。

于 2015-03-04T17:45:37.647 に答える
-1

http://ora-01775.ora-code.com/は次のことを示唆しています。

ORA-01775 : シノニムのチェーンをループしています
原因: 一連のCREATE synonym文により、それ自体を参照するシノニムが定義されました。たとえば、次の定義は循環的です。
CREATE SYNONYM s1 for s2 CREATE SYNONYM s2 for s3 CREATE SYNONYM s3 for s1
アクション: 1 つのシノニム定義を変更して実表またはビューに適用し、操作を再試行してください。

于 2008-10-29T15:12:51.870 に答える