Bei der Ausführung einer SQL-Anweisung wird gelegentlich ein Fehler ora-00942 angezeigt. Es hat ein paar Ursachen und wie üblich ist die Fehlersyntax nicht die aussagekräftigste. Wenn Sie auf dieses Problem stoßen und wissen möchten, wie Sie den Fehler ora-00942 beheben können, lesen Sie weiter.
Soweit ich weiß, gibt es drei Hauptgründe für den Fehler ora-00942:
- Unzureichende Benutzerrechte
- Die Tabelle oder Sicht existiert nicht wirklich
- Die Tabelle oder Sicht befindet sich in einem anderen Schema
Ich werde dir zeigen, wie man jeden anspricht.
Korrigieren Sie den Fehler ora-00942
Zunächst einmal ein kleiner Disclaimer. Ich bin kein DBA, ich bin ein Windows-Administrator und Desktop-und Server-Hardware-Tech. Ich weiß, wie man SQL ausführt, aber nicht zu einem gewissen Grad an Fachwissen und schon gar nicht auf der Ebene, die Probleme beheben kann. Ich musste einen Oracle DBA-Kumpel von mir um Hilfe bitten, also während ich dieses Stück geschrieben habe, sind die cleveren Teile alle seine.
Diese Liste der drei Ursachen des Fehlers ora-00942 ist nicht erschöpfend. Es gibt anscheinend andere zufällige Ursachen dafür, aber diese drei sind anscheinend am allgemeinsten.
Unzureichende Benutzerrechte
Ein Hauptgrund für den Fehler ora-00942 ist, dass der Benutzer nicht über ausreichende Berechtigungen zum Zugriff auf die fragliche Tabelle verfügt. Sie können dies überprüfen, indem Sie zwei Abfragen ausführen.
- Systemberechtigungen für den Benutzer oder die Rolle auflisten SELECT * FROM dba_sys_privs WHERE Empfänger IN (& user_role, 'PUBLIC');
- Listen Sie Objektprivilegien für den Benutzer oder die Rolle auf
SELECT grantee, Eigentümer || '.' || table_name Objekt, Berechtigung, zuweisbar FROM dba_tab_privs WHERE Empfänger IN (& user_role) ORDER BY Empfänger, Besitzer || '.' || Tabellenname, Berechtigung;
Diese beiden sagen Ihnen, ob der betreffende Benutzer über die richtigen Berechtigungen zum Ausführen des Befehls verfügt. Wenn der Benutzer über die richtigen Berechtigungen verfügt, fahren Sie mit dem nächsten fort. Wenn der Benutzer nicht über die richtigen Berechtigungen verfügt, weisen Sie sie ihm zu oder bitten Sie Ihren DB-Administrator, dies zu tun.
Der Fehler ora-00942 kann auch auftreten, wenn der Benutzer des Schemas, das Sie verwenden, über INSERT-Berechtigungen, jedoch nicht über SELECT-Berechtigungen verfügt. Überprüfen Sie erneut die Berechtigungsebene und fügen Sie SELECT zur Liste hinzu oder bitten Sie einen DB-Administrator, dies zu tun. Anscheinend muss jedem Schema das spezifische SELECT-Privileg erteilt werden, andernfalls wird der Fehler ora-00942 weiterhin angezeigt.
Die Tabelle oder Sicht existiert nicht wirklich
Diese Ursache für den Fehler ora-00942 kann durch falsche Abfragesyntax verursacht werden oder wenn die Tabelle nicht vorhanden ist. Obwohl dies der erste logische Start zu sein scheint, bin ich sicher, dass Benutzerprivileg die Hauptursache für den Fehler ist. Die Tabelle, die nicht da ist, oder die falsche Tabellensyntax, die verwendet wird, ist die zweite.
Überprüfen Sie zuerst die Syntax der Abfrage, um zu überprüfen, ob die Tabelle vorhanden ist. Wenn die Syntax korrekt ist, führen Sie diese Abfrage aus.
SELECT Eigentümer, Objektname, Objekttyp FROM all_objects WHERE Objekttyp IN ('TABLE', 'VIEW') AND Objektname = 'YOUR_TABLE_NAME';
Fügen Sie in dieser letzten Zeile den tatsächlichen Tabellennamen ein, in dem Sie "YOUR_TABLE_NAME" sehen. Dies sollte Ihnen definitiv sagen, ob die Tabelle, die Sie abfragen möchten, existiert oder nicht. Wenn die Tabelle ohne Abfrage zurückgegeben wird, existiert die Tabelle, die Sie abfragen, nicht im Schema oder in der Datenbank.
Wenn das von Ihnen verwendete System über ein Tabellenmenü verfügt, können Sie manuell nach der Tabelle suchen, wenn Sie es vorziehen, aber die obige Abfrage erledigt die Aufgabe.
Die Tabelle oder Sicht befindet sich in einem anderen Schema
Wenn der Benutzer über Berechtigungen verfügt und die Tabelle vorhanden ist und immer noch der Fehler ora-00942 angezeigt wird, liegt dies wahrscheinlich am Schema. Wenn Sie mehrere Schemas verwalten, ist es einfach, eine Abfrage für ein Schema auszuführen, das nicht Ihr ist. Wenn Sie damit beschäftigt sind, ist es ein einfacher Fehler.
Überprüfen Sie das Schema manuell, wenn Sie dies können, oder fügen Sie den Schemanamen in der FROM-Zeile Ihrer Abfrage hinzu. Wenn Sie nicht über die richtigen Berechtigungen für das neue Schema verfügen, wird der Fehler ora-00942 erneut angezeigt. Kehren Sie zum ersten Benutzerberechtigungs-Fix zurück und überprüfen Sie das entsprechende Schema, oder lassen Sie Ihren DBA dies für Sie erledigen.
Wie oben erwähnt, habe ich einen Oracle DBA-Kumpel von mir für dieses Stück konsultiert, also alles Lob für die harte Arbeit. Wenn Sie hier Fehler oder Auslassungen finden, gehören sie mir allein. Lassen Sie mich im Kommentarbereich wissen, wenn ich etwas verpasst habe oder falsch verstanden habe, und ich werde es korrigieren.
Wenn Sie irgendeine andere Möglichkeit kennen, den Fehler ora-00942 zu beheben, teilen Sie uns dies bitte unten!