Wer kennt das nicht?
Man setzt ein einfaches SQL Statement ab oder versucht ein Package zu kompilieren und bekommt folgende Fehlermeldung zurück:
ORA-01775: Zyklische Kette von Synonymen
Die Oracle Dokumentation sagt dazu folgendes:
ORA-01775 looping chain of synonyms
Cause: Through a series of CREATE synonym statements, a synonym was defined that referred to itself. For example, the following definitions are circular:
CREATE SYNONYM s1 for s2; |
CREATE SYNONYM s2 for s3; |
CREATE SYNONYM s3 for s1; |
Action: Change one synonym definition so that it applies to a base table or view and retry the operation.
Soweit so gut. Es soll also Synonyme geben, die auf Synonyme verweisen, welche wiederum auf Synonyme verweisen, und wir kommen im Endeffekt nie auf eine Tabelle, View, Package, etc., um tatsächlich Daten abzufragen oder Programmcode auszuführen. Das kann einerseits passieren, weil Synonyme immer nur auf weitere Synonyme verweisen, oder andererseits die grundlegenden Objekte gar nicht existieren.
Nur wie finden wir die Problemstellen? Eine genaue Angabe welches Synonym das Problem verursacht, wird nicht angezeigt.
Folgendes Statement kann hier helfen:
Synonym Abfrage
Alle Synonyme welche das vorige Skript zurück gibt, sollten mit Hilfe der Views DBA_SYNONYMS und DBA_OBJECTS entsprechend geprüft werden, ob sie „zyklisch“ sind oder auf nicht existente Objekte verweisen.
Christoph Hillinger ist Senior Oracle Developer und seit vielen Jahren Oracle APEX und ODI Spezialist bei DBConcepts.